Banc de Mesure de Consommation
Cet article décrit un banc de mesure de consommation. Il est réalisé autour d'une carte ARDUINO MEGA et possède deux modules INA226 et un afficheur OLED.
1. La théorie
La tension maximale aux bornes du shunt de l'INA226 est de 81.92mV, ce qui correspond pour un shunt de 100mΩ à un courant maximal mesurable arrondi de 820mA ou pour un shunt de 10Ω à un courant maximal mesurable arrondi de 8,20mA.Pour le shunt de 100mΩ La résolution est donc de 820 / 32768 = 25µA.
Pour le shunt de 10Ω La résolution est donc de 8,20 / 32768 = 0.25µA.
Pourquoi 32768 alors que l'ADC de l'INA226 est un 16bits ? Parce qu'il est capable de mesurer des courants négatifs, donc 16 bits moins le bit de signe cela fait 15, et 2 à la puissance 15 = 32768.
Dans tous les cas, la chute de tension maximale aux bornes du shunt sera celle de l'INA226 : 81.92mV, ce qui est très acceptable.
2. Les fonctionnalités
Cette carte permet de mesurer la consommation de montages électroniques, en particulier de circuits à base de micro-contrôleurs à faible consommation comme décrit ICI.Il est capable de mesurer des courants de 0.5µA à 0.8A.
Deux shunts sont utilisés :
- un shunt 0.1Ω high-side
- un shunt 10Ω low-side
Le shunt de 10Ω est activé uniquement pour la mesure de courant inférieurs à 5mA.
La tension appliquée à la charge est également mesurée. Celle-ci peut être au maximum de 33V.
Un transil 33V et un fusible protègent le banc.
Ce banc permet donc d'alimenter des cartes à micro-contrôleur en 1.8V, 3.3V, 5V et plus. Il peut par exemple mesurer le courant sur le JACK d'alimentation d'un ARDUINO UNO en 7.5V ou 12V. Il n'est pas limité à la mesure de tensions faibles comme certains :
Exemple: ST microelectronics, limité à 1.8V - 3.3V.
Deux modes de fonctionnement sont possibles. Le choix se fait par un petit inverseur.
2.1. Mode autonome
Un petit afficheur OLED permet de visualiser la tension et le courant instantanés.2.2. Mode connecté
Les données sont remontées vers un PC par le câble USB de l'ARDUINO MEGA.
Un logiciel sur le PC récolte les données et effectue les calculs :
- tension minimale
- tension maximale
- tension moyenne
- courant minimal
- courant maximal
- courant moyen
Il est développé en PYTHON + MATPLOTLIB.
2.3. Calibration
En l'absence de charge, l'appui sur un micro-switch permet de calibrer le zéro du banc.Débrancher et brancher la câble USB. Appuyer sur le switch une vingtaine de secondes, relâcher. Appuyer à nouveau pour démarrer.
La calibration est sauvegardée en EEPROM.
2.4. Shield
La carte est développée sous forme de shield enfichable directement sur la carte ARDUINO MEGA. La carte MEGA est équipée de quatre pieds plastique.3. Le matériel
Pour réaliser ce banc, il vous faudra réunir :
- un ARDUINO MEGA
- deux modules INA226
- un shunt 10Ω CMS 2010
- un shunt 100mΩ CMS 2010
- un afficheur SSD1306 0.96 pouces
- 1 condensateur de 100nF
- un transistor MOSFET IRLZ44N
- 1 résistance de 110Ω
- 1 résistance de 9.1KΩ
- deux connecteurs 2 broches mâles au pas de 2.54
- trois connecteurs 8 broches mâles au pas de 2.54
- un connecteur 10 broches mâles au pas de 2.54
- un micro-switch pur PCB
- un inverseur pour PCB
- un porte-fusible 20mm
- un transil 33V
- une broche de test
- quatre pieds plastique pour la MEGA
Ils doivent être remplacés. Il s'agit de résistance CMS 2010, maximum 2512.
Les valeurs des résistances de 110Ω et 9.1KΩ ne sont pas critiques. 100Ω et 10KΩ conviennent.
Le transil n'est pas obligatoire si vous êtes sûr de limiter la tension d'alimentation à 33V.
4. Le schéma
Sur ce diagramme de l'INA226 on peut voir que l'on peut faire la mesure de courant en low-side (côté GND) ou high-side (côté positif).
Le principe de fonctionnement du banc est le suivant :
- un INA226 est utilisé en milliampèremètre (shunt de 100mΩ) et voltmètre en high-side
- un INA226 est utilisé en microampèremètre (shunt de 10Ω) en low-side
- un MOSFET canal N permet de court-circuiter le micro-ampèremètre lorsque la mesure est effectuée par le milliampèremètre
Le micro-ampèremètre est situé côté low-side car pour commander le MOSFET canal N il faut que sa source soit au GND, et que sa grille soit commandée par une tension positive suffisamment élevée (5V).
Le MOSFET est saturé en permanence, ce qui court-circuite le shunt de 10Ω du microampèremètre et permet d'éviter une chute de tension trop importante pendant la mesure des courants importants.Quand le courant mesuré sur le milliampèremètre est inférieur à 5mA, une tension de 0V est appliquée sur la grille du MOSFET afin de mettre en service le shunt de 10Ω. Une mesure est alors réalisée par le microampèremètre.
Le schéma est réalisé à l'aide de KICAD.
Pour récupérer le projet voir plus bas : 8. Téléchargements
Vous pouvez aisément essayer ce montage sur une breadboard.
5. IDE ARDUINO
Il vous faudra installer les bibliothèques ARDUINO suivantes :
Librairie Bounce2 : https://github.com/thomasfredericks/Bounce2
Librairie INA226 : https://github.com/jarzebski/Arduino-INA226
Librairie GFX : https://github.com/adafruit/Adafruit-GFX-Library
Librairie SSD1306 : https://github.com/adafruit/Adafruit_SSD1306
Dans
votre IDE (arduino-cc 1.8.5 par exemple), dans le menu "Outils/Type de
Carte" choisir "Arduino MEGA".
6. Le code
Pour récupérer le projet voir plus bas : 8. Téléchargements
7. Photos
Voici quelques photos du montage réalisé :La MEGA avec quatre pieds plastique.
La charge mesurée (à gauche) est une carte d'expérimentation MYSENSORS, montée en thermomètre basse consommation.
Elle est équipée d'un ARDUINO MINI, d'un module NRF24L01 et passe la plupart de son temps en mode sommeil profond. Toutes les 10 secondes elle se réveille pour effectuer une mesure de température et envoyer celle-ci via le module NRV24L01 à une passerelle MYSENSORS reliée à un serveur DOMOTICZ.
La carte est alimentée en 3.7V, et possède un régulateur 3.3V consommant à lui tout seul 14µA.
Cet exemple illustre parfaitement l'utilisation du banc. Le but est de connaître avec précision la consommation moyenne de la carte afin de dimensionner correctement la batterie LITHIUM-ION qui l'alimente.
Comme on le voit sur le graphe en 1.2, la carte consomme 15.5µA en mode sommeil, 33mA lors de l'émission des données, ce qui donne une moyenne de 75µA.
Avec une batterie de 600mAH, l'autonomie serait donc de 8000 heures, soit 333 jours.
La période de 10 secondes a été choisie à titre d'exemple pour cet essai. Une période de mesure de plusieurs minutes serait plus adaptée pour un thermomètre, et la consommation moyenne serait encore plus basse.
Mon thermomètre sur batterie effectue une mesure toutes les 15 minutes. Il est en service depuis décembre et affiche encore une capacité batterie de 92%.
Mon détecteur de mouvement consomme 65µA. Il est en service depuis fin avril et affiche une capacité batterie de 77%.
8. Téléchargements
Le projet est disponible ici : https://bitbucket.org/henri_bachetti/ina226-usb-power-bench
Le logiciel PYTHON est fourni : INA226_powerbench.py
Cette page vous donne toutes les informations nécessaires :
https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html
9. Bibliographie
Le sujet sur le forum ARDUINO :https://forum.arduino.cc/index.php?topic=545217.0
Le projet sur le forum ARDUINO :
https://forum.arduino.cc/index.php?topic=561033.0
10. Mises à jour
01/08/2018 : améliorations du code.02/11/2018 : ajout du paragraphe 1. La théorie
12/01/2019 : ajout de photos
22/03/2019 : déménagement du projet vers BitBucket.org
08/09/2019 : 4. Le schéma (synoptique)