Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Arduino
  3. Projet 3
Extrait - Arduino S'exercer au prototypage électronique (11 projets créatifs) (2e édition)
Extraits du livre
Arduino S'exercer au prototypage électronique (11 projets créatifs) (2e édition)
1 avis
Revenir à la page d'achat du livre

Projet 3 - Testeur de pile et batterie

Présentation

Il arrive parfois de devoir changer les piles d’un appareil sans savoir si ces dernières sont totalement hors d’usage ou si elles sont encore en mesure d’alimenter un appareil moins énergivore.

Un montage permettant de tester toutes sortes de piles ou batteries et capable de donner une mesure du niveau d’énergie restant serait très utile pour cela. C’est ce qui est proposé au travers de la réalisation de ce troisième projet.

1. Principe de fonctionnement

La première idée qui nous vient pour tester l’état d’une pile est de mesurer la tension à ses bornes. Cette mesure, sans que la pile ne débite aucun courant, est appelée tension à vide. Cela donne effectivement une bonne indication mais elle n’est pas suffisante car la tension, lorsqu’elle débite du courant - ne serait-ce que quelques milliampères - peut s’écrouler drastiquement.

L’objet du prochain montage est de pouvoir tester une pile type AA ou AAA de 1,5 V, ou une batterie ou cellule Lithium (Lipo, Li-ion) de 3,6 à 3,8 V, et de mesurer les deux types de tensions (à vide et en charge) et les afficher sur un petit écran OLED afin d’avoir une idée précise de l’état de notre pile/batterie.

images/05LF01N.png

Écran OLED

2. Notions abordées

Ce troisième projet...

Matériel nécessaire

Le montage s’articule autour de plusieurs composants :

  • une plaque de prototypage (ou breadboard) ;

  • un écran OLED SSD1306 de 0,96 pouce (128 x 64 pixels) ;

  • un transistor NPN, nous verrons plus loin comment le choisir ;

  • une résistance de 2,2 kOhms et une résistance comprise entre 20 et 50 Ohm ;

  • un bouton-poussoir ;

  • des supports pour pile AA ou AAA, batterie 18650 ;

  • des fils « Dupont ».

Pour la partie programmation, nous utilisons une carte Arduino Uno afin de capter l’appui sur le bouton-poussoir qui déclenchera la mesure des tensions et affichera le résultat sur l’écran OLED.

images/05LF02N.png

Supports de piles

Schéma et montage

Plusieurs notions importantes seront abordées dans ce montage, à commencer par le fonctionnement des batteries, sujet utile pour savoir comment les utiliser dans des montages autonomes. 

Nous nous attarderons ensuite sur le transistor, composant électronique indispensable, et sur la lecture d’une datasheet en particulier, pour enfin introduire un nouveau moyen de communication : le bus I2C.

1. Fonctionnement des piles et batteries

La tension nominale des piles est en général indiquée sur leur corps et correspond à leur tension à vide, sans débiter de courant. Elle peut rester la même relativement longtemps, même après quelques années ou après avoir utilisé la pile dans un appareil.

La tension à vide n’est pas suffisante pour juger de l’état d’une pile ou batterie, il faut également mesurer la tension en charge, c’est-à-dire lorsqu’elle débite du courant.

Une pile n’est pas parfaite, de par sa conception et des matériaux qui la composent, elle présente toujours une résistance interne. Cette dernière est très faible lorsque la pile est neuve (quelques milli-ohms), mais devient de plus en plus importante à mesure que la pile se vide, et peut atteindre plusieurs centaines de milli-ohms. On peut donc schématiser une pile ainsi :

images/05LF03N.png

Représentation d’une pile

Lorsque la pile ne débite aucun courant, la tension aux bornes de la résistance interne est nulle puisqu’aucun courant ne circule. La tension à vide se résume donc à la tension aux bornes de la pile « parfaite ».

Lorsque la pile débite du courant, il traverse également la résistance interne, qui fait donc chuter la tension disponible aux bornes de notre pile. Lorsque la résistance interne atteint 500 milli-ohms, elle chauffe beaucoup plus et n’est plus capable de fournir le courant demandé.

C’est pourquoi une pile trop faible pour un appareil peut très bien convenir pour un autre moins gourmand en courant.

Lorsqu’une pile ou batterie devient trop usagée, sa tension à vide chute également.

Voici un tableau des seuils pour les différentes piles ou batteries courantes :

État...

Programmation de l’Arduino

Comme pour les projets précédents, nous allons décrire le fonctionnement du programme au travers de ses trois grandes sections.

1. Les déclarations préliminaires

Tout d’abord, il est nécessaire d’inclure la bibliothèque de gestion de l’écran OLED (reportez-vous au projet 1 pour installer cette bibliothèque dans votre IDE Arduino si nécessaire, si une fenêtre vous demande d’installer d’autres librairies, acceptez la proposition).

#include <Adafruit_SSD1306.h> 

Puis il nous faut déclarer l’utilisation de trois pins :

  • la pin numérique recevant l’appui sur le bouton-poussoir ;

  • la broche numérique de contrôle du transistor ;

  • la pin de mesure analogique.

#define PIN_BOUTON 7 
#define PIN_TRANSISTOR 2 
#define PIN_MESURE A0 

Déclarerons et initialisons ensuite une variable globale ecran en tant qu’instance de Adafruit_SSD1306 grâce à l’instruction suivante :

Adafruit_SSD1306 ecran(largeur, hauteur, &Wire, pinReset); 

Le constructeur de cette classe prend en arguments :

  • la largeur de l’écran en pixels, 128 dans notre cas ;

  • la hauteur de l’écran en pixels, 64 dans notre cas ;

  • le paramètre d’inclusion de bibliothèque Wire pour travailler en I2C (ne pas modifier) ;

  • le numéro de pin RST de l’écran (sans objet la plupart du temps, indiquez « -1 »).

L’instruction dans notre programme est donc :

Adafruit_SSD1306 ecran(128, 64, &Wire, -1); 

2. La fonction setup()

Comme d’habitude, commençons par les instructions classiques d’initialisation du moniteur Série et de configuration des pins :

  Serial.begin(115200); 
  pinMode(PIN_BOUTON, INPUT_PULLUP); 
  pinMode(PIN_TRANSISTOR, OUTPUT); 

Comme vu dans le projet précédent, l’utilisation d’un interrupteur s’accompagne d’une résistance de pull-up. Nous utilisons le pull-up interne pour la pin 7.

Il n’est pas nécessaire de configurer la pin analogique A0 en INPUT puisque les pins analogiques fonctionnent uniquement en entrée. En revanche, il est indispensable de faire une première lecture « factice »...

Améliorations possibles

Plusieurs améliorations peuvent être apportées pour sécuriser l’utilisation de ce montage ou l’agrémenter.

1. Protection contre les inversions de polarités

La première amélioration est d’installer une protection contre tout branchement de pile à l’envers, c’est-à-dire en inversant les polarités, ce qui endommagerait le circuit et la carte Arduino puisque sa pin GND recevrait une tension supérieure à zéro.

Pour cela, il est possible de modifier le schéma en installant deux diodes 1N4148 (une pour chaque support de pile/batterie) :

images/05LF10N.png

Schéma avec diodes

Mais comment savoir quelle diode utiliser ? En lisant les datasheets !

Par exemple, en cherchant « datasheet 1N4148 » sur le Web, une liste de toutes les datasheet des fabricants de cette célèbre diode nous est proposée. On peut y lire que cette diode :

  • supporte une tension inverse (reverse voltage) de 100 V (c’est-à-dire qu’elle peut bloquer des tensions allant jusqu’à 100 V, au-delà elle « claque ») ;

  • et peut être traversée par un courant (forward current) de 300 mA.

Ces caractéristiques sont largement suffisantes puisque nous travaillons sous 5 V maximum et 100 mA maximum.

Gardez en tête cette référence de diode, elle est très couramment utilisée et convient pour nos besoins dans la plupart des cas.

Lorsqu’une diode est traversée par du courant, il apparaît une tension de 0,6 V à ses bornes. Donc avant la diode, le potentiel est égal à celui de la pile (1,5 V par exemple), puis en traversant la diode, le potentiel chute de 0,6 V. La pin analogique de l’Arduino ne pourra donc jamais mesurer plus de 0,9 V pour une pile de 1,5 V en parfait état. Le programme de l’Arduino doit également être modifié pour prendre en compte cette soustraction de 0,6 V lors de la mesure de la tension en charge. La tension à vide, elle, reste identique puisque dans ce cas, aucun courant ne traverse la diode, et de ce fait aucune chute de tension n’apparaît à ses bornes.

2. Protection contre le branchement de plusieurs...