Ce billet est un peu plus court que les autres. Néanmoins, j’estime qu’il a suffisamment de contenu pour le publier quand même.
A ce stade, j’utilise quotidiennement mon vélo avec ses batteries Ni-Cd encastrées dans le support en bois. L’autonomie est de 25km environ, juste assez pour aller travailler : je dois donc le recharger deux fois par jour : la nuit chez moi, et la journée au travail.
Un beau matin, je constate avec effroi que le chargeur a détecté une (fausse) fin de charge quelques secondes après l’avoir branché. Il est donc tout de suite passé en charge d’entretien et durant la nuit, seuls quelques centaines de mAh sont entrés dans les batteries.
Sans surprise, j’arrive au boulot en retard et suant : non seulement je n’ai pas d’assistance, mais en plus il a fallu que je déplace les 25kg du bestiau !
Je jure alors de faire en sorte qu’un tel drame n’arrive plus JAMAIS.
Je modifie donc le programme du chargeur pour interdire la détection de fin de charge tant qu’une tension de 43V (1,43V/élément) n’est pas atteinte et qu’une minute ne s’est pas encore écoulée depuis sa mise sous tension. J’aimerais aussi pouvoir suivre le déroulement de la charge en cours avec un peu plus de détails que la LED verte qui s’allume lorsqu’elle est terminée.
Pour cela, je modifie le programme pour émettre sur une liaison série régulièrement des trames d’information. Cette trame contient :
- la tension de la batterie
- l’état du chargeur (charge rapide, charge lente, arrêt par surtension ou arrêt par temporisation, données déjà indiquées par la LED verte)
- La capacité qui est entrée dans la batterie depuis le début de la charge (la courant de charge est considéré constant à 1,4Ah, c’est donc le produit de cette constante par le temps).
- La capacité totale que le chargeur a fait entrer dans la batterie, toutes charges confondues.
Pour cette dernière, j’avais eu la bonne idée, dès la conception du chargeur, de mémoriser en EEPROM la capacité cumulée des différentes charges. Le but était d’avoir un retour sur l’énergie qu’auront stockée au total les batteries à la fin de leur durée de vie. Cette valeur existe donc déjà en mémoire, je n’ai plus qu’à la rendre disponible.
Je dois maintenant trouver un connecteur solide et qui ne craint pas trop l’humidité pour faire sortir cette liaison série vers l’extérieure. Elle est unidirectionnelle, un connecteur deux points suffit donc. Je tombe sur une embase RCA à visser : c’est parfait, ce connecteur semble relativement bien résister à l’oxydation :
Je souhaite connecter de l’autre côté le PC de bureau installé dans mon garage, qui dispose de bon vieux ports RS-232. Je dois donc faire une adaptation de niveau logique grâce à un montage semblable à celui-ci :
Le signal est reçu par le PC sur la broche RD :
- Un état haut sur l’UART doit mettre cette broche à -12V (niveau de repos)
- Un état bas doit mettre cette broche à +12V
Les potentiels +/- 12V sont fournis directement par le PC :
- Sur la broche DTR, on trouve un +12V lorsque le port série est ouvert.
- Sur la broche TD, un trouve l’état de repos -12V étant donné que le PC n’envoie aucune donnée.
Le communication étant réalisée à 9600 bauds, pas besoin d’un optocoupleur rapide. Dans mon cas, l’UART alimente directement sa LED, le signal n’est pas bufferisé par un transistor comme dans le schéma. Un peu plus tard, voici le résultat :
J’ai bien mes trames qui arrivent ! La première valeur est la capacité entrée dans la batterie depuis le début de cette charge, la seconde la durée écoulée. La troisième vaut ‘R’ ou ‘L’ suivant si la charge est rapide ou lente (entretien). La quatrième est la capacité totale chargée dans les batteries, et la dernière est la tension instantanée.
C’est parfait pour enregistrer la courbe de charge de la batterie, mais pas suffisant : j’aimerais bien avoir un système autonome pour évaluer l’état de la charge en cours sans avoir à avoir un PC de bureau sous la main.
Quelques semaines plus tard, je sors donc d’un tiroir un afficheur LCD 2×16 doté d’un traditionnel contrôleur HD44780. Je dois avant réaliser un circuit d’adaptation pour convertir les trames série en données attendues par l’afficheur. Comme d’habitude, j’utilise mes microcontrôleurs préférés. En l’occurence, c’est cette fois un PIC18F2520. On remarquera que le connecteur RCA ne transmet pas d’alimentation : tout le système s’alimente lorsque l’UART envoie un état haut, son état de repos, et charge un condensateur. Ce dernier alimente le PIC et l’afficheur durant les états bas. Pour que le système fonctionne il ne faut donc pas envoyer trop de données, pour avoir relativement souvent un UART au repos.
Les deux condensateurs céramiques en haut à gauche associés aux deux diodes forment une pompe de charge. En effet, ce type d’afficheur LCD a besoin d’une tension de polarisation de plusieurs volts inférieure au rail positif pour avoir un contraste suffisant. Le plus souvent, lorsque l’afficheur est alimenté en 5V, on alimente la broche de polarisation entre 0 et 5V grâce à un pont diviseur, ce qui permet d’avoir une polarisation jusqu’à -5V.
Dans mon cas, le circuit étant alimenté en 3,3V environ, le contraste n’était pas suffisant. En créant une tension négative de -2,2V environ grâce à la pompe de charge, tout s’améliore.
Et voilà le travail !
La capacité sur la ligne supérieure est celle de la charge en cours tandis que celle du dessous est le cumul total. Les deux valeurs sont ici égales : je viens d’utiliser pour les tests un microcontrôleur neuf.
C’est bien… Je peux désormais toujours avoir un œil sur la charge lorsque je passe devant le vélo. Mais ce serait encore mieux si je pouvais la surveiller à distance !
A nouveau quelques semaines plus tard, je rajoute un module Wi-Fi ESP8266 sur la carte du chargeur :
Ce dernier lit les trames envoyées par le PIC sur sa liaison série, puis les envoie à une interface Web toutes les 5 minutes. Ainsi, dès lors que le vélo est en charge dans un lieu connu qui dispose d’un réseau Wi-Fi (dont les identifiants d’accès ont été préalablement stockés en dur dans l’ESP), je peux suivre depuis mon téléphone ou n’importe quel navigateur Internet le déroulement de la charge :
J’ai en bonus la courbe de la tension aux bornes de la batterie. Grâce à ce système, plus de mauvaise surprise !