L’INA219 est un circuit permettant de mesurer simplement la puissance consommée par un appareil mais on peut également l’utiliser pour mesurer la puissance délivrée par un panneau solaire ou une batterie LiPo (ou un autre type de batterie. L’INA 219 permet de mesurer un courant continu jusqu’à 26V / 3.2A. Il est équipé d’un bus I2C ce qui permet de récupérer très facilement les mesures à l’aide d’un MCU (Arduino, ESP8266, ESP32) ou d’un mini PC Raspberry Pi.
L’INA219 vient se placer sur le circuit entre la source d’alimentation et le consommateur d’énergie.
Sommaire
Caractéristiques de l’INA 219
L’INA219 est un capteur I2C qui pourra être alimenté entre 3 et 5V. On pourra l’utiliser avec n’importe quelle carte de développement ou mini PC
- Alimentation: 3 à 5 Vcc
- Résistance de détection de courant : 0,1 ohm 1% 2W
- Plage de mesure :
- Tension continue jusqu’à 26V
- Tension jusqu’à 3,2A, résolution: 0,8 mA
- Adresses I2C (sur 7 bits) : 0x40, 0x41, 0x44, 0x45. Sélection par pont de soudure
Changer l’adresse I2C
On dispose de deux jumper A0 et A1. En soudant un pont de soudure, on peut choisir parmi 4 adresses I2C :
0x40 Offset = binary 00000 (par défaut) 0x41 Offset = binary 00001 (pont A0) 0x44 Offset = binary 00100 (pont A1)
0x45 Offset = binary 00101 (pont A0 et A1)
Installer la librairie INA 219 d’Adafruit sur l’IDE Arduino
La librairie INA 219 d’Adafruit est directement disponible depuis le gestionnaire de librairie de l’IDE Arduino.
La seconde librairie développée par 4 développeurs (également disponible sur GitHub ici) permet d’ajuster plus finement les paramètres de mesure et de passer quelques paramètres de configuration à l’initialisation du capteur
- Plage : Range for bus voltage
- RANGE_16V : 0-16 volts
- RANGE_32V (par défaut): 0-32 volts
- Gain : ajuste le gain du shunt
- GAIN_1_40MV : 40mV
- GAIN_2_80MV : 80mV
- GAIN_4_160MV : 160mV
- GAIN_8_320MV (par défaut): 320mV
- bus_adc : configure bus voltage conversion
- ADC_9BIT : 9bit, 84us.
- ADC_10BIT : 10bit, 148us
- ADC_11BIT : 11bit, 2766us
- ADC_12BIT (par défaut): 532us
- ADC_2SAMP : 2 échantillons, 1.06ms
- ADC_4SAMP : 4 échantillons, 2.13ms.
- ADC_8SAMP : 8 échantillons, 4.26ms.
- ADC_16SAMP : 16 échantillons, 8.51ms
- ADC_32SAMP : 32 échantillons, 17.02ms.
- ADC_64SAMP : 64 échantillons, 34.05ms.
- ADC_128SAMP : 128 échantillons, 68.10ms.
- shunt_adc: les mêmes paramètres que bus_adc
- Mode:
- PWR_DOWN : éteint
- ADC_OFF
- CONT_SH : Mesure du Shunt en continu
- CONT_BUS :
- CONT_SH_BUS (par défaut)
Mesurer la puissance délivrée par un panneau solaire ou une batterie
Quelque soit la source d’alimentation, il est possible de mesurer la puissance délivrée (tension et intensité du courant). Pour que cela fonctionne, il faut donc placer l’INA219 entre la source de courant et un consommateur. Ce peut être une LED ou un régulateur de charge (dans le cas d’un panneau solaire).
Un cas d’application type et l’utilisation d’un panneau solaire pour recharger une batterie LiPo ou une batterie rechargeable au lithium 18650. Pour recharger la batterie, il est nécessaire d’utiliser un régulateur de charge. Le plus connu est le TP4056 mais il en existe beaucoup d’autre. Cela fera l’objet d’un prochain article.
Pour faire la mesure de puissance, on vient couper le fil positif allant du panneau solaire à l’entrée du régulateur de charge suivant ce schéma :
- Pole (+) du panneau solaire -> Vin (-) INA 219 -> Vin (+) INA 219 -> Pole (+) régulateur de charge (inverser si la mesure est négative)
- Pole (-) du panneau solaire -> GND du MCU
- Pole (-) du régulateur de charge -> GND du MCU
Voici un schéma de câblage plus explicite
Code Arduino compatible ESP8266, ESP32
La librairie Adafruit INA 219 est livrée avec un exemple. Vous pouvez également utiliser broche 2 pour mesurer le courant délivré pour l’Arduino Uno. Si vous utilisez un ESP8266, changez par une sortie au format Dx. N’utilisez pas les broches D1 et D2 utilisées par le bus I2C.
#include #include Adafruit_INA219 ina219; void setup() { Serial.begin(9600); Serial.println("Measuring voltage and current with INA219 ..."); ina219.begin(); pinMode(2,OUTPUT); } void loop() { digitalWrite(2,HIGH); float shuntvoltage = 0; float busvoltage = 0; float current_mA = 0; float loadvoltage = 0; float power = 0; shuntvoltage = ina219.getShuntVoltage_mV(); busvoltage = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); loadvoltage = busvoltage + (shuntvoltage / 1000); power = current_mA * loadvoltage; Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V"); Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV"); Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V"); Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA"); Serial.print("Power: "); Serial.print(power); Serial.println(" mW"); Serial.println(""); delay(5000); }
Si vous avez attribué une autre adresse I2C, indiquez celle-ci au moment de l’initialisation de l’objet ina219()
ina219.begin(0x41);
Ouvrez le moniteur série pour connaître la puissance délivrée par votre panneau solaire. Ici de toute évidence, la puissance n’est pas suffisante pour alimenter un régulateur de charge.
Problème qualité des clones chinois
C’est Texas Instrument (TI) qui fabrique l’INA 219. Pour une raison qui m’échappe, certaines cartes sont livrées avec un circuit défectueux ou mal configuré. En scannant le bus I2C, les modules défectueux disposent de plusieurs adresses
Même en testant chaque adresse, rien n’y fait.
J’ai testé plusieurs circuits, voici comment reconnaitre les circuits qui semblent poser problème
J’ai ouvert ce sujet sur le forum pour échanger des infos ou une solution au problème.
- ESP32, broches GPIO et fonctions associées. I/O, PWM, RTC, I2C, SPI, ADC, DAC
- ESP32-CAM. Broches et équipements ESP-EYE, AI Thinker, TTGO T-Camera, M5Stack Timer Camera…
- ESP32-CAM. Quel modèle choisir ? ESP-EYE, AI Thinker, TTGO T-Camera, M5Stack Timer Camera…
- M5Stack Atomic GPS. Tracker ESP32 TinyGPS++, export GPX sur carte SD, visualisation sur Google Maps ou VSCode
- Home Assistant. Installer le snap sur NAS Synology sur une machine virtuelle Ubuntu
Avez-vous aimé cet article ?