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
Bonjour,
Je suis en train de conduire le même type de projet, pour mon poulailler connecté alimenté par 2 panneaux solaires de 5V en parallèle et 4 batteries 18650 de 5000mAh chacune montées en parallèle . Je travaille sous HOME ASSISTANT et j’aurais voulu mesurer les performances de mes panneaux et l’autonomie de mes batteries. Il me semble que sur le schéma il manque un régulateur de type TP4056.
Merci d’avance pour votre aide
Bonjour, merci pour votre commentaire.
Le schéma présenté ici est un schéma de principe. Il est effectivement nécessaire de rajouter un régulateur de charge entre le panneau solaire et la batterie.
Bonsoir
Merci pour votre réponse, pourriez-vous m’aider à construire le schéma électrique en incluant le régulateur de charge car je rencontre des difficultés dans le raccordement des différents composants sur mon ESP8266 nodemcu ?
Bonjour,moi j’ai un panneau de 10 Watts,j’aimerai mesurer la puissance et l’énergie produite par ce panneau,pourriez vous m’aider?
Ce quel type de régulateur doit utiliser ? solaire de 10A au lieu du TP4056?
Merci
Bonjour. Est-ce que tu as pu réaliser ton projet? Peut on remplacer une batterie solaire de 12v 5Ah avec un panneau de 10w1tt?
Merci
Bonjour, un panneau solaire ne peut pas délivrer un courant suffisant et constant. Il doit forcément être couplé avec une batterie.
bonjour. Pouvez vous me donner un schéma comment je dois brancher le panneau solaire,batterie,ina219 et arduino?
Le schéma à la fin du tutoriel donne le principe de connexion. Par contre, il faut que le niveau de tension soit adapté entre le panneau solaire et la batterie
Pour mesurer la puissance, vous devez trouver un capteur de tension de 12V (minimmum) et un capteur de courant pour 1A. Vous pouvez aussi regarder du côté des pont diviseur de tension (mesure de tension) et des résistances de shunt (mesure de courant)
Bonjour. Pour mesurer la puissance produite par un panneau je dois en avoir un capteur de courant et de tension comme vous me l’avez dit,en effet j’ai utilise un capteur de tension et un capteur de courant (ACS712 5A) mais les résultats que j’ai obtenu sont négatifs et faux. Je sais pas s’il s’agit du code.
pouvez vous me donner une idée?
Merci et bien à vous
Si le résultat est négatif et faux, soit il y a un problème de connexion, soit le capteur est branché à l’envers.
Quel est le capteur de tension?
Bonjour c’est quel type de diode que vois avez mis sur la borne + du panneau? Et il joue quel rôle ce diode. MERCI
Bonjour, c’est un schéma de principe. Le type de diode dépendra de votre application et de la puissance transmise. Elle permet d’empêcher la conduction d’électricité vers le panneau solaire.
Bonjour
S’il vous plaît après le calcul de la puissance par le module, comment afficher le résultat ?
Comment recueillir cette information ?
Merci d’avance pour la réponse
la puissance est disponible sur cette lign
Serial.print(« Power: « ); Serial.print(power_mW); Serial.println( » mW »);
la puissance est disponible sur cette ligne
Serial.print(« Power: « ); Serial.print(power_mW); Serial.println( » mW »);
Bonjour,moi j’ai un panneau de 10 Watts,j’aimerai mesurer la puissance et l’énergie produite par ce panneau,pourriez vous m’aider?
Ce quel type de régulateur doit utiliser ? solaire de 10A au lieu du TP4056?
Merci
Bonjour à tous,
comme je dois utiliser plusieurs INA219 (même alimentation mais pour des départs différente), les modules pouvant avoir plusieurs adresses, il est donc possible de les monter sur le même bus I2C.
Par contre comment gérer l’accès à ces différentes adresses afin de sélectionner le bon module ?
Les fichiers « standards » utilisent une adresse « standard », pour les différentier, je n’ai pas encore trouvé l’astuce.
Si l’un de vous pouvait me suggérer une manière, je l’expérimenterai de suite.
/*Cordialement.*/
Paul
Bonjour,
L’adresse est sélectionnée dans le code. Il suffit de créer un objet INA pour chaque module:
ina219a.begin()
ina219b.begin(0x41)
etc.
bonjour,il y a un probleme il faut relier toutes les masses entre elles sinon erreur sur la lecture.
Si vous suivez le schema avec le panneau solaire exactement si vous debranchez Vin+ vous avez toujours 1,04v au lieu de zero volts.
C’est tout a fait exact. Merci beaucoup pour le commentaire