Tensão e Corrente na Prática com ESP32, INA219 e Display OLED

ESP32 + INA219: Medindo Tensão e Corrente no Display OLED
Aprenda na prática como medir tensão e corrente elétrica usando ESP32, INA219 e display OLED.

Tensão e Corrente na Prática com ESP32, INA219 e Display OLED

Entender a diferença entre tensão e corrente elétrica é um dos primeiros passos para quem está começando em eletrônica. Porém, muitas vezes esses conceitos ficam apenas na teoria.

Neste projeto vamos fazer diferente: vamos medir tensão e corrente em um circuito real, utilizando um ESP32, um sensor INA219 e um display OLED SSD1306.

A ideia é observar os valores no display e, depois, relacioná-los com a Lei de Ohm.


O que são tensão e corrente?

Antes de montar o circuito, precisamos entender dois conceitos fundamentais.

Tensão elétrica

O que é tensão elétrica? Entenda volts, milivolts e diferença de potencial
Tensão elétrica é a diferença de potencial entre dois pontos de um circuito. Aprenda a relação entre volts (V) e milivolts (mV) com um exemplo prático.

A tensão elétrica é a diferença de potencial entre dois pontos de um circuito.

Ela é medida em volts (V).

Por exemplo, neste projeto estamos utilizando uma fonte de aproximadamente:

5,05 V

Essa tensão fornece a energia necessária para que a corrente possa circular pelo circuito.

É importante lembrar que podemos ter tensão entre dois pontos mesmo quando não existe corrente circulando.


Corrente elétrica

A corrente elétrica está relacionada ao fluxo de carga elétrica através de um circuito.

Diferença de potencial, movimento dos elétrons e corrente elétrica
A diferença de potencial (tensão) entre os extremos do circuito provoca o movimento dos elétrons pelo material condutor, formando a corrente elétrica.

Sua unidade é o ampère (A).

Como converter corrente elétrica de mA para A: tabela prática
Tabela de conversão de miliampères para ampères, mostrando a equivalência entre 1000 mA e 1 A, 100 mA e 0,1 A, 10 mA e 0,01 A, e 1 mA e 0,001 A.

Em circuitos eletrônicos é muito comum utilizar valores menores, como:

  • mA — miliampère
  • µA — microampère

Neste experimento, estamos trabalhando com aproximadamente:

3,10 mA

O material de referência também destaca a relação entre tensão, corrente e resistência através da Lei de Ohm. 


Tensão não é corrente

Essa é uma diferença importante para quem está começando.

Podemos pensar de forma simplificada:

Tensão → diferença de potencial

Corrente → fluxo de carga

A tensão é uma das condições que permite que uma corrente circule quando existe um caminho fechado.

No nosso projeto temos:

Fonte → INA219 → Resistor → LED → GND

Quando o circuito está fechado, existe circulação de corrente.


O que é o INA219?

O INA219 é um sensor utilizado para realizar medições elétricas.

Neste projeto ele será utilizado para medir principalmente:

  • Tensão
  • Corrente

O sensor se comunica com o ESP32 através do protocolo I²C.

Isso permite que o ESP32 leia os valores medidos pelo INA219 e depois apresente essas informações no display OLED.

Assim, transformamos o conjunto em uma pequena ferramenta de medição:

        INA219
          ↓
      mede o circuito
          ↓
        ESP32
          ↓
      OLED SSD1306
          ↓
    mostra os valores

Como o INA219 é colocado no circuito?

Uma característica importante do INA219 é que, para medir a corrente da carga, ele deve ser colocado em série com o circuito.

O caminho da corrente convencional é:

Como a Corrente Elétrica Circula pelo INA219, Resistor e LED
Diagrama ilustrando o sentido convencional da corrente elétrica em um circuito com fonte de 5,05 V, sensor INA219, resistor de 1 kΩ e LED. As setas amarelas indicam o percurso da corrente pelo circuito.

+5 V → VIN+ → INA219 → VIN− → resistor → LED → GND

Portanto, na imagem do projeto, a corrente convencional está saindo do positivo da fonte e seguindo em direção ao GND.

O VIN+ fica voltado para o lado positivo da fonte, enquanto o VIN− fica voltado para o lado da carga.

Depois do INA219 temos o resistor de 1 kΩ e o LED.

Isso também explica por que o INA219 precisa estar em série para medir a corrente que passa pela carga.


ESP32 + OLED + INA219

O ESP32 utiliza o barramento I²C para conversar com os dois dispositivos.

Esquema de conexão do ESP32, INA219 e display OLED com LED e resistor de 1 kΩ
Esquema completo do projeto com ESP32, sensor INA219, display OLED SSD1306, resistor de 1 kΩ e LED para medir e visualizar tensão e corrente elétrica.

Neste projeto:

Componente    VCC            GND         SDA             SCL
ESP32          USB/5 V             GND          GPIO 21         GPIO 22
OLED SSD1306          5 V*             GND          GPIO 21         GPIO 22
INA219          5 V             GND          GPIO 21         GPIO 22

* Atenção ao modelo do OLED: alguns módulos SSD1306 aceitam 3,3–5 V, mas isso depende da placa. Verifique a especificação do seu módulo antes de alimentá-lo com 5 V.

O OLED e o INA219 compartilham os mesmos sinais:

SDA → GPIO 21

SCL → GPIO 22


Instalando a biblioteca do INA219

Para que o Arduino IDE consiga controlar o sensor, precisamos instalar a biblioteca:

Adafruit INA219

No Arduino IDE:

Acesse:

Gerenciar Bibliotecas

Na caixa de pesquisa, digite:

Adafruit INA219

Procure por:

Adafruit INA219 by Adafruit

Clique em:

Instalar

A biblioteca adicionará ao projeto o arquivo:

#include <Adafruit_INA219.h>

Também serão necessárias as bibliotecas utilizadas pelo display:

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Código utilizado

Este é o código que utilizamos no segundo teste, com a calibração do INA219 para 16 V / 400 mA

ESP32 + INA219 + OLED SSD1306
INÍCIO DO CÓDIGO
/*
  ============================================================
       ESP32 + INA219 + OLED SSD1306
       MEDIÇÃO DE TENSÃO E CORRENTE
  ============================================================

  OBJETIVO:
  Medir tensão e corrente utilizando o INA219 e apresentar
  os valores simultaneamente no display OLED.

  CALIBRAÇÃO:
  INA219 configurado para 16 V / 400 mA.

  I2C:
  SDA -> GPIO 21
  SCL -> GPIO 22

  OLED:
  SSD1306 128x64
  Endereço: 0x3C

  INA219:
  Endereço padrão: 0x40

  ============================================================
*/

#include <Wire.h>                         // Comunicação I2C
#include <Adafruit_INA219.h>             // Biblioteca INA219
#include <Adafruit_GFX.h>                 // Biblioteca gráfica
#include <Adafruit_SSD1306.h>             // Biblioteca OLED


// ============================================================
// CONFIGURAÇÃO DO DISPLAY
// ============================================================

#define SCREEN_WIDTH 128                  // Largura do OLED
#define SCREEN_HEIGHT 64                  // Altura do OLED

Adafruit_SSD1306 display(
  SCREEN_WIDTH,
  SCREEN_HEIGHT,
  &Wire,
  -1
);


// ============================================================
// CONFIGURAÇÃO DO INA219
// ============================================================

Adafruit_INA219 ina219;                   // Sensor INA219


// ============================================================
// SETUP
// ============================================================

void setup()
{
  Wire.begin(21, 22);                     // SDA = 21 / SCL = 22


  // ----------------------------------------------------------
  // INICIALIZA O DISPLAY
  // ----------------------------------------------------------

  display.begin(
    SSD1306_SWITCHCAPVCC,
    0x3C
  );


  // ----------------------------------------------------------
  // INICIALIZA O INA219
  // ----------------------------------------------------------

  ina219.begin();                         // Inicializa o INA219

  ina219.setCalibration_16V_400mA();      // Calibração 16 V / 400 mA


  // ----------------------------------------------------------
  // TELA INICIAL
  // ----------------------------------------------------------

  display.clearDisplay();

  display.setTextColor(WHITE);
  display.setTextSize(2);

  display.setCursor(20, 20);
  display.print("RodRobot");

  display.display();

  delay(1500);
}


// ============================================================
// LOOP
// ============================================================

void loop()
{
  // ----------------------------------------------------------
  // REALIZA AS MEDIÇÕES
  // ----------------------------------------------------------

  float tensao = ina219.getBusVoltage_V();   // Tensão em volts

  float corrente = ina219.getCurrent_mA();   // Corrente em mA


  // ----------------------------------------------------------
  // LIMPA O DISPLAY
  // ----------------------------------------------------------

  display.clearDisplay();

  display.setTextColor(WHITE);


  // ----------------------------------------------------------
  // MOSTRA A TENSÃO
  // ----------------------------------------------------------

  display.setTextSize(1);
  display.setCursor(0, 5);

  display.print("Tensao:");

  display.setTextSize(2);
  display.setCursor(0, 18);

  display.print(tensao, 2);
  display.print(" V");


  // ----------------------------------------------------------
  // MOSTRA A CORRENTE
  // ----------------------------------------------------------

  display.setTextSize(1);
  display.setCursor(0, 40);

  display.print("Corrente:");

  display.setTextSize(2);
  display.setCursor(0, 51);

  display.print(corrente, 2);
  display.print(" mA");


  // ----------------------------------------------------------
  // ATUALIZA O DISPLAY
  // ----------------------------------------------------------

  display.display();

  delay(500);
}
FIM DO CÓDIGO


Entendendo as partes mais importantes do código

1. Bibliotecas

#include <Wire.h>
#include <Adafruit_INA219.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

