Skip to content

Latest commit

 

History

History
288 lines (243 loc) · 19 KB

about_de.md

File metadata and controls

288 lines (243 loc) · 19 KB

Saldierte Nulleinspeisung mit dem Haus-Stromzähler

Hallo Allerseits, ich möchte hier meine eigene private Anlage und Regelung zur Null-Einspeisung vorstellen.

Es wird zuerst der Eigenverbrauch im Haus abgedeckt. Wenn dann noch Leistung übrig ist, dann wird auch der Akku geladen.

Aufbau

Schema

Die Komponenten

Schaltkasten 0. Rohrlüfter in KG Rohr als aktive Kühlung, Thermosensor von 9

  1. esmart3 MPPT Laderegler (das Billigteil wird unter verschiedensten Namen angeboten) Anleitung und Spezifikation, Herstellerseite, Konfigurationssoftware Windows, alternativer Link
  2. Soyosource GTN 1200W (900 W im Batteriemodus), ACHTUNG! meines Wissens liegt kein Zertifikat für VDE-AR-N 4105 vor, in Deutschland ist das Gerät damit nicht zulässig. Anleitung und Spezifikation
  3. AC Not-Aus Schalter
  4. Sammelschraube für PV +
  5. Trennschalter für PV -
  6. Sicherungsautomat und RCD für L1
  7. kombinierte Sicherung und RCD für L2
  8. Step-Up MPPT Regler für das 390 W Modul, elejoy EL-MU400SP, Anleitung und Spezifikation
  9. Thermoschalter für die Lüftung

Das passt gerade so in einen 60x60 cm Schaltschrank. Nicht zu sehen auf dem Bild:

  • PV Module mit 1690 Wp (5x 260 W Poly, 1x 390 W Mono), nicht optimal ausgerichtet, die Poly sind 20 Jahre alt (185€/kWp)!
  • Raspberry Pi (oder anderer (Kleinst)rechner)
  • Lesekopf für den Stromzähler (moderne Messeinrichtung)
  • 16s LiFePO4 Akku mit 25 Ah, also 1,28 kWh

Der Preis für die gesamte Anlage war knapp 2 k€.

Funktionsweise

Die Anlage funktioniert grundlegend wie eine Insel: PV, Akku und der Soyosource Netzwechselrichter (als Last) hängen am Laderegler. (Weitere Netzwechselrichter müssen wegen des 40A-Limit des Esmart3 direkt an den Akku angeschlossen werden.) Die Soyosource Inverter lassen sich per RS485 (Modbus) in der Einspeiseleistung regeln. Dafür werden auch Messklemmen angeboten, aber damit könnte man keine Phasen saldieren. Für die Regelung ist der Raspberry Pi zuständig, auf dem die Volkszähler Software läuft. Der Volkszähler liest mittels Lesekopf am Haus-Stromzähler die sekundengenauen, geeichten! echten Verbrauchsdaten ab. Der OBIS Datensatz mit der Bezeichnung "1-0:16.7.0" gibt den aktuellen saldierten Verbrauch an. Mit negativen Werten bei Einspeisung, auch bei Zählern mit Rücklaufsperre! Zumindest macht das meiner (DD3 BZ06) so.

Hier kommt dann mein Script zeroinput ins Spiel, es liest die Verbrauchsdaten vom Haus-Stromzähler über den Volkszähler aus und berechnet die nötige Einspeiseleistung, um den Zähler auf Null zu setzen. Grundsätzlich würde das Script auch ohne Volkszähler funktionieren und könnte den Lesekopf selbst auslesen. Dann würde es auf wesentlich "kleinerer" Hardware laufen, aber so ganz ohne Monitoring wäre mir das zu riskant. Der "unübliche Weg", das logfile umzuleiten, anstatt die dem Volkszähler eigenen Methoden (Datenbankzugriff über Netzwerk) zu verwenden, erhöht die Ausfallsicherheit erheblich. Selbst bei einem Datenbankabsturz der Volkszähler-Software arbeitet das Script weiter! Ich hatte das bereits... Wer kein Kabel zum Zähler legen will, könnte einen WIFI-Lesekopf benutzen und die Verbrauchsdaten per WLAN-Netzwerk übertragen.

In der Praxis schwankt der Wert am Zähler minimal um die 0, übrigens zeigt mein "smart Meter" an seinem Display auch Einspeisung ohne Minuszeichen als positiven Wert an. (es gibt A- und A+ mit Pfeilen, diese zeigen Bezug / Export an)

Funktionen

Das Script hat diese Funktionen:

  • Unterspannungschutz Akku unter 48 V
  • Leistungsanpassung Akku von 48 V bis 51 V, mittels Regelkurve, mögliche Gesamtleistung immer zuzüglich PV
  • "Über"einspeisung ab 53 V bis "Saturation charging voltage" ("Sättigungsladespannung“, am esmart3), 0,2 W / 0,1 V, "zieht die Nulllinie nach unten", bei Überschuss
  • Begrenzung des Batterie Entladestroms, mögliche Gesamtleistung immer zuzüglich PV
  • Nachtlimit (ein kleiner Akku hält keine ganze Nacht durch)
  • Minimalleistung
  • Maximalleistung
  • Permanentes Verschieben der Nulllinie in Richtung Bezug oder Export.
  • Korrektur der Kabelverluste zum Akku
  • Alarmierung bei erhöhter Batterietemperatur oder interner Temperatur des esmart3
  • "Ramp mode" für starke Sprünge im Verbrauch
  • Unterdrückung der Schwingung des Regelkreises
  • Zeitgesteuerte Entladung des Akkus

Diese Werte können und sollten an die jeweilige Anlage und Akkugröße angepasst werden! Natürlich könnte man auch andere Laderegler, wie z.B. Epever oder Victron einbinden. Die Akku-Spannung und PV-Leistung sind sehr wichtige Werte für die Regelung! Auch jeder andere Netzwechselrichter kann verwendet werden, wenn er regelbar ist. Denkbar ist auch ein regelbarer DC-DC-Wandler an einem Microwechselrichter. Meine Anlage kann z.B. nur die volle Inverterleistung abgeben, wenn die PV in dem Moment genug Leistung bringt - um den Akku nicht zu überlasten. Die "harten" Grenzwerte für Unter- und Überspannung etc. sind sowohl im Laderegler als auch in den Netzwechselrichtern eingestellt.

Rechtsrahmen

Soweit ich das beurteilen kann, muss man die hier beschriebene Anlage in Deutschland sowohl beim Netzbetreiber als auch im Marktstammdatenregister anmelden, wenn man alle gesetzlichen Regularien befolgen will. Kann man aber nicht! Denn im Klartext: Der genannte Soyosource Wechselrichter darf wegen der fehlenden Zertifizierung in Deutschland nicht ans Stromnetz angeschlossen werden.

Beispiele für die Regelung

Die Werte für PV (gelb, Leistung der PV-Module) und Soyo P (grün, eingespeister Strom) werden negiert dargestellt! Die Daten für PV, Soyo P und Akku U (rot, Akkuspannung) liefert das Script, wobei Soyo P berechnet wird. PV und Akku U werden vom esmart3 Regler gelesen und an den Volkszähler zur Darstellung weitergereicht. Dadurch entsteht eine Sekunde Zeitversatz zu den Kurven des Haus-Stromzählers.

So sieht dann ein recht guter Tag mit hohem Verbrauch aus

viel Verbrauch (2 soyo gti) Die Tageswerte waren: PV Erzeugung 7,7 kWh, Einspeisung 7,3 kWh, bewusst verschenkt 0 kWh. An diesem Tag liefen Backofen, Microwelle, Brunnenpumpe, Split-Klima, etc. Der Akku war am Ende des Tages schon leer. Man sieht das Ein und Ausregeln am Morgen und Abend entlang der PV-Kurve. Gegen 11 die maximale Einspeisung. Danach und sehr schön um ca. 17:30 Uhr die Leistungsanpassung für den Batteriestrom.

Ein sonniger Tag mit wenig Verbrauch

wenig Verbrauch (2 soyo gti) Die Tageswerte waren: PV Erzeugung 6,1 kWh, Einspeisung 5,7 kWh, bewusst verschenkt 0,9 kWh. Der größte Verbraucher war die Split-Klima. Die Akkuladung reichte bis weit in die Nacht. Hier sieht man das Einregeln am Morgen und die Nachtlimitierung am Abend. Der dunkelgrüne Bereich ist überschüssiger Strom, da die Batterie - siehe Spannungskurve - voll ist. (inzwischen ist die Übereinspeisung in der Standard Einstellung wesentlich geringer!)

Ein trüber Tag

sehr trüber Tag

Solange die Leistung der PV den Verbrauch nicht übersteigt, geht die gesamte Leistung direkt in den Netzwechselrichter. Der Akku wird nicht geladen. Im Wesentlichen entspricht das der Arbeitsweise eines Modul/Micro-Wechselrichters.

Waschmaschine in Heizphase

60 Grad Wäsche (2 soyo gti) Die Daten in der Tabelle beziehen sich auf den ganzen sichtbaren Ausschnitt. Hier wird noch die "Summe L1+L2+L3" (OBIS "1-0:16.7.0") in Schwarz angezeigt. Sie entspricht oberhalb der Nulllinie ziemlich genau der roten Linie für den Netzbezug ("1-0:1.8.0"). Der Teil unterhalb der Nulllinie ist die tatsächliche Einspeisung ins Stromnetz, also Energie, die "durch den Zähler ins Netz" geht. Diese wird vom Zähler nicht "gerechnet", es wäre die zweite Richtung in einem Zweirichtungszähler. In Summe waren das 430 Wh bezahlter Bezug und 418 Wh "physikalischer Bezug". Es wurden also 12 Wh unvergütet eingespeist. Die kontinuierliche Welle ab 10:10 kommt durch den ständig anlaufenden Trommelmotor, diesem ansteigenden Verbrauch folgt das Script. Aber da der Motor auch plötzlich wieder abschaltet, kommt durch die Trägheit der Regelung eine tatsächliche Einspeisung zustande. Die Wellen in der grünen Linie stammen außerhalb der Heizphase durch diese Trägheit. Während der Heizphase kommt die Welligkeit von der Leistungsanpassung an die Akkuspannung. (Die Waschmaschine lief einfach zu früh, der Akku war kaum geladen.) Der Leistungseinbruch um ca. 10:33 kommt durch den Neustart des MPP-Trackers im Laderegler. (Grün und Gelb) Erkennbar ist auch noch das Ansteigen der PV Leistung in dem Moment, wo die Heizphase beginnt. Umgekehrt sinkt die PV Leistung mit langsam ansteigender Akku Spannung nach der Heizphase.

Milchkaffee mit Microwelle und Induktionsplatte - für Fortgeschrittene

milchkaffee (2 soyo gti) Die roten Flächen sind der eingekaufte Bezug. Die grünen Flächen die eigene Einspeisung. Die grauen Flächen sind die trägheitsbedingte Übereinspeisung, kostenlos eingespeiste Energie.

Noch eine Verlaufsgrafik mit nur einem Soyosource

einphasig (1 soyo gti)

Leertakten des Akkus

leertakten (3 soyo gti) Hier sieht man, wie der Backofen den Akku leer taktet. Dabei spielen folgende Komponenten der Regelung zusammen:

  • Begrenzung des Entladestroms der Batterie, hier 2kW vom Akku + PV-Leistung
  • Rampenmodus, bei großen Sprüngen im Verbrauch
  • Korrektur der Batteriespannung
  • Leistungsanpassung an die Batteriespannung, die Entladekurve von LFP fällt rasant ab

Schwankungen der Regelung in einer eher ruhigen Phase

Schwankungen Die schwarzen Werte zeigt der Haus-Zähler ohne Minuszeichen an. Rot muss bezahlt werden. Die Einspeisung betrug 400 bis 450 W in diesem Abschnitt.

Die Ausgabe des Scripts im verbose mode, ca. jede Sekunde neu:

09:59:47, voltage 52.6 V, PV power 578 W, load power 152 W
timer active: bat discharge 50 %, input 100 %, energy 137/1000 Wh 

voltage correction 52.5 V, dif 0.1 V
no saw detected
input history [167, 163, 166, 163]       1:2 1.8 %      3:4 2.4 %

meter    5 W (5 W import), interval 1.02 s
input  163 W
1 soyo
2 soyo
1 eSmart3

primary          SOC  46         Mode CC
PV        59.1 V           5.0 A         263 W
Battery   52.6 V           5.0 A         263 W
Load      52.5 V           2.9 A         152 W
Temp     int 37 °C      bat 20 °C

secondary        SOC  53         Mode CC
PV        56.0 V           6.1 A         322 W
Battery   52.9 V           6.1 A         322 W
Temp     int 32 °C      out 14 °C

2 eSmart3

Messgenauigkeit

Zur Genauigkeit der Daten vom esmart3 hat der Autor der Esmart3 Bibliothek, die ich modifiziert verwende, einen Bericht veröffentlicht. Meiner Beobachtung nach, stimmt die eingespeiste Leistung vom Soyosource Inverter recht genau mit dem angeforderten Wert überein. Zu beachten gibt es noch die verzögerte Ansprechzeit (ramp speed) von meines Wissens 400 W/s. Der Soyo braucht also 2+ Sekunden von 0 auf 100% Leistung. (das ist Absicht, kein Fehler) Darum habe ich die Soyos einfach nur parallel angesteuert, um eine möglichst kurze Ansprechzeit zu haben, mit mehr Soyos wird das entsprechend noch besser, aber auch einer funktioniert! (Der 2-phasige Anschluss meiner Anlage wäre nicht nötig und stammt von Experimenten mit Phasen-basierter Nulleinspeisung, die ich inzwischen verworfen habe! Trotzdem schön zu haben.) Ab wann macht ein weiterer Wechselrichter Sinn? Der Grundverbrauch liegt laut Hersteller bei < 2 W. Mit 3 W gerechnet, ergeben sich 72 Wh / Tag. Also kommt man auf 72 Wh / 900 Wh * 60 Minuten = 4,8 Minuten Volllast Einspeisung. Läuft der "weitere" Inverter also mehr als 5 Minuten mit Volllast pro Tag, lohnt er sich, ganz grob gerechnet.

Wirkungsgrad

Die Ausgabe des Scripts oben zeigt: eingespeiste Leistung 643 W, wogegen der esmart 692 W Last anzeigt. Das ergibt ~ 93 % Wirkungsgrad in diesem Moment. Das Laden und Entladen des Akkus kostet natürlich auch Energie. Mit den Beispieldaten der Tage (weiter oben) lässt sich ein Gesamtwirkungsgrad berechnen:

  • PV Erzeugung 7,7 kWh, Einspeisung 7,3 kWh, ergibt ~ 95 %
  • PV Erzeugung 6,1 kWh, Einspeisung 5,7 kWh, ergibt ~ 93 %

Je mehr Energie durch den Akku geht, desto schlechter ist der Wirkungsgrad der gesamten Anlage.

Bauanleitung

  • Den Stromzähler wenn nötig mit PIN zur (erweiterten) Datenausgabe bringen. Die PIN gibt es beim Messstellenbetreiber bzw. Netzbetreiber (nicht Stromanbieter). Es gibt eine praktische App zur PIN-Eingabe für Ungeduldige.
  • Den Volkszähler zum Laufen bringen. Zur Anleitung, das Forum dazu Ohne Volkszähler läuft das Script nicht! Also zuerst damit anfangen.
  • Es ist sehr sinnvoll dem IR-Lesekopf und RS485-Adapter per udev-Regel einen eigenen, festen Gerätenamen zu geben. Für meine Geräte liegen .rules Dateien in /dev/udev/rules.d/ mit diesen Regeln:
SUBSYSTEMS=="usb-serial", DRIVERS=="cp210x", SYMLINK+="lesekopf"
SUBSYSTEMS=="usb-serial", DRIVERS=="ch341-uart", SYMLINK+="rs485"

Oder bei mehreren gleichen Geräten unterschieden durch den Anschluss am Raspi:

SUBSYSTEMS=="usb" ATTRS{devpath}=="1.1" SYMLINK+="esm0"
SUBSYSTEMS=="usb" ATTRS{devpath}=="1.3" SYMLINK+="esm1"
  • Die ganzen Geräte wie oben schon beschrieben montieren.
  • Den RS485-Anschluss des Raspi (i.d.R. ein USB-Stick mit Klemmen) mit den RS485 Anschlüssen von Soyo und esmart3 verbinden: A+ an A+, B- an B-.
  • Den Volkszähler für die Nulleinspeisung ein wenig modifizieren.

Wenn der eigene Volkszähler erfolgreich läuft, dann können noch Kanäle entsprechend dieser vzlogger.conf angelegt werden. Auf jeden Fall muss "identifier": "1-0:16.7.0*255" und "verbosity": 15 enthalten sein, damit das Script damit rechnen kann. Auch der Pfad für das "log" in der vzlogger.conf muss angepasst werden: "/tmp/vz/vzlogger.fifo" Obwohl es nicht zum Betrieb nötig ist, sollte der Umgang mit Datenmengen beachtet werden, sonst "läuft die Datenbank irgendwann über"!

als root:
apt install python3-serial
cd /home/vzlogger
wget https://raw.githubusercontent.com/E-t0m/zeroinput/main/zeroinput.py
wget https://raw.githubusercontent.com/E-t0m/esmart_mppt/master/esmart.py
chmod 744 /home/vzlogger/*py
chown vzlogger: /home/vzlogger/*py
su vzlogger
mkdir /tmp/vz
touch /tmp/vz/soyo.log
mkfifo /tmp/vz/vzlogger.fifo
python3 /home/vzlogger/zeroinput.py -v (mit strg+c beenden)
oder wer screen kennt (man screen):
screen -dmS zeroinput nice -1 python3 /home/vzlogger/zeroinput.py -v (mit screen -r "öffnen", mit strg-a, dann strg-d "schließen")

Dann nochmal in einem anderen Terminal - als root - den vzlogger neu starten systemctl restart vzlogger

Um das Script automatisch beim Hochfahren des Raspi zu starten, mittels

su vzlogger
crontab -e

diese Zeile:

@reboot mkdir /tmp/vz; touch /tmp/vz/soyo.log; mkfifo /tmp/vz/vzlogger.fifo; screen -dmS zeroinput nice -1 python3 /home/vzlogger/zeroinput.py -v

in die crontab eintragen. Um später auf die Ausgabe zu kommen, als Benutzer "vzlogger" (su vzlogger), screen -r eingeben. Danach strg-a, dann strg-d zum "schließen" benutzen.

Wenn dieser Eintrag erfolgt ist, startet die Regelung nach einem Stromausfall von selbst wieder. Mit ein wenig Verzögerung durch die Wechselrichter selbst und den Startvorgang des Raspi. Wird der Lesekopf abgezogen, hört die Einspeisung einfach auf und der Zähler steigt auf den Wert des Verbrauchs. Sobald der Lesekopf wieder angebracht wird, beginnt die Einspeisung von selbst.

So sieht die Konfigurationssoftware des Esmart3 für Windows, alternativer Link aus. Esmart3 Software

Da gibt es etwas, was man am Gerät selbst nicht einstellen kann: Li-Ion. Die anderen Werte sind natürlich abhängig vom verwendeten Akku. Ich habe recht hohe und tiefe Werte einstellt, da die Leitung zum Akku nicht ganz optimal ist. Bisher kamen sie allerdings auch noch nicht zum Einsatz, da das Script weit weg davon operiert! (Update: Werte reduziert!)

Die Konfiguration des Soyosource Inverters ist sehr übersichtlich

Soyosource GTN setup

Geplant

  • Akku-Puffer für Notstromversorgung. (Erfordert einen zusätzlichen Inselwechselrichter!)
  • vorauseilende Regelung bei wiederkehrenden Verbrauchsmustern, z.B. Waschmaschine, Mikrowelle, Kochfeld
  • andere Laderegler einbinden, es muss nicht immer der Esmart3 sein
  • Ein fertiges Volkszähler-Image, bei dem man nur noch den Lesekopf einstellen muss.

Was fehlt noch?

Viel Spaß beim Nachbauen!

Weitere Informationen gibt es in den Foren: