Surveiller la décharge de la batterie

Il est souvent utile de pouvoir surveiller l’état de charge des batteries d’un dispositif électronique (et d’en déduire une estimation de son autonomie restante).

Dans le cas d’un robot, celui-ci pourra signaler que ses batteries ont besoin d’être rechargées, ou même se rendre de lui-même à une station de chargement.

Quand une batterie se décharge, la tension à ses bornes diminue. La solution consiste donc à mesurer cette tension. Et c’est exactement à cela que servent les entrées analogiques des Arduinos. Attention cependant, ces entrées ont leur limite. Pour la plupart des Arduinos, elles mesurent des tensions comprises entre 0 et 5V.

Si la batterie délivre plus de 5V, elle risque de détruire l’entrée, il est donc nécessaire de s’assurer que les 5V ne seront en aucun cas dépassés. Pour ce faire, nous utiliserons un pont diviseur de tension, soit 2 résistances. Cette page explique très bien le principe.

Il s’agit ici de déterminer quelles résistances utiliser. Plus leurs valeurs sont élevées, et moins de courant sera gaspillé dans ce montage. Une résistance totale de 10 à 20 KOhms fera l’affaire.

Avant toute chose, il faut identifier quelle sera la tension maximale de la batterie. Dans mon cas, j’utiliserai une batterie de 7.2V qui prendra le relais de l’alimentation continue en 12V lorsque celle-ci sera coupée. Je prévois une marge de sécurité et je détermine que la tension maximale en entrée ne dépassera en aucun cas 14V. Le but du jeu consiste à ramener cette plage de 0 à 14V sur une plage de 0 à 5V, pour que l’entrée analogique de l’Arduino puisse l’exploiter.

Soit on sort la calculette, soit on passe par un calculateur en ligne :

01_calcul_pont_diviseur

Dans mon cas, pour obtenir une tension de sortie de 5V à partir d’une source de 14V, je peux utiliser un pont diviseur de tension constitué d’une résistance R1 de 15 KOhms et d’une résistance R2 de 8.2 KOhms (d’autres combinaisons sont évidemment possibles).

On peut vérifier pour la forme :
Vout = Vcc x (R2/(R1+R2)) = 14 x (8200/(15000+8200)) = 4.948… V

Comme le montre la formule, la tension de sortie est proportionnelle à la tension d’entrée.

Côté Arduino, la fonction analogRead(pin) permet de lire la tension mesurée sur le pin passé en paramètre. Elle retourne une valeur comprise entre 0 et 1023, qui représente une tension allant de 0 à 5V sur le pin analogique (ou proportionnellement de 0 à 14V aux bornes de la batterie). On divisera la valeur mesurée par 73.07 (car 1023/14 = 73.07…) pour obtenir la tension aux bornes de notre batterie.

Voici le montage, ultra basique :

Et on peut constater que la tension calculée par le Arduino est très proche de la tension mesurée avec un voltmètre 🙂

Code source disponible ici

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *