Etiquetas: , ,

El sensor INA219 es un sensor de corriente y voltaje para medir fácilmente la potencia. En algunas aplicaciones, es interesante medir la energía eléctrica intercambiada entre dispositivos. Por ejemplo, medir la potencia recuperada por un panel solar. En este tutorial veremos cómo medir los valores de potencia con el sensor INA219.

Requisito previo : Dale sentido a su robot

Hardware

  • Computadora
  • Tablero Arduino
  • Cable USB
  • 1x sensor INA219

Diagrama

El sensor INA219 es un sensor de corriente y voltaje que se comunica a través de I2C. Es suficiente suministrarle la salida de 5V del Arduino y conectar los terminales SDA y SLC de la comunicación I2C.

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

Code

Para mostrar las mediciones INA219, utilizaremos la biblioteca Adafruit_INA219.h que puede descargar o instalar directamente desde el IDE de Arduino.

La potencia eléctrica intercambiada por dos dispositivos se calcula multiplicando el voltaje y la corriente en el bus que los conecta:

P = UxI con P la potencia (W), U la tensión (V) e I la corriente (A).

La energía es la energía que consume el dispositivo a lo largo del tiempo.

E = Pxt con energía E (Wh), potencia P (W) y tiempo t (h)

Funciones a saber:

  • comenzar () para inicializar la comunicación con el sensor
  • getBusVoltage_V () para recuperar el valor de voltaje en el bus Vin- / Vin +
  • shuntVoltage_mV () para recuperar el voltaje a través de la resistencia de derivación
  • getCurrent_mA () para recuperar el valor actual de la resistencia de derivación
#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("----------------------------------------------------------------------------");
}


Solicitud

Una posible aplicación con un sensor INA219 es crear un medidor de energía para medir la energía eléctrica absorbida por un panel solar, por ejemplo. Esto le permite verificar el correcto funcionamiento de las células fotovoltaicas, por un lado, y medir su rendimiento a lo largo del tiempo.

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

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código