fbpixel
Etiquetas: , , ,

O INA219 é um sensor de corrente e tensão para uma medição de energia fácil. Em algumas aplicações, é interessante poder medir a potência elétrica trocada entre dispositivos – como para conhecer a potência captada por um painel solar, por exemplo. Neste tutorial, veremos como medir os valores de potência com o sensor INA219.

Pré-requisito: dê sentidos ao seu robô

Material

  • Computador
  • Arduino
  • Cabo USB
  • Sensor INA219

Esquema

O INA219 é um sensor de corrente e tensão que comunica via I2C. Basta alimentá-lo através da saída 5V do Arduino e ligar os terminais SDA e SLC da comunicação I2C.

ina219-arduino_bb-1280x1216 Medição de potência com o Arduino e um INA219

É possível modificar o endereço I2C utilizado acrescentando uma ponte de solda nos terminais A0 e A1:

  • 0x40 o endereço padrão
  • 0x41 com uma ponte em A0
  • 0x44 com uma ponte em A1
  • 0x45 com uma ponte em A0 e A1

Código

Para exibir as medidas do INA219, usaremos a biblioteca Adafruit_INA219.h que pode ser baixada ou ser instalada diretamente da IDE do Arduino.

A potência elétrica trocada por dois dispositivos é calculada multiplicando-se a tensão e a corrente no barramento que os liga:

P=UxI, sendo “P” a potência (W), “U” a voltagem (V) e “I” a corrente (A).

A energia é a potência consumida pelo dispositivo ao longo do tempo

E=Pxt, sendo “E” a energia (Wh), “P” a potência (W) e “t” o tempo (h)

Funções para saber:

  • begin() para iniciar a comunicação com o sensor
  • getBusVoltage_V() para obter o valor da tensão no barramento Vin- /Vin+
  • shuntVoltage_mV() para obter a tensão nos terminais da resistência shunt
  • getCurrent_mA() para obter o valor da corrente a partir da resistência shunt
#include <Wire.h>
#include <Adafruit_INA219.h>

Adafruit_INA219 ina219;

  float voltage_V = 0,shuntVoltage_mV,busVoltage_V;
  float current_mA = 0;
  float power_mW = 0;
  float energy_Wh=0;
  long time_s=0;

void setup(void) 
{
  Serial.begin(9600);
  uint32_t currentFrequency;
  ina219.begin();
  Serial.println("Measuring voltage and current with INA219");
}

void loop(void) 
{
  getData();
  delay(2000);
}

void getData(){
  
 time_s=millis()/(1000); // convert time to sec
 busVoltage_V = ina219.getBusVoltage_V();
 shuntVoltage_mV = ina219.getShuntVoltage_mV();
 voltage_V = busVoltage_V + (shuntVoltage_mV / 1000);
 current_mA = ina219.getCurrent_mA();
 //power_mW = ina219.getPower_mW(); 
 power_mW=current_mA*voltage_V; 
 energy_Wh=(power_mW*time_s)/3600;   //energy in watt hour
   
  
  Serial.print("Bus Voltage:   "); Serial.print(busVoltage_V); Serial.println(" V");
  Serial.print("Shunt Voltage: "); Serial.print(shuntVoltage_mV); Serial.println(" mV");
  Serial.print("Load Voltage:  "); Serial.print(voltage_V); Serial.println(" V");
  Serial.print("Current:       "); Serial.print(current_mA); Serial.println(" mA");
  Serial.print("Power:         "); Serial.print(power_mW); Serial.println(" mW");  
  Serial.print("Energy:        "); Serial.print(energy_Wh); Serial.println(" mWh");
  Serial.println("----------------------------------------------------------------------------");
}


Aplicação

Uma aplicação possível para um sensor INA219 é a criação de um medidor de energia para medir a potência elétrica absorvida por um painel solar, por exemplo. Isso permite verificar o bom funcionamento das células fotovoltaicas e conhecer o seu desempenho ao longo do tempo.

ina219-arduino-solar_bb Medição de potência com o Arduino e um INA219

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie