Transformez votre vélo en vélo électrique!
Dossiers > Accessoires Equipements

Realisation de BMS evolutif a microprocesseurs

AVERTISSEMENT


Cet article décrit une réalisation où de bonnes connaissances en électronique et en microcontrôleurs sont nécessaires. Il s'adresse donc aux électroniciens qui ont vraiment envie de se fabriquer leur propre Battery Management System, sachant qu'il reviendra plus cher qu'un acheté tout fait (et sans compter le temps passé). Je suis désolé si les novices n'y trouvent pas toutes les explications qu'ils souhaiteraient, de plus, vu les tensions et les courants en jeu et surtout les risques d'incendie des batteries LiPos, ce genre de réalisation est à vraiment proscrire pour un débutant. (Je ne veux pas avoir des accidents sur la conscience).

CONTEXTE



L'idée de départ vient de mon souhait de réaliser une petite batterie légère et performante à base de 2 batteries LiPo Turnigy en NanoTech 7S 4.4Ah (65C!!!) pour alléger mon sac à dos lors des trajets velotaf. Afin de protéger et équilibrer ces accus, il faut bien entendu rajouter un BMS. En effet les premiers essais de ces batteries (sans BMS) m'ont montré qu'une des 14 cellules se déchargeait un peu plus vite que les autres, et pouvait passer en dessous de 2.7 Volts alors que la tension totale du pack était encore acceptable. J'ai beaucoup lu les forums et compris que les BMS réellement capables d'équilibrer étaient rares, ceux qui auraient pu convenir étaient trop volumineux par rapport à la taille de ces petits accus. Un qui me plaisait bien, chez bmsbattery, est celui à base de OZ890,malheureusement il ne va pas au dessus de 13S, il est limité à 20A et le cordon de programmation vaut $199!!!

Mais comme la conception et la réalisation d'un tel circuit demande quand même beaucoup de travail, je l'ai voulu assez universel (et modulaire) pour pouvoir le réutiliser plus tard, pour d'autres applications sans qu'il soit limité en nombre de cellules.

CAHIER DES CHARGES



