Leistungsregler / Leistungsmesser für Batteriewechselrichter (auch für EVT248 / EVT500)

— 19.09.2023—
Mit der neuen Software Version V1.02.00 vom Leistungsmesser gibt es nun die Möglichkeit, zusätzlich ein Kontroll-OLED-Display per WLAN zu betrieben. Auf dem Display kann man die aktuelle Energie ablesen die aus dem Netz bezogen oder geliefert wird. Zusätzlich wird in einer kleineren Zeichendarstellung der Steuerwert des Wechselrichters und die ins Netz an diesem Tag eingespeiste Energie gezeigt.
Die eingespeiste Energie wird dann berechnet, wenn der Wechselrichter im Leerlauf ist und gleichzeitig eine Energierichtung zum Netz gemessen wurde.
Zum Bild: Aktuell läuft der Wechselrichter aus dem LiFePo4 Akku und der Leistungsmesser/-regler regelt den Bedarf so gut aus, dass jetzt nur 2 Watt zu viel ins Netz gespeist werden.
In der kleineren Zeile sieht man die Ansteuerung des Wechselrichters mit Vorgabe 416. An diesem Tag habe ich mit meiner recht kleinen Anlage meine LiFePO4 Akkus vollgeladen und nebenher auch noch 2133 Wh eingespeist. Eine Klick aufs Bild vergrößert dieses !

Beschreibung
Der von mir entwickelte Leistungsregler / Leistungsmesser hat die Aufgabe, den Batteriewechselrichter (z.B. EVT248, EVT500) in Echtzeit so zu steuern, dass der Strombezug aus dem Versorgernetz auf Null oder nahe Null geregelt wird. Es soll also der maximale Eigenverbrauch der in den Akkus gespeicherten Energie realisiert werden. Der Netzwechselrichter soll nicht zu viel und nicht zu wenig Leistung aus der kostbaren Batterieladung umwanden. Wenn der Akku leer ist oder durch Schutzschaltungen abgeschalten wird, kann so ohne jegliche Unterbrechung die Versorgung wieder komplett aus dem Versorgernetz erfolgen. Man nennt so etwas auch Null Einspeisung oder auch bedarfsgerechte Einspeisung.

Die Messung in nicht trivial, da in einem Wechselstromnetz die Spannung und auch der Stromfluss sich mit der Netzfrequenz ständig ändert. Neuartige Schaltnetzteile und LED Lampen sorgen zusätzlich für nicht kalkulierbare Stromspitzen. Aus diesem Grund werde ich viele tausend Messungen von Spannung und Strom in jeder Sekunde durchführen und daraus die aktuelle Leistung und auch die hier wichtige Richtung des Stroms (vom Versorger oder zum Versorger) berechnen. Der Leistungsmesser mit dem ESP8266 kann fast 10000 Einzelmessungen von Spannung und Strom in der Sekunde mit den Berechnungen durchführen. Wichtiger als der absolut genaue Wert von Spannung und Strom ist die Ermittlung des Punktes, an dem nichts aus dem Versorgernetz bezogen wird. Genau der Punkt den ich weiter oben mit „nahe Null“ beschrieben habe.

Eine ordentliche und genaue Strommessung könnte man auch mit einem ACS712 Hall Sensors realisieren. Das Problem ist nur, dass man diesen Stromsensor direkt in die stromführenden Hauptleitungen klemmen müsste. Sie muss geöffnet werden und dann muss so ein Teil zwischengeklemmt werden. Nicht jeder traut sich so etwas zu und darf auch so etwas in seinem Verteilerkasten machen.  Aus diesem Grund habe ich mich bei der Realisierung für einen klappbaren Stromwandler entschieden. Das von mir verwendet Modell erzeugt 1 Volt bei einem Stromfluss von 30A. Es wird einfach auf die Zuleitung geklipst. Jeder versierte Bastler schafft so etwas, der Stromwandler ist zudem auch gut und sicher isoliert.

Beschreibung der drei Entwicklungsstufen (2019-2022)

Hardware Version 1 – Raspberry Zero W (2019)

Die erste Hardwareversion arbeitete noch mit einem Rasperry PI Zero W und einer Software die ich in Python geschrieben habe. Es gibt kein Leiterplattenlayout und keine CAD Zeichnung. Auf einem kleinen LCD Display konnte man die aktuelle Leistung ablesen und zeitgleich sendete der Raspberry per UDP Protokoll dem Batteriewechselrichter die aktuelle Leistungsanforderung. Wenn noch immer Strom aus dem Versorgernetz bezogen wurde muss der Wechselrichter seine Leistung erhöhen. Wird zu viel Energie vom Wechselrichter umgewandelt – Überschuss wird ins Versorgernetz eingespeist – muss der Wechselrichter seine aktuelle Leistung verringern. Aufgebaut war die Steuerung optisch nicht sonderlich schick, sie war aber technisch völlig ausreichend. 

Warum werden die Daten zum Regeln per Netzwerk an den Wechselrichter gesendet?
>>> Zwischen Leistungsmesser und Wechselrichter gibt es leider kein Steuerkabel, somit ist die WLAN Netzwerkverbindung eine mögliche und realisierbare Variante.
Warum UDP?
>>> Das Protokoll erfordert keinen extra Verbindungsaufbau, ist einfach zu nutzen und im eigenen Netzwerk auch sicher genug.

Mit dem Regelverhalten war ich sehr zufrieden, dennoch kam es ohne Grund immer wieder zu Ausfällen. Der Raspberry Pi verschluckte sich immer mal wieder, manchmal war auch nur die WLAN Verbindung unterbrochen und er musste einfach nur neu gestartet werden. So stelle ich mir aber eine Regelung nicht vor, sie muss zu 100% und ununterbrochen funktionieren. Heute hätte ich das Python Script von 2019 auch etwas anders geschrieben. Schön war, dass man sich mit jedem PC in seinem Netzwerk auf den Raspberry Pi per SSH schalten konnte und Änderungen an der Software in Windeseile umgesetzt werden konnten. Im Hintergrund hatte ich auch realisiert, dass eine kleine Datenbank über rrdtool mit wichtigen Daten zur Reglung geschrieben. Auswertungen und Graphen zeigten wie schön alles funktioniert.

Download Handzeichnung Raspberry und AD Wandler als PDF (30kb)
Download Handzeichnung Raspberry und LCD Display als PDF (127kb)
Download Python Programm als ZIP (2kb)

Hardware Version 2 – ESP8266 (2020-2022)

Ziel war es, das notwendige Steuergerät so aufzubauen, dass man es problemlos im Schaltschrank auf der Hutschiene befestigen kann. Da meine erste Variante mit dem Raspberry Pi Zero die beschriebenen Unzulänglichkeiten hatte, setzte ich ein ESP8266 Modul in Bauform eines „Wemos D1 mini“ ein. Die Schaltung wurde sauber gezeichnet und auch ein Layout entstand. Als Programmiersprache wählte ich Micropython um Teile der schon geschriebenen Software weiter nutzen zu können. Für eine Displayanzeige sollte ein kleines OLED 64 x 32 Pixel Display dienen. Dieses Display gibt es fix und fertig und man muss es einfach nur auf den Wemos D1 stecken. Auf dem Display wurde neben Zahlenangeben von aktueller Spannung, Leistung und UDP Sendedaten auch ein Graph eingesetzt der die letzte halbe Stunde zeigt. Der UDP Sendewert zum Wechselrichter ist ein Wert zwischen 0 und 1000. Vergleichbar mit 0 bis 100% Leistung. Die vierte Stelle ist die Kommastelle. Ein Sendewert von 335 bedeutet, der Wechselrichter soll mit 33,5% seiner Leistung arbeiten. Für eine schönere und bessere Darstellung des Graphs passte er sich automatisch die Y Achse an.

Die Hardwareversion mit dem ESP8266 lief bei mir zwei Jahre ohne Probleme. Es gab nur einen kleinen Schönheitsfehler, dass das OLED Display bekam durch die dauernde Darstellung der Werte und des Graphs unterschiedliche Helligkeit. Bei OLED Displays ist das Einbrennen von statischen Inhalten typisch, ich hatte es natürlich auch durch das Wechseln des OLED Displays beheben können. Der ESP8266 war auch jederzeit im Netzwerk durch ein Remote-Terminal (WebRepl) und Passwort erreichbar. Zugangsdaten zum WLAN, IP Adressen des UDP Ziels waren fest im Quellcode hinterlegt. Bei Änderungen musste das Micropython Programm gelöscht und neu auf den ESP geladen werden. So etwas macht sich nicht gut, wenn anderen Anwender sich so etwas selbst aufbauen möchten.

Download Handzeichnung Schaltung mit ESP8266 als PDF (58kb)
Minivideo zu dieser Version auf YouTube ansehen.

…neue Softwareversion in C (2023…)

Die aktuelle und somit zweite Softwareversion auf dieser Hardware wurde komplett neu mit C geschrieben. Von Anfang an gibt es ein Webfrondend um WLAN Zugangsdaten und Parameter bequem einstellen bzw. ablesen zu können. Integriert wurde zusätzlich ein 0-10 Volt Analogausgang und eine ThingSpeak MQTT Anbindung zur Cloud. Mit dem 0-10 Volt Ausgang kann man direkt den von mir entwickelten Stromregler für EVT248 ansteuern. Das Display hat eine vierfach höhere Auflösung ist nun ein 0,96 Zoll OLED mit 128 x 64 Pixel. Das Einbrennen der dargestellten Zeichen wird durch ein zyklisches Verschieben der Displayposition wirkungsvoll verhindert. Der Graph wird nicht mehr als Fläche, sondern als 1 stündiger Kurvenverlauf mit automatischer Skalierung dargestellt. Das Senden der UDP und MQTT Daten kann in einem freien Intervall individuell über das Webfrondend programmiert werden. Vor Ort kann man sich die meisten Parameter am OLED darstellen lassen. Die UDP Daten werden vor dem Versand über einen selbst programmierten Routine verschlüsselt und mit einer Checksumme gegen Übertragungsfehler abgesichert. Es wäre auch denkbar, andere Wechselrichter mit einer Netzwerkschnittstelle (z.B. MODBUS-TCP) zu steuern. Den Aufwand dafür kann ich aber nicht abschätzen.
Vom Leistungsmesser (Null Einspeisungsregler oder bedarfsgerechter Regler) können zwei Werte an die kostenfreie Cloud Anwendung ThingSpeak gesendet werden. Der Regelwert vom Wechselrichter (0-1000) und die aktuelle Leistung (-4999 bis +4999 Watt) können hier leicht geloggt, über Jahre archiviert und wunderbar frei skalierbar dargestellt werden.

In meinem Fall setze ich 8 Stück LiFePo4 Zellen vom Hersteller Winston mit einer Kapazität von 160 Ah ein. Nach einer Vollladung kann ich so über 4 KWh Energie für den Eigenverbrauch verfügen. Überwacht werden alle Zellen einzeln. Erreicht eine Zelle beim Entladevorgang eine Spannung von unter 3,1 Volt wird der Wechselrichter abgeschalten. Seit über drei Jahren sind also die LiFePo4 Zellen täglich und in der Winterzeit auch längere Zeit entladen. Das schadet den Zellen in keiner Weise. Man sollte aber aufpassen, dass die Klemmspannung der schwächsten Zelle nicht unter 3,0 Volt sinkt. Geladen wird einen Victron Solarregler vom Typ MPPT 100/50 aus 4 Zellen (Solarwatt 60P je ca. 280 – 305 Watt). Aufgrund von Abschattungen und der Montage auf einem Flachdach eines Nebengebäudes kann ich durchschnittlich 2,73 KWh (Ganzjahrestagesdurchschnitt 2021) mit Tagesspitzenwerten von bis zu 7,773 KWh nutzen. Der Wechselrichter ist auch während der Solarladung in Betrieb. Weder eine Vergrößerung der Kapazität vom Akku noch weitere Solarzellen würden beim meinem aktuellen Verbrauchsgewohnheiten einen Nutzen bringen.  Akkukapazität und Solarmmodule müssen passend gemeinsam zum jeweiligen Verbrauch ausgewählt werden.

