CHOUR - Chargeur de batterie au plomb
Appareil : Chargeur de batterie piloté par microprocesseurr
Date : 2017
Type : PC-BAT1
Marque : Chour
Principaux constituants : Abaisseur de tension à découpage, Arduino Pro Micro pour le pilotage
Principale caractéristique : Deux modes de charge : courant fort et courant de maintien piloté par le microprocesseur. Protégé
contre l'inversions de tension de la batterie et contre les court-circuits.
Introduction
Mon chargeur de batterie au plomb composé d’un transformateur, d’un redresseur sélénium et d’un disjoncteur thermique ayant rendu l’âme (je l’ai un peu aidé), je me suis dit que ce serait l’occasion de mettre en œuvre les modules abaisseurs de tension et autre Arduino que l’on trouve pour quelques euros sur le net. Ca donne le montage et le programme décrit ci-après, pour un coût qui n’est pas disproportionné (voir plus loin) par rapport à l’achat d’un chargeur neuf piloté par microprocesseur. Et au moins, je sais comment il est fait.
Et si vous avez quelques composants de récupération, il ne vous reviendra finalement pas si cher que cela.
Ses caractéristiques sont les suivantes :
- Chargeur de batterie d’automobiles au plomb 12V. Il peut être utilisé pour des batteries au plomb de plus faible intensités que celles utilisées normalement pour les automobiles sous réserve de diminuer l’intensité de charge en « charge fort courant ».
- Alimentation secteur.
- Charge fort courant = 5A.
- Charge de maintien ≤ 0,2A.
- Passage automatique courant fort/maintien selon le niveau de charge de la batterie.
Limitation : par programme, le chargeur refuse de charger une batterie dont la tension est inférieure à 7V. De toute façon, si c’est le cas, la batterie est morte (en général, tension inférieure à 12V).
Schéma de principe
L’alimentation secteur passe par une alimentation à découpage qui produit une tension de 24V sous 10A. Vous pouvez bien sur utiliser un transformateur classique plus redresseur et filtrage si vous avez ça en stock. Vous ferez une économie substantielle (environ 15€).
La tension de sortie de cette alimentation est envoyée sur trois convertisseurs abaisseurs C1, C2 et C3.
- C1 est réglé pour fournir 13.8V sous 5A.
- C2 est réglé pour fournir 13.8V sous 0,2A.
- C3 produit le 5V pour l’alimentation du processeur (Atmel, Arduino Pro micro).
Chaque sortie de C1 et C2 est reliée à un relai. Chaque relai est commandé par le processeur (Cmd1 et Cmd2).
Les sorties de chaque relai sont reliées ensembles pour former la sortie positive de charge de la batterie.
Au repos, les deux relais sont ouverts.
Un diviseur de tension permet de disposer d’une tension acceptable pour une entrée analogique du processeur afin de mesurer la tension de la batterie. Ce point est expliqué plus loin.
Interface
Le chargeur dispose de 5 diodes permettant de connaitre l’état courant du processus de charge :
- Diode Verte D4 : batterie chargée. Le chargeur ne délivre plus de courant.
- Diode Jaune D5 : batterie en cours de chargement avec un courant faible (courant de maintien).
- Diode Rouge D2 : batterie en cours de chargement avec un courant fort (5A).
- Diode Rouge D6 : si allumée, cela signifie que la batterie est branchée en inverse.
- Diode Rouge D3 : signale une erreur.
- Éteinte : pas d’erreur.
- Clignotement lent (700ms) : tension de la batterie trop faible <7V).
- Clignotement rapide (100ms) : tension de la batterie trop élevée (>14,5V).
- Lorsque la Diode Rouge D6 est allumée, le chargeur ne délivre pas de courant.
Fonctionnement du chargeur
- Au démarrage, les deux relais sont en position ouverte.
- Le processeur vérifie la présence d’une tension en sortie du chargeur. S’il n’y en a pas (batterie non branchée, ou branchée en inverse ou complètement vide ou tension <5V, tension >14,5V), il laisse les deux relais ouverts et reste dans l’état 2. La diode Rouge D3 clignote (et éventuellement, la diode rouge D6 est allumée si la batterie est branchée en inverse)
- Si une tension est présente :
- Tension supérieure à 7V et inférieure à 13V : il ouvre le relai de charge faible, ferme le relais de charge élevée.
- Tension supérieure ou égale à 13V et inférieure à 13.5V : il ouvre le relai de charge élevée et ferme le relai de charge faible.
- Tension supérieureà 13.5V : il ouvre les deux relais.
La mesure de la tension de la batterie se fait en la déconnectant du chargeur. Elle est faite toutes les 10mn.
Quelques particularités du programme :
Les mesures de tension par le processeur sont faites selon deux modes :
- Un premier mode grossier par rapport à la tension d’alimentation du processeur (environ 5V).
- Un second mode fin par rapport à la tension interne de référence (ARef) du processeur (2,56V sur le Atmel 32U4. Souvent, 1,1V sur d’autres versions du processeur).
Le premier mode permet d’éviter de détruire le processeur si l’on branche par mégarde un générateur (batterie) dont la tension est élevée (par exemple, 24V). Le montage est protégé jusqu’à une tension d’environ 30V.
Le second mode permet une mesure plus précise de la tension. Par contre, cette tension NE DOIT PAS dépasser 15V. Au-delà, on détruit l’entrée analogique. Ce mode n’est activé que si la mesure grossière est inférieure à 15V.
À noter que la bibliothèque Arduino (2017) semble être erronée pour le processeur utilisé (32U4). J’ai été obligé de réécrire les fonctions d’initialisation du convertisseur analogique numérique ainsi que la fonction de lecture.
Le programme est conçu pour proposer des fonctions minimisant le risque d’erreur de programmation pouvant entrainer un risque pour le chargeur. Par exemple, si on décide de passer en charge à courant faible, une fonction est disponible qui coupe la charge à courant fort et laisse le temps au relai de commuter.
Si vous modifiez le programme, il est déconseillé de manipuler directement les commandes de relais en dehors de ces fonctions.
Réglage du montage
Réglage du programme
Le programme est disponible ici. Il y a deux constantes à renseigner :
- « VAlimArduino » qui est la valeur en millivolt de la tension d’alimentation.
- « Facteur » qui représente le diviseur de tension entre A et B (voir schéma).
Sur votre montage en fonctionnement depuis quelques minutes, mesurez la tension réelle d’alimentation de l’Ardiuno et mettez la valeur en millivolt dans la constante VAlimArduino (par exemple, 4800mV qui est la valeur par défaut du programme et qui correspond à Vcc).
Injectez 15V en A et réglez le potentiomètre ajustable pour obtenir 2.56V en B. Par précaution, l’entrée de mesure du microcontrôleur ne doit pas être connectée en B lors du réglage.
Injectez une tension de, par exemple, 13000mV en A (13V). Faites en sorte que la mesure de cette tension au multimètre soit la plus précise possible. En pratique, cette tension peut être quelconque entre environ 8000mV et 15000mV.
Connectez l’entrée de mesure (ici, ADC4, Pin 10 de l’Arduino) en B. Exécutez le programme en mode « test » (voir #define TEST true) et observez les tensions calculées par rapport à Vcc (tension d’alimentation de l’Arduino) et par rapport à ARef (référence de tension interne du processeur). L’affichage dans le moniteur série de l’environnement de développement se présente comme suit (les valeurs sont fictives) :
TVcc 13800 – Vlu 409 –Tension Lue 2010 – TVaref 14100 – Vlu 800 – Tension Lue 2000
La première série (13200, 409, 2000) donne respectivement, la tension calculée au point A (13,8V), la valeur rendue par le convertisseur (409) et la tension calculée au point B (2,01V), le tout étant mesuré par rapport à la référence qui est la tension d’alimentation (Vcc = 4800mV dans cet exemple).
Idem pour la deuxième série mais mesurée par rapport à la tension de référence interne ARef du processeur (2560 mV dans le cas présent).
Note : si TVcc est inférieure à 7000mV ou supérieure à 15000 mV, la deuxième série n’apparaitra pas. Réglez la tension en A pour que TVcc soit dans les bornes [7000, 15000[.
Ce que l’on souhaite est que TVaref affiche la tension injectée, ici 13000 mV (et si possible, TVcc mais la précision est moins importante pour cette mesure).
L’objectif est de calculer le facteur multiplicateur « Facteur » pour passer de la tension mesurée en B à la tension mesurée en A (valeur du diviseur plus de la diode en série). Il est préférable de calculer ce facteur sur les tensions mesurées par rapport à la tension de référence interne du processeur. Sa valeur par défaut est 585.
Facteur = (Tension Injectée * 102300) / (Vlu * ARef)
Soit ici
Facteur = (13000 * 102300) (800 * 2560) = 649
Mettre à jour la constante Facteur du programme avec cette valeur, recompilez et vérifier que TVAref affiche désormais 13000 (la précision du convertisseur fait que vous n’obtiendrez pas exactement à cette valeur. Faites au mieux en privilégiant les valeurs par excès (il vaut mieux 13100 que 12800 par exemple).
Ceci fait, mettez en commentaire le « #define TEST true », recompilez et recharger. Le programme est prêt à fonctionner.
Réglage des générateurs
Régler la tension de chaque générateur à 13.8V.
Pour le courant, prendre une charge adaptée et régler le générateur de courant fort pour qu’il débite 5A (charge d’environ 2 ohms) et le générateur de courant faible pour qu’il débite 200mA (mettre une charge d’environ 50 ohms).
Il est préférable de faire ce réglage avant de finaliser le montage. Si comme moi, vous le faite après coup, il faut forcer la fermeture des relais correspondants au module à régler. Pour ce faire, déconnectez les commandes Cmd1 et Cmd2 de l'Arduino. Forcez Cmd1 (respectivement Cmd2) à 0V, mettez la charge correspondante et réglez l'intensité maximum. Ceci fait, reconnectez Cmd1 et Cmd2 à l'Arduino.
Limitations
Le réglage du courant minimum dépend de la résistance interne de la batterie vue du générateur. Le montage proposé ici ne prend pas cette donnée en compte.
Une amélioration consisterait à remplacer l'ajustable de réglage du courant par une résistance électronique et de gérer cette résistance par l'Arduino. Cela implique une mesure du courant en plus de la mesure de la tension. Une suggestion serait de mettre une résistance de 0.1 ohms 4W dans la ligne d'alimentation (sur la masse) et de mesurer la chute de tension à ses bornes. Pour 200mA, on doit mesurer 0.02V. Pour 5A, on doit mesurer 0.5V.
Le prix
Si vous n’êtes pas électronicien amateur, alors, ce chargeur vous coûtera plus cher qu’un du commerce :
Hors taxes en 2021. Courant charge 8A, différents modes de charge et régénération.
Dans le cas contraire, vous avez probablement tout un stock de composants qui vous permettront de réaliser ce chargeur à peu de frais. Les seuls éléments spécifiques et modernes sont :
- Les convertisseurs 6A. Entre 4 et 5€ en 2017. Si vous faite l’amélioration proposée ci-après, il ne vous en faut qu’un.
- L’Arduino pro-micro. Environ 3€.
- La platine avec les relais. Environ 4€.
Le reste, c’est du câble et des composants standards, sauf l’alimentation 24V. Comme dit plus haut, si vous avez un gros transfo qui sort du 12V à 15V alternatif, il vous suffit d’ajouter un gros pont de diode (par exemple, un 25A que vous avez sûrement en stock). Sinon, le prix de l'alimentation à découpage que j'ai utilisée est d'environ 15€.
Améliorations / variantes
Ce montage est « brut de fonderie ». Plusieurs améliorations ou variantes sont envisageables :
- Alimentation 5V : la consommation de la partie « mesure » est d’environ 100mA. Un convertisseur linéaire (7805) avec un radiateur adapté (2W de dissipation) permet d’alimenter l’ensemble sans chauffe exagérée. Si vous avez ça dans vos tiroirs, c’est une économie de quelques euros par rapport au convertisseur que j’utilise. À noter que lors de mes essais, j’utilisais un 7805.
- Affichage de l’état par LED : c’est très « vieille école ». Mais j’ai un stock de LED conséquent et c’était un moyen de les utiliser. Vous pouvez faire plus moderne et finalement plus simple en mettant un afficheur alphanumérique série branché sur l’Arduino.
- Convertisseurs : on doit pouvoir n’utiliser qu’un convertisseur pour charger la batterie. Il suffit de mettre deux ajustables, en régler un pour 5A et l’autre pour 0.2A et commuter la patte centrale avec le relai libre. Attention, avec cette approche, pendant la commutation du relais, la commande de limitation de courant du convertisseur est en l’air. Je ne sais pas comment il réagit. Si la conception du convertisseur le permet, il suffit peut-être d’ajouter une résistance commuté par le relai en parallèle avec l’ajustable ce qui fait que le convertisseur a toujours une consigne valide. L'autre solution déjà évoquée dans le paragraphe « limitation » consisterait à utiliser un potentiomètre électronique et régler le courant par l'Arduino via une mesure de l'intensité.
- Température : certains chargeurs du commerce comportent une sonde afin de corriger la mesure de la tension de charge en fonction de la température. C’est une amélioration possible de ce chargeur.
- Courant pulsé : la littérature sur le sujet préconise une charge en courant pulsé afin d’éviter la formation de dépôts de sulfate de plomb sur les électrodes (voire, les enlever). Une possibilité serait d’ajouter un MosFET de puissance commandé par une sortie PWM de l’Arduino. On peut y ajouter un bouton de commande pour sélectionner le mode « courant pulsé – courant constant ».
- Ma première version comportait une erreur : en régime normal, D6 recevait la tension inverse de la batterie en permanence. C’est incompatible avec les tensions inverses habituelles des LED (de l’ordre de 5V pour les plus courantes). Ce bug m’a été signalé par un internaute dont le pseudo est zibuth27 qui par ailleurs m’a donné plusieurs informations que je reproduis ci-après.
Commentaire d’un internaute (zibuth27)
À propos des diodes anti-retour (D8 et D9) : « […] elles affectent la tension de sortie, car utilisées à plusieurs ampères lors de la pleine charge, la chute de tension est de 0.9V pour une Si et 0.4A pour une Schtooky En fin de charge, la tension remonte pratiquement d'autant (+0.9V ou +0.4V), la chute de tension devenant presque nulle. Cela devrait AMHA être pris en compte dans un chargeur idéal. »
À propos du module voltmètre-ampèremetre : « […]s'il s'agit de la fonction voltmètre seule, je préfère utiliser l'étalonnage déjà effectué une fois par ValimArduino et sortir sur un affichage analogique à galva sur sortie PWM (<5$, tels que dans le « ignition pulse generator » ou digital en pseudo-I2C avec des TM1637 livré avec des afficheurs LED bon marché.
J'ai déjà utilisé des modules voltmètre, mais je n’ai pas eu de problème de masse, les modules ampèremètre sont eux, déjà en hi-side. Ces modules ont un potentiomètre d'étalonnage, et donc une dérive indépendante, c'est pourquoi je préfère l'étalonnage unique ValimArduino. »
Certains modules voltemètres nécessitent une masse indépendante, d'autres non. Celui utilisé n'en nécessite pas. Il est alimenté par le module 5V (mais il peut aussi être alimenté par le 24V). Pour les modules à masse indépendante, vous devrez ajouter une alimentation secteur supplémentaire.
À propos de la température de la batterie : « […] Le montage témoigne d'un développement soigné, je m'étonne de la non-prise en compte de la température qui change fortement la tension de batterie (-3mV/°C x nombre d'éléments : 6) on passe de 12.99 (@+40°C) à 14.61 (@-20°C) pour la tension dite de floating 13.8V@25°. »
et
« […] On a commencé à prendre en compte leur température en moto où, dès que le trajet dépasse 10 minutes, la batterie
n'est qu'à la température extérieure. Lucas, fort décrié (par habitude et snobisme, le produit était pourtant très bien fabriqué, sauf le connecteur de sortie), a pourtant produit dans les fifties des régulateurs électromécaniques à compensation en température. Depuis, on a mis la batterie dans le capot moteur, à haute température, et la compensation thermique a parfois ironiquement existé à l'intérieur de l'alternateur !
Il y a une dizaine d'années les militaires US ont imposé la compensation thermique de la régulation de charge batterie sur les véhicules terrestres.
Depuis, le cartel BMaudiMerco a placé les batteries hors du capot moteur dans les Grossberlines avec un câble torsadé sortant d'une ou des électrodes de la batterie.
Depuis quelques années, je vois ce câble, même dans les petites voitures et je finis par penser qu'il s'agit maintenant d'une imposition, ou de sa conséquence, des organismes homologateurs.
Le placement d'une sonde dans l'électrode, même en plomb, est bien plus représentatif de la température interne qu'une sonde plaquée à l'extérieur de la batterie. »