-Non limité en nombre de cellules: ceci impliquait l'utilisation de petits microprocesseurs (1 par cellule) cascadés plutôt qu'un super circuit à N entrées.
-Dimension physique compatible avec les accus Turnigy pour pouvoir plaquer le circuit contre l'accu.
-Connectique d'équilibrage compatible avec les accus Turnigy.
-Performant au niveau équilibrage, ceci implique l'utilisation d'un régulateur de courant de charge afin que le circuit d'équilibrage puisse fonctionner correctement. Ce concept a été pensé par Silicium et a fait ses preuves.
-Simple à réaliser avec le moins de composants possible. ceci implique l'utilisation de microprocesseurs.
-Muni d'une sortie série/USB vers PC pour logguer les différentes tensions pendant la charge (ou la décharge) en utilisant l'incontournable logiciel "LogView".
-Faible consommation, car il doit rester connecté à vie sur l'accu.
-Sans oublier la mesure du courant de charge afin que le logiciel puisse détecter automatiquement la présence ou la déconnexion du chargeur, mais aussi puisse réagir à un courant de charge devenu trop faible et que ce courant puisse apparaitre dans les logs.
-Quelques leds pour indiquer l'état de l'accu.
-Un buzzer pour avertir l'utilisateur avant la coupure, peut être utile aussi en cas de stockage (oubli) d'un accu déchargé...
-Capable déjà de fonctionner en 72 Volts voire plus. (attention au choix du régulateur 5V)
-Tous les composants doivent se trouver facilement chez les distributeurs en ligne comme RS-Particuliers. (j'aime celui-ci car le port est offert si on commande le dimanche)

Le BMS se compose donc d'un module "MAITRE" et de 14 "ESCLAVES" répartis sur 2 Circuits imprimés identiques. Tous réalisés en simple face, composants CMS.

DESCRIPTION DES "ESCLAVES"



Vue d\\\ une carte comportant 7 \\\Slaves\\\


Chaque esclave est constitué d'un PIC 12F1822 que j'ai choisi car étant le plus petit possédant un port série natif, une sonde de température et une référence de tension interne. La communication entre esclaves s'effectue en asynchrone à 19200 bauds, un transistor en base commune effectue avantageusement la translation de niveau (Sérieuse économie par rapport aux photo-coupleurs généralement rencontrés dans ce genre de réalisation). Une diode a du être ajoutée afin de ne pas "tirer" l'entrée série en négatif par rapport au VSS. Chose étrange, les tensions négatives sur les entrées perturbent la mesure de la sonde de température interne. Bien entendu entre le dernier esclave et le maitre, il y aura quand même un photocoupleur vu le décalage en tension !

Chaque Pic peut commuter sa résistance d'équilibrage au moyen d'un transistor. Le courant peut être choisi de 100mA maximum (si on soude une résistance de 39 Ohms) ou 200mA (si on soude deux résistances de 39 Ohms). Une Led visualise l'activation de la résistance d'équilibrage.
Afin de protéger les PICs lors du branchement des connecteurs d'équilibrage, chaque étage est protégé par une diode zéner de 5.6 Volts, sans cette précaution, Les PICs étant alimentés en série, et ne consommant pas exactement la même intensité au même moment, certains pourraient bien être victime de surtension lors de la connexion à la batterie.

Schéma d\\\ une cellule Slave


Voici les deux esclaves collés chacun sur leur batterie, une plaque de plexiglass surélevée par un carré de balsa de 5mm protège les circuits.

Vue de la batterie du coté des Esclaves










DESCRIPTION DU "MAITRE"




Schema du Master


Le Maitre est réalisé sur un troisième circuit imprime en simple face, entièrement en CMS également. (Plus ça va plus j'aime les CMS, il n'y a pas de trous à percer, pas de pattes à couper et si besoin ça se dessoude en 3 secondes sans outillage particulier... Je parle des résistances et des capas).

Un PIC 18F24K22 choisi pour ses 2 UARTS et un fonctionnement en 5Volts pilote l'ensemble. Il transmet en série vers le premier esclave de la chaine grace à un transistor monté en collecteur ouvert. Les données du dernier esclave reviennent par l'intermédiaire d'un photo-coupleur optimisé pour consommer le moins possible.

Un régulateur 5 volts linéaire LT3010 acceptant 80 Volts en entrée a été choisi pour alimenter le montage. Une résistance en série de 1K protège le régulateur tout en participant à la chute de tension...

Un MOSFET IRLS4030 pilotable directement en 5 Volts (c'est rare !) sert pour commuter et réguler le courant de charge, un ampli op sert d'amplificateur de la tension de shunt (gain X50) et un autre pour la régulation de courant proprement dite. Le courant de charge se règle avec l'unique résistance ajustable. La tension de shunt est connectée à une entrée analogique du PIC. Par ailleurs, le PIC contrôle le courant de charge sur 3 niveaux: à fond, régulé en courant (réglable de 50 à 250mA) et déconnecté.

De un à trois autres MOSFET IRLS4030 du même modèle servent à couper l'alimentation du contrôleur en cas de batterie faible. Avec une Rds On de 3.4milliOhms, les pertes seront réduites. Mais attention, si on ne plaçait qu'un seul MOSFET, à 30 Ampères, il dissiperait quand même 3 Watts, avec 3 MOSFET, la dissipation ne serait que de 1 Watt répartie sur les 3, c'est quand même mieux.
Une entrée Analogique du PIC permet de mesurer la chute de tension sur les MOSFET et en déduire si la charge est déconnectée - après une coupure sur limite basse par exemple - mais aussi d'évaluer le courant consommé par mesure de la chute de tension. La mesure aura une résolution assez médiocre, mais tout à fait suffisante pour corriger le seuil de coupure en fonction du courant consommé.

A noter que le la masse du PIC, et de l'ampli OP correspondent au "négatif chargeur" et non pas au "négatif batterie". Ainsi il y a un minimum d'adaptations de niveau à réaliser. Le seul point litigieux serait une tension insuffisante pour la commande des 3 MOSFETS qui sont eux au "négatif batterie". Cependant on admettra volontiers qu'on n'utilise pas le vélo avec le chargeur branché et en phase d'équilibrage.

4 Diodes LED permettent de connaitre l'état de la batterie. une seule Led est allumée à la fois pour minimiser la consommation. (sauf en charge)

Vert pulsé = Batterie OK, communication avec les esclaves OK.
Bleu pulsé = Batterie en surtension - coupure chargeur.
Bleu/vert pulsé = Alerte Batterie en surtension.
Rouge/vert pulsé = Alerte Batterie faible.
Rouge pulsé = Batterie faible, coupure active.
Orange/rouge pulsé = Equilibrage avorté pour cause de tension insuffisante. (chargeur isolé)
Orange/vert pulsé = Equilibrage terminé correctement. (chargeur isolé)
Orange continu = Charge à courant nominal.
Orange + Vert continu = Charge à courant réduit (régulé)

Une sortie pour buzzer permet d'alerter l'utilisateur d'une coupure imminente de la batterie, cette alerte permettra également de penser à recharger une batterie oubliée sur une étagère. Le buzzer indique également la fin de la charge.
Bien entendu l'activation du buzzer sera pulsée de manière à consommer le moins possible.

Photo du master V3








PROTOCOLE DE COMMUNICATION ENTRE LES ESCLAVES ET LE MAITRE



Le "bus" qui relie les différents PICs est donc du type monodirectionnel en anneau, chaque pic reçoit des données du précédent et en envoie au suivant...
Il s'effectue à 19200 bps en 8 bits sans parité.
Le protocole ressemble à du "Maitre Esclave": Chaque seconde, pour la mesure de tension, le maître initie le processus en envoyant une commande "M" suivie du numéro"0" au premier Esclave, celui ci effectue la mesure et envoie la même commande "M" suivie du numéro "1" et enrichie de sa mesure sur 2 x 8 bits à l'esclave suivant qui incrémente le numéro et y ajoute sa mesure et ainsi de suite !
Le maitre récupère ainsi une trame "M" contenant le nombre d'esclaves et les tensions de tous les éléments. Ce protocole permet d'éviter de programmer un numéro d'ordre dans chaque esclave, ce qui compliquerait la réalisation. Il n'y a même pas à programmer le nombre d'esclaves !

Le maitre décide ensuite si il y a lieu ou non de passer un esclave en équilibrage et envoie une commande "E" suivie de 3 Octets où chaque bit correspond à un esclave (ça fait jusqu'à 24S, si besoin je passerai à 4 octets)

A noter: Afin d'éviter que la consommation d'une cellule en équilibrage ne perturbe la mesure de tension de ses deux voisines, mais aussi d'elle même par chute de tension sur les fils d'équilibrage, le logiciel des esclaves est fait de façon à couper l'équilibrage quelques ms avant la mesure et à le remettre juste après.

A noter également: Un watchdog supervise les esclaves qui vont "resetter" et couper la résistance d'équilibrage si ils n'ont pas été interrogés depuis 5 secondes. Ceci pour éviter de décharger un accu en cas de perte de liaison (ou de problème) avec le maitre. Ce dernier va lui aussi "resetter" si il ne reçoit rien, mais à un rythme plus lent de 25 secondes.

Cablage des modules

LOGICIEL DU MAITRE - ALGORITHME D'EQUILIBRAGE



Ca c'est le plus intéressant, c'est là qu'on peut essayer et comparer plusieurs techniques. Je n'ai pas l'intention de dire "voici mon "algo", c'est le meilleur" au contraire j'ai déjà implémenté et testé 3 algorithmes :

>> le Premier est très simple: il doit correspondre peu ou prou au fonctionnement des BMS "low cost" du commerce: une fois passé un seuil, toutes les cellules dont la tension est supérieure à la plus basse + un delta de quelques mV sont passées en équilibrage. Il n'y a pas de régulation de courant dans ce mode, par contre l'équilibrage se coupe quand le courant de charge devient inférieur à une valeur programmable, qui à mon avis, doit correspondre justement au courant d'équilibrage. (l'idée, c'est de ne pas décharger une cellule qui vient d'être chargée).
Le seuil de tension, le Delta-V et le seuil de courant sont facilement paramétrables.

>> Le Second est aussi très simple: Son but est de ne pas favoriser les accus arrivés en premier à la tension d'équilibrage en les maintenant à cette tension plus longtemps que les autres.

1) charge normale tant que toutes les cellules sont en dessous de la tension d'équilibrage.
2) passage en courant de charge régulé dés qu'une cellule à atteint ce seuil.
3) attendre que cette cellule (ou une autre) remonte à la tension d'équilibrage.
(en effet la diminution du courant de charge a fait chuter légèrement la tension)
4) activation définitive de la résistance d'équilibrage dés qu'une cellule a atteint le seuil.
5) lorsque toutes les cellules ont atteint le seuil et sont toutes en équilibrage (charge stoppée), l'algorithme est terminé.

>> Le troisième pourrait être appelé "mode zenner": L'idée c'est de faire comme si on avait connecté une diode Zenner sur chaque accu pour l'empêcher de dépasser la tension d'équilibrage. La différence avec le précédent, c'est que si un accu dont on a stoppé la charge voit sa tension baisser, on coupe la résistance d'equilibrage etc. (pas d'effet "latch")
On peut remarquer que l'accu arrivé le premier à l'équilibre va continuer à recevoir du courant jusqu'à ce que le dernier y arrive. Il va donc être plus chargé et cela fera perdurer le déséquilibre.

1) charge normale tant que toutes les cellules sont en dessous de la tension d'équilibrage.
2) passage en courant de charge régulé dés qu'une cellule à atteint ce seuil.
3) Dans ce mode "Zenner" on active la résistance si la tension dépasse le seuil, on la coupe si on est en dessous du seuil, sans tempo, sans hystérésis.
4) lorsque toutes les cellules ont atteint le seuil et sont toutes en équilibrage (charge stoppée), l'algorithme est terminé.

>> Il est aussi possible d'enchainer automatiquement les deux algo ci-dessus pour une optimisation totale.

>> Un mode "manuel" sans équilibrage automatique est également disponible. Il est plutôt utile lors des premiers essais pour activer / désactiver les résistances une par une ou toutes à la fois, ou bien pour créer volontairement un déséquilibre et regarder lors de la prochaine charge comment l'algorithme se comporte.

