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.
Il est possible de modifier l’adresse I2C utilisée en rajoutant un pont de soudure sur les borniers A0 et A1:
- 0x40 l’adresse par défaut
- 0x41 avec un pont sur A0
- 0x44 avec un pont sur A1
- 0x45 avec un pont sur A0 et A1
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.
Sources
- https://openhomeautomation.net/power-monitoring-arduino-ina219/
- https://learn.adafruit.com/adafruit-ina219-current-sensor-breakout/assembly
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie