Débuter avec un capteur INA219, mesurer la puissance d’un panneau solaire ou une batterie avec un Arduino ou ESP8266

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Table des matières

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.

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

Documentation officielle Ti

-33% Ina219 I2C Interface zéro dérive bidirectionnelle courant/Module de capteur de surveillance de...
0,37 0,56
-22% Ina219 I2C Interface zéro dérive bidirectionnelle courant/Module de capteur de surveillance de...
0,38 0,49
-20% Ina219 I2C Interface zéro dérive bidirectionnelle courant/Module de capteur de surveillance de...
0,39 0,49
INA219 I2C Bi-directional DC Current Power Supply Sensor Breakout Module DIY
GY-219 INA219 I2C Bi-directional DC Current Power Supply Sensor Breakout Module
CJMCU-219 INA219 I2C Bi-directional Current Power Monitor Sensor Module
5,32
HALJIA INA219 I2C Module de dérivation d'alimentation DC bidirectionnel
7,99
HiLetgo 2pcs INA219 I2C Bi-directional DC Current Power Supply Sensor Power Monitor...
10,49

Voir toutes les promos

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)

ina219 i2c address

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.

install adafruit ina219 library 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

ina219 puissance panneau solaire solar panel power arduino

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 <Wire.h>
#include <Adafruit_INA219.h>

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.

solar panel ina219 arduino power measure

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

04d9e840112d3d71d413f8b69b99122a855f5356

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

72ca1a2482a11ac4555329a3a3ee17f78db0b6ae

J’ai ouvert ce sujet sur le forum pour échanger des infos ou une solution au problème.

Avez-vous aimé cet article ?
[Total: 1 Moyenne: 4]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

quel modèle esp8266 choisir
Quel modèle d'ESP8266EX choisir en 2020 ?
guide choix esp32 development board
Quel ESP32 choisir en 2020 ?

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

9 Commentaires
  1. Bonjour,

    Voici un très bon article sur la mise en œuvre d’un INA219, ainsi que l’article qui le suit sur la collecte des mesures en temps réel et leur visualisation via un dashboard Grafana.

    Ça a été l’occasion pour moi de ressortir quelques panneaux très peu chèrement acquis et que quelques tests empiriques m’avait fait remiser au placard tant leur rendement était au deçà de mes espérances.

    Néanmoins la mise en œuvre des tests m’a amené quelques réflexions.

    Concernant le but recherché tout d’abord. Il s’agit ici de déterminer le rendement réel d’un panneau solaire. C’est-à-dire lors d’une utilisation en charge et non en Open Circuit ou en Short Circuit, qui ne sont que des données théoriques sur la tension ou le courant maximum que le panneau pourrait délivrer.

    Il nous faut donc une charge connue et stable afin de déterminer si le panneau est capable ou non de délivrer ce que l’on attend de lui.

    Or ici la charge n’est ni stable, ni contrôlée. Il s’agit d’un chargeur connecté à une batterie dont on ne connait pas sa charge initiale et dont celle-ci va évoluer au cours du temps. Par conséquent le courant débité va évoluer constamment et fausser la mesure du panneau. D’autre part le chargeur, par conception, ne démarrera son cycle de charge que lorsqu’une tension seuil minimum sera atteinte (assez de soleil) et dès lors qu’il commencera à débiter du courant la tension va chuter (c’est un panneau solaire). On peut alors donc se retrouver sous la tension seuil, tout s’arrête, puis recommence, etc. Et c’est très exactement ce que j’observe sur mes courbes en dent de scie quand on flirte avec la tension de seuil.

    Il y a en réalité 2 charges ici : le chargeur dont la consommation interne sera très faible et la batterie dont la consommation sera bien plus élevée, du moins lorsqu’elle est en charge. L’ensemble constituant virtuellement une seule et même charge, mais dont la consommation est variable. Variable car il s’agit ici d’un chargeur Li-Ion qui comporta un cycle de charge spécifique en 2 phases (CV/CC) et dont le courant va varier au cours du cycle.
    Idéalement il faudrait donc procéder avec une charge connue et stable (résistance ou ampoule) et la valeur retournée par l’INA219 reflèterait exactement ce qui est disponible et consommé par la charge.

    On pourrait aussi placer un 2ème INA219 sur le circuit de la batterie et corréler les 2 mesures. Mais cela complique notablement l’interprétation des résultats. Encore une fois, l’objectif ici est de déterminer l’efficacité du panneau et non celle du chargeur (mais ça peut faire l’objet d’un autre article).
    Enfin, une autre réflexion concernant l’usage de bien connu TP4056. C’est effectivement un très bon choix pour charger une batterie Li-Ion, surtout dans sa version protégée qui permet d’alimenter un projet tout en chargeant la batterie (Load Sharing). Mais c’est un très mauvais choix quand il est alimenté par un panneau solaire.

    Ce module est conçu pour être alimenté avec une tension et un courant stable, délivrés par l’USB ou une alimentation externe par exemple. Comme abordé plus haut, la charge d’une batterie Li-Ion est spécifique et requiert 2 phases en tension constante (CV) puis en courant constant (CC). Il importe donc que l’alimentation puisse délivrer la tension et le courant requis, et ce tout au long du cycle de charge. Ce qui n’est absolument pas le cas d’un panneau solaire dont la tension et le courant vont varier constamment en fonction de l’ensoleillement. Une baisse de l’un ou de l’autre va donc provoquer un arrêt du processus de charge, lequel va reprendre à zéro puis s’arrêter de nouveau, etc. Il en résulte une batterie chargée en apparence, mais très mal chargée en réalité. Non seulement elle sera moins endurante mais on réduit aussi sa durée de vie. Néanmoins pour des projets nécessitant peu de courant cela restera tout à fait fonctionnel.

    Cet article de Adafruit explique très bien ce phénomène :
    https://learn.adafruit.com/usb-dc-and-solar-lipoly-charger?view=all#why-a-special-solar-charger-47558-4

    On pourrait limiter les fluctuations avec un gros condensateur (4700µF) sur la ligne d’alimentation. Je ne l’ai pas testé.

    Au lieu d’un module TP4056 il est préférable d’utiliser à la place un module MCP73871 (de nombreuses copies existent). Ce module de charge Li-Ion est spécialement conçu pour être alimenté par un panneau solaire, et donc avec des tension/courant instables. Et comme le TP4056 il permet le Load Sharing.

    Le revers de la médaille est qu’il a une tension de seuil relativement élevée (4.5V) et donc son usage est à déconseillé avec des panneaux de très faible rendement et/ou lors de très faibles ensoleillements.

    J’espère que ces commentaires trouveront quelques utilités.

    Joël

    • Bonsoir Joël. Tout d’abord un très grand merci pour toutes vos remarques et reflexions hyper constructives. Votre commentaire mérite un article à lui seul 👏 Vous êtes beaucoup plus pointu que moi sur le sujet, je suis certain effectivement que vos reflexions vont trouver écho chez beaucoup d’autres Makers, je n’ai fait qu’effleurer le sujet ! Mon objectifs était de savoir s’il était possible d’alimenter des IoT fait par nos soins avec des composants low cost. Je suis parti de zéro en therme de connaissances sur le sujet d’où très certainement des choix discutables, j’en convient.
      Si vous avez d’autres idées ou des projets à partager, je serais vraiment très heureux de les partager sur le blog, j’ai un peu le nez dans le guidon sur plein de thèmes en même temps. Bon week end. Prenez soin de vous.

  2. Bonjour,

    Merci pour cet article et l’avertissement sur les clones défaillants.
    Quel est le marquage des puces sur les deux exemples présentés sur la photo (à supposer que ce marquage puisse avoir une valeur probante…) : A219 ou B219 (ou autre) ?

  3. super tuto et très bon site j’ai hâte de pouvoir tester les différent tutoriels après la réception des composants

  4. Slt
    En regardant le schéma il faudrait plutôt écrire
    Pole (+) du panneau solaire -> Vin (-) INA 219 -> Vin (+) INA 219 -> Pole (+) régulateur de charge

    au lieu de

    Pole (+) du panneau solaire -> Vin (+) INA 219 -> Vin (-) INA 219 -> Pole (+) régulateur de charge

  5. il faudrait remplacer
    Plage de mesure :
    Courant continu jusqu’à 26V
    Tension jusqu’à 3,2A, résolution: 0,8 mA

    par

    Plage de mesure :
    Tension continu jusqu’à 26V
    Courant jusqu’à 3,2A, résolution: 0,8 mA

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Calculateurs
×
Calculateur loi d'Ohm
Tension (U) - en Volt
Courant (I) - en Ampère
Résistance (R) - en Ohms
Puissance (P) - en Watts

