fbpixel
Etiquetas: , , ,
0
(0)

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.

Schéma de connexion entre Arduino, INA219, moteur et source d'énergie

É 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.

Schéma de connexion entre batterie LiPo Arduino, capteur INA219 et panneau solaire

Fontes

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

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?