PbMonitor v1.0 système de surveillance des batteries: Solution pour les applications d'ASI et de stockage d'énergie
sur

Les batteries sont largement utilisées dans les systèmes d'alimentation sans interruption (ASI), le stockage des énergies renouvelables et les applications hors réseau. Pourtant, la surveillance de leur état et de leurs performances reste un défi, car les systèmes ASI traditionnels traitent plusieurs batteries comme un élément unique, ce qui entraîne une charge déséquilibrée et un manque d'efficacité. PbMonitor est une solution de surveillance simple mais efficace, qui permet de suivre en temps réel la tension, le courant et la température des batteries (plomb et lithium-ion). Les données collectées sont transmises via MQTT à Home Assistant, ce qui permet une surveillance et une automatisation en temps réel. Cet article décrit un système de surveillance de batterie simple et peu coûteux, qui vous aide à suivre vos batteries, fournissant une solution rentable et évolutive pour la gestion des batteries dans diverses applications.
Une solution pratique
Les systèmes de stockage d'énergie, en particulier ceux utilisés dans les configurations d'ASI, emploient fréquemment plusieurs batteries en série pour répondre aux exigences de tension. Bien que cette topologie simplifie la fourniture d'énergie, elle introduit des défis importants liés à l'équilibrage de la charge, à la surveillance de l'état des cellules individuelles et aux disparités de l'état de charge (SoC). Les systèmes ASI conventionnels traitent le parc de batteries comme une entité unique, sans le niveau de détail nécessaire pour détecter les déséquilibres entre les cellules, ce qui peut entraîner une défaillance prématurée et une réduction de l'efficacité opérationnelle.

L'idée de développer PbMonitor (figure 1) est née d'une nécessité pratique : mon système ASI comprend quatre batteries au plomb de 12 V connectées en série pour produire une alimentation nominale de 48 V (figure 2). Cependant, en l'absence d'un système de surveillance spécifique, les tensions individuelles des batteries restaient inconnues, ce qui entraînait des risques de surcharge ou de sous-charge de certaines d'entre elles. Après près d'un an et demi de fonctionnement, il est devenu impératif de mettre en place un système capable de diagnostiquer l'état des batteries, d'identifier les écarts de performance et de faciliter une maintenance proactive.

comprenant quatre batteries au plomb de 12 V en série.
La motivation de ce projet est née de mon utilisation personnelle de batteries au plomb, qui a mis en évidence le besoin d'une solution de surveillance spécialisée. C'est ce qui a inspiré le nom PbMonitor, le « Pb » représentant le plomb, en accord avec l'objectif principal de suivi et d'optimisation des performances des batteries au plomb.
Au-delà du domaine des onduleurs, les applications de PbMonitor s'étendent aux systèmes de production d'énergie renouvelable. La mise en œuvre d'un cadre de surveillance permet de prolonger la durée de vie des batteries, d'optimiser les stratégies de maintenance prédictive et d'améliorer la fiabilité globale des solutions de stockage d'énergie.
L' architecture du système
Le système PbMonitor est construit autour du microcontrôleur ESP32-C3, qui offre des capacités de communication Wi-Fi et BLE (Bluetooth Low Energy) fiables pour la surveillance en temps réel. Pour garantir des mesures de tension et de courant à haute résolution, le CNA externe MCP3008 de Microchip est intégré, offrant une précision de 10 bits sur huit canaux et assurant l'interface avec l'ESP32-C3 via SPI, comme le montre le schéma fonctionnel (figure 3).

Les valeurs de tension sont obtenues à l'aide d'un réseau de résistances de précision formant un diviseur de tension, ce qui permet la compatibilité avec la plage d'entrée du CAN. Pour la mesure du courant, le système utilise le module Pololu ACS72981 (circuit intégré de Allegro MicroSystems) , un module de capteur de courant à effet Hall de haute précision qui permet un suivi bidirectionnel du courant, essentiel pour surveiller les cycles de charge et de décharge. Ce module de capteur de courant a également été utilisé dans la série de projets AmpVolt et s'est avéré être un capteur fiable pour les mesures de courant.
En plus de cela, des thermistances sont intégrées pour surveiller en permanence la température de l'environnement et de la batterie, fournissant des données thermiques cruciales pour la longévité de la batterie et la sécurité de l'exploitation. Le parc de batteries surveillé se compose de quatre batteries au plomb de 12 V, disposées en série pour créer un système de 48 V, ce qui nécessite un suivi séparé de la tension afin d'éviter tout déséquilibre.
Schéma du système de surveillance de la batterie
Le schéma (figure 4) respecte une approche cohérente de l'acquisition des paramètres de la batterie. Chaque nœud de batterie est connecté à un circuit diviseur de tension (R1 à R8), pour réduire la tension à une plage adaptée au CAN MCP3008 (IC1), qui fonctionne à une résolution de 10 bits avec une limite de tension d'entrée de 0 à 3,3 V. Dans un système de batteries connectées en série comme celui-ci, la mesure des tensions individuelles de chaque batterie peut s'avérer difficile en raison des points de connexion partagés. Pour simplifier le processus de mesure et réduire la complexité du matériel, la tension est mesurée à la borne positive de chaque batterie par rapport à la masse du système. Cette méthode permet d'obtenir des tensions cumulées (par exemple 12 V, 24 V, 36 V et 48 V). Le CAN MCP3008 (IC1) échantillonne ces tensions de manière séquentielle, qui sont ensuite traitées dans le micrologiciel en soustrayant la tension de chaque batterie de celle qui la précède.

Cette approche élimine le besoin de détection de tension différentielle par des circuits complexes, réduit le nombre de canaux du CAN nécessaires et évite les problèmes de masse flottante qui peuvent survenir lors de la mesure directe des tensions sur les cellules individuelles. En plus, elle assure des lectures précises sans introduire les défis liés à l'isolement qui viennent avec la mesure directe des cellules, ce qui en fait une solution pratique et fiable pour les systèmes de surveillance multi-batteries.
Le capteur de courant Pololu ACS72981 (±50 A) raccordé au connecteur K2 est utilisé pour mesurer le flux de courant bidirectionnel, fournissant des données en temps réel pour les cycles de charge et de décharge. Ce capteur à effet Hall délivre une tension analogique qui varie avec le courant. Avec 0 V, la tension de sortie est de 1,67 V, ce qui sert de point de référence. Lorsque le courant circule dans le sens des aiguilles d'une montre (décharge), la tension augmente à raison de 0,0264 V par ampère, tandis qu'un courant circulant dans le sens inverse des aiguilles d'une montre (charge), entraîne une diminution proportionnelle de la tension.
La sortie du capteur est lue par le CAN MCP3008, qui numérise la tension pour la traiter. Le CAN MCP3008 qui fonctionne à 3,3 V, est configuré pour le mode asymétrique, utilisant les huit canaux pour les mesures de tension, de courant, et de température de la batterie. Le CAN a une résolution de 10 bits et une fréquence d'échantillonnage maximale de 75 Kéchantillons/s à 3,3 V. Mais lorsque les huit canaux sont utilisés, la fréquence d'échantillonnage effective par canal est réduite en raison de l'échantillonnage séquentiel. Avec une horloge SPI de 1 MHz, le CAN peut atteindre un taux d'échantillonnage pratique d'environ 9 à 10 Kéchantillons/s par canal, ce qui garantit une surveillance fiable en temps réel.
La surveillance de la température est assurée par des thermistances (T1...T3) également connectées au MCP3008, ce qui garantit un suivi continu des conditions environnementales et de la batterie. La thermistance fonctionne comme la partie d'un diviseur de tension, où sa résistance change avec la température, ce qui modifie la tension mesurée. Pour obtenir la résistance de la thermistance, la tension qui la traverse est mesurée à l'aide d'un circuit diviseur de tension. La résistance est calculée à l'aide de la formule suivante :

Où Rfixed est la valeur connue de la résistance en série, Vmeasured est la chute de tension dans la thermistance et Vref est la tension de référence. Cette tension est utilisée pour calculer la résistance, qui est ensuite convertie en température à l'aide de l'équation de Steinhart-Hart :

Où T est la température en Kelvin, R est la résistance de la thermistance, et A, B et C sont des coefficients spécifiques à la thermistance (fournis dans la fiche technique de la thermistance). La température est finalement convertie en degrés Celsius. L'utilisation de thermistances est plus efficace que celle de capteurs 1-Wire, car elles sont rapides et précises.
En ce qui concerne le MOD1, la carte XIAO ESP32-C3 de Seeed Studio était un choix évident pour ce projet en raison de sa taille compacte, de sa performante architecture ESP32-C3 et de son format bien conçu. Seeed Studio a fait un excellent travail en créant ces cartes de la série XIAO qui sont non seulement petites mais aussi très polyvalentes, avec un bon équilibre d'options d'E/S pour l'intégration dans diverses applications. Sa capacité à être directement soudée sur un PCB ou branchée à l'aide de connecteurs de 2,54 mm la rend extrêmement flexible, tant pour le prototypage que pour les implémentations finales.
Le XIAO ESP32-C3 (MOD1) est connecté au CAN via SPI, applique des algorithmes de calibration et transmet les données via MQTT à un serveur Home Assistant. Un écran OLED relié au connecteur K3 (au pas de 2,54 mm) est également fourni pour afficher les données en temps réel sur le site. Enfin, un régulateur LDO AMS1117 (T1) de UMW est utilisé pour alimenter l'ensemble du système.

Agencement du circuit imprimé
Le circuit imprimé a été conçu pour être compact, mesurant 53,5 × 36 mm. L'objectif était de garder la carte aussi petite que possible, afin qu'elle ne paraisse pas trop encombrante lorsqu'elle est connectée au système. Comme le montre la figure 5, la disposition du circuit imprimé positionne astucieusement le module de capteur de courant Pololu sur le côté droit. Pour faciliter l'échantillonnage de la tension, des connecteurs JST horizontaux au pas de 2,54 mm ont été utilisés, garantissant des connexions sûres et fiables. Le même type de connecteur a été utilisé pour les thermistances. Le connecteur de l'écran OLED a été placé au milieu de la carte pour une visibilité optimale, tandis que le module XIAO ESP32-C3 a été placé sur le côté gauche pour garantir une utilisation efficace de l'espace et l'intégrité du signal. L'agencement a été optimisé pour minimiser le bruit, assurer des lectures CAN stables et un fonctionnement fiable dans un environnement exigeant.

Intégration logicielle et Home Assistant
Le micrologiciel du PbMonitor est développé à l'aide de la structure Arduino et est compatible avec l'IDE Arduino et PlatformIO, ce qui facilite le développement et le déploiement. Le programme, ainsi que les fichiers matériels complets, sont disponibles dans le dépôt GitHub du projet. Le micrologiciel s'appuie sur plusieurs bibliothèques essentielles, dont WiFi.h pour la communication réseau, SPI.h pour l'interface avec le CAN MCP3008, Adafruit_MCP3008.h pour la gestion du CAN, MQTTPubSubClient.h pour la communication MQTT avec Home Assistant, ainsi que Adafruit_GFX.h et Adafruit_SSD1306.h pour le rafraîchissement de l'affichage OLED en temps réel.
Le micrologiciel calcule également un état de charge (SoC) en utilisant les seuils de tension de la batterie, et est conçu pour une future estimation de l'état de santé (SoH), qui impliquera le suivi des cycles de charge/décharge et de la dégradation au fil du temps. D'autres fonctionnalités prévues sont abordées dans la section « Améliorations futures », plus loin dans cet article.
Plusieurs paramètres sont configurables dans le logiciel, notamment les facteurs d'étalonnage du CAN, les intervalles de mise à jour MQTT et les valeurs seuils pour les alertes concernant la batterie. Le micrologiciel applique des algorithmes d'étalonnage, pour convertir les valeurs du CAN brutes en mesures de tension et de courant réelles, en utilisant des facteurs d'échelle prédéfinis basés sur les diviseurs de tension et les caractéristiques du capteur. La précision des mesures de tension est de ±0,05 V, tandis que les mesures de courant obtenues à partir du capteur ACS72981 ont une résolution de 0,0264 V par A, ce qui permet une détection précise même minime des variations de courant.
Les données traitées sont transmises à Home Assistant via MQTT, ce qui permet une intégration transparente dans un environnement de maison intelligente. Les topics MQTT sont structurés de manière à faciliter l'intégration, ce qui permet de surveiller en temps réel la tension, le courant et la température de la batterie. La figure 6 montre comment les données sont affichées sur le tableau de bord du Home Assistant, où les utilisateurs peuvent suivre les performances de la batterie et recevoir des alertes lorsque des seuils critiques sont atteints, en créant des automatismes dans le Home Assistant.

Pour les utilisateurs cherchant à mettre en place une intégration MQTT avec Home Assistant, la procédure étape par étape a été précédemment documentée dans un autre article, où j'ai mis en place la même méthode pour un compteur d'énergie basé sur ESP32. Ce guide peut être consulté pour la configuration de MQTT, l'authentification et la visualisation des données dans Home Assistant.
La surveillance des batteries avec PbMonitor
Les systèmes à onduleurs chargent les batteries au plomb à l'aide d'un processus de charge en plusieurs étapes, afin de maintenir la longévité et l'efficacité de la batterie. Le processus de charge se compose généralement de trois étapes, avec la charge « bulk », la charge « absorption » et la charge « float ». Pendant la phase de charge bulk, l'ASI fournit un courant élevé pour charger rapidement les batteries jusqu'à ce qu'elles atteignent environ 80 % de leur capacité totale. Pendant la phase absorption, la tension est maintenue à un niveau constant tandis que le courant diminue progressivement, ce qui permet aux batteries d'atteindre leur pleine charge sans surchauffe. Enfin, dans la phase de charge float, l'onduleur maintient une charge de maintien pour compenser l'autodécharge, ce qui garantit que les batteries restent complètement chargées sans être surchargées.
Bien que les batteries soient entièrement chargées, l'onduleur fournit en permanence un courant de maintien de 1 A. Ce faible courant empêche la sulfatation, un problème courant dans les batteries au plomb où des cristaux de sulfate de plomb se forment sur les plaques de la batterie, réduisant ainsi la capacité et l'efficacité. En maintenant ce faible niveau de charge, l'onduleur garantit que les batteries restent dans des conditions optimales pour une utilisation en mode veille.
Pour tester le cycle de charge et de décharge, j'ai chargé complètement mon installation de batteries et je l'ai fait fonctionner en mode de secours. L'onduleur a fourni une durée de fonctionnement de 4 heures et 40 minutes avant de s'épuiser. Les données collectées au cours de ce cycle de charge complet (figure 7) ont montré que la batterie 1 et la batterie 4 ont atteint une tension de charge de 13,5 V, tandis que la batterie 2 et la batterie 3 ont atteint respectivement 14,23 V et 13,9 V. Cet écart indique un déséquilibre dans le cycle de charge et de décharge de la batterie, qui pourrait être dû à des variations de la résistance interne ou à la présence de batteries anciennes avec des plus récentes.

Pendant la décharge, des différences de tension notables ont été observées. La batterie 1 est tombée à 8 V environ 40 minutes avant la fin du cycle de décharge, tandis que la batterie 4 est tombée à 8 V à 10 minutes seulement avant la décharge complète. En revanche, les batteries 2 et 3 ont maintenu des tensions plus élevées, chacune se stabilisant à 11,5 V à la fin du cycle de décharge. Ces différences suggèrent que la batterie 1 et la batterie 4 peuvent avoir une capacité réduite ou une résistance interne plus élevée, ce qui entraîne des chutes de tension plus précoces que pour les deux autres batteries. Ce déséquilibre souligne l'importance de la surveillance en temps réel pour détecter les batteries faibles, et prendre des mesures correctives avant que les performances du système ne soient compromises.
Améliorations futures
Plusieurs améliorations peuvent être apportées au PbMonitor afin d'accroître sa précision, sa fiabilité et sa facilité d'utilisation. Du côté du logiciel, comme le montre la Figure 7, les relevés de courant varient de manière significative, oscillant entre zéro et la valeur réelle. Étant donné que les valeurs mesurées par les pinces restent stables, ce problème doit être étudié plus en détail. La mise en œuvre de techniques de filtrage telles que les moyennes mobiles, ou l'ajustement du taux d'échantillonnage du CAN, pourrait stabiliser les relevés. D'autres améliorations du logiciel comprennent l'intégration d'un bouton permettant de basculer entre les différents affichages, l'affinement des algorithmes SoC (State of Charge) et SoH (State of Health) pour une meilleure précision, et la mise en place des enregistrements internes pour le suivi des données historiques. L'ajout d'analyses prédictives pour estimer le temps de sauvegarde de la batterie et les tendances de dégradation des performances permettrait également d'améliorer le système.
En ce qui concerne le matériel, la configuration actuelle du circuit imprimé est compacte mais ne comporte que trois trous de montage, ce qui n'assure peut-être pas une stabilité structurelle suffisante. Une légère augmentation de la taille de la carte, comme l'incorporation de quatre trous de montage permettraient d'améliorer l'assemblage du boîtier. De plus, l'ajout de deux thermistances supplémentaires permettrait de surveiller les quatre batteries au lieu des deux du milieu, ce qui donnerait un profil thermique plus complet. Les futures versions pourraient également inclure une horloge en temps réel (RTC) pour l'enregistrement précis des cycles de charge et de décharge, ainsi qu'une mémoire EEPROM ou une carte SD pour la conservation des données à long terme. L'extension des options de connectivité, telles que Bluetooth ou LoRaWAN, pourrait permettre une surveillance à distance, tandis que l'intégration d'un avertisseur sonore ou d'indicateurs à leds pourrait fournir des alertes en temps réel en cas d'anomalies de tension. Par ailleurs, tout en conservant la fonction MQTT du Home Assistant, une fonction de serveur web devrait être ajoutée pour les endroits où le Wi-Fi ou le Home Assistant sont inaccessibles, fournissant un petit tableau de bord sur le serveur web de l'ESP32 pour suivre l'état du système.
Editor's Note: This article (240704-04) appears in Elektor May/June 2025.
Questions ou commentaires ?
Envoyez un courriel à l'auteur saad.imtiaz@elektor.com, ou contactez Elektor redaction@elektor.fr.
Discussion (0 commentaire(s))