Dans ce tutoriel nous allons concevoir un testeur de pile alcaline AA/AAA en utilisant un Arduino Uno.
Mots clés : Arduino ; Testeur de pile
Le matériel :
L’objectif du tutoriel est d’utiliser la conversion analogique / numérique de l’Arduino pour mesurer la tension aux bornes d’une pile et d’en déduire son état.
La première partie du tutoriel rappelle les caractéristiques d’une pile alcaline et explique pourquoi il est important de mesurer la tension aux bornes d’une pile alors qu’elle génère un courant.
Dans la seconde partie du tutoriel nous mettrons en œuvre la mesure de la tension aux bornes d’une pile en utilisant d’un Arduino Uno. La mesure de tension se fera à l’aide d’une entrée analogique et d’une conversion analogique / numérique. Une sortie numérique et un transistor bipolaire permettront de piloter la génération de courant par la pile, permettant de mesurer sa tension à vide et sa tension lorsqu’elle génère du courant.
Rappel sur les caractéristiques d’une pile alcaline
Tension à vide
La tension à vide d’une pile est la tension mesurée à ses bornes lorsqu’elle ne génère pas de courant, elle s’exprime en Volt (V)
La tension indiquée sur l’emballage une pile alcaline est sa tension nominale, elle correspond à la tension à vide de la pile à l’état neuf. Une pile alcaline AA ou AAA a une tension nominale de 1,5 V.
La tension à vide d’une pile est relativement constante, même lorsqu’elle vieillit ou qu’elle est partiellement déchargée. C’est pourquoi il est difficile de juger de l’état d’une pile en mesurant sa tension à vide. Il est donc préférable pour tester une pile de mesurer sa tension lorsqu’elle génère un courant.
Tension aux bornes d’une pile qui génère du courant
Une pile possède une résistance interne, les électrons rencontrent en effet une résistance lorsqu’ils traversent son électrolyte (milieu conducteur au cœur de la pile). C’est pourquoi la tension aux bornes d’une pile est différente lorsqu’elle génère un courant ou lorsque elle n’en génère pas.
Grâce au génial simulateur de circuit en ligne Falstad, il est facile de simuler la tension aux bornes d’une pile qui génère un courant.
Dans l’exemple ci-dessous, la résistance interne de la pile est de 200 Ω. On observe que lorsque la pile ne génère pas de courant (interrupteur ouvert), la tension aux bornes de la pile est de 1,5 V. Si on ferme l’interrupteur, la pile génère un courant de 1,25 mA et on observe que la tension à ses bornes chute à 1,25 V (c’est la tension indiquée en bas du circuit, aux bornes de la pile incluant sa résistance interne de 200 Ω).
Vous pouvez tester ceci en cliquant sur l’interrupteur dans la simulation du circuit dont le lien est indiqué ci-dessous.
Ouvrir la simulation du circuit sur Falstad
Variation de la résistance interne d’une pile
La résistance interne d’une pile augmente au fil de son utilisation ou lorsqu’elle vieillit. C’est pourquoi mesurer la tension aux bornes d’une pile lorsqu’elle génère du courant est un bon indicateur de son état.
Pile neuve
Lorsque une pile est neuve, sa résistance interne est très faible, de l’ordre de quelques milliohms.
Dans l’exemple ci-dessous nous avons la représentation d’une pile neuve qui a une résistance interne faible de 2 mΩ. Cette pile génère un courant de 1,5 mA circulant dans un circuit composé d’une résistance de 1 kΩ (en haut du schéma). On observe que la tension aux bornes d’une pile neuve est très proche de la tension nominale de la pile, soit 1,5 V.
Pile usagée
Dans l’exemple ci-dessous, nous avons la représentation d’une pile partiellement déchargée dont la résistance interne est plus élevée (200 Ω). Nous observons que la tension aux bornes de cette pile partiellement déchargée est de 1,25 V et non plus 1,5 V.
Pile déchargée
Une pile très déchargée peu avoir une résistance interne élevée. Dans cet exemple la pile déchargée a une résistante interne de 3 kΩ et la tension à ses bornes s’écroule à 0,375 V lorsqu’elle génère un courant.
Lorsque une pile ne génère pas de courant sa résistance interne n’impacte pas la tension à ses bornes, ce qui est représenté ci-dessous. Mais il faut noter qu’une pile qui est déchargée voit sa tension à vide diminuer également, c’est ce que nous allons voir dans le chapitre suivant.
Courbe de décharge d’une pile alcaline de 1,5 V
La tension à vide (f.é.m.) d’une pile alcaline diminue lorsqu’elle se décharge, soit parce que nous l’utilisons soit parce qu’elle vieillit. Voici par exemple une courbe qui indique la tension à vide d’une pile alcaline AA en fonction de sa décharge (quantité de charge électrique qu’elle a déjà produit). On voit que lorsqu’une pile alcaline a généré 2000 mAh, sa tension à vide est d’environ 1 V. En règle générale, les appareils alimentés par pile de 1,5 V indiquent une alerte de niveau de pile faible lorsque la tension est inférieure à 1,1 V.
Indicateur d’état d’une pile Alcaline de 1,5 V
Afin d’indiquer un état d’usure d’une pile de 1,5 V, nous allons comparer sa tension en charge aux seuils indiqués dans le tableau suivant. Ces seuils ont été calculés à partir de la courbe de décharge typique d’une pile alcaline de 1,5 V.
Tension aux bornes de la pile | État de la pile |
1,5 V ~ 1,2 V | Bon |
1,2 V ~ 1,0 V | Faible |
1,0 V ~ 0 V | A remplacer |
Mesure de la tension avec un Arduino Uno
L’idée est de concevoir un circuit permettant non seulement de mesurer la tension à vide de la pile mais également de mesurer sa tension en charge lorsqu’elle génère un courant significatif de quelques dizaines de mA.
L’utilisation d’un Arduino Uno est parfait pour réaliser les premiers tests. Nous utiliserons une de ses entrées analogiques (A0) pour mesurer la tension aux bornes de la pile et une de ses sorties digitales (D7) pour contrôler le courant que délivre la pile.
Circuit électronique
Le circuit est composé de plusieurs éléments :
- Une pile avec sa résistance interne de 5 Ω
- Un transistor bipolaire relié à la sortie D7 de l’Arduino au travers d’une résistance de 4,7 kΩ. Le principe est que la sortie D7 puisse contrôler l’état bloqué ou saturé du transistor.
- Une résistance de charge de 27 Ω dans laquelle la pile délivrera un courant lorsque le transistor sera dans l’état saturé
Principe du circuit :
- Lorsque la sortie D7 de l’Arduino est à 0 V, le transistor bipolaire est dans l’état bloqué et la pile ne génère pas de courant. La tension à vide de la pile est ainsi mesurée sur l’entrée A0 de l’Arduino.
- Lorsque la sortie D7 de l’Arduino est à 5 V, le transistor bipolaire est dans l’état saturé et la pile génère un courant dans la résistance de charge de 27 Ω. La tension de la pile lorsqu’elle génère un courant est ainsi mesurée sur l’entrée A0 de l’Arduino.
Dans le simulateur suivant, la sortie D7 de l’Arduino est simulée par un signal carré 0 V – 5 V, et il est ainsi facile de visualiser la tension aux bornes de la pile lorsqu’elle génère un courant ou non.
Ouvrir la simulation du circuit sur Falstad
Mesure de la tension à vide
Lorsque la sortie D7 de l’Arduino Uno est à 0 (0 V), aucun courant ne circule entre la base et l’émetteur du transistor (Ib=0). Le transistor est bloqué et ne laisse donc pas passer le courant entre son collecteur et son émetteur (Ic=0). Par conséquent aucun courant ne circule au travers du cirtcuit, et la tension mesurée sur la broche A0 est alors bien la tension à vide de la pile. La tension à vide mesurée aux bornes de la pile est de 1,5 V dans cet exemple.
Mesure de la tension en charge
Lorsque la sortie D7 de l’Arduino Uno est à 1 (+5 V), il y a un courant qui passe entre la base et l’émetteur du transistor (Ib≠0). Le transistor est saturé et laisse passer le courant entre son collecteur et son émetteur (Ic≠0). Il y a donc un courant qui circule au travers du circuit, et on mesure alors sur la broche A0 de l’Arduino Uno la tension en charge de la pile lorsque elle génère un courant. La tension en charge de la pile est de 1,28 V dans cet exemple, et elle est bien inférieure à la tension à vide mesurée plus haut.
Schéma du montage électronique
Voici le schéma de notre montage avec l’Arduino Uno. Attention, ce montage est conçu pour mesurer la tension d’une pile alcaline AA ou AAA qui a une tension nominale de 1,5 V. Il ne faut pas que la tension de la pile soit supérieure à 5 V car sinon cela pourrait endommager votre Arduino Uno.
Convertisseur analogique / numérique
Le microcontrôleur de l’Arduino Uno dispose d’un convertisseur analogique / numérique (CAN). L’appel à la fonction analogRead() retourne le résultat de la conversion analogique->numérique pour la broche donnée en paramètre. La valeur retournée est codée sur 10 bits et est donc comprise entre 0 et 1023. La valeur 0 correspond à une tension nulle sur l’entrée du convertisseur, et la valeur 1023 correspond à la tension de référence utilisée par le convertisseur. Dans ce tutoriel, nous utilisons la tension de référence par défaut qui est la tension interne de 5V de l’Arduino Uno.
Pour calculer la valeur de la tension mesurer, il faut donc appliquer la formule : tension = valeurLue*5.0/1023.
Code de l’Arduino
Voici le code de l’Arduino qui affiche sur la console série le tension à vide et en charge de la pile.
// Mesure de la tension d'une pile à vide et en charge
// La mesure de la tension est faite sur l'entrée analogique A0
// Le contrôle de la mise en charge est faite via la sortie D7
//
// Lors de la lecture d'une valeur analogique, le convertisseur de l'Arduino
// retourne une valeur codée sur 10 bits, la valeur maximale est donc
// de 1023 et elle correspond à la tension de référence (5V)
//
// https://tutoduino.fr/
// Copyleft 2020
void setup() {
// Initialisation de la communication série pour afficher les valeurs de la
// tension mesurée sur le moniteur série
Serial.begin(9600);
Serial.println("Initialisation");
// La référence par défaut est utilisée pour la mesure analogique.
// Cette référence a une valeur de 5V sur la carte Arduino Uno
analogReference(DEFAULT);
// La PIN D7 est une sortie tout ou rien qui contrôle l'état du transistor
// (bloqué ou saturé) afin de mesurer la tension de la pile à vide ou
// lorsque elle génère un courant
pinMode(7, OUTPUT);
}
void loop() {
float tensionVide;
float tensionCharge;
// Lecture de la tension à vide de la pile
// Bloque le transistor en positionnant la sortie D7 à LOW
digitalWrite(7, LOW);
delay(500);
tensionVide = analogRead(A0)*5.0/1023;
// Lecture de la tension en charge de la pile
// Sature le transistor en positionnant la sortie D7 à HIGH
digitalWrite(7, HIGH);
delay(500);
tensionCharge = analogRead(A0)*5.0/1023;
Serial.print("Tension à vide = ");
Serial.print(tensionVide);
Serial.println("V");
Serial.print("Tension en charge = ");
Serial.print(tensionCharge);
Serial.println("V");
if (tensionCharge > 1.2) {
Serial.println("Pile bonne");
} else if (tensionCharge > 1.0) {
Serial.println("Pile faible");
} else {
Serial.println("Pile à remplacer");
}
}
Télécharger le projet depuis GitHub
Mesure effectuées
Voici le résultat des mesures effectuées sur différentes piles de 1,5 V.
Pile neuve :
Tension à vide = 1.55V ;
Tension en charge = 1.47V
Pile bonne
Pile usagée :
Tension à vide = 1.21V ;
Tension en charge = 1.03V
Pile faible
Pile déchargée :
Tension à vide = 1.03V ;
Tension en charge = 0.84V
Pile à remplacer
Pile totalement déchargée :
Tension à vide = 0.94V ;
Tension en charge = 0.00V
Pile à remplacer
Nous voyons que la mesure de la tension en charge permet de détecter une pile dont la charge est très faible alors que sa tension à vide reste proche de 1 V.
Bonjour,
Je travaille dans 1 ressourcerie associative et je voudrai réaliser 1 testeur de piles de 1,5v à 9v pour couvrir tous les modèles.
Ce testeur sera sous forme de borne, en libre accès pour que notre clientèle puisse mesurer seule ces piles.
Il doit être capable de donner les informations sur l’état de la pile sur 1 écran de façon claire et précise pour 1 néophyte et quelque soit le sens de test de la pile.
Merci de votre retour, Eric
Bonjour,
C’est un beau projet, tout à faire réalisable. Le plus compliqué étant de prévoir la platine avec les borniers pour les piles. Ce tuto pourrait être une piste : https://tutoduino.fr/tutoriels/mesure-capacite-accus-nimh-li-ion-18650/
Bonjour,
Merci beaucoup, je regarde tout cela
Et attention aux boîtiers de piles vendus sur des sites chinois, leurs fils et connectiques sont de très très mauvaise qualité (forte résistance) et faussent tous les calculs.
Exemple de produit à éviter (testé sur mon exemple) pour mesurer les tensions en charge : https://fr.aliexpress.com/item/4001008150456.html
Privilégiez ce type de produit à souder : https://fi.farnell.com/productimages/large/en_GB/BT06504-40.jpg https://ae01.alicdn.com/kf/HTB1p9zoeJXXWeJjSZFvq6y6lpXah/10pcs-lot-CR123A-Battery-Holder-PCB-Plug-in-Type-Lithium-Battery-Holder-Socket-TBH-CR123A-1A.jpg
Bonjour, super comme tuto, bien expliqué pour mon petit cerveau,il n’y plus qu’à mettre en pratique.