Introduction

Comme j’utilise différents appareils nomades, j’ai besoin de piles ou d’accumulateurs pour les faire fonctionner. Et je me suis souvent posé la question de la performance réelle de ces éléments par rapport à celle annoncée par le fabricant.

J’ai donc décidé de mettre en place un montage qui me permettrait de mesurer cette décharge sur des longues durées (plusieurs heures, voire plusieurs jours). Une des contraintes à laquelle il faut répondre est que ce montage soit complètement autonome et qu’il puisse tourner jours et nuits.
Bien évidemment, les données mesurées doivent pouvoir être enregistrées pour analyse à postériori.

Comme je dispose chez moi de quelques cartes Arduino et autres Raspberry, je me suis dit qu’il s’agit là d’une bonne occasion de les utiliser.

Montage

J’ai donc mis en place l’architecture représentée par la figure ci-dessous.

Dans ce schéma, l’accumulateur (ou la pile, peu importe) est mis en décharge sur une résistante de 25 ohms. La tension aux bornes de cette résistance est mesurée par une carte Arduino Uno, cette tension arrivant sur l’entrée analogique A0. Une mesure est effectuée toutes les minutes.
Sur le port D1, on voit une résistance de 1k avec une LED. Il s’agit tout simplement d’indiquer de manière visuelle à l’opérateur que l’accumulateur est correctement inséré et que la mesure peut se faire. Dans certains cas, l’accumulateur est mal inséré et l’Arduino mesure 0 mv. Sans cette LED, il n’y a aucun moyen de le savoir. Par conséquent, dès que l’Arduino mesure une valeur supérieure à 0 en sortie du convertisseur A0, il allume la LED.

La mesure est ensuite convertie en une valeur de tension directement exprimée en millivolts puis est transmise au Raspberry Pi via le lien série. Cette communication est unilatérale car le Raspberry Pi se contente de recevoir les données en provenance de l’Arduino. Il n’y a aucun besoin d’avoir un dialogue plus complet, d’où le lien unique dans le sens Arduino vers Raspberry.
Remarquez le pont diviseur de tension sur la liaison data. Il est rendu nécessaire par le fait que les niveaux de tension ne sont pas les mêmes. En effet, l’Arduino sort avec du 5 volts alors que l’entrée Rxd du Raspberry Pi oscille entre 0 volts et 3,3 volts.

Lorsque le Raspberry Pi reçoit une valeur de tension, il la stocke dans un fichier sur la carte mémoire. Dans le même temps, il allume et éteind une LED pour indiquer qu’il a reçu une mesure. À l’origine, j’avais pensé mettre une LED avec un buzzer, d’où la présence du transistor pour éviter de tirer trop de courant sur le GPIO n°14 du Raspberry Pi. Au final, je n’ai utilisé que la LED, mais j’ai laissé le transistor.

Pour l’alimentation, l’Arduino et le Raspberry Pi sont connectés à un hub USB qui dispose de son propre bloc d’alimentation, ce qui le rend autonome et indépendant d’un ordinateur.

Code source

Voici le code source du programme de mesure sur l’Arduino.

const int LEDPIN = 7;
unsigned long stime;

void setup()
{
  Serial.begin(9600);
  Serial.println("Initialization...");
  pinMode(LEDPIN, OUTPUT);
  stime = millis();
}

void loop()
{
  int v;
  char buf[256];

  v = map(analogRead(A0), 0, 315, 0, 1548);
  if(v > 0)
    digitalWrite(LEDPIN, HIGH);
  else
    digitalWrite(LEDPIN, LOW);

  if(stime + 60000 < millis())
  {
    sprintf(buf, "%d", v);
    Serial.println(buf);
    stime = millis();
  }

  delay(10);
}

La lecture de la valeur renvoyée par le convertisseur A0 est faite de manière cyclique dans la boucle principale (fonction loop). Cette valeur brute est convertie en une tension via la fonction map() après avoir constaté et mesuré qu’une valeur d’ADC égale à 315 correspond approximativement à une tension de 1548 millivolts.

Si la valeur lue est strictement supérieure à 0, celà signifie qu’il y a un accumulateur connecté et qu’il faut donc allumer la LED de signalisation. Autrement, cette LED reste éteinte.

Ensuite, le programme compte le nombre de millisecondes (fonction millis()) pour détecter si 60000 millisecondes, autrement dit 60 secondes, se sont écoulées. Si c’est le cas, il envoie la dernière valeur lue sur la liaison série sous forme d’une chaîne de caractères représentant cette valeur.

Enfin, un tout petit délai de 10 millisecondes est introduit à la fin de la boucle.

Côté Raspberry, le programme qui récupère les valeurs de tension et qui les stocke sur la carte mémoire est écrit en Python et est proposé ci-dessous :

#!/usr/bin/env python

import serial
import time
import RPi.GPIO as GPIO


GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)
GPIO.output(14, GPIO.LOW)

try:
	fp = open('data.txt', 'w')
except:
	exit

ser = serial.Serial('/dev/ttyAMA0')
fp.write('Releves de tension accumulateur sur ' + ser.name + '\n\n')
count = 1
while True:
	value = ser.readline()
	if len(value) > 0:
		fp.write(str(count) + ';' + value)
		fp.flush()
		GPIO.output(14, GPIO.HIGH)
		time.sleep(0.5)
		GPIO.output(14, GPIO.LOW)
	time.sleep(1)
	count += 1

fp.close

Ce programme reste très simple et utilise le module serial pour la lecture des valeurs de tension arrivant sur la liaison série, ainsi que le module RPi.GPIO pour la gestion des GPIOs (ici la LED de signalisation).

Notez que le descripteur de périphérique /dev/ttyAMA0 qui est celui qui me permet d’accéder au port série du Raspberry Pi doit être libre. Cela signifie que le noyau Linux ne doit pas avoir pris la main dessus.

Résultats

J’ai pu analyser la décharge de certaines marques d’accumulateurs NiMH dont je vous présente ici les résultats. Tous ces accumulateurs sont de type « bâtons » LR06.

Voici tout d’abord la courbe de décharge d’un accumulateur NiMH de marque Energizer donné pour une capacité de décharge de 2300 mAh sous une tension de 1200 mv.

La durée de décharge correspond à peu de choses près à la capacité annoncée (environ 2000 minutes). En revanche, la chute ne se fait pas brutalement comme le montre la figure. Il y a une première descente peu brutale, suivie par un seuil, et c’est ensuite qu’intervient la véritable chute de tension.

J’ai testé un accumulateur de la marque Migro, à savoir un MPower donné pour une capacité de 2500 mAh, toujours sous une tension de 1200 mv.

Si la durée de décharge est relativement bonne et correspond à la capacité annoncée, la stabilité de tension est une véritable catastrophe ! Il suffit de regarder la courbe. C’est à se demander si je ne suis pas tombé sur un accumulateur défectueux. Je ne vois pas comment on peut alimenter correctement un appareil avec une telle tension qui varie énormément au cours du temps.
Enfin, on constate que la tension commence à vraiement se stabiliser au bout de 700 minutes environ, soient un peu plus de 11 heures.
D’autre part, on constate que très vite, la tension descend vers 1000 mv alors que pour les autres accumulateurs, elle reste soutenue à un niveau de 1200 mv. C’est assez surprenant pour un accumulateur censé être un NiMH !
Donc, cet accumulateur tient la durée annoncée, mais pas sous la tension annoncée !
Bref, du grand n’importe quoi.

J’ai également testé un accumulateur Varta donné pour 2500 mAh et le résultat est donné sur la courbe ci-dessous.

La première chose que l’on constate est que la courbe est extrêmement propre, et la chute de tension lorsque l’accumulateur n’a plus d’énergie est franche et également très propre. Bref, une courbe parfaite. Sauf que…
Sauf que la durée de décharge ne correspond pas tout-à-fait à la capacité annoncée. Celle-ci est de l’ordre de 1700 minutes, soient environ un peu plus de 28 heures (au lieu de 37 heures). Après un rapide calcul, une telle durée correspond à une capacité de moins de 2000 mAh. Il nous manque environ 25% de la capacité annoncée !

Conclusion

Je suis loin d’avoir pu tester tous les accumulateurs du marché, mais pour les trois échantillons que j’avais sous la main, les résultats au final ne sont pas très probants.
Par rapport à cette expérimentation, je concluerai de la manière suivante.
Tout d’abord, les caractéristiques annoncées par les fabricants ne correspondent pas du tout à celles mesurées une fois que l’accumulateur est mis en situation. C’est à se demander si le fabricant ne place pas ses accumulateurs dans un environnement de test beaucoup plus favorable mais qui ne correspond pas vraiment aux cas d’utilisation courante.
Ensuite, je pense qu’il faut éviter les « sous-marques », autrement dit les accumulateurs à bas coût. Même si les accumulateurs de « grande » marque sont beaucoup plus chers, il y a de meilleures chances pour que ces derniers présentent une bien meilleure qualité. Ce sont vos appareils qui vous diront merci !
Si vous voulez continuer cette étude sur d’autres marques d’accumulateurs, et que vous ayez le matériel nécessaire, alors n’hésitez pas, je vous engage à le faire. Vous pouvez reprendre l’architecture présentée ici ainsi que le code librement. Et si vous obtenez d’autres courbes de décharge, n’hésitez pas à me les envoyer, je les ajouterai à cette page.

Next Post
Topics
No topics.

Loading Conversation