Mesurer la capacité d’une pile rechargeable Ni-MH

Dans ce tutoriel nous allons concevoir un circuit mesurant la capacité d’une pile rechargeable Ni-MH à l’aide d’un Arduino Uno.

Le principe est de décharger la pile dans une résistance et de mesurer le courant qui y circule pendant toute la durée de sa décharge afin de pouvoir calculer la quantité d’électricité que la pile aura fourni.

Afin de calculer le courant qui circule dans le circuit, il suffit de mesurer la tension aux bornes de la résistance au travers d’une entrée analogique de l’Arduino en appliquant la loi d’Ohm (I = U / R).

La capacité d’une pile

La capacité d’une pile est la quantité d’électricité qu’elle peut fournir. Son unité de mesure usuelle est le mAh (milliampère heure), même si l’unité de la quantité d’électricité du Système International est le Coulomb (C). Le Coulomb est la quantité d’électricité correspondant à un courant de 1 Ampère qui traverse un conducteur pendant 1 seconde.

Par exemple, la pile ci-dessous annonce une capacité de 2600 mAh. Elle peut délivrer une intensité de 2600 mA pendant une durée de 1 h (2600 mA x 1 h = 2600 mAh), ou encore alimenter une LED qui consomme 13 mA pendant une durée de 200 h (13 mA x 200 h = 2600 mAh).

Pile Ni-MH

Comment calculer la capacité ?

L’idée est simple, il suffit d’appliquer la formule de calcul de la quantité d’électricité pour notre montage et d’appliquer la loi d’Ohm. :

Q = I x t = (U / R) x t

Q est la quantité d’électricité exprimée en Coulomb (C)
I est l’intensité du courant exprimée en Ampère (A)
U est la tension aux bornes de la résistance exprimée en Volts (V)
R est la valeur de la résistance exprimée en Ohm (Ω)
t est le temps exprimé en seconde (s)

Pour simplifier le calcul, nous mesurons la quantité d’électricité fournie par la pile pendant 1 seconde (t = 1 s). Et nous effectuons cette mesure toutes les secondes jusqu’à ce que la pile soit déchargée. La capacité de la pile est simplement la somme de ces quantités d’électricité mesurées toutes les secondes.

Il est usuel d’utiliser le mAh comme unité de capacité d’une pile. Il faut donc convertir le Coulomb en mAh dans notre calcul. Comme nous l’avons vu, 1 Coulomb = 1 ampère seconde, soit 1 C = (1000 / 3600) mAh = 0,27777 mAh.

Exemple de calcul de capacité :

Une pile de tension nominale de 1,2 V se décharge au travers d’une résistance de 12 Ω. Elle délivre un courant de 100 mA (I = 1,2 / 12 = 0,1 A = 100 mA). pendant une durée de 3600 secondes au

Pour simplifier, on considère que la pile délivre un courant constant. Il s’agit bien d’une simplification pour la compréhension du calcul car une pile voit sa tension diminuer au fur et à mesure de sa décharge, et donc le courant qu’elle génère n’est pas constant, voir ce tutoriel.

On considère dans cet exemple que la pile est déchargée au bout de 3600 seconde, et qu’à partir de cet instant elle ne délivre plus de courant.

La quantité d’électricité délivrée par la pile est mesurée toutes les secondes, voici le résultat théorique attendu :

Q1 = (U/R) x t = (1,2 V /12 Ω) x 1 s = 0,1 A x 1 s = 0,1 C = 0,02777 mAh
Q2 = 0,02777 mAh

Q3599 = 0,02777 mAh
Q3600 = 0,02777 mAh
Q3601 = 0 mAh (pile déchargée)
Q3602 = 0 mAh (pile déchargée)

Qi = Q1+Q2+Q3+…..Q3600 = 3600 x 0,02777 mAh = 100 mAh

La capacité de la pile est de 100 mAh, elle a bien fourni un courant de 100 mA pendant 1 heure (3600 secondes).

Comment choisir la valeur de la résistance ?

En fait c’est l’intensité de décharge qu’il faut choisir. En général, les calculs de capacité sont basés sur une intensité de décharge qui assure que la pile soit déchargée en 20 heures.

Une pile Ni-MH a une capacité d’environ 2500 mAh, et pour se décharger en 20 heure il faut un courant de décharge de 2500 mAh / 20 h = 125 mA. Comme la tension de la pile est d’environ 1,2 V, il faut une résistance de R = U / I = 1,2 V / 0,125 A = 9,6 Ω. Nous choisirons une résistance de 10 Ω dans ce tutoriel.

Par contre il faut une résistance qui supporte la puissance dissipée sans surchauffer :

P = U x I = 1,2 V * 0,125 A = 0,15 W.

Dans le cadre de la mesure de la capacité d’une pile Ni-MH de 1,2 V, une résistance standard (1/4 W) suffira. Mais vous pouvez utiliser une résistance bobinée de 10 W afin d’éviter tout risque de brûlure.

resistance 10W

Si comme moi vous avez des résistances bobinées 10 W 20 Ω, vous pouvez en mettre deux en parallèle, la résistance équivalente vaudra bien 10 Ω.

Req = (20 x 20) / (20 + 20) = 400 / 40 = 10 Ω

Tension de seuil bas

En règle général il faut éviter de totalement décharger une pile rechargeable ou une batterie, sinon elle risque d’être endommagée.

Il faut arrêter la décharge de la pile lorsque la tension atteint le seuil bas, qui est dépendant de chaque type de pile ou batterie.

Pour une pile Ni-MH, ce seuil est d’environ 0,8 V.

Schéma du montage électronique

Breadboard du montage de mesure de capacité de pile Ni-MH
Schéma du montage de mesure de capacité de pile Ni-MH
mesure de la capacité d'une pile Ni-MH

Code de l’Arduino (croquis)

// Mesure de capacité d'une pile rechargeable Ni-MH 1.2 V 
//

// Valeur de la resistance de decharge
#define R 10.0

// Seuil bas de la tension d'une pile Ni-MH
#define SEUIL_BAS_TENSION_PILE 0.80

// Détection de seuil bas de la tension de la pile
bool seuilBasBatterieAtteint = false;

// Heure de début de la mesure
unsigned long initTime;

// Quantité d'électricité mesurée en Coulomb
// Quantité (C) = Intensité (A) x Temps (s)
float quantiteElectricite = 0;
float quantiteElectriciteTotale = 0;

// Booleen qui indique la fin de la mesure
bool fin = false;

// Fonction qui doit être appellée toutes les secondes
// La fonction mesure la tension aux bornes de la résistance
// et en déduit le courant qui y circule. 
// Elle mesure la capacité de la pile en additionnant
// le courant de décharges toutes les secondes jusqu'à ce
// que la pile soit totalement déchargée
void mesureQuantiteElectricite() {
  float tension;
  float courant;

  // Lit la tension aux bornes de la résistance
  // afin de déterminer le courant qui y circule
  tension = analogRead(A0)*5.0/1024;

  // Verifie que la tension de la pile n'est
  // pas inferieure à son seuil bas afin de ne pas 
  // l'endommager
  if (tension < SEUIL_BAS_TENSION_PILE) {
    seuilBasBatterieAtteint = true;
  }

  // Calcul du courant qui circule dans la résistance
  courant = tension/R;

  // La quantité d'électricité est la quantité de charges électriques
  // déplacées par les électrons. Elle est égale à l'intensité
  // multipliée par le temps (1 seconde ici).
  // Afin d'avoir la quantité d'électricité en mAh, il faut
  // utiliser le facteur 1000/3600
  quantiteElectricite = courant/3.600;

  // On additionne cette quantité d'électricité aux précédentes
  // afin de connaître la quantité totale d'électricité
  // à la fin de la mesure
  quantiteElectriciteTotale = quantiteElectriciteTotale+quantiteElectricite;
  
  Serial.print("Tension = ");
  Serial.print(tension);
  Serial.print("V ; Courant  = ");
  Serial.print(courant);  
  Serial.print("A ; Quantité = ");
  Serial.print(quantiteElectricite,4);  
  Serial.print(" mAh");
  Serial.print("; Quantité totale= ");
  Serial.print(quantiteElectriciteTotale,2);  
  Serial.println(" mAh");  
}

void setup() {

  Serial.begin(9600);
  Serial.println("Initialisation");

  // Positionne la référence de tension par défaut
  // la tension de référence sera donc la tension 
  // d'alimentation du micro-contrôleur
  analogReference(DEFAULT);

  // Heure de début de la mesure 
  initTime = millis();
}

void loop() {
  if (!fin) {
    // Mesure de la quantité d'électricité débitée toutes les 
    // secondes jusqu'à ce que la tension de la pile soit inférieure
    // à son seuil bas afin de ne pas l'endommager.
    if (seuilBasBatterieAtteint == false) {
      mesureQuantiteElectricite();
      delay(1000);
    } else {
      // Une fois que le seule bas est atteint, on 
      // indique la capacité de la pile en mAh
      Serial.print("Fin de la mesure, la capacité de la pile est de ");
      Serial.print(quantiteElectriciteTotale);  
      Serial.println(" mAh");
      fin = true;
    }
  }
}

Dans la deuxième partie du tutoriel, nous allons ajouter un transistor afin de contrôler l’arrêt de la décharge de la pile lorsque la tension de seuil est atteinte. Nous ajouterons également un petit afficheur OLED afin de visualiser facilement la capacité de la pile sans le moniteur série.