Er zijn veel toepassingen denkbaar waarbij een continue registratie van de opwekking of het verbruik van elektrische energie zinvol is. Denk maar aan het energieverbruik van bepaalde schakelingen in huis of de energie die wordt geleverd door een balkoncentrale of een groter fotovoltaïsch systeem. Er bestaan kant-en-klare registratie-oplossingen, maar je kunt ook zelf een geschikte logger bouwen.

De hier gepresenteerde logger gebruikt een meter met een S0-uitgang om het elektriciteitsverbruik te registreren. Geschikte meters zijn verkrijgbaar voor minder dan 20 euro (bijvoorbeeld bij Amazon, eBay of rechtstreeks uit het Verre Oosten). Die maken het mogelijk het energieverbruik van aangesloten netstroomcircuits of ook de opbrengst van fotovoltaïsche systemen te meten en te ‘loggen’ of registreren met behulp van de hier beschreven elektronica.


Editor's Pick: Check out Dr. Thomas Scherer's article, "DIY Solar PV Installation: Building a Balcony Power Plant."  


Waar zijn microcontrollers ook al weer voor uitgevonden? Voor dit soort toepassingen. Vóór het computertijdperk was het registreren van energieverbruik of -opwekking in de tijd al moeilijk, en voor particuliere toepassingen nagenoeg onmogelijk. Dankzij goedkope microcontrollers met al hun geweldige mogelijkheden is digitaal loggen tegenwoordig niet alleen geen probleem meer, maar worden zelfs fancy zaken als een WiFi-verbinding en meer mogelijk. Wat de energielogger allemaal kan, kun je nalezen in het kader Eigenschappen. Figuur 1 geeft een impressie van de voltooide oplossing – een combinatie van meter en logger, inclusief voedingseenheden, geïnstalleerd in een plastic verdeelkast.

Figure 1: The finished energy logger
Figuur 1. De energielogger met meter en voedingseenheid, geïnstalleerd in een kleine plastic verdeelkast.

De schakeling

Dankzij de microcontroller is de schakeling van de energielogger (figuur 2) vrij eenvoudig. Aan de linkerkant bevinden zich een aantal optocouplers voor de galvanische scheiding, via welke de gegevens van de S0-interface van de meter naar de betreffende ingangen van de microcontroller worden gestuurd. Deze zijn interrupt-gestuurd om ervoor te zorgen dat er geen puls verloren gaat. Ik heb een goedkope ESP32-module gebruikt omdat die voldoende rekenkracht alsmede een WiFi-interface heeft. Aan de rechterkant zie je twee geheugenmodules – een slot voor een SD-kaart voor massaopslag en een extra FRAM-module, die de gegevens van 5 minuten tijdelijk buffert om het aantal schrijfcycli naar de SD-kaart te beperken.

Energy logger circuit
Figuur 2. De schakeling van de energielogger is tamelijk eenvoudig.

Omdat de schakeling zo eenvoudig is, heb ik hem op gaatjesprint opgebouwd. Zoals je aan de twee lichtblauwe blokken kunt zien, is om veiligheidsredenen in twee aparte voedingen voorzien. Voor de S0-interfaces links is 6,5 V voldoende. De rest van de schakeling wordt gevoed door een 5V-voeding (rechts). Een belastbaarheid van 0,5 A is voor beide genoeg. Met het oog op de elektrische isolatie mogen de beide GND-lijnen van de voedingen in geen geval met elkaar worden verbonden. Bovendien moet onder de optocouplers – dus tussen hun in- en uitgangen – al het koper over een afstand van ten minste 4 mm worden verwijderd. Figuur 3 toont wat de bedoeling is. De elektrische isolatie door middel van twee afzonderlijke voedingen maakt het ook mogelijk dat de ESP32 wordt aangesloten op de USB-interface van een PC (bijvoorbeeld om toekomstige updates naar de geïnstalleerde controller te sturen). In plaats van twee voedingen zou een oplossing met slechts één voeding met een hogere stroombelastbaarheid plus een isolerende DC/DC-converter en een spanningsregelaar ook mogelijk zijn geweest, maar dat zou de zaken er niet echt eenvoudiger of goedkoper op maken.

Copper on bottom of board. Energy logger project
Figuur 3. Het koper aan de onderkant van de gaatjesprint tussen de in- en uitgangen van de optocouplers is met een klein mesje verwijderd.

Gegevensopslag en -transmissie

Zoals al opgemerkt, is het gebruik van twee geheugenmodules geen overbodige luxe. De S0-interfaces kunnen soms meerdere pulsen per seconde leveren. Als de meetwaarden in het interne geheugen van de microcontroller zouden worden verzameld, zouden die bij een reset verloren kunnen gaan. Aan de andere kant zou het onmiddellijk wegschrijven naar een SD-kaart de levensduur van de kaart enorm verkorten. Met slechts één waarde per seconde zouden er 31,5 miljoen schrijfcycli per jaar plaatsvinden. De geheugencellen van een SD-kaart bereiken echter het einde van hun levensduur na slechts 1.000 tot 3.000 schrijfcycli. Zelfs een kaart met een hoge capaciteit zou dus vrijwel zeker gebreken vertonen voordat een jaar is verstreken.

Om dit te voorkomen, is in een stabiele buffer voorzien. De hier gebruikte externe FRAM-module heeft een opslagcapaciteit van slechts 8 kB, maar dat is ruim voldoende voor heel wat waarden. Het grootste voordeel van FRAM is dat het minstens 1010 maal beschreven kan worden, afhankelijk van de fabrikant – typisch is zo'n geheugen zelfs bestand tegen quadriljoenen schrijfcycli. Elke vijf minuten worden de in FRAM verzamelde gegevens overgebracht naar de SD-kaart. Dit betekent iets meer dan 100.000 schrijfbewerkingen per jaar, en aangezien een SD-kaart veel geheugencellen heeft, kan hij zonder problemen een flink aantal jaren worden gebruikt.

Bovendien wordt het aantal herstarts van de logger geregistreerd in het FRAM, zodat je op elk moment kunt nagaan hoe vaak een reset is uitgevoerd. Elke dag wordt een nieuw bestand op de SD aangemaakt, waarin de gegevens van die dag worden opgeslagen. Om geheugenruimte te besparen wordt de opname alleen gestart als een van de meterwaarden sinds middernacht is veranderd. Als de energielogger wordt gebruikt om het energieverbruik te registreren, is deze functie eigenlijk overbodig. Als echter de energieproductie van een PV-systeem wordt bewaakt, is het nuttig dat de registratie pas begint na zonsopgang (dus zodra de eerste elektriciteit wordt opgewekt).

Data structure csv
Figuur 4. De gegevensstructuur wordt zichtbaar bij het importeren van een CSV-bestand in een spreadsheet.

Gegevensstructuur en meer

Figuur 4 toont een deel van een spreadsheet waarin de gegevens in CSV-formaat zijn geïmporteerd. Cel A1 bevat de datum en het tijdstip waarop het bestand is aangemaakt. Rij 2 bevat vervolgens de laatste waarden van de vorige dag als nieuw beginpunt. De eerste verandering van een meterwaarde vond plaats om 05:55 (cel A3). Vanaf rij 5 volgen de nieuwe gegevens van deze dag. De kolommen bevatten de gegevens van de afzonderlijke meters. Elke rij heeft een tijdsverschil van vijf minuten met de volgende rij. De gegevens worden elke dag tot middernacht geregistreerd. Elke dag wordt een nieuw bestand aangemaakt. De hoeveelheid energie kan dan worden berekend uit het verschil tussen het aantal telpulsen met behulp van de pulswaarde van de meters (bijvoorbeeld 0,5 Wh/puls). Het CSV-formaat is zuinig en geschikt om te importeren in een spreadsheet zoals Excel, OpenOffice/LibreOffice Calc of Numbers op de Mac. De gegevens kunnen dan naar wens verder worden verwerkt.

Folder structure
Figuur 5. De mappenstructuur: jaar, maand en dag.

Op de SD-kaart worden de gegevens opgeslagen in een tijdgebaseerde mappenstructuur. Op het hoogste niveau zijn er mappen voor elk jaar, die elk submappen bevatten voor de maanden, en deze bevatten dan de bestanden voor de afzonderlijke dagen. Figuur 5 toont de structuur. In dit voorbeeld worden de waarden van vijf meters als gehele getallen geregistreerd (zie figuur 4). Dankzij het CSV-formaat is hiervoor relatief weinig geheugen nodig. Dit resulteert in enkele kilobytes per meter per dag.

De overdracht van gegevens van de logger naar een PC gebeurt via FTP. Gangbare FTP-clients zoals FileZilla zijn hiervoor geschikt. Aangezien de logger via WiFi in het thuisnetwerk is geïntegreerd, is deze methode waarschijnlijk het eenvoudigst.

Ik heb de broncode voor de ESP32 gemaakt met behulp van de PlatformIO IDE voor VSCode. De code kan gratis worden gedownload van de webpagina bij dit article.

De volgende gegevens moeten worden aangepast in het bestand main.cpp: te beginnen bij regel 30 moeten de SSID en het wachtwoord van het WiFi-netwerk worden ingevoerd. De gebruikersnaam en het wachtwoord voor FTP worden opgegeven in regel 813. Standaard wordt “esp32” ingevoerd als gebruikersnaam en wachtwoord. Natuurlijk heeft de FTP-cliënt ook het IP-adres van de energielogger nodig. Dit adres wordt na een reset uitgevoerd via de USB-interface. Idealiter configureer je je router echter zo dat de energielogger altijd hetzelfde IP-adres krijgt toegewezen.

Ingebouwde webinterface

De actuele gegevens en de somwaarden van deze en de vorige dag worden weergegeven met behulp van de geïntegreerde webserver. Deze server bevat twee pagina’s. Eén pagina toont het huidige vermogen per meter en het totaal van alle aangesloten meters. Daarnaast wordt de totale energie van deze en de vorige dag weergegeven in kWh. De andere pagina toont de veldsterkte van het WiFi netwerk en het aantal herstarts van de logger.

Figuur 6 en figuur 7 zijn screenshots van een smartphone. Zoals je verderop zult merken, gebruik ik de energielogger niet om het verbruik te meten, maar om mijn PV-systeem met vijf omvormers te monitoren. Daarom heb ik de labels van de afzonderlijke waarden aangepast aan mijn specifieke situatie. Maar je kunt dit gemakkelijk in de software veranderen als dat nodig is. Wanneer je in de browser verbinding maakt met het IP-adres, krijgt je het scherm van figuur 6. Door “/about” aan het adres toe te voegen of door op de knop Info te klikken, verschijnt figuur 7.

Screenshots of measurement results (Fig6) and PV info (Fig7)
Figuur 6. De geïntegreerde webinterface geeft de meetresultaten weer. 
Figuur 7. Als je “/about” achter het IP-adres plakt of op Info klikt, krijg je deze informatie.

Nog een opmerking over de WiFi-verbinding: als je de energielogger in een metalen behuizing installeert, zul je vrijwel zeker ontvangstproblemen krijgen.

Eigenschappen:

  • Nauwkeurig en veilig dankzij meter met S0-interface en elektrische isolatie.
  • Configureerbare acquisitie van maximaal vijf meters.
  • Buffering van gegevens in FRAM ter bescherming van de SD-kaart.
  • Registratie op SD-kaart in CSV-formaat.
  • Tijdresolutie 5 minuten.
  • Per dag wordt een apart bestand opgeslagen.
  • Weergave van afzonderlijke en getotaliseerde gegevens (huidige en vorige dag in kWh).
  • Weergave van WiFi-veldsterkte en aantal µC-resets (startteller).
  • Downloaden van gegevens via FTP.
  • OTA: update-mogelijkheid via WiFi.
  • Ontwikkelomgeving: VSCode met PlatformIO.

OTA

Zodra de energielogger in een behuizing is ingebouwd en geïnstalleerd, zul je de elektronica waarschijnlijk niet meer willen verwijderen bij een eventuele softwarewijziging. Daarom kan de datalogger ‘Over The Air’ (dat wil zeggen draadloos) worden bijgewerkt. Zowel de volledige software als het bestandssysteem – de webpagina’s met JavaScript en het CSS-bestand – kunnen dus indien nodig opnieuw worden geladen. Als je dat wilt doen, moet je het IP-adres invullen met daaraan toegevoegd “/update”. Figuur 8 toont hoe dit er in mijn geval uitziet. Ik heb de OTA-mogelijkheid geïmplementeerd met behulp van de bibliotheek van Ayush sharma.

Wifi updates
Figuur 8. Updates van zowel de firmware als de bestandsstructuur zijn mogelijk via WiFi.

Een eenvoudige schakeling

De schakeling is zo eenvoudig dat een onderdelenlijst eigenlijk overbodig is. Naast het ESP32-ontwikkelboard, dat overal verkrijgbaar is, zijn de belangrijkste onderdelen een SD-kaartslot, dat te vinden is op goedkope breakout-boards, en de FRAM-module – die ook als breakout-board kan worden verkregen. Aangezien die breakout-boards met een verschillende pinning worden vervaardigd, moet je bij het aansluiten niet letten op de pinnummers, maar op de pinbenamingen. Voor de SD-kaartmodule kan MOSI worden verbonden met DI of SI en MISO met DO of SO. De meters kunnen elk goedkoop model zijn voor DIN-rail montage met een S0-interface. Het door mij gebruikte type DDS5188 (figuur 9) is gemakkelijk verkrijgbaar en zeer goedkoop.

Four meters in operation
Figuur 9. Vier meters van het type DDS5188 in bedrijf.

Hoewel het voor zich spreekt dat je de nodige voorzichtigheid moet betrachten bij de omgang met netspanning, is een opmerking op zijn plaats: voor werkzaamheden aan de zekeringkast gelden in verschillende landen verschillende wetten. In Duitsland bijvoorbeeld moet je daarvoor bij de netbeheerder geregistreerd staan als gediplomeerd elektricien. Ook werkzaamheden aan op de zekeringkast aangesloten externe onderverdelers zijn alleen toegestaan voor een geschoolde elektricien met de juiste opleiding en kennis.


Editor's note: Article 220079-01 (Translated by J. Starkmuth) appears in Elektor May/June 2023. Do you have questions or comments about this article? Contact Elektor at editor@elektor.com.


Over de auteur

Georg Luber is gediplomeerd elektricien die elektrotechniek heeft gestudeerd en vele jaren heeft gewerkt op het gebied van elektrische veiligheid en elektrische installatie. Hij werkte nationaal en internationaal mee in normalisatiecommissies (DKE/VDE, CENELEC, IEC en ISO). Een ander zwaartepunt van zijn werk was gebouwautomatisering, met name KNX. Georg Luber is betrokken bij de ontwikkeling van software- en elektronicaprojecten op dit gebied.