A biblioteca Wire.h permite utilizar a comunicação I²C.

A Adafruit_INA219.h permite controlar o sensor INA219.

As bibliotecas Adafruit_GFX e Adafruit_SSD1306 são utilizadas para controlar o display OLED.


2. Comunicação I²C

No código temos:

Wire.begin(21, 22);

Isso define:

GPIO 21 → SDA

GPIO 22 → SCL

Tanto o OLED quanto o INA219 utilizam esse mesmo barramento.


3. Inicialização do INA219

ina219.begin();

Essa instrução inicializa o sensor.

Depois temos:

ina219.setCalibration_16V_400mA();

Essa configuração seleciona a calibração utilizada neste experimento, adequada à faixa de tensão e corrente que estamos trabalhando.


Realizando as medições

A tensão é obtida através:

float tensao = ina219.getBusVoltage_V();

O resultado é armazenado na variável tensao em volts.

A corrente é obtida através:

float corrente = ina219.getCurrent_mA();

Nesse caso, o resultado já é fornecido em miliampères (mA).


O que aparece no OLED?

Durante o experimento, os valores não permanecem completamente estáveis. Por isso, vamos considerar os valores aproximados observados na bancada:

Teste real do sensor INA219 com ESP32, display OLED e LED
Montagem prática com ESP32, sensor INA219, display OLED SSD1306 e LED. O display indica uma tensão de aproximadamente 5,05 V e uma corrente de 3,10 mA, enquanto o multímetro mede cerca de 1,93 V no LED.

Tensão da fonte

≈ 5,05 V

Tensão no LED

≈ 1,93 V

Corrente

≈ 3,10 mA

Esses valores podem oscilar ligeiramente durante a medição, algo normal em um circuito real.


E onde entra a Lei de Ohm?

Agora podemos transformar os valores medidos em um exemplo prático.

Sabemos que:

Tensão da fonte ≈ 5,05 V

e:

Tensão no LED ≈ 1,93 V

Portanto, aproximadamente:

5,05 − 1,93 = 3,12 V

Essa é aproximadamente a tensão sobre o resistor de 1 kΩ.

Agora aplicamos a Lei de Ohm:

Fórmulas da Lei de Ohm para calcular tensão, corrente e resistência
Lei de Ohm na prática: as fórmulas para calcular corrente, tensão e resistência elétrica.

Substituindo:

I = 3,12 / 1000

Resultado:

I ≈ 3,12 mA

O INA219 apresentou aproximadamente:

3,10 mA

Os valores são muito próximos.

Isso demonstra na prática a relação entre tensão, corrente e resistência.

Esquema do sensor INA219 com fonte de 5,05 V, resistor de 1 kΩ e LED
Circuito experimental com o sensor INA219, resistor de 1 kΩ e LED. O esquema apresenta a tensão da fonte de aproximadamente 5,05 V, a queda de tensão indicada de 3,12 V no resistor e a tensão de 1,93 V no LED.

Não estamos apenas calculando

Essa é a principal ideia deste experimento.

Em vez de simplesmente apresentar a fórmula:

I = V / R

estamos fazendo:

Montagem → Medição → Cálculo → Comparação

O ESP32 lê o INA219, o OLED mostra os valores e podemos utilizar um multímetro para verificar as tensões do circuito.

Assim, conceitos que inicialmente parecem abstratos passam a fazer sentido através de uma montagem real.


O que aprendemos?

Neste projeto vimos que:

Tensão é a diferença de potencial entre dois pontos e é medida em volts.

Corrente representa o fluxo de carga elétrica pelo circuito e é medida em ampères ou miliampères.

Resistência dificulta a passagem da corrente e é medida em ohms.

E essas três grandezas estão relacionadas pela Lei de Ohm:

V = I × R

ou:

I = V / R

No nosso experimento, o INA219 permitiu transformar essas grandezas em valores que podemos observar no display OLED em tempo real.


Conclusão

O objetivo deste projeto não é apenas fazer o OLED mostrar números.

A proposta é utilizar o ESP32 + INA219 + OLED como uma ferramenta para aprender eletrônica na prática.

Ao observar aproximadamente 5,05 V de alimentação, 1,93 V sobre o LED e 3,10 mA de corrente, conseguimos relacionar a teoria com aquilo que realmente acontece no circuito.

É justamente essa relação entre montar, medir e entender que torna o aprendizado de eletrônica muito mais interessante.


🔧 Acompanhe o RodRobot

Projetos maker com ESP32, Arduino, eletrônica e programação.

RodRobot – Projetos maker, eletrônica e programação na prática.

Comentários

Postagens mais visitadas deste blog

ESP32 + RoboEyes: Como Criar Olhos Animados para seu Robô com Display OLED

ESP32-C3 Super Mini: Características, Vantagens, Pinagem, Matter.

ESP-NOW com ESP32-C3 e ESP32: Comunicação Sem Wi-Fi na Prática