Como usar o Módulo INA219

Esse tutorial é voltado para o uso do Módulo INA219, sendo este perfeito para trabalhos em que se faz necessária a medição de tensão e corrente de uma carga, podendo ser utilizado em projetos com finalidade de proteção, monitoramento ou de análise de consumo.

Esse tutorial será dividido nos seguintes tópicos, clique em algum título para ir ao trecho correspondente.

 

Componentes Utilizados

 

 

Módulo INA219 

O módulo INA219 é um sensor de Corrente e Tensão desenvolvido para monitoramento, utilizando um resistor shunt para fazer as medições necessárias. Sua interface conta com compatibilidade para I2C ou SMBUS, sendo responsável por monitorar a queda de tensão no resistor shunt e a tensão de alimentação do barramento.  O módulo realiza medições na faixa de 0 a 26 VDC, com limite máximo de corrente de acordo com a resistência shunt, a placa conta com resistor shunt de 100mΩ, e a corrente máxima tolerada é de 3,2A. Para alimentação do módulo, é necessário o uso de uma fonte de 3 ou 5V.

O amplificador de precisão realiza a medição de tensão através do resistor de 0,1 ohm. O resistor shunt pode ser alterado por um resistor de 0,01 ohm, por exemplo, podendo então medir até 32A com resolução de 8mA.


 

Resistor Shunt

Em muitas aplicações são utilizados resistores de amostragem, também conhecidos como Resistores Shunt ou Sense Resistor, este é um resistor ligado em série com a carga, e através da queda de tensão sobre este componente é possível determinar a corrente circulante no circuito, normalmente é utilizado um componente de resistência baixa, para que não interfira na resistência total, usualmente entre 1mΩ e 1Ω, e de elevada potência para suportar a corrente sem sofrer danos.  O cálculo da corrente é feito seguindo o princípio da Lei de Ohm, tendo conhecimento da resistência e da tensão, é possível determinar a corrente com a seguinte fórmula:


I= V/R

Isso é feito porque não é possível medir a corrente de um componente diretamente, para isso seria necessário abrir o circuito para medição em série, então adicionamos esse resistor para que consigamos realizar a medição da tensão de forma paralela e por consequência a corrente.

A medição com o resistor shunt pode ser feita de duas formas, abaixo é possível visualizar os dois exemplos de medição.

Nesse primeiro, vemos o modo Low-Side Sensing, que é a configuração do shunt posterior à carga, ligado a carga e ao negativo.

 

 

O segundo método é nomeado de High-side, nesse caso o shunt é conectado ao positivo e à carga, sendo este o modelo utilizado pelo módulo.

 

O Resistor shunt também pode ser utilizado como forma de amplificação de escala, mas não detalharemos esse uso, pois ele não é importante para o artigo, pois no módulo o resistor não é utilizado nessa configuração, caso tenha curiosidade, verifique o assunto no site:

https://www.newtoncbraga.com.br/index.php/matematica-na-eletronica/10906-calculando-shunts-m279.html

 

Arquitetura do Módulo

O Esquemático simplificado do módulo é demonstrado pelo seguinte diagrama de blocos disponível no datasheet.

 

O sensor INA219 conta com 16 endereços programáveis, além de disponibilizar jumpers para endereçamento I2C. O módulo conta com valor de calibração programável, que em conjunto com o multiplicador interno, dispensa a necessidade da realização de cálculos, detalharemos o assunto mais adiante.

 

 

Todos os componentes necessários para realizar a medição já estão previamente soldados no módulo, não havendo a necessidade de componentes periféricos.

Sendo necessário apenas a solda dos pinos e borne que acompanha o módulo no momento da compra.

Para realizar a medição, a carga pode ser ligada nos pinos ou bornes.

Para mais, verifique o datasheet: INA219

 

Biblioteca INA219

Para utilização do módulo é necessário baixar a biblioteca correspondente, para isso siga o procedimento.

Entre na sua IDE do Arduino, vá em Sketch> incluir biblioteca > Gerenciar bibliotecas...

 


Em seguida, procure por: Adafruit INA219


Depois de instalar a biblioteca, iniciaremos os testes com o módulo INA219.

 

Teste INA219 

Para uso a placa deve ser alimentada com 3,3 ou 5V, evitando assim problemas com o módulo.

É importante ressaltar que se for utilizada mais de uma placa INA219, cada uma delas deve ter seu próprio endereço, essa mudança pode ser realizada através da solda, o endereço padrão do I2C é 0x40, por via do I2C Adress e com um pingo de solda, é possível realizar essa alteração, dessa forma podemos ter até quatro placas com endereços distintos, sendo estes:

 


Depois de soldar o endereço se necessário, trabalharemos com as ligações para a medição, primeiro alimentaremos o módulo através de VCC com uma fonte preferencialmente de 3,3V, e ligaremos o GND ao terra.

 

Em seguida, faremos a ligação I2C, conectando SDA ao A4 e SCL ao A5 do Arduino, assim como se segue.

 

Então faremos as ligações necessárias para a medição da tensão, nesse meu exemplo eu vou medir a tensão de 5V da fonte para protoboard utilizada,  como pode ser visto abaixo, o jumper azul de Vin+ é ligado ao positivo da fonte de alimentação, no caso 3,3V, enquanto que o Vin- deve ser ligado ao positivo da carga que será medida, 5V, podemos fazer essas ligações através dos pinos ou dos bornes do módulo, lembrando que devemos igualar o GND da fonte e do microcontrolador, interligando-os.  O cálculo diferencial realizado pelo módulo será a equação (Vin+ - Vin–).

 

Se for utilizada uma carga com alto consumo de corrente, pode acontecer do módulo ser reiniciado, para que isso seja evitado é importante que nesses casos seja utilizado um capacitor entre a carga e a alimentação, além de um diodo amortecedor para evitar picos indutivos.

 

Programa para teste INA219


Para teste utilizaremos o exemplo disponível na biblioteca Adafruit INA219, para isso, vá em Adafruit INA219 e em seguida em getcurrent.

Depois de abrir o programa exemplo, selecione a placa e porta em sua IDE indo em Ferramentas > Porta: Arduino Uno, e em Porta: COMN°

 

Compile e abra o seu monitor serial para verificar os valores, se atentando a definição do baudrate para 115200.

 

 

O programa completo e comentado para facilitar entendimento está disponível abaixo, cole em sua IDE e compile para verificar o funcionamento do seu módulo.

 

/*Programa exemplo: Adafruit INA219 Alterações realizadas para facilitar o entendimento Modificações: Curto Circuito*/ 

/*Inclusão de bibliotecas necessárias */
#include <Wire.h> 
#include <Adafruit_INA219.h> 

Adafruit_INA219 ina219_0 (0x40); /*Adafruit_INA219 ina219_1 (0x41) ; para utilização de outro sensor */

void setup(void) /*laço de configuração */
{ 
	Serial.begin(115200); /*inicia serial com baudrate de 115200 */
	while (!Serial) 
	{ 
		delay(1); 
	} 
	uint32_t currentFrequency; /*definição de um ponteiro currentFrequency */
	Serial.println("Bem vindo"); /*printa "Bem vindo" no monitor serial */
 
	/*Inicializa o INA219, sendo por padrão (32V - 2A), no entanto, é possível realizar a calibração para alterar esse intervalo. */
	if (! ina219_0.begin()) 
	{ 
		Serial.println("Falha ao encontrar o INA219"); 
		while (1) { delay(10); 
	} 
} 

/*Para utilizar um intervalo de (32V - 1A), apresentando maior precisão ampéres: 
ina219.setCalibration_32V_1A(); 

Ou para usar uma faixa inferior a (16V - 400mA), apresentando maior precisão em vols e ampéres: 
ina219.setCalibration_16V_400mA(); */ 
Serial.println("Medição de corrente e tensão com INA219..."); /*printa "Medição de corrente e tensão com INA219..." } */

void loop(void) /*laço de repetição */
{ 
	float shuntvoltage = 0; /*definição tensão no shunt*/ 
	float busvoltage = 0; /*definição tensão no bus */
	float current_mA = 0; /*definição corrente */
	float loadvoltage = 0; /* definição tensão na carga */ 
	float power_mW = 0; /* definição potência */

	shuntvoltage = ina219_0.getShuntVoltage_mV(); /* comando para chamar a tensão no shunt */
	busvoltage = ina219_0.getBusVoltage_V(); /* comando para chamar a tensão em bus */
	current_mA = ina219_0.getCurrent_mA(); /* comando para chamar a corrente */
	power_mW = ina219_0.getPower_mW(); /*comando para chamar a potência */
	loadvoltage = busvoltage + (shuntvoltage / 1000);/*comando para chamar a tensão na carga */

	Serial.print("Tensão de Entrada: "); 
	Serial.print(busvoltage); 
	Serial.println(" V"); /*printa a tensão de entrada */
	Serial.print("Tensão no shunt: "); 
	Serial.print(shuntvoltage); 
	Serial.println(" mV"); /*printa a tensão no shunt */
	Serial.print("Tensão da Carga: "); 
	Serial.print(loadvoltage); 
	Serial.println(" V"); /*printa tensão na carga */
	Serial.print("Corrente: "); 
	Serial.print(current_mA); 
	Serial.println(" mA"); /*printa a corrente */
	Serial.print("Potência: "); 
	Serial.print(power_mW); 
	Serial.println(" mW"); /* printa a potência */
	Serial.println(""); 
	delay(2000); /* atraso de 2s */
}

 

 

Conclusão 

 

Com o teste, é possível visualizar o funcionamento do módulo, apresentando-se eficaz no levantamento de medidas de tensões e correntes, assim sendo, este se apresentou uma excelente alternativa para a substituição de um multímetro, no monitor serial é visualizável a tensão na carga, além da tensão de entrada BUS, que corresponde a alimentação do Arduino.

Espero que vocês consigam realizar muitos projetos com o módulo, nos vemos no próximo tutorial. 

 

Abraços, Curto Circuito :)

 

Referências

 

https://learn.adafruit.com/adafruit-ina219-current-sensor-breakout

https://www.dobitaobyte.com.br/sensor-de-corrente-tensao-e-potencia-ina219/

INA219