mardi 31 juillet 2018

Banc de Mesure de Consommation




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 0.1Ω permet la mesure de courant jusqu'à 0.8A.
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
Le logiciel permet d'afficher également une courbe de consommation.
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
Souvent les modules INA226 sont équipés d'un shunt 10mΩ.
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 MOSFET canal N a une très faible résistance en état de conduction (22mΩ).

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 :

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.git

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)