Alle Softwareversionen beinhalten den kompletten Funktionsumfang, haben keine Einschränkungen und sind frei für jeden Privatanwender nutzbar.

Download Schaltung Leistungsmesser HW Version 2 als PDF (111kb)
Download Leiterplatte Unterseite als PDF (17kb)
Download Leiterplatte Oberseite als PDF (20kb)
Download Bestückung der Leiterplatte Unterseite als PDF (23kb)
Download Bestückung der Leiterplatte Oberseite als PDF (27kb)

Download Anleitung zum Flashen des ESP8266 Wemos D1 mini als PDF (26kb)
NEU !!! – Download Software Leistungsmesser als BIN-Datei (V1.02.00 Stand 19.09.2023) ZIP-Archiv (315kb)
Download Anleitung / Beschreibung Leistungsmesser als PDF (143kb)

Wer wie bei mir keine direkte Kabelverbindung zum Wechselrichter hat, kann das UDP Modul zur Ausgabe der 0-10 Volt für den Wechselrichter verwenden. Die Übertragung der Leistungsanforderung erfolgt dann verschlüsselt über das WLAN. Der ESP8266 hat gleich zwei identische PWM Ports, die den 0-3,3 Volt Analogwert liefern.

Download Schaltung UDP Modul am Wechselrichter (Minimalbeschaltung) als PDF (35kb)
NEU !!! – Software mit OLED für UDP Modul am Wechselrichter als BIN-Datei (V1.01.00 Stand 19.09.2023) ZIP-Archiv (225kb)
NEU !!! – Software ohne OLED für UDP Modul am Wechselrichter als BIN-Datei (V1.01.00 Stand 19.09.2023) ZIP-Archiv (216kb)

Wer eine eigene Auswertung der Daten vom Leistungsmesser realisieren möchte, kann diese Arduino Demo Software verwenden. Die aktuellen Leistungsdaten werden als INT Variable zur Verfügung gestellt.

Download Arduino Demo Software für eigene Anwendungen und Auswertungen als ZIP-Archiv (1kb)

Softwareanpassungen und -aktualisierungen erfolgen dann auch hier.

Mit dieser Schaltung kann man einen EVT248 / EVT500 (Netzwechselrichter) der mit einem Akku versorgt wird, wunderbar mit 0-10 Volt und auch direkt mit 0-3,3 Volt regeln. Akkustromversorgung regeln.

Im den unteren Graphen kann man ablesen, wie der Leistungsregler / Leistungsmesser den Wechselrichter über 0-10 Volt o ansteuert, dass die Phase zum Netz (Provider) auf fast Null bei wechselnden Belastungen regelt.

Linker Graph – Leistungsanforderung an Wechselrichter 0-1000 entsprechen 0-100% Leistung
Rechter Graph – Leistung in Wh auf der Phase zum Netz (oberhalb der Nulllinie = Bezug aus Netz  /  unterhalb der Nulllinie = Einspeisung ins Netz)

Die beiden Graphen werden über die Verbindung zu Cloud per MQTT Verbindung kontinuierlich erstellt. Das Bild hier stellt einen zwei Stunden Abschnitt an einem Vormittag dar.

Leistungsregler für Batteriewechselrichter

13.04.2023

Die Soft- und Hardware arbeiten mehr als zufriedenstellend miteinander. Es gab keinerlei Ausfälle / Abbrüche und Neustarts seit mehr als 249 Tagen. Für eine Selbstüberwachung der Zuverlässigkeit hatte ich ja einen Uptimer eingebaut. Die wichtigsten Daten des Leistungsmessers sind zu sehen, wenn man die Taste im Betrieb drückt. Bei einem Dauerdruck von mehr als 30 Sekunden erfolgt ein Reset, dann wäre auch der Uptimer wieder auf Null.
Auf dem Display gibt es absolut keine Einbrenn-Effekte. Jeder Pixel zeigt sich nach einem Jahr Dauerbetrieb mit tadelloser Helligkeit. (ein Klick auf’s Bild vergrößert dieses)