Medindo corrente e tensão com o módulo INA219 58

Durante o desenvolvimento de algum dos seus projetos você já deve ter tido a necessidade de medir a tensão ou a corrente consumida pelo seu projeto ou parte dele. Normalmente utilizamos um multímetro e medimos uma grandeza por vez (algo não muito prático). Neste artigo veremos como montar um simples e prático medidor de tensão e corrente DC utilizando como componente principal o current monitor módulo INA219 da Texas Instruments.

Medidor de corrente e tensão com INA219

Para apresentar as leituras utilizaremos um Display de LCD 16×2 com um adaptador i2c, o que irá minimizar bastante a quantidade de pinos necessários, se comparado a tradicional utilização com interface paralela, seja de 4 bits ou 8 bits.

PRINCIPAIS MATERIAIS UTILIZADOS

O SENSOR DE CORRENTE DC MODULO INA219

O INA219 é um componente extremamente versátil para o monitoramento de grandezas elétricas DC. Permite o monitoramento de linhas com alimentação de 0 a 26 Vdc, corrente com limite máximo dependente do resistor shunt utilizado, conversor ADC interno de 12 bit e interface i2c para comunicação. O método de medição de corrente utilizado é o high-side, onde o resistor shunt é colocado entre a fonte de alimentação e a carga. Este método permite que o dispositivo meça tanto a corrente circulante, como a tensão na carga. O datasheet do componente pode ser encontrado neste LINK.

Medição de corrente com Current Monitor
Medição em High-Side e Low-Side

Como mencionado anteriormente, a medição da corrente é realizada através de um resistor shunt, ou seja, nossa boa e velha Lei de Ohm. Lembre-se que quando uma corrente elétrica atravessa um resistor surge em seus terminais uma diferença de potencial, ou seja, surge uma tensão que é proporcional a corrente circulando através do resistor.

 U = R x I

Ao medirmos a tensão sobre um resistor qualquer, de posse da resistência do mesmo podemos substituir os valores na equação e com isso obter a corrente elétrica.

A placa Sensor de Corrente DC INA219 I2C facilita muito os projetos envolvendo este componente pois já engloba o circuito integrado, os componentes passivos necessários para seu funcionamento, um resistor shunt de 0.100R (100 miliOhm) que permite medição de correntes máximas de +- 3,2 A (tensão máxima de +-320 mV no resistor shunt) e também terminais para conexão com o microcontrolador e com a fonte que irá alimentar a carga a ser monitorada. A placa possui também dois conjuntos de pads/jumpers que permitem modificar o endereço i2c do dispositivo, ou seja, podemos utilizar até 4 dispositivos ao mesmo tempo em uma mesma linha i2c.

Placa com o INA219
Placa INA219 DC Current Sensor

A alimentação do módulo INA219 é realizada através dos terminais Vcc e Gnd, podendo variar de 3 V a 5,5 Vdc, ou seja, dentro dos limites da maiorias das placas disponíveis atualmente, incluindo a placa Nano V3.0 utilizada neste projeto.

Os pinos Sda e Scl são referentes a comunicação i2c, e devem ser conectados respectivamente aos pinos A4 e A5 da placa Nano. Os pinos Vin+ e Vin- presentes tanto na barra de pinos, como no conector parafusável, são utilizados para monitorar a carga. A fonte que alimenta a carga (com tensões de 0 a 26 V) entra no terminal Vin+, atravessa o resistor shunt e sai pelo terminal Vin-, indo para a carga a ser monitorada. Aqui fica uma dica, para cargas que consumam pouca corrente você pode utilizar os terminais na barra de pinos inferior, na dúvida, utilize o terminal parafusável superior.

Uma consideração importante, o Gnd do nosso circuito de medição deverá estar conectado ao Gnd da nossa carga, por exemplo, se você estiver monitorando o consumo de um motor conectado a uma bateria de 9V, o terminal “” da bateria deverá ser conectado ao Gnd geral. Isto garante que os circuitos operem sob mesmo referencial, ao mesmo tempo que assegura que a tensão será medida corretamente.

DISPLAY DE LCD 16X2 E ADAPTADOR I2C