Ce calculateur permet de calculer les relations entre le courant, la tension, la résistance et la puissance dans les circuits résistifs.

Saisir au moins deux valeurs puis cliquer sur calculer pour calculer les valeurs restantes. Réinitialisez après chaque calcul.

Rappel sur la Loi d'Ohm
La loi d'Ohm explique la relation entre la tension, le courant et la résistance en déclarant que le courant traversant un conducteur entre deux points est directement proportionnel à la différence de potentiel entre les deux points.
La loi d'Ohm s'écrit U = IR, où U est la différence de tension, I est le courant en ampère et R est la résistance en Ohms (symbole Ω).
Loi d'Ohm (U=RI)
×
Déchiffrer le code couleur d'une résistance à 4 bandes
Bande 1 Bande 2 Multiplicateur Tolérance
   

Résistance:  

1 000 Ω ±5%

Comment déchiffrer le code couleur d'une résistance à 4 anneaux
Formule : ab*cΩ ±d%
Les deux premières bandes (a, b) permettent de déterminer le chiffre significatif. La première bande correspond au chiffre de la dizaine, le second anneau le chiffre de l'unité. Par exemple Brun(1), Noir (0) donne le nombre 10.
La troisième bande (c) est un coefficient multiplicateur. Par exemple, l'anneau rouge est un coefficient multiplicateur de 100, ce qui donne 10 X 100 = 1000Ω.
Le quatrième anneau (d) indique la tolérance de la valeur nominale de la résistance. Par exemple l'anneau Or correspond à ±5%. Donc le fabricant de la résistance s'engage à ce que sa valeur soit comprise entre 950 Ω et 1050 Ω.
Déchiffrer code couleur 4 bandes
×
Déchiffrer le code couleur d'une résistance à 5 bandes
Bande 1 Bande 2 Bande 3 Multiplicateur Tolérance

Résistance:  

1 000 Ω ±5%

Comment déchiffrer le code couleur d'une résistance à 5 anneaux
Formule : abc*dΩ ±e%
Les trois premières bandes permettent de déterminer le chiffre significatif. La première bande correspond au chiffre de la dizaine, le second anneau le chiffre de l'unité. Par exemple Brun(1), Noir (0), Noir (0) donne le nombre 100
La quatrième bande est un coefficient multiplicateur. Par exemple, l'anneau brun correspond au coefficient multiplicateur 10, ce qui donne 100 X 10 = 1000Ω.
Le cinquième anneau indique la tolérance de la valeur nominale de la résistance. Par exemple l'anneau Or correspond à ±5%. Donc le fabricant de la résistance s'engage à ce que la valeur de la résistance soit comprise entre 950 Ω et 1050 Ω.
Déchiffrer code couleur 5 bandes
×
Calculateur de résistance série pour une ou plusieurs LED
Tension d'alimentation en Volt
Tension directe en Volt
Courant en mA
Résistance calculée en Ω
Puissance estimée en W

Ce calculateur permet de déterminer la résistance requise pour piloter une ou plusieurs LED connectées en série à partir d'une source de tension à un niveau de courant spécifié.

Remarque. Il est préférable d'alimenter le circuit avec une puissance nominale comprise entre 2 et 10 fois la valeur calculée afin d'éviter la surchauffe
Couleur Longueur d'onde (nm) Tension (V) pour LED ⌀3mm Tension(V) pour LED ⌀5mm
Rouge 625-630  1,9-2,1 2,1-2,2
Bleu 460-470 3,0-3,2 3,2-3,4
Vert 520-525 2,0-2,2 2,0-2,2
Jaune 585-595 2,0-2,2 3,0-3,2
Blanc 460-470 3,0-3,2 1,9-2,1
Résistance en série pour une ou plusieurs LED
×
Calculateur durée de vie d'une batterie
Capacité de la batterie
Consommation de l'appareil ou objet connecté

Ce calculateur estime la durée de vie d'une batterie, en fonction de sa capacité nominale et du courant ou de la puissance qu'une charge en tire.

La durée de vie de la batterie est une estimation idéalisée. La durée de vie réelle peut varier en fonction de l'état de la batterie, de son âge, de la température, du taux de décharge et d'autres facteurs. C'est le mieux que vous pouvez espérer obtenir.

Autonomie de la batterie = capacité de la batterie en mAh / courant de charge en mA

Durée de vie batterie
Publicité
À lire aussi
Composants
Sur le Forum
Domotique et objets connectés à faire soi-même
Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment.