Accu’s worden op grote schaal gebruikt in UPS-systemen, opslag van duurzame energie en off-grid toepassingen. Het bewaken van hun gezondheid en prestaties blijft echter een uitdaging, omdat traditionele UPS-systemen meerdere accu's als één enkele eenheid behandelen, wat leidt tot onbalans in de lading en inefficiëntie. PbMonitor is een eenvoudige, maar effectieve oplossing die spanning, stroom en temperatuur van accu's in realtime kan bewaken. De verzamelde data worden via MQTT verzonden naar Home Assistant, waardoor realtime bewaking en automatisering mogelijk zijn. Dit artikel beschrijft een eenvoudig en goedkoop accubewakingssysteem dat helpt bij het onderhoud van accu’s en dat een kosteneffectieve en schaalbare oplossing biedt voor het beheer van accu’s in verschillende toepassingen.

Een praktische oplossing

Energieopslagsystemen, vooral die in UPS-configuraties, maken vaak gebruik van meerdere accu’s in serie om aan de spanningsvereisten te voldoen. Hoewel deze topologie het leveren van stroom vereenvoudigt, introduceert het significante uitdagingen met betrekking tot het balanceren van de lading, het monitoren van de gezondheid van individuele cellen en verschillen in de staat van de lading (SoC). Conventionele UPS-systemen behandelen de in serie geschakelde accu’s als een enkele entiteit en hebben niet de granulariteit die nodig is om onevenwichtigheden tussen de cellen te detecteren, wat vroegtijdige uitval en verminderde operationele efficiëntie kan veroorzaken.

PbMonitor Battery-Monitoring System
Figuur 1: PbMonitor systeem aangesloten op het 48 V accupakket voor realtimemonitoring.

De impuls voor het ontwikkelen van PbMonitor (Figuur 1) kwam voort uit een praktische noodzaak: mijn UPS-systeem bestaat uit vier 12 V loodaccu's die in serie zijn geschakeld om een nominale spanning van 48 V te verkrijgen (Figuur 2). Zonder een speciaal bewakingssysteem bleven de individuele accuspanningen echter onbekend, waardoor het risico bestond dat bepaalde accu's te veel of te weinig werden opgeladen. Na bijna anderhalf jaar in bedrijf te zijn geweest, werd het noodzakelijk om een systeem te implementeren dat in staat was om de gezondheid van de accu's te bekijken, prestatieafwijkingen te identificeren en proactief onderhoud mogelijk te maken.

The 48-V battery pack configuration. PbMonitor Battery-Monitoring System
Figuur 2: De configuratie van het 48 V accupakket
bestaande uit vier 12 V loodaccu's in serie.

De motivatie voor dit project kwam voort uit mijn eigen gebruik van loodaccu's, wat de behoefte aan een speciale bewakingsoplossing benadrukte. Dit inspireerde de naam PbMonitor, waarbij "Pb" staat voor lood en overeenkomt met de kernfocus van het volgen en optimaliseren van de prestaties van loodaccu's.

Naast UPS-omgevingen strekt de toepassing van PbMonitor zich uit tot duurzame energiesystemen. Door een bewakingskader te implementeren kan de levensduur van accu’s worden verlengd, kunnen voorspellende onderhoudsstrategieën worden geoptimaliseerd en kan de algehele betrouwbaarheid van energieopslagoplossingen worden verbeterd.

Batterij-monitoring Systeemarchitectuur

Het PbMonitor-systeem is opgebouwd rond de ESP32-C3 microcontroller, die betrouwbare Wi-Fi- en BLE-communicatiemogelijkheden biedt voor realtimemonitoring. Om spannings- en stroommetingen met hoge resolutie te garanderen, is de MCP3008 externe ADC van Microchip geïntegreerd. Deze biedt 10-bits precisie op acht kanalen en is met de ESP32-C3 verbonden via SPI, zoals weergegeven in het blokschema (Figuur 3).

PbMonitor Battery-Monitoring System Block diagram
Figuur 3: Blokschema van het project.

Spanningsmetingen worden verkregen met behulp van een netwerk van precisieweerstanden die een spanningsdeler vormen, waardoor compatibiliteit met het ingangsbereik van de ADC mogelijk is. Voor stroommetingen gebruikt het systeem de Pololu ACS72981 module (chip van Allegro MicroSystems) , een zeer nauwkeurige Hall-effect stroomsensormodule die bidirectionele stroomtracking mogelijk maakt, essentieel voor het monitoren van laad- en ontlaadcycli. Deze stroomsensormodule werd ook gebruikt in de AmpVolt projectreeks en heeft bewezen een betrouwbare sensor te zijn voor stroommetingen .

Daarnaast zijn thermistors geïntegreerd om continu zowel de omgevingstemperatuur als de accutemperatuur te bewaken, wat cruciale thermische data oplevert voor een lange levensduur van de accu en operationele veiligheid. De bewaakte accubank bestaat uit vier 12 V loodaccu's die in serie zijn geplaatst om een 48 V systeem te creëren.

Inschrijven
Schrijf u in voor tag alert e-mails over Power & Energy!

Batterij-monitoring het schema

Het schema (Figuur 4) volgt een gestructureerde aanpak voor het verwerven van de accuparameters. Elk accuknooppunt is verbonden met een spanningsdelerschakeling (R1 tot R8) om de spanning omlaag te schalen naar een bereik dat geschikt is voor de MCP3008 ADC (IC1), die werkt met een 10-bits resolutie met een ingangsspanningslimiet van 0 tot 3,3 V. In een in serie geschakeld accusysteem als dit kan het meten van afzonderlijke accuspanningen lastig zijn vanwege de gedeelde aansluitpunten. Om het meetproces te vereenvoudigen en de complexiteit van de hardware te verminderen, wordt de spanning gemeten aan de positieve klem van elke accu ten opzichte van de systeemaarde. Deze methode levert cumulatieve spanningen op (bijv. 12 V, 24 V, 36 V en 48 V). De MCP3008 ADC (IC1) bemonstert achtereenvolgens deze spanningen, die vervolgens in de firmware worden verwerkt door de spanning van elke batterij af te trekken van de vorige.

PbMonitor battery-monitoring system schematic
Figuur 4: Het schema.

Deze benadering elimineert de noodzaak voor complexe differentiële spanningsdetectieschakelingen, vermindert het aantal benodigde ADC-kanalen en vermijdt zwevende-aardingsproblemen die zich kunnen voordoen bij het direct meten van individuele celspanningen. Bovendien zorgt het voor nauwkeurige meetwaarden zonder de isolatieproblemen te introduceren die komen kijken bij directe celmeting, waardoor het een praktische en betrouwbare oplossing is voor monitoringsystemen met meerdere accu’s.

De Pololu ACS72981 ±50 A stroomsensor op K2 wordt gebruikt om bidirectionele stroom te meten en levert realtime data voor zowel laad- als ontlaadcycli. Deze Hall-effect sensor geeft een analoge spanning af die varieert met de stroom. Bij 0 V is de uitgangsspanning 1,67 V, wat dient als referentiepunt. Bij het ontladen neemt de spanning toe met 0,0264 V per ampère, terwijl bij het laden de spanning evenredig afneemt.

De uitgang van de sensor wordt gelezen door de MCP3008 ADC, die de spanning digitaliseert voor verwerking. De MCP3008 ADC, die werkt bij 3,3 V, is geconfigureerd voor single-ended modus, waarbij alle acht kanalen worden gebruikt voor het meten van accuspanning, stroom en temperatuur. De ADC heeft een 10-bits resolutie en een maximale bemonsteringssnelheid van 75 kSamples/s bij 3,3 V; maar als alle acht kanalen worden gebruikt, wordt de effectieve bemonsteringssnelheid per kanaal verlaagd vanwege sequentieel bemonsteren. Met een SPI-klok van 1 MHz kan de ADC een praktische samplesnelheid van ongeveer 9 tot 10 kSamples/s per kanaal bereiken, waardoor een betrouwbare realtime bewaking wordt gegarandeerd.

Temperatuurbewaking wordt geïmplementeerd via thermistors (T1...T3) die ook zijn aangesloten op de MCP3008, waardoor zowel de omgevingscondities als de accucondities continu worden bijgehouden. De thermistor werkt als onderdeel van een spanningsdeler, waarbij de weerstand verandert met de temperatuur, waardoor de gemeten spanning verandert. Om de weerstand van de thermistor te verkrijgen, wordt de spanning erover gemeten met behulp van een spanningsdelerschakeling. De weerstand wordt berekend met de formule:

Pb eq1

waarbij Rfixed de bekende serieweerstandswaarde is, Vmeasured de spanningsval over de thermistor en Vref de referentiespanning. Deze spanning wordt gebruikt om de weerstand te berekenen, die vervolgens wordt omgezet naar temperatuur met behulp van de Stein-Hart vergelijking:

Pb eq2

waarbij T de temperatuur in Kelvin is, R de weerstand van de thermistor en A, B, C (vermeld in het datablad van de thermistor) de thermistorspecifieke coëfficiënten. De temperatuur wordt uiteindelijk omgezet naar Celsius. Het gebruik van thermistors is effectiever dan het gebruik van 1-draads-sensors, omdat ze snel en nauwkeurig zijn.

Op weg naar de MOD1 was de XIAO ESP32-C3 van Seeed Studio een voor de hand liggende keuze voor dit project vanwege het compacte formaat, de krachtige ESP32-C3-architectuur en de goed ontworpen vormfactor. Seeed Studio heeft goed werk geleverd bij het maken van deze boards uit de XIAO-serie, die niet alleen klein, maar ook zeer veelzijdig zijn, met een goede balans van IO-opties voor integratie in verschillende toepassingen. De mogelijkheid om direct op een PCB te solderen of in te pluggen met behulp van 2,54 mm headers maakt het extreem flexibel voor zowel prototypen als uiteindelijke implementaties.

De XIAO ESP32-C3 (MOD1) is via SPI verbonden met de ADC, past kalibratiealgoritmen toe en verzendt data via MQTT naar een Home Assistant-server. Een OLED-displayaansluiting K3 (pitch 2,54 mm) is ook voorzien om de realtime data ter plaatse weer te geven. Tot slot wordt een AMS1117 (T1) LDO van UMW gebruikt om het hele systeem van stroom te voorzien.

PbMonitor components list

PCB-Lay-out

De print is compact ontworpen en meet 53,5 × 36 mm2. Het doel was om de print zo klein mogelijk te houden, zodat hij er niet overweldigend uitziet als hij op het systeem wordt aangesloten. Zoals te zien is in Figuur 5, positioneert de lay-out van de print de Pololu-stroomsensormodule strategisch aan de rechterkant. Om het bemonsteren van de spanning te vergemakkelijken, werden horizontale JST-connectoren met een pitch van 2,54 mm gebruikt, zodat de aansluitingen veilig en betrouwbaar zijn. Hetzelfde type connector werd gebruikt voor de thermistors. De connector voor het OLED-display werd in het midden van het board geplaatst voor optimale zichtbaarheid, terwijl de XIAO ESP32-C3 module aan de linkerkant werd geplaatst voor efficiënt ruimtegebruik en signaalintegriteit. De lay-out werd geoptimaliseerd om ruis te minimaliseren, waardoor stabiele ADC-waarden en een betrouwbare werking in veeleisende omgevingen gegarandeerd werden.

PbMonitor front and back PCB
Figuur 5: Voor- en achterkant van de print.

Software-integratie en Home Assistent

De firmware voor PbMonitor is ontwikkeld met behulp van het Arduino framework en is compatibel met de Arduino IDE en PlatformIO, waardoor ontwikkeling en implementatie eenvoudig zijn. De sketch, samen met de volledige hardwarebestanden, is beschikbaar in de GitHub repository van het project . De firmware vertrouwt op verschillende essentiële bibliotheken, waaronder WiFi.h voor netwerkcommunicatie, SPI.h voor interfacen met de MCP3008 ADC, Adafruit_MCP3008.h voor ADC-afhandeling, MQTTPubSubClient.h voor MQTT-communicatie met Home Assistant, evenals Adafruit_GFX.h en Adafruit_SSD1306.h voor realtime OLED-display updates.

De firmware berekent ook een laadstatus (SoC) met behulp van de spanningsdrempels van de accu en is ontworpen voor toekomstige schattingen van de status van gezondheid (SoH), waarbij laad-/ontlaadcycli en degradatie in de loop van de tijd worden bijgehouden. Aanvullende geplande functies worden besproken in het Toekomstige verbeteringen gedeelte verderop in dit artikel.

Verschillende parameters in de software zijn configureerbaar, waaronder ADC-kalibratiefactoren, MQTT-update-intervallen en drempelwaarden voor accuwaarschuwingen. De firmware past kalibratiealgoritmen toe om ruwe ADC-waarden om te zetten in echte spannings- en stroommetingen, met behulp van vooraf gedefinieerde schaalfactoren op basis van spanningsdelers en sensorkarakteristieken. De nauwkeurigheid van spanningsmetingen is binnen ±0,05 V, terwijl stroommetingen, verkregen van de ACS72981 sensor, een resolutie hebben van 0,0264 V/A, waardoor zelfs kleine stroomvariaties nauwkeurig gedetecteerd kunnen worden.

De verwerkte data worden via MQTT verzonden naar Home Assistant , waardoor een naadloze integratie in een slimme thuisomgeving mogelijk is. De MQTT-onderwerpen zijn gestructureerd voor eenvoudige integratie, wat realtimemonitoring van accuspanningen, stroom en temperatuur toelaat. Figuur 6 laat zien hoe de data worden weergegeven op het Home Assistant Dashboard, waar gebruikers de prestaties van de accu kunnen volgen en waarschuwingen kunnen ontvangen wanneer kritieke drempels worden bereikt, door automatiseringen aan te maken in Home Assistant.

Battery monitoring data on the Home Assistant dashboard.
Figuur 6: Realtime batterijbewakingsdata weergegeven op het dashboard van de Home Assistant.

Voor gebruikers die MQTT-integratie met Home Assistant willen opzetten, is de stapsgewijze procedure eerder gedocumenteerd in een ander artikel, waarin ik dezelfde methode heb geïmplementeerd voor een ESP32-gebaseerde energiemeter . Die handleiding kan worden geraadpleegd voor het instellen van MQTT-configuraties, authenticatie en datavisualisatie binnen Home Assistant.

Inschrijven
Schrijf u in voor tag alert e-mails over Home Assistant!

Accu’s bewaken met PbMonitor

UPS-systemen laden loodaccu’s in meerdere fasen om de levensduur en efficiëntie van de accu te behouden. Het laadproces bestaat gewoonlijk uit drie fasen: bulklading, absorptielading en druppellading. Tijdens de bulklaadfase levert de UPS een hoge stroom om de accu's snel op te laden, totdat ze ongeveer 80% van hun volledige capaciteit hebben bereikt. In de absorptiefase wordt de spanning op een constant niveau gehouden terwijl de stroom geleidelijk afneemt, zodat de accu's volledig opgeladen kunnen worden zonder oververhitting. Tenslotte, in de druppelladingsfase, handhaaft de UPS een druppellading om zelfontlading te compenseren, zodat de accu's volledig opgeladen blijven zonder overladen te worden.

Ondanks dat de accu's volledig zijn opgeladen, levert de UPS continu een druppelstroom van 1 A. Deze kleine stroom voorkomt sulfatering, een veel voorkomend probleem bij loodaccu's waarbij loodsulfaatkristallen zich vormen op de accuplaten, waardoor de capaciteit en efficiëntie afnemen. Door deze geringe lading te handhaven, zorgt de UPS ervoor dat de accu's in optimale conditie blijven voor stand-by gebruik.

Om de laad- en ontlaadcyclus te testen, heb ik de accu’s volledig opgeladen en in back-upmodus laten werken. De UPS zorgde voor een back-upduur van 4 uur en 40 minuten voordat de accu leeg was. De verzamelde data tijdens deze volledige laadcyclus (Figuur 7) lieten zien dat Accu 1 en Accu 4 een spanning van 13,5 V bereikten, terwijl Accu 2 en Accu 3 respectievelijk 14,23 V en 13,9 V hadden. Deze discrepantie duidt op een onbalans in het opladen, die te wijten kan zijn aan variaties in de interne weerstand of verschillen in veroudering tussen de accu's.

Charging and discharging trends of the battery bank, visualized using the Home Assistant History dashboard.
Figuur 7: Laad- en ontlaadtrends van het accupakket, gevisualiseerd met het Home Assistant History dashboard.

Tijdens het ontladen werden opmerkelijke spanningsverschillen waargenomen. Accu 1 daalde tot 8 V ongeveer 40 minuten voor het einde van de ontlaadcyclus, terwijl Accu 4 tot 8 V daalde slechts 10 minuten voor volledige ontlading. Daarentegen behielden Accu 2 en Accu 3 hogere spanningen, van 11,5 V tegen het einde van de ontlaadcyclus. Deze verschillen suggereren dat Accu 1 en Accu 4 een verminderde capaciteit of een hogere interne weerstand hebben, waardoor de spanning eerder daalt dan bij de andere twee accu's. Deze onbalans benadrukt het belang van realtimemonitoring om zwakke accu's te detecteren en corrigerende maatregelen te nemen voordat de systeemprestaties in gevaar komen.

Toekomstige verbeteringen

Er kunnen verschillende verbeteringen worden aangebracht in PbMonitor om de nauwkeurigheid, betrouwbaarheid en bruikbaarheid te verbeteren. Aan de softwarekant, zoals te zien in Figuur 7, fluctueren de stroomaflezingen aanzienlijk, tussen nul en de werkelijke waarde. Aangezien de stroommetingen stabiel blijven, moet dit probleem verder worden onderzocht. Het implementeren van filtertechnieken zoals voortschrijdende gemiddelden of het aanpassen van de ADC-samplesnelheid zou de meetwaarden kunnen stabiliseren. Aanvullende verfijningen van de software zijn onder andere de integratie van een knop om te schakelen tussen verschillende displays, verfijning van de SoC (State of Charge) en SoH (State of Health) algoritmen voor een betere nauwkeurigheid en de implementatie van interne logging om data uit het verleden bij te houden. Het systeem zou ook worden verbeterd door voorspellende analyses toe te voegen om de back-uptijd van de batterij en trends in prestatievermindering te schatten.

Voor hardware is de huidige print lay-out compact, maar heeft slechts drie montagegaten, wat mogelijk niet voldoende structurele stabiliteit biedt. Een kleine vergroting van de print en vier montagegaten zouden de montage van de behuizing verbeteren. Daarnaast zou het toevoegen van twee extra thermistors het mogelijk maken om alle vier de accu's te controleren in plaats van alleen de middelste twee, waardoor een completer thermisch profiel ontstaat. Toekomstige versies zouden ook een realtime klok (RTC) kunnen bevatten voor nauwkeurige registratie van laad- en ontlaadcycli, samen met EEPROM of SD-kaartopslag voor het langdurig bewaren van data. Uitbreiding van de connectiviteitsopties, zoals Bluetooth of LoRaWAN, kan monitoring op afstand mogelijk maken, terwijl de integratie van een zoemer of LED-indicatoren kan zorgen voor realtime waarschuwingen voor spanningsafwijkingen. Verder moet er, met behoud van de Home Assistant MQTT-functie, een webserverfunctie worden toegevoegd voor locaties waar Wi-Fi of Home Assistant niet toegankelijk is, zodat er een klein dashboard op de ESP32 webserver kan worden geplaatst om de status van het systeem bij te houden.


Noot van de redactie: Dit artikel (240704-01) is verschenen in Elektor May/June 2025.


Vragen en opmerkingen?

Als u vragen hebt over dit artikel, kunt u een e-mail sturen naar de auteur op saad.imtiaz@elektor.com of naar de Elektor-redactie op editor@elektor.com.