Étiquettes : , , ,

Le Capteur INA219 est un capteur de courant et de tension permettant un mesure facile de la puissance. Dans certaines applications, il est intéressant de mesurer la puissance électrique échangée entre des appareils. Par exemple, mesurer la puissance récupérée par un panneau solaire. Nous allons voir dans ce tutoriel comment mesurer les valeurs de puissance avec le capteur INA219.

Prérequis : Donnez des sens à votre robot

Matériel

  • Ordinateur
  • Carte Arduino
  • Câble USB
  • 1x capteur INA219

Schéma

Le capteur INA219 est un capteur de courant et de tension communiquant via I2C. Il suffit de l’alimenter avec la sortie 5V de l’Arduino et de relier les bornes SDA et SLC de la communication I2C.

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

Code

Pour afficher les mesure de l’INA219, nous allons utiliser la librairie d’Adafruit Adafruit_INA219.h que vous pouvez télécharger ou installer directement depuis l’IDE Arduino.

La puissance électrique échanger par deux appareils se calcule en multipliant la tension et le courant sur le bus les reliant:

P=UxI avec P la puissance(W), U la tension(V) et I le courant(A).

L’énergie est la puissance consommée par l’appareil au cours du temps

E=Pxt avec E l’énergie(Wh), P la puissance (W) et t le temps(h)

Fonctions à connaitre:

  • begin() pour initialiser la communication avec le capteur
  • getBusVoltage_V() pour récupérer la valeur de tension sur le bus Vin- /Vin+
  • shuntVoltage_mV() pour récupérer la tension aux bornes de la résistance de shunt
  • getCurrent_mA() pour récupérer la valeur de courant à partir de la résistance de 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("----------------------------------------------------------------------------");
}

Application

Une application possible avec un capteur INA219 est de créer un énergie-mètre afin de mesurer la puissance électrique absorbée par un panneau solaire, par exemple. Cela vous permet de vérifier le bon fonctionnement des cellules photovoltaïques, d’une part, et de mesurer ses performances au cours du temps.

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

Sources

https://openhomeautomation.net/power-monitoring-arduino-ina219/