Iremos utilizar um tradicional display LCD 16×2 para apresentar as medições. nativamente este display utiliza uma interface paralela, necessitando de pelo menos 6 pinos na versão 4 bits, conforme pode ser visto neste artigo do blog,  ou até 11 pinos na versão 8 bits.

LCD 16x2

Para minimizar a quantidade de pinos necessários iremos utilizar um Módulo Serial I2C para Display LCD. Este módulo permite comunicar com o LCD através da interface serial I2C, utilizando apenas 2 terminais (SDA e SCL). O módulo pode ser soldado diretamente ao display de LCD ou então pode-se cortar e soldar uma barra de pinos fêmea. permitindo que você altere a interface de acordo com suas necessidades.

Adaptador i2c para LCD

CIRCUITO MODULO INA219 COM ARDUINO

Para montagem básica precisaremos de uma protoboard, uma fonte para alimentar nosso circuito e alguns jumpers. Indico utilizarem jumpers rígidos pois além da estética melhor, eles acabam evitando problemas de mau contato.

Iremos alimentar as linhas superior e inferior do protoboard com 5 V. Essa alimentação será útil para alimentar a placa Nano, o módulo INA219 e também nosso LCD via adaptador i2c.

Os pinos SDA e SCL, tanto da placa INA219 como do adaptador i2c deverão ser conectados respectivamente os pinos A4 e A5, que neste projetos serão utilizados para comunicação i2c.

O circuito a seguir apresenta as conexões básicas necessárias.

Circuito Arduino e Módulo INA219

Veja que é um circuito bastante simples, restando apenas conectar a fonte que irá alimentar a carga ao conector Vin+, conectar Vin- a carga e lembrar de interconectar o Gnd dos circuitos.

BIBLIOTECAS NECESSÁRIAS

Para realização deste projeto será necessário adicionar duas novas bibliotecas, a Adafruit_INA219 e a LiquidCrystal_I2C. Aconselho utilizar o utilitário de gerenciamento de bibliotecas para facilitar o processo. Clique em Sketch >> incluir Biblioteca >> Gerenciar Bibliotecas…. No campo de busca insira o nome das bibliotecas Adafruit INA219 e LiquidCrystal I2C. Na lista que aparecer, selecione a biblioteca indicada e então clique em “Instalar”.

Instalando as bibliotecas

CÓDIGO FONTE

As bibliotecas utilizadas para o INA219 e para o LCD via i2c possuem exemplos de sua utilização que serviram como base para este projeto.

A seguir é apresentado o código que une as funcionalidade do nosso sensor de corrente e tensão e do nosso LCD via serial I2C.

/*
 * DC Current and Voltage Meter - Basic Code
 * - Use one INA219, an i2c current monitor from TI
 * with 12 bit ADC, capable to monitor Voltage and
 * Current
 * 
 * -------------------------------------------------
 * Medidor corrente e tensão DC - Código Básico
 * - Utiliza um modulo INA219, um monitor de corrente i2c
 * com um ADC de 12 bit, capaz de monitorar Tensão
 * e Corrente
 * 
 * developed by: Haroldo Amaral
 * 2017/03/26 - v 1.0
 */

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>      // lcd i2c lib
#include <Adafruit_INA219.h>        // ina219 lib

// Define some constants used in code
const int LED1 =  2;        // the number of the LED pin
const int LED2 =  3;        // the number of the LED pin
const int ON = 1;           // on state
const int OFF = 0;          // off state
const int LCD_addr = 0x3F;  // LCD i2c address
const int LCD_chars = 16;   // number of characters
const int LCD_lines = 2;    // number of lines
const int INA_addr = 0x40;  // INA219 address


// set the LCD address to 0x3F for a 16 chars and 2 line display
// indica o endereço do LCD  - 0x3F, com 16 caracteres e 2 linhas
LiquidCrystal_I2C lcd(LCD_addr, LCD_chars, LCD_lines);

// set the INA219 to address 0x40
// indica o endereço do INA219 - 0x40
Adafruit_INA219 ina219(INA_addr);

// global variables
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;

// Prototype of functions
void Read_INA219_Values(void);
void LCD_Update(void);
void Serial_Send(void);

void setup()
{
  // configure LED pins
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);

  // configure the serial to 9600bps
  Serial.begin(9600);

  Serial.println("Hello!");
  Serial.println("Measuring voltage and current with INA219 ...");
  
  // initialize the INA219
  ina219.begin();

  // initialize the lcd 
  lcd.init();
  lcd.clear();

  // Print a message to the LCD.
  lcd.backlight();

  // set the cursor and write some text
  lcd.setCursor(0,0);
  lcd.print("Tensao Corrente"); 
}

/*
 * MAIN LOOP
 * - change the led state, measure the values and update LCD
 */
void loop()
{
  // read values from INA219
  // lê os valores do INA219
  Read_INA219_Values();

  // update the LCD
  // atualiza o LCD
  LCD_Update();

  // send data over the serial
  // envia os dados pela serial
  Serial_Send();

  // change the value to increase/decrease the update rate
  // mude o valor para alterar a taxa de atualização
  delay(250);
}

/*
 * Functions
 */

// Read the values from INA219
// lê os valores convertidos pelo modulo INA219
void Read_INA219_Values(void)
{
  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  current_mA = ina219.getCurrent_mA();
  loadvoltage = busvoltage + (shuntvoltage / 1000);
}

// update the LCD with values
// atualiza o LCD com os valores
void LCD_Update(void)
{
  lcd.setCursor(0,1);
  lcd.print(busvoltage);  lcd.print("V   ");

  lcd.setCursor(7,1);
  lcd.print(current_mA); lcd.print("mA   ");
}

// Send data over the serial
// envia os valores pela serial
void Serial_Send(void)
{
  Serial.print("Bus Voltage:   "); Serial.print(busvoltage); Serial.println(" V");
  Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
  Serial.print("Load Voltage:  "); Serial.print(loadvoltage); Serial.println(" V");
  Serial.print("Current:       "); Serial.print(current_mA); Serial.println(" mA");
  Serial.println("");
}

Com o exemplo rodando serão apresentadas no LCD a tensão e corrente da carga. Neste exemplo utilizei 1 LED vermelho como carga teste.

UM SEGUNDO TESTE COM O MODULO INA219

Para fixarmos os conceitos irei demonstrar um exemplo medindo a tensão e a corrente consumida por todo o circuito de medição e mais dois LED’s controlados pela própria sketch.

Como queremos medir o consumo da placa Nano, do Display LCD e de mais dois LED’s, serão necessárias alguma modificações pontuais no circuito. A principal delas é que a alimentação de 5V fornecida pela fonte ajustável, será conectada apenas as linhas de alimentação superiores, na parte interior iremos deixar o jumper da fonte na posição “off”. A alimentação de 5V será aplicada ao pino Vin+ e o pino Vin- será conectado a linha de alimentação inferior, permitindo alimentar a placa Nano e também o Display de LCD.

O circuito de teste é apresentado a seguir.

Circuito de teste com leds

CÓDIGO FONTE

Neste teste o código irá controlar o backlight e os dois leds para demonstrar a medição de tensão e corrente. Inicialmente é mostrada a medição com backlight aceso e com os leds apagados, após um delay o backlight é apagado, o backlight é novamente aceso e um dos LEDs também, o segundo LED é aceso. Entre cada etapa ocorre a leitura dos valores medidos pelo INA219, atualização do display e geração de um delay de 2 segundos.

O código é apresentado a seguir.

/*
 * DC Current and Voltage Meter - LED test
 * - Use one INA219, an i2c current monitor from TI
 * with 12 bit ADC, capable to monitor Voltage and
 * Current
 * - In the test, the LEDs and the backlight are 
 * switched to verify the current consumption
 * 
 * -------------------------------------------------
 * Medidor corrente e tensão DC - LED test
 * - Utiliza um modulo INA219, um monitor de corrente i2c
 * com um ADC de 12 bit, capaz de monitorar Tensão
 * e Corrente
 * - No teste, os led e o backlight são chaveados
 * para verificar a corrente consumida
 * 
 * developed by: Haroldo Amaral
 * 2017/03/26 - v 1.0
 */

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>      // lcd i2c lib
#include <Adafruit_INA219.h>        // ina219 lib

// Define some constants used in code
const int LED1 =  2;        // the number of the LED pin
const int LED2 =  3;        // the number of the LED pin
const int ON = 1;           // on state
const int OFF = 0;          // off state
const int LCD_addr = 0x3F;  // LCD i2c address
const int LCD_chars = 16;   // number of characters
const int LCD_lines = 2;    // number of lines
const int INA_addr = 0x40;  // INA219 address


// set the LCD address to 0x3F for a 16 chars and 2 line display
// indica o endereço do LCD  - 0x3F, com 16 caracteres e 2 linhas
LiquidCrystal_I2C lcd(LCD_addr, LCD_chars, LCD_lines);

// set the INA219 to address 0x40
// indica o endereço do modulo INA219 - 0x40
Adafruit_INA219 ina219(INA_addr);

// global variables
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;

// Prototype of functions
void Read_INA219_Values(void);
void LCD_Update(void);
void Serial_Send(void);

void setup()
{
  // configure LED pins
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);

  // configure the serial to 9600bps
  Serial.begin(9600);

  Serial.println("Hello!");
  Serial.println("Measuring voltage and current with INA219 ...");
  
  // initialize the INA219
  ina219.begin();

  // initialize the lcd 
  lcd.init();
  lcd.clear();

  // Print a message to the LCD.
  lcd.backlight();

  // set the cursor and write some text
  lcd.setCursor(0,0);
  lcd.print("Tensao Corrente"); 
}

/*
 * MAIN LOOP
 * - change the led state, measure the values and update LCD
 */
void loop()
{
  // test 1 - backlight on, leds off
  // teste 1 - backlight aceso, leds apagados
  digitalWrite(LED1, OFF);
  digitalWrite(LED2, OFF);
  Read_INA219_Values();
  LCD_Update();
  Serial_Send();
  delay(2000);

  // test 2 - backlight off, leds off
  // teste 2 - backlight apagado, leds apagados
  lcd.noBacklight();
  Read_INA219_Values();
  LCD_Update();
  Serial_Send();
  delay(2000);

  // test 3 - backlight on, led 1 ON
  // teste 3 - backlight aceso, led 1 aceso
  lcd.backlight();
  digitalWrite(LED1, ON);
  Read_INA219_Values();
  LCD_Update();
  Serial_Send();
  delay(2000);

  // test 4 - backlight on, led 1 and 2 ON
  // teste 4 - backlight aceso, led 1 e 2 aceso
  digitalWrite(LED2, ON);
  Read_INA219_Values();
  LCD_Update();
  Serial_Send();
  delay(2000);
}

/*
 * Functions
 */

// Read the values from INA219
// lê os valores convertidos pelo modulo INA219
void Read_INA219_Values(void)
{
  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  current_mA = ina219.getCurrent_mA();
  loadvoltage = busvoltage + (shuntvoltage / 1000);
}

// update the LCD with values
// atualiza o LCD com os valores
void LCD_Update(void)
{
  lcd.setCursor(0,1);
  lcd.print(busvoltage);  lcd.print("V   ");

  lcd.setCursor(7,1);
  lcd.print(current_mA); lcd.print("mA   ");
}

// Send data over the serial
// envia os valores pela serial
void Serial_Send(void)
{
  Serial.print("Bus Voltage:   "); Serial.print(busvoltage); Serial.println(" V");
  Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
  Serial.print("Load Voltage:  "); Serial.print(loadvoltage); Serial.println(" V");
  Serial.print("Current:       "); Serial.print(current_mA); Serial.println(" mA");
  Serial.println("");
}

O resultado deste teste você confere na imagem do início do post, e os arquivos deste projeto (sketches e esquemático do Fritzing) podem ser baixados no meu repositório GitHub.

Gostou do Medidor de tensão e corrente DC com módulo INA219? Deixe seu comentário logo abaixo. 

Faça seu comentário

Acesse sua conta e participe

58 Comentários

  1. Boa tarde, estou tentando realizar este projeto utilizando um arduino Mega2560, e apresenta o erro “Erro compilando para a placa Arduino Mega or Mega 2560”
    Poderia me ajudar a corrigir isso?

    ANDERSON JUNIOR FINARDI SPILMAM
    1. Olá Anderson,

      Há mais alguma informação no erro?

      Você instalou as bibliotecas LiquidCrystal I2C e Adafruit INA219?

      Abraço!
      Vinícius – Equipe MakerHero

  2. ok muito bom gostei obrigado! mas quero medir em dc com este circuito acs712.
    consigo?

    1. digo ultilizando o mesmo programa.

    2. Moises,

      Você pode usar o ACS para medir DC sim, mas teria que usar outro código.

      Abraços!
      Diogo – Equipe MakerHero

  3. muito bom colega mas com o sensor de corrente quero usar o ACS712 pois é o que eu tenho por favor consegue me ajudar?
    desde de ja te agradeço por tudo e boa vontade. com este medidor consigo ler normalmente em dc 26vlts?

    1. Moises,

      Dê uma olhada nesse nosso post: https://www.makerhero.com/blog/medidor-de-corrente-ac-acs712-emonlib/

      Abraços!
      Diogo – Equipe MakerHero

  4. Boa noite, estou usando o esp32, a leitura da tensão está correta mas a da corrente aparecem valores aleatórios, o que pode estar errado? Desde já agradeço.

  5. Em primeiro lugar parabéns pelo projeto. Mas tem como aumentar a precisão, e gravar direto no ecxell,
    Eu tenho um projeto que preciso ter a variação de 0,001v, e de 000A?

    1. Cadu,

      Obrigado pela visita! Infelizmente não é possível ser tamanha precisão.

      Abraços!
      Diogo – Equipe MakerHero

  6. Bom dia, precisava de um código pro arduino para medir a corrente, quando passar de 300 mA a corrente, acender um led vermelho e se ficar abaixo de 300 mA acender um led verde. vou ficar testando varias cargas e preciso garantir que nenhuma passe de 300 mA. será que consegui me ajudar ?

  7. Haroldo, parabéns pelo artigo…
    minha duvida é, assim como a ultima pergunta do Andre sobre a medição de tensão AC, consegue nos dar uma ajuda de como, usando um transformador abaixador, condicionar a saída e converter o sinal e processá-lo?

  8. Haroldo boa noite, quero fazer um dispositivo que leia ao todo 50 pinos cada um com uma tensão x, porem o Arduíno mega tem 54 portas digitais e 16 ou 14 não lembro, portas analógicas, poderia adicionar um mux ou demux para expandir as portas ??

    1. Sim Lucian, é uma abordagem possível, um mux por entrada analógica do Mega até completar a quantidade de canais necessária

  9. Boa tarde, Diogo!
    Troquei o endereço I2C do display para 0x27 (considerado padrão) e ele ressuscitou.

    1. João,

      Que bom que deu jeito!

      Abraços!
      Diogo – Equipe MakerHero

  10. Sabe me dizer qual é a corrente minina que este modulo consegue realizar a leitura?

    1. Andre,

      Acredito que seja a de erro percentual dele, que seria por volta de 0,8mA.

      Abraços!
      Diogo – Equipe MakerHero

      1. Bom dia!

        Voce consegue algum modulo com este erro percentual menor de que 0,8mA? Estou precisando de algo próximo de 0,1mA.

        1. Andre,

          Verifique esse: https://www.makerhero.com/produto/sensor-de-corrente-acs712-30a-a-30a/

          Abraços!
          Diogo – Equipe MakerHero

  11. Olá, me parece bem simples tudo. Estou usando um Arduino nano e o sensor INA219 com um resistor um led de carga, apenas não uso o LCD, acompanho apenas pela serial. No entanto não consigo realizar a medida por nada. Meu código trava na inicialização do INA, em “ina219.begin();”.
    Já tentei usar outra biblioteca, a ArduinoINA219 (https://github.com/flav1972/ArduinoINA219) e a mesma coisa acontece, ele para no iniciar o INA, em “monitor.begin();”.
    Por que isso pode estar acontecendo?

    1. Olá Jaqueline,

      Você instalou as bibliotecas corretamente? Acho que isso pode estar sendo seu problema.

      Abraço!
      Rosana – Equipe MakerHero

      1. Acredito que instalei corretamente. Desinstalei e instalei novamente, fiz vários testes.
        Comecei a desconfiar da comunicação I2C. Encontrei um código que verifica os endereços I2C e para minha surpresa esse também para de funcionar em determinada linha de código da comunicação. O programa para de responder em “codigoResultado = Wire.endTransmission();”

        Aqui esta o código completo: https://portal.vidadesilicio.com.br/descobrindo-o-endereco-i2c/

        Isso pode ser problema de hardware então?

        1. Olá!

          Você poderia postar sua dúvida no nosso fórum? Lá seria interessante se você postasse seu código e os erros que estão ocorrendo!

          Abraços!
          Diogo – Equipe MakerHero

  12. É possível usar mais de um sensor por vez no Arduino com esse módulo ?

    1. Olá Vinícius,

      É possível sim 😀

      Abraço!
      Rosana – Equipe MakerHero

  13. Parabéns pelo seu Trabalho, bem explicado e ótimo pára aulas com arduino.
    Carlos Bruni
    Instituto Federal da Bahia

  14. Olá,

    Eu precisava de um medir de 20v e 3A, esse sensor mede isso? e eu também preciso gravar o que ele está medindo, por uma porta serial ou até mesmo pela internet, poderia me ajudar com isso?

    1. Olá Gustavo!

      Esse sensor mede isso sim.

      Para gravar os dados pela internet você pode se inspirar por este post:
      https://www.makerhero.com/blog/tutorial-ethernet-shield-w5100/

      Abraços!

      André – Equipe MakerHero

  15. Bom dia, é possível registrar dados utilizando a placa Sensor de Corrente DC INA219 I2C, conforme mostra o projeto Medindo corrente e tensão com o módulo INA219?

    1. Sim, você pode registrar (salvar) os dados utilizando desde a EEPROM do Arduino Uno/Nano até um cartão SD, basta implementar esta funcionalidade ao projeto.

  16. Boa tarde!

    Meu nome é Gabriel e estou com uma urgência e preciso de sua ajuda se possível.

    Meu projeto precisa fazer a leitura de 0-36v com corrente de 0-10A
    comprei com vocês o modulo regulador de corrente 30A e gostaria de saber se com o INA219 é possivel realizar a medição de até 36v realizando algum tipo de alteração no resistor shunt.

    Ficarei muito grato caso consiga me responder.

    Obrigado!

    1. o INA219 pode monitorar de 0 a 26Vdc. Modificar o shunt permite manipular apenas o range de corrente, mas não o de tensão.

  17. Trocando o resistor shunt é possível ler correntes de até 8A em 15V?

    1. Teoricamente sim, mas você terá que verificar algumas coisas: A tensão sobre o resistor não pode exceder 320mV e você terá que recalcular as constantes internas relacionadas ao calculo da corrente.

      Além disso, a placa não foi preparada para uma corrente tão elevada (trilhas finas entre conector e shunt). O ideal seria você montar sua própria placa.

      1. Na verdade eu preciso medir a corrente de um alternador para uma bateria, mas não no carro é para outra aplicação, as correntes não devem passar de 7A – 8A você teria alguma outra sugestão?

        1. Poucas ferramentas vão realizar isso sem algum trabalho externo. o INA219 funciona bem para isso (em DC), principalmente porque ele calcula tudo sozinho. Mas no seu caso você teria que fazer sua própria placa.

          Outra possibilidade seria utilizar um ACS712-20A. No caso de usar ele você é quem ficará responsável por realizar todos os cálculos. Se procurar na loja encontrará o componente e também exemplos.

  18. Olá tudo bem? Montei exatamente como seu tutorial e não está lendo a corrente e a tensão só fica em 32V, mesmo eu variando. Poderia me ajudar?

    1. Um problema possível é que os circuitos não estejam compartilhando o mesmo terra e ficando sem referência. Verifique a conexão dos terras.

      Outro teste possível é conectar Vin+ e Vin- ao Gnd do circuito, ele deverá ler 0V e 0A ou próximo disso.

      1. Fiz o teste, ligando Vin+ e Vin- ao terra e continuou com o mesmo problema:
        Tensão: 32.76 V
        Corrente: -0.10 mA
        Potência: -0.00 W
        Coloquei o mesmo terra e nada.
        Será que o sensor está com problema?

  19. Olá.
    Estou pensando em um projeto para controlar um enrolador de tecido pequeno. Quando o tecido esticar ele acusará uma corrente maior do que a corrente nominal, assim iria parar o motor. Ligando o motor novamente para enrolar quando a corrente iria diminuir.
    Será que eu conseguiria ler esses valores de corrente com esse sensor? Ou uma outra solução…

    1. Olá Rogério.
      A ideia pode funcionar sim, mas o circuito com o INA219 funciona apenas para tensão contínua, não sei se seria o caro da sua aplicação. Caso for, será necessário somente adaptar o código.

      Caso for em AC existem outros projetos no blog, como este que escrevi
      https://www.makerhero.com/blog/medidor-de-corrente-ac-acs712-emonlib/

  20. Muito interessante e bem detalhado, parabéns ! Pergunto se seria possível com um sensor destes, medir condutividade em diferentes águas, como água do mar, estuários, para se aferir a salinidade ?

    1. Que bom que curtiu o artigo Luis.
      Talvez com várias adaptações no circuito e código seja possível, mas não é o foco deste componente.

  21. Pessoal boa tarde.
    Montei esse projetinho para monitorar outros aduinos e seus respectivos consumos.
    Desculpe minha falta de conhecimento, mas poderiam me explicar exatamente qual a diferença entre BUSVOLTAGE e SHUNT VOLTAGE?
    Técnicamente eu entendi que um é o que está no “barramento” e outro é oq efetivamente está entrando na carga certo?
    Se isso estiver correto, para uma aplicação real isso significa que se por exemplo se eu tenho uma fonte de 5v e meu BUSVoltage está mostrando 1v e meu ShuntVoltage está mostrando 4.5v qual valor devo considerar?
    E no caso se for uma fonte variável eu devo aumentar a tensão até que meu ShuntVoltage mostre precisos 5v ?

    Poderiam me dar uma explicação mais direcionada a iniciante…rs?
    Abss

    1. Boa tarde Raphael.

      – BusVoltage é a tensão de alimentação após o resistor shunt, ou seja, a tensão que vai para a carga/circuito, no seu caso o arduino e outros periféricos.
      – ShuntVoltage é a tensão sobre o resistor que mede a corrente. Sempre a tensão no resistor shunt será baixa, principalmente se comparada com a alimentação do circuito.
      De uma olhada no datasheet do INA219, na figura 13, talvez ajude a entender.
      http://www.ti.com/lit/ds/symlink/ina219.pdf

      Se no seu caso estiver mostrando algo estranho, existem duas possibilidades:
      – a ligação do sensor está invertida
      – a fonte que alimenta o circuito não está com o GND conectado ao Arduino, isso gera erros de medição

  22. Para converter sinal de 4 – 20mA em 0 -10V coloque o mresistor de 250 Ohms em serie e meça a tensao com modulos o Arduino por ex. 5V coloque 2 resistores em paralelo.

  23. Posso ligar um sinal de 4-20mA direto nele ? Ex: ligar um sensor de nível com saída analógica

    1. Bruno, este módulo (INA219) não é adequado para este tipo de medição de sensores/trandutores com saída de 4 a 20mA.

      1. Olá, Haroldo! Tudo bem? Poderia explicar o motivo dele não ser adequado para esse tipo de medição? Grato!

  24. Genial, me serviu 100% . OBRIGADO

  25. Parabéns pelo trabalho apresentado, bem didático e possibilitando aplicar em outros sensores semelhantes.

    1. Muito obrigado Carlos. A ideia é essa, permitir adaptação para outros usos e até sensores.

  26. Achei interessante esse modulo INA219. e o artigo está show, bem explicado.

    1. Fico feliz que tenham gostado André, obrigado pelo feedback!

  27. Tem algum módulo que meça tensão e corrente AC?

    1. Infelizmente para medição de corrente e tensão AC não existe nenhum módulo pronto, apenas CI’s dedicados a metrologia, mas que dependem de toda uma circuitaria externa.

      Para medição de correntes AC/DC você pode utilizar o “Sensor de Corrente ACS712 -30A a +30A” (https://www.makerhero.com/pd-304251-sensor-de-corrente-acs712-30a-a-30a.html?ct=&p=1&s=1) disponível na loja. Sua saída é em formado analógico, ai será necessário apenas utilizar o ADC do uC e depois processar o sinal.

      Para medir a tensão AC de uma maneira segura você pode utilizar uma transformador abaixador e condicionar sua saída. após isso também será necessário converter o sinal e processá-lo.