Projet R.I.P.E.R. : étage batteries

La pause fun avec BB-8 étant terminée, on se remet aux choses sérieuses avec l’étage du robot qui contiendra les batteries. On reprend donc où on en était resté il y a quelques semaines : Projet R.I.P.E.R. (Robotic Intelligent Platform for Entertainment and Research).

Les choix concernant l’alimentation sont expliqués ici : Autonomie et alimentation d’un robot.

Une batterie de 7.2V/5Ah sera dédiée à l’alimentation des moteurs CC et servomoteurs, l’autre alimentera tout l’électronique du robot. Il pourra fonctionner au choix, sur batteries ou sur alimentation secteur (via régulation 12V). La bascule se fera automatiquement.

On pourra recharger les batteries du robot sans les sortir du chassis, via 2 connecteurs jack.

Voici le modèle 3D :

00_EtageBatteries

Et la sortie d’impression :

On commence par installer les connecteurs jack femelles :

  • Les 2 à l’avant permettront la recharge des batteries
  • Les 2 sur les côtés à l’arrière permettront d’alimenter l’étage supérieur (contrôle des moteurs et alimentation du robot)
  • Le connecteur du milieu est l’entrée pour une alimentation fixe de l’ensemble du robot

Le circuit électronique utilise le principe de commutation par diodes, décrit ici. Quand l’alimentation fixe du robot est coupée (12V), les batteries prennent automatiquement le relais (7.2V). Voici le schéma de la carte :

07_EtageBatteriesSchema

Les Jx sont des borniers, Cx des diodes Schottky. J3 est l’arrivée de l’alimentation fixe en 12V. J7 et J8 sont connectés aux prises jack de rechargement des batteries. Les borniers J1 et J2 permettent de raccorder les 2 batteries. Enfin, J4 et J8 sont les sorties vers les connecteurs jack qui alimenteront l’électronique et les moteurs du robot.

Après installation des 2 batteries :

J’ai également imprimé un couvercle, essentiellement pour des raisons esthétiques, en gardant une ouverture pour l’évacuation de la chaleur.

Le bloc prendra ensuite place dans le châssis.

J’espère que le diamètre des fils sera suffisant pour le courant qui circulera. J’ai été contraint d’utiliser des borniers plus petits que prévu initialement pour des raisons de place. On verra bien 🙂

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