Energielogger: Energie messen und aufzeichnen
Der hier vorgestellte Logger verwendet zur Erfassung elektrischer Energie einen Zähler mit S0-Ausgang. Geeignete Zähler gibt es für weniger als 20 Euro zum Beispiel bei Amazon, eBay oder direkt aus Fernost. Damit kann der Energieverbrauch durchgeschleifter Stromkreise oder auch der Ertrag von Solaranlagen gemessen und mit der hier beschriebenen Elektronik „geloggt“ beziehungsweise aufgezeichnet werden.
Für was hat der technische Fortschritt Mikrocontroller geschaffen? Ziemlich genau für solche Anwendungen. Vor dem computerisierten Zeitalter wäre die Aufzeichnung von Energieverbrauch oder -erzeugung über die Zeit nur schwer und für den Hausgebrauch praktisch unmöglich gewesen. Dank preiswerter µC mit all ihren tollen Fähigkeiten ist nicht nur die digitale Registrierung kein Problem, es werden auch schicke Dinge wie eine WLAN-Anbindung und anderes mehr möglich. Was der Energielogger alles kann, findet sich im Kasten Eigenschaften. Einen Eindruck von der fertigen Lösung vermittelt die in einen Kunststoff-Verteiler eingebaute Kombination von Zähler und Logger samt Netzteilen in Bild 1.
Schaltung
Dank Mikrocontroller ist die Schaltung des Energieloggers (Bild 2) ziemlich einfach. Links sitzen zwecks Potentialtrennung eine Reihe von Optokopplern, über die Daten der Zähler-S0-Schnittstellen auf die entsprechenden Eingänge des Mikrocontrollers gelangen. Diese sind Interrupt-gesteuert, damit kein Impuls verloren geht. Ich habe auf ein preiswertes ESP32-Modul gesetzt, da es neben ausreichender Leistung auch noch ein WLAN-Interface mitbringt. Auf der rechten Seite befinden sich einmal ein Slot für eine SD-Karte als Massenspeicher und zusätzlich ein FRAM-Modul. Dieses dient als Zwischenpuffer für die Daten von fünf Minuten, um die Anzahl der Schreibzyklen für die SD-Karte zu begrenzen.
Da die Schaltung so einfach ist, habe ich sie auf einer Lochrasterplatine aufgebaut. Wie zu sehen ist, sind aus Sicherheitsgründen zwei getrennte Netzteile vorgesehen. Für die SO-Schnittstellen links reichen 6,5 V aus; der Rest der Schaltung wird mit einem 5-V-Netzteil (rechts) betrieben. Eine Belastbarkeit von jeweils 0,5 A reicht aus. Zwecks Potentialtrennung dürfen die beiden GND-Leitungen der Netzteile natürlich keinesfalls verbunden werden. Außerdem muss unter den Optokopplern – zwischen deren Ein- und Ausgängen – alles Kupfer über eine Strecke von mindestens 4 mm entfernt werden. Bild 3 zeigt, wie das gemeint ist. Die galvanische Trennung durch zwei separate Netzteile erlaubt, dass der ESP32 auch an die USB-Schnittstelle eines PC angeschlossen werden kann, um zum Beispiel nachträgliche Updates im eingebauten Zustand zu ermöglichen. Statt zweier Netzteile wäre auch eine Lösung mit nur einem Netzteil mit höherer Strombelastbarkeit plus einem isolierenden DC/DC–Konverter mit nachfolgendem Spannungsregler möglich gewesen, was die Sache aber nicht wirklich einfacher und auch nicht preiswerter machen würde.
Speichern und Datenübertragung
Die doppelten Speicher sind, wie schon erwähnt, kein Luxus. Die S0-Schittstellen können nämlich auch mehrere Impulse pro Sekunde liefern. Würden die auftretenden Messwerte nun in einem internen Speicher des Mikrocontrollers gesammelt, könnten bei einem Reset Daten verloren gehen. Diese aber sofort auf eine SD-Karte zu schreiben würde deren Lebensdauer massiv verkürzen. Bei nur einem Wert pro Sekunde kämen pro Jahr immerhin schon 31,5 Millionen Schreibzyklen zusammen. Speicherzellen einer SD-Karte kommen aber schon nach 1.000...3.000 Schreibzyklen an ihr Lebensende. Auch eine Karte mit großer Kapazität würde daher schon vor Ablauf eines Jahres mit ziemlicher Sicherheit Defekte aufweisen.
Um das zu vermeiden, ist ein stabiler Zwischenspeicher vorgesehen. Das hier verwendete externe FRAM-Modul besitzt zwar gerade mal 8 kB Speicher, was aber locker ausreicht, um etliche Werte zu sammeln. Der größte Vorteil von FRAM ist, dass es je nach Hersteller mindestens 1010 mal beschreibbar ist – typischerweise verträgt solch ein Speicher sogar Billiarden Schreibzyklen. Alle fünf Minuten werden die im FRAM gesammelten Daten auf die SD-Karte übertragen. Das gibt nur noch knapp über 100.000 Schreibvorgänge pro Jahr, und da eine SD-Karte viele Speicherzellen hat, kann sie so etliche Jahre ohne Probleme betrieben werden.
Zusätzlich werden im FRAM die Anzahl der Neustarts des Loggers festgehalten. Damit kann man jederzeit sehen, wie oft ein Reset ausgelöst wurde. Weiter werden auf der SD jeden Tag eine neue Datei angelegt und die Daten dieses Tages darin gesichert. Um Speicherplatz zu sparen, wird die Aufzeichnung erst begonnen, wenn sich einer der Zählwerte seit Mitternacht geändert hat. Betreibt man den Energielogger zur Verbrauchserfassung, dann ist dieses Feature eigentlich überflüssig. Wird damit aber die Energieproduktion einer Solaranlage überwacht, ist es praktisch, wenn die Aufzeichnung erst nach Sonnenaufgang startet, also wenn der erste Strom erzeugt wird.
Datenstruktur und mehr
Bild 4 zeigt einen Ausschnitt einer Tabellenkalkulation, bei der die Daten im CSV-Format importiert wurden. Zelle A1 enthält Datum und Uhrzeit der Dateierstellung. In Zeile 2 stehen dann die letzten Werte des Vortages als neuer Startpunkt. Die erste Änderung eines Zählwertes erfolgte um 05:55 Uhr (Zelle A3). Ab Zeile 5 folgen dann die neuen Daten dieses Tages. Die Spalten enthalten die Daten der einzelnen Zähler. Jede Zeile hat einen zeitlichen Abstand von fünf Minuten zur nächsten Zeile. Aufgezeichnet wird an jedem Tag bis jeweils 24:00 Uhr. Täglich wird wieder eine neue Datei angelegt. Aus der Differenz der gezählten Werte kann dann über die Impulswertigkeit der Zähler (zum Beispiel 0,5 Wh/Impuls) die Energie berechnet werden. Das CSV-Format ist sparsam und eignet sich zum Import in jede Tabellenkalkulation wie Excel, OpenOffice, Libre Calc oder Numbers beim Mac. Die Daten können dann nach eigenem Gusto weiterverarbeitet werden.
Auf der SD-Karte werden die Daten in einer temporalen Ordner-Struktur abgelegt. Auf oberster Ebene befinden sich die Ordner mit den Jahren, welche dann Ordner mit den Monaten und diese dann die Dateien der einzelnen Tage enthalten. Bild 5 zeigt, wie das aussieht. In diesem Beispiel werden die Werte von fünf Zählern ganzzahlig erfasst (siehe Bild 4). Dank des CSV-Formats wird hierfür relativ wenig Speicher benötigt. Pro Zähler kommt man so auf nur wenige Kilobyte pro Tag. Die Übertragung der Daten vom Logger zu einem PC erfolgt via FTP. Hierzu eignen sich gängige FTP-Clients wie etwa FileZilla. Da der Logger per WLAN ins eigene Heimnetz integriert ist, stellt diese Methode wohl das einfachste Verfahren dar.
Den Source-Code für den ESP32 habe ich mit Hilfe der IDE PlatformIO für VSCode erstellt. Den Download finden Sie am Ende dieser Seite.
Folgende Daten sind in der Datei main.cpp individuell zu ändern: Ab Zeile 30 muss die SSID und das Passwort des WLAN eingetragen werden. Der Benutzername und das Passwort für FTP sind in Zeile 813 angegeben. Standardmäßig ist hier als Benutzername und Passwort jeweils „esp32“ eingetragen. Natürlich braucht der FTP-Client noch die IP-Adresse des Energieloggers. Diese wird nach einem Reset auf der USB-Schnittstelle ausgegeben. Idealerweise legt man aber im Router fest, dass der Energie-Logger immer die gleiche IP-Adresse erhält.
Integrierte Webseite
Die aktuellen Daten sowie der Gesamtwert des Tages und des Vortages werden mit Hilfe des integrierten Web-Servers dargestellt. Der Server hostet zwei Seiten: Eine Seite zeigt die aktuelle Leistung pro Zähler sowie die Summe aller angeschlossen Zähler. Außerdem wird die Gesamtenergie des Tages und des Vortages in kWh ausgegeben. Die andere Seite zeigt die Feldstärke des WLANs und die Anzahl an Starts des Loggers.
Bild 6 und Bild 7 sind Screenshots von einem Smartphone. Wie Sie sicher sofort merken, setze ich den Energielogger nicht zur Verbrauchsmessung, sondern zur Überwachung meiner Solaranlage ein, die über fünf Wechselrichter verfügt. Von daher habe ich die Beschriftungen der einzelnen Werte meinem Einsatzzweck angepasst. Sie können das aber leicht in der Software nach Bedarf ändern. Beim Aufruf der IP-Adresse im Browser erhält man die Anzeige von Bild 6. Durch ein an die Adresse angehängtes „/about“ oder durch Klick auf die Schaltfläche Info erscheint Bild 7.
Noch ein Hinweis zur WLAN-Verbindung: Wenn Sie den Energielogger in ein Metallgehäuse einbauen, bekommen Sie ziemlich sicher Empfangsprobleme.
Eigenschaften
- Genau und sicher durch Zähler mit S0-Schnittstelle und galvanischer Trennung.
- Konfigurierbare Erfassung von bis zu fünf Zählern.
- Zwischensicherung der Daten im FRAM zur Schonung der SD-Karte.
- Aufzeichnung auf SD-Karte im CSV-Format.
- Zeitliche Auflösung: 5 Minuten.
- Pro Tag wird eine eigene Datei gesichert.
- Anzeige einzelner und aggregierter Daten (aktuell und vom Vortag in kWh)
- Anzeige von WLAN-Feldstärke und Anzahl der µC-Resets (Startzähler).
- Download der Daten via FTP.
- OTA: Update-Fähigkeit via WLAN.
- Entwicklungsumgebung: VS-Code mit PlatformIO.
OTA
Wenn der Energielogger einmal in ein Gehäuse eingebaut und installiert ist, will man die Elektronik bei einer Softwareänderung nicht gerne wieder ausbauen. Deshalb kann der Datalogger „Over The Air“, das heißt via WLAN aktualisiert werden. Die komplette Software sowie das Dateisystem – die Webseiten mit Javascript und die CSS-Datei – können so bei Bedarf neu aufgespielt werden.
Will man das tun, ruft man die IP-Adresse mit angehängtem „/update“ auf. Bild 8 zeigt, wie das bei mir aussieht. Die OTA-Fähigkeit habe ich mit Hilfe der Bibliothek von Ayush Sharma realisiert.
Abschließend
Die Schaltung ist so einfach, dass sich eine explizite Stückliste erübrigt. Wichtige Bauteile sind neben dem überall erhältlichen ESP32-Entwicklungsboard ein SD-Karten-Slot, den es preiswert auf Breakout-Boards gibt, und das erwähnte FRAM-Modul – ebenfalls praktischerweise auf Breakout-Boards verfügbar. Da Breakout-Boards mit unterschiedlichen Pin-Belegungen erhältlich sind, sollte man beim Anschluss nicht auf die Pin-Nummern, sondern auf die Pin-Bezeichnungen achten. Beim SD-Karten-Modul kommt gegebenenfalls MOSI an DI oder SI und MISO an DO oder SO. Als Zähler eignen sich etliche preiswerte Modelle für Hutschienenmontage mit S0-Schnittstelle. Der von mir verwendete Typ DDS5188 (Bild 9) ist leicht erhältlich und sehr preiswert.
Es sollte sich zwar von selbst verstehen, dass man bei Arbeiten am Netz die nötige Sorgfalt walten lassen muss, aber ein Hinweis sei erlaubt: Für Arbeiten am Sicherungskasten gelten unterschiedliche nationale Gesetze. In Deutschland müssen Sie hierzu als ausgebildeter Elektriker beim Netzbetreiber registriert sein. Auch die Arbeit an externen, an den Sicherungskasten angeschlossenen Unterverteilern ist einer Elektrofachkraft mit entsprechender Ausbildung und Wissen vorbehalten.
Über den Autor
Georg Luber ist ausgebildeter Elektriker, hat dann Elektrotechnik studiert und war jahrelang in den Bereichen Elektrische Sicherheit und Elektroinstallation tätig. Er hat national und international in entsprechenden Normengremien (DKE/VDE, CENELEC, IEC und ISO) mitgearbeitet. Ein weiterer Schwerpunkt war die Gebäudeautomation und hier insbesondere KNX. Georg Luber beschäftigt sich in diesen Bereichen mit Software und der Entwicklung von Elektronikprojekten.
Sie haben Fragen oder Kommentare?
Haben Sie technische Fragen oder Anmerkungen zu diesem Artikel? Schicken Sie eine E-Mail an Elektor unter redaktion@elektor.de.