C'est assez instructif de comparer les différents algos en observant les courbes de charges tracées par Logview.

LOGICIEL DU MAITRE - CONFIGURATION VIA LE PORT SERIE



Paramétrage du BMS

Là il a fallu choisir entre un logiciel fenêtré sur PC avec le transfert des paramètres via le port série et un interpréteur de commandes auquel on se connecterait avec un émulateur de terminal. Sans aucun doute, un logiciel sur PC, ça fait plus moderne: on peut utiliser la souris, Un terminal, ça fait plutôt "années 70", mais ça a au moins trois avantages: Un seul logiciel à maintenir, pas de problématique de correspondance entre les versions du logiciel du BMS et celui du PC et plus d'interactivité puisqu'une commande permet d'obtenir une action et / ou une réponse immédiate du BMS... C'est donc cette dernière solution que j'ai choisi de développer.
A noter: une commande liste tous les paramètres d'un coup pour faciliter la vérification d'un paramétrage.



éTALONNAGE



Les dispersions de caractéristiques des PICs font qu'il est obligatoire d'étalonner chaque esclave. Cette étape peut paraitre pénible, mais après avoir passé des heures à acheter, monter, câbler son BMS, ces quelques minutes supplémentaires ne sont pas et de loin les plus désagréables.

La première grandeur à calibrer est la température interne des PICs. Elle se fait en une seule fois, (tous les PICs d'un coup) avec la commande "etatemp XX" ou XX est la température ambiante.
Ensuite, sur une batterie chargée et au repos, on compare la tension indiquée dans les trames avec celle mesurée avec un multimètre. la correction s'effectue en unité de pas du convertisseur, c'est à dire par bonds de 7mV environ. La commande est "etavolt N XX" où N est le numéro de cellule et XX la valeur positive, nulle ou négative de correction.

Ces corrections sont mémorisées dans les PICs "esclaves", elles ne sont pas effacées par une mise à jour du logiciel du PIC "maitre". De plus une commande permet de lister toutes les corrections d'un coup, c'est bien utile si on veut retoucher l'une ou l'autre des corrections.

Une fois l’étalonnage fait, on ne doit pas avoir à y revenir. Je veux dire que ça ne dérive pas dans le temps.

LOGICIEL DU MAITRE - TRAMES POUR LOGUER LES MESURES



Le port série de la carte maitre est en niveau TTL/CMOS, il faudra donc insérer un petit convertisseur USB/série entre la carte et le PC. On en trouve pour quelques Euros sur Ebay. (Attention à ne pas confondre avec un adaptateur RS232/USB qui serait en niveau +12/-12V)

Le maitre fournit pour l'instant deux trames à chaque seconde :
La première est destinée au "Debug" et contient un maximum d'informations utiles, On peut la visualiser sur un programme "Terminal" comme Hyperterminal, Procom etc.
La seconde est destinée à Logview et correspond au format attendu par ce logiciel (Openformat)


UTILISATION AVEC LOGVIEW



Logview possède un format spécial l'" Openformat" qui peut être configuré au moyen d'un Editeur livré avec. Plus d'informations dans la documentation à télécharger.


Voir ici le tout premier "Log" réalisé avec Logview :
Depuis j'ai ajouté un filtrage sur le courant !

Première charge sur Logview

UTILISATION EN ROUTE



Lorsque la batterie faiblit, le buzzer commence à bipper afin d'alerter le cycliste qu'un élément faiblit, c'est le moment de pédaler un peu plus fort pour augmenter l'autonomie, puis si on insiste la coupure survient. Il faut déconnecter l'utilisation pendant 3 secondes pour que le BMS réactive la sortie.
Grâce à la compensation de la résistance interne de la batterie, qui abaisse les seuils d'alerte et de coupure en fonction du courant consommé il y a peu de risque de coupure lors d'une accélération, de plus les seuils n'ont pas besoin d'être aussi bas et un oubli du vélo batterie branchée ne sera pas aussi destructeur.


CONSOMMATION PROPRE DU BMS



Elle est pour l'instant de quelques mA. C'est provisoire ! Je n'ai pas encore activé les mode "sleep" des PICs. C'est la dernière étape à réaliser, Volontairement je l'ai gardée pour la fin. Pour l'instant je débranche les connecteurs d'équilibrage lorsque je dois laisser la batterie sans m'en servir plus d'un jour.

*** à suivre ***

CONCLUSION



Beaucoup de temps passé sur ce projet, (je ne comptabiliserai volontairement pas les heures) mais sans pression car l'électronique "à la maison" reste un loisir à la différence de celle au travail ou il y a toujours des échéances et des contraintes diverses à respecter. Ce qui est magique c'est de pouvoir modifier le fonctionnement en fonction de ses idées, des essais ou des suggestions reçues.
Voir les LED d'équilibrage clignoter tout en regardant les courbes de charge sur logview permet de comprendre ce qui se passe dans sa batterie qui n'est plus une "boite noire" impénétrable.
Je ne regrette rien et le meilleur est à venir, car avec un BMS aussi paramétrable que celui-ci, je peux à présent me construire facilement des batteries à partir d'éléments séparés et lorsque les éléments seront à changer, je ne changerai que les éléments, pas le BMS.

l'article n'est pas tout à fait terminé et va s'enrichir encore, revenez voir de temps en temps ! Il y a une discussion associée sur le forum pour vos questions et suggestions.

EVOLUTION



Le prototype fonctionnant à merveille depuis de nombreux mois et ayant envie d'essayer un fabricant de circuit imprimé à très bas coût sur internet, j'ai modifié la CAO des circuits pour utiliser 2 faces, ceci m'a permis de supprimer quelques composants et de raccourcir des pistes. J'ai donc à présent 2 batteries et je vais en commencer une troisième.

Nouveau PCBSecond accu en cours de montage

Le BMS évolue en permanence, voici la version 3.4 du logiciel avec la documentation à jour.
Vous y trouverez un nouvel algo d'équilibrage (le n°5), un étalonnage de la dérive en tension pour les PICs esclaves permettant d'avoir une mesure de tension bien plus stable. Une meilleure gestion en cas de perte de communication pendant la charge.
Bons essais !

ici: mega.nz #!BU9ikKpQ!4nlLBQvG...01Jah32DGs9Y1V8


Article suivant: Couché et semi couché : quoi, pourquoi, comment
Article précedent: IUT Soissons Bentrider

Réagir, poser une questionProposer un articleS'abonner aux articlesConseiller l'article à un ami


Transformez votre vélo en vélo électrique!


remise 10% anniversaire moteuretvelo




Transformez votre vélo en vélo électrique!


A propos de cet article
Profil de 3615jmdinfos Article de 3615jmd.


N° Article : 634
Article lu 10836 fois.
Créé le 04-06-2012 à 23h05.
Modifié le 03-02-2017 à 09h29.

Cliquez ici pour valider cet article Validation * * *

modifier cet article Mettre à jour l'article
Cliquez ici pour rediger un nouvel article Redigez un nouvel article
Discutons de cet article sur le forumVos réactions, sur le Forum
Liens externes
Autres articles du dossier

Tous nos articles Tous les articles