Solarspeicher (stationär)

Aus Open Source Ecology - Germany
Zur Navigation springen Zur Suche springen
In Arbeit.png

Wiki in Arbeit....[1]

Kurzbeschreibung

Das vorliegende Open Source Projekt „Soldorado Solarspeicher“ von OPEN SOLAR SYSTEMS basiert auf der Idee unabhängig von teuren kommerziellen Solarspeicherprodukten sowie unabhängig von der EEG Vergütung einen professionellen, kostengünstigen und intelligenten Solarspeicher zu entwickeln, der es ermöglicht auch bei PV Anlagen auf kleineren Dach- oder Balkonflächen den Grundlaststrom in einem Haushalt regenerativ abzudecken. Schon mit 4 Solarmodulen (ca. 1 kWP) und einer Speichergröße von 1,8 kW können ca. 35 % des eigenen Stromjahresverbrauches durch Eigenerzeugung selbst gedeckt werden.
Die Investitionskosten liegen weit unter den kommerziell angebotenen Produkten. Somit besteht auch für Menschen mit wenig zur Verfügung stehender Fläche die Möglichkeit aktiv etwas für die Umwelt und langfristig etwas für den eigenen Geldbeutel und die eigene Unabhängigkeit zu tun.

Da im ersten möglichen Fall keine Einspeisung ins öffentliche Stromnetz erfolgt, wird der nicht benötigte Strom im Akkumulator zwischengespeichert und nach Erreichen der vollen Akkumulatorkapazität zur Brauchwassererwärmung genutzt.
Im zweiten möglichen Fall erfolgt die Beladung des Akkumulators und die Einspeisung ins Netz parallel (Rücklaufsperre bzw. Zweirichtungszähler vom Netzbetreiber notwendig).
Um die optimale Speicher- und PV Anlagengröße in Bezug auf die Wirtschaftlichkeit und Amortisation des Gesamtsystems zu ermitteln, wird zuerst eine detaillierte, stündlich aufgelöste Jahressystemsimulation in Abhängigkeit des Stromlastprofiles des jeweiligen Haushaltes durchgeführt.
Zur optimalen Auslegung steht ein umfangreiches Exceltool zur Verfügung. Zur Erhöhung des elektrischen Eigenverbrauchs können Funksteckdosen von der intelligenten Regelung gezielt angesteuert werden, um in Zeiten hoher Solareinstrahlung elektrische Verbraucher wie E-Bikeladung, Wasch- oder Geschirrspülmaschinen zu aktivieren.
Die Onlinevisualisierung erfolgt auf zwei Weboberflächen. Für die detaillierte Datenauswertung des Gesamtsystems erfolgt dies über das Web Frontend des „Volkszählers“. Um einen schnellen Überblick über aktuelle Verbrauchsdaten, Wetteraussichten, Speicherladung, Speicherstatus und eingesparte CO2 Summe zu erhalten, erfolgt dies über das Dashboard von Node-red, einer Plattform zur Integration und Programmierung von Akteuren des sogenannten Internet of things (Internet der Dinge).
Die offenen und hier dokumentierten Schnittstellen über Arduino, Raspberry bzw. Volkszähler bieten Entwickler darüber hinaus die Möglichkeit den Programmiercode weiter zu verfeinern und bspw. die Onlinevisualisierung ihren Bedürfnissen individuell anzupassen oder weitere intelligente Verbraucher anzusteuern.

Abbildung 1.1 GNU General Public License v3.0.pdf


Der hier dokumentierte Aufbau des Solarspeichers basiert auf Open-Source Hard- und Software und unterliegt der GNU General Public License v3.0.
Hinter Soldorado Open Solar Systems stehen wir freien Entwickler Thomas Plaz und Frank Richter. Sämtliche Verbesserungen und Weiterentwicklungen sind von uns Entwicklern ausdrücklich erwünscht, um eine schnelle Verbreitung zu ermöglichen und die Energiewende zu unterstützen. Alle Quelldaten werden mittelfristig bei GitHub verfügbar sein. Sofort verfügbar sind die Dateien momentan unter den entsprechenden Verlinkungen auf dieser Seite.

Projektbeschreibung

Motivation

Am Anfang dieses Projektes stand der Wille, endlich aktiv etwas für die eigene Umweltbilanz direkt Zuhause zu tun. Wir leben in Miete in einem kleinen Häuschen mit sehr beschränkter Dachfläche mit verschachteltem Dach in Ost und Westrichtung (max. 4 Solarmodule, insgesamt 1 kWP). Unser Jahresstromverbrauch liegt für die mittlerweile vierköpfige Familie bei etwa 1700 kWh/a. Unsere Wärmeerzeugung erfolgt (aufgrund der Mietverhältnisse) nach wie vor konventionell mit Öl.
Eine normale PV Einspeiseanlage kam für uns mit lediglich vier Modulen aufgrund des Mietverhältnisses und dem bürokratischen Aufwandes nicht in Frage. Wir wollten so viel Energie wie möglich selbst erzeugen und direkt verbrauchen. Laut Internetrecherche im Jahr 2015 waren aber kaum finanzierbare Systeme zu finden, die unseren Anforderungen genügten. Am Ende haben wir es mit dem 4 Panel Controller von Solarelectrix kombiniert mit zwei geschlossenzelligen 75Ah Bleiakkumulatoren (35Ah effektive Batteriekapazität) versucht. Ansatz war hier die Verwendung eines leistungsgeregelten Miniwechselrichters für die Grundlastdeckung im Haus. Die Auslegung des Speichers und des Wechselrichters erfolgte durch die Ermittlung eines wirtschaftlichen Optimums zwischen Eigenverbrauch, maximal zu erwartenden Energieertrag der zur Verfügung stehenden Dachfläche, Batteriegröße und Amortisationszeit. Die Amortisationszeit wurde mit ca. 13 Jahren berechnet. Die jährliche Co2 Einsparung liegt bei ca. 40 kg/a. Überschussstrom wird in der Batterie gespeichert, kein Strom sollte ins Netz zurück fließen. In den folgenden Monaten konnten wir mithilfe des open source Systemmonitorings „Volkszähler“ das Verhalten der Anlage genau studieren und optimieren. Nach und nach ersetzten wir alle Funktionen des 4 Panel Controllers durch eigene Regelalgorithmen mithilfe des Arduinoboards und erreichten deutlich höhere Leistungsumsätze des Systems sowie eine zuverlässige Batterieschutzfunktion. Unseren "fliegenden" Aufbau montierten wir 2017 in einen Schaltschrank. 2018 ersetzten wir die Bleiakkumulatoren durch ein Batteriemanagementsystems (BMS) und einen 60 AH Lithiumakkumulator. Immer mehr Funktionen wie z.B. eine Heizstabregelung zum Verbrauch des überschüssigen Stromes an sonnenreichen Sommertagen zur Trinkwarmwassererwärmung, eine schaltbare Steckdose zum Laden des E-Bike Akkumulators, VPN Zugang via App oder Browser auf alle Systemdaten von überall auf der Welt, Schalter für die Volleinspeisung des Wechselrichters und eine detaillierte Simulation des Gesamtsystems kamen nach und nach hinzu. Inzwischen deckt die Solaranlage im Jahresschnitt ca. 35% des Jahresstromverbrauches, trotz morgendlicher Verschattung und suboptimaler Solarmodulausrichtung. Da wir in vielen Fällen auf die Produkte der Open Source Community zurückgegriffen haben, ist es uns nun ein Vergnügen eine ausführliche Dokumentation unserer Entwicklung zu schreiben und unser Wissen öffentlich allen zur Verfügung zu stellen. Alle Bastler und Entwickler sind eingeladen mit uns ins Gespräch zu kommen und die Soft- und Hardware weiterzuentwickeln oder zu modifizieren. Wir hoffen damit viele begeistern zu können entweder selbst einen Solarspeicher zu bauen oder sich einen bauen zu lassen. Es gibt noch viele Dachflächen, die bisher aufgrund ihrer kleinen Fläche als unrentabel abgetan wurden, die mit diesem System nun auch effektiv und wirtschaftlich erschlossen werden können. Wir hoffen damit einen kleinen Teil zur konkreten Umsetzung der Energiewende und zur Vergrößerung der eigenen Unabhängigkeit beitragen zu können.

Mietobjekt ohne und mit PV Speichersystem

Einige Vorteile des Solarspeichersystems auf einen Blick

  • Kompletter Eigenverbrauch der erzeugten Energiemenge möglich als Strom und Wärme
  • System auch als Einspeisesystem zu benutzen
  • Hoher Systemwirkungsgrad (ca. 88-89%) durch DC gekoppelten Speicher (siehe Kapitel Systemwirkungsgrad)
  • Dezentrale Stromerzeugung zur Entlastung und Stabilisierung der Stromnetze
  • Anlage optimiert für kleine Dach- oder Balkonflächen (ab drei Modulen 1,66m^2, Höhe: 1,68m; Breite: 0,99m z.B. insgesamt 900WP) für die sich i.d.R. der Aufwand (EEG Anmeldung) für eine Einspeiseanlage nicht lohnt
  • EEG Anmeldung bei Verwendung der Überschussenergie als Wärme nicht notwendig
  • größere Unabhängig gegenüber Strompreissteigerungen
  • weniger Bürokratie bei Anlagenanmeldung
  • Verbesserung der eigenen CO2 Bilanz, Vermiedene Co2 Emissionen direkt ablesbar
  • kein Zugriff des Netzbetreibers auf die Steuerung des Stromspeichers oder gar auf Ihre individuellen Erzeugungs- und Verbrauchsdaten, aufgrund lokaler Datenspeicherung
  • Möglichkeit der Skalierung des Systems bis zu 25 Modulen (7,5kWP)
  • Amortisation des Solarspeichersystems innerhalb von 12 Jahre
  • Für Weiterentwickler und Interessierte liegt der komplette Programmiercode und alle Schnittstellen offen zu Verfügung
  • Kostengünstige Lösung im Vergleich zu Mitbewerbern
  • Sekundengenaues Systemmonitoring über einen Webbrowser oder App im Heimnetzwerk oder verbunden über eine VPN Verbindung ermöglicht dem Nutzer über ein elektronisches Endgerät wie Smartphone oder Computer ständig Überblick über alle Systemparameter zu behalten
  • Optimierung des Eigenverbrauchs durch intelligent programmierbare schaltbare Steckdosen in zwei Betriebsmodi
  • Solares Laden des eigenen E-Bike Akkumulators möglich
  • Power to heat des Überschussstromes unterstützt im Sommer die Warmwasserbereitung und reduziert somit Co2 Emissionen und Laufzeiten der konventionellen Energieerzeugungsanlage
  • Systemkomponenten wie Wechselrichter und Akkumulator nur so groß gewählt, um ein optimales Verhältnis zwischen Wirtschaftlichkeit und gewünschter solarer Deckung zu erreichen

Projekthistorie und Ziele

2015:

  • Erste Ideen und Visionen, Kauf des Smappee Energiemnonitors zur Aufnahme des eigene Lastprofiles
  • Entwicklung eines Exceltools zur Jahressimulation des Speichers und Auslegung der Batterie und Wechselrichtergröße
  • Kauf und Montage von vier PV Modulen, von 2x 70Ah Bleibatterien (geschlossene), und als Regelung der 4 Panel Controller von Solarelectrix.

2016:

  • sukzessiver Ersatz der Funktionen des 4 Panel Cotrollers, um die volle Leistungsfähigkeit des Mikrowechselrichters von 300W ausschöpfen zu können, sowie sinnvolle Akkumulatorschutzfunktionen zu integrieren wie Tiefentlade- und Überladungsschutz.

2017:

  • Integration des Systems in einen Schaltschrank und Integration der Anlagenüberwachung mithilfe eines Raspberyy Pi‘s
  • Anschluß eines geregelten Heizstabes zur Beheizung des Brauchwarmwasserspeichers bei Überschussstrom im Hochsommer.

2018:

  • Ersatz der Bleiakkumulatoren durch einen 60Ah LiFePo mit Batteriemanagementsystem von Libre Solar.
  • Integration von Funksteckdosen angesteuert über das MQTT Protokoll über Node Red
  • Integration der Anlagenvisualisierung über das Dash Board von Node Red
  • Konstruktion und Herstellung eines Gehäuses für das BMS

2019:

  • Verbesserung der Hard- und Software des BMS von Libre Solar
  • Ansteuerung des Wechselrichters über Softserial
  • Platinenredesign mit den nunmehr notwendigen Aufbauten, Zusammenlegen von Arduino- und Mosfetplatine zur Kostengünstigeren Produktion
  • Untersuchung der Skalierung des Systems auf 48V Systemspannung
  • Integration der Heizstabregelung

Zukünftige Ziele:

  • Fertigstellung der Parameterauslesung über Node Red v.a. Errorfunctions
  • Integration der Projektdokumentation und Quelldaten in GitHub
  • U.U. Integration eines Watchdogs im Arduinocode
  • Freiwerdende serielle Arduinoschnittstelle soll bidirektionalen Kontakt zu Victron Ladereglern aufnehmen
  • Gehäusekonstruktion Arduino- und Mosfetplatine
  • Überarbeitung des Schaltschrankes auf Normkonformität
  • Redesign des Schaltschrankes / Integration des Akkumulators in den Schaltschrank / Bau des 3. Protoypen

Systemaufbau

Systemaufbau
  1. Der Stromzähler 1 erfasst die PV Einspeisung und den elektrischen Verbrauch auf allen drei Phasen im Haus und kommuniziert mit der Steuereinheit 2
  2. Die Steuereinheit 2 regelt kontrolliert die Akkumulator(ent-)ladung 4 sowie die Wechselrichterleistung 3 den Heizstab 5 und die intelligente Zuschaltung elektr. Verbraucher und Smart Home Akteure 6
  3. In folgendem Diagramm ist die Wechselrichtereinspeisung orientiert am momentanen Hausverbrauch (grün) (1x INV 350 – 60 von AE Conversion max. 300W) sowie der Solarertrags (rot) und der momentanen elektrischen Hausverbrauches (blau) dargestellt.
Solarertrag (rot), Stromverbrauch (blau) und Stromeinspeisung ins Hausnetz (grün)

Der Solarertrag hat seinen Höhepunkt gegen 13Uhr erreicht. Der Wechselrichter bezieht seine Energie tagsüber direkt von den Solarmodulen und nachts aus dem Akkumulator. Solarenergie die nicht direkt verwendet werden kann wird tagsüber in den Akkumulator eingespeichert. Ist der Akkumulator voll wird die Überschüssige Energie entweder mithilfe eines Heizstabes in Wärme z.B. für die Trinkwarmwassererwärmung oder ins Netz eingespeist. Die solare Deckung beträgt für den 5.6.2019 59%. Im Vergleich hierzu ist in Abbildung 4.1 das System ohne Akkumulator und Heizstab in herkömmlicher Volleinspeisung dargestellt.

Es wurden hierzu zwei INV 500 – 90 von AE Conversion max. jeweils 480W eingesetzt. Ein Großteil der erzeugten Solarenergie kann aufgrund der Gleichzeitigkeit nicht für den eigenen Stromverbrauch verwendet werden.

  1. Ziel der Systemauslegung ist es die Deckung der elektrischen Grundlast im Haushalt (je nach Wechselrichtertyp 300W oder 500W) von ca. 0-300W/500W zu decken.
  2. Die intelligente Verbrauchssteuerung (2) ermöglicht mithilfe von Funksteckdosen (7) z.B. elektrische Verbraucher wie ein E-Bike Akkumulator, Wasch- und Spülmaschine bei vorhandener Überschussenergie zuzuschalten und erhöht somit den solaren Eigenverbrauch.

Funktionsprinzip

Solarenergie steht nicht zu jeder Tageszeit zur Verfügung. Die Grundlast eines Einfamilienhaushaltes liegt bei ca. 100-500W, je nach Anzahl elektrischer (Dauer-) Verbraucher. Die sinkende EEG Einspeisevergütung, sowie die begrenzte Belastbarkeit unseres Stromnetzes lässt zunehmend PV Systemkonfigurationen wirtschaftlich werden, die nicht auf maximalen Ertrag bei maximaler Fläche optimiert sind, sondern im jeweiligen Haushalt eine möglichst hohe Eigenverbrauchsquote bzw. solare Deckung erzeugen. Dies wird durch die Zwischenspeicherung der Solarenergie im Akkumulator sowie mit intelligenter Steuerung der elektrischen Verbraucher erreicht. Energie soll zunehmend dort verbraucht werden wo sie entsteht. Angepasst auf das individuelle elektrische Verbrauchsprofil entsteht ein System mit wirtschaftlich optimierter Akkumulator-Größe und PV-Fläche. Für kleine Haushalte sind schon PV-Speichersysteme mit 3 PV Modulen (750WP) sinnvoll und ermöglichen auch bei begrenzter Dachfläche (z.B. bei Stadt-, oder Reihenhäusern, Haushälften) wirtschaftlich etwas für die eigene Co2 Bilanz sowie für die Versorgungssicherheit zu tun. Größere Systeme haben Vorteile durch die niedrigeren spezifischen Installationskosten beim Handwerker. Bei kleinen Systemen kann dafür ggf. mehr in Eigenleistung erbracht werden.

Detaillierter Systemaufbau

Folgende Abbildungen zeigen die relevanten Systemkomponenten schematisch mit deren Schnittstellen sowie im realen Aufbau.

Systemkomponenten und deren Schnittstellen
Datei:Abbildung 6 Systemkomponenten im realen Aufbau.pdf
Abbildung 6 Systemkomponenten im realen Aufbau

Komponentenwahl und deren Spezifizierung

Wechselrichter

Es wurde ein kostengünstiger, in seiner Leistung regelbarer Miniwechselrichter gesucht, der mit Systemspannungen von 24-48V umgehen kann und gleichzeitig über einen integrierten NA-Schutz nach VDE-AR-N 4105 verfügt. Der INV 350-60 bzw. INV 500 – 90 von AE Conversion mit RS485 Schnittstelle genügt diesen Anforderungen. Bei einer maximalen DC seitigen Stromaufnahme von 11A erreicht er AC seitig bei einer Systemspannung von 32V ca. 300W bzw. bei 48V ca. 450W. Der Miniwechselrichter INV 350-60 RS 485 ist ab 250€ brutto excl. Versand und der INV 500-90 RS 485 für 297 € bis 320€ brutto excl. Versand erhältlich. Nachteilig ist der hohe Platzbedarf im Schaltschrank aufgrund der wasserdicht ausgeführten Anschlusskabel. Das neueste Modell von AE Conversion INV 315-50 (ab 150€ brutto) ist deutlich kleiner, verfügt aber über keine RS485 Schnittstelle sondern nr über eine kabellose Schnittstelle.

Protokoll und Kommunikation

Mit dem Miniwechselrichter kann über zwei verschiedene Protokolle kommuniziert werden:

1. KACO/Schueco Protokoll (ASCII String): bidirektionale Kommunikation

2. AESGI-Protokoll (HEX String): bidirektionale Kommunikation

Grundsätzlich ist die Kommunikation mit dem WR nur bei ausreichender Energieversorgung über die angeschlossenen PV Module bzw. Akkumulator möglich. Tritt eine Versorgungslücke ein, so sind die im WR gespeicherten Werte (z.B. Tagesenergieertrag) verloren. Ein Abschalten des MPP Tracking Modus im WR für den Betrieb an einer Konstantspannung aus einem Akkumulator ist nur mit dem AESGI Protokoll möglich (siehe Abschnitt AESGI Protokoll). Die Kommunikation erfolgt über die RS 485 Schnittstelle. Mehrere Wechselrichter können in Reihe an die serielle Kommunikation angeschlossen werden. Jeder WR besitzt eine WR-Adresse, die für eine eindeutige Kommunikation notwendig ist. In der Regel sind das die 3 letzten Stellen der Seriennummer. Alternativ ist es möglich, die Seriennummer sowie die Softwareversion schnell und komfortabel über das per Download frei erhältliche Programm AE Solar von AE Conversion herauszufinden. Hierfür sind folgende Anschlussdetails zu beachten: Für die Kommunikation werden nur zwei Adern (Paar3) des CAT 5 Kabels benötigt. Draht A des RS-485-Bus wird an Pin 6 angeschlossen und Draht B auf Pin 3. Zusätzlicher Pin 8 und der Kabelschirm werden an Erde angeschlossen, um gegen elektromagnetische Einflüsse zu schützen.

Datei:Abbildung 7 Anschluss der RS485 Schnittstelle des Wechselrichters.pdf
Abbildung 7 Anschluss der RS485 Schnittstelle des Wechselrichters

Um einen Kommunikation mit dem Computer herzustellen wird noch ein RS485 USB Adapter benötigt (z.B. Reichelt: RPI USB RS485 Raspberry Pi - USB-RS485-Schnittstelle, CH340C) den es für wenige Euro im Internet zu kaufen gibt. Für Kommunikationstests zwischen Computer und Wechselrichter empfiehlt sich das Programm HTherm, das frei zum Download im Internet erhältlich ist. Folgende Voreinstellungen sind für die serielle Kommunikation notwendig:

Serial port configuration
Baud rate 19200
Data bits 8
Parity None
Stop bits 1
Flow control None

Im Programm AE solar besteht nun, wie in nachfolgender Abbildung dargestellt, die Möglichkeit den WR über einen Suchlauf zu suchen und damit dessen WR Adresse zu ermitteln. Ebenfalls in der Abbildung dargestellt ist die Antwort des Programms AE Solar auf den Kommunikationstest.

Datei:Abbildung 8 Kommunikationstest mit dem Wechselrichter mit dem Programm AE Solar.pdf
Abbildung 8 Kommunikationstest mit dem Wechselrichter mit dem Programm AE Solar

Weiterhin besteht die Möglichkeit sich die Leistungsdaten in einer Verlaufsgraphik darstellen zu lassen oder die Wechselrichterleistung zu steuern. Der Standbyverbrauch beträgt ca. 30 mW (INV350-60).

3. Details KACO/(Schueco) Protokoll
Dieses Protokoll liefert vom Miniwechselrichter gemessene AC-Leistung, AC-Spannung, AC-Strom, Tagesenergie, DC-Leistung, DC-Spannung, DC-Strom, WR-Temperatur und WR-Status in einem einfach lesbaren ASCII String. Weiterhin ist es möglich dem WR eine Leistungsreduzierung in Prozent der Maximalleistung des WR vorzugeben Ursprüngliche Beschreibung und Aufschlüsselung des AESGI Protokolls sind zu finden unter: [1]

4. AESGI-Protokoll
Das AESGI Protokoll basiert im Gegensatz zum KACO Protokoll auf dem hexadezimalen Zahlensystem und hat den großen Vorteil, dass das MPP Tracking des Wechselrichters ausgeschalten und dieser somit optimal zum gesteuerten Entladen eines Akkumulators verwendet werden kann. Diese Option gibt es ab der Software Version 0.9.16. Grundlage für die hier dokumentierten Befehle stellt folgender Foreneintrag im Photovoltaikforum dar (S.8 Eintrag J. Becker 16. Juli 2016): [2]

Folgende Tabelle schlüsselt die wesentlichen Befehle auf, die umgewandelt in das hexadezimale Zahlensystem dem Wechselrichter direkt über die serielle Schnittstelle zugesendet werden kann.

Kurzzeichen Überschrift
<ID> zweistellige WR-Nummer
<_> Leerzeichen
<z> Prüfsumme
<LF> Zeilenumbruch (line feed)
<CR> Zeilenumbruch (carriage return)
Aufgabe Anfrage Antwort Bemerkung
Ausgabe Wechselrichtertyp #<ID>9<CR> <LF>*<ID>9_PV350W_z<CR> -
Statusabfrage #<ID>0<CR> ? -
Betriebsmodus setzen #<ID>B_m_uu.u<CR> <LF>*<ID>B_m_uu.u_z<CR> m = 0 = MPP-Modus,

m =2 = Spannungs- und Stromvorgabe uu.u abhängig vom Typ 20.0-60.0V oder 40.0-80.0V, bei Modus 0 immer 00.0 verwenden. Der WR reduziert im Modus 2 bei Erreichen der angegebenen Spannung (von oben) die Leistung bis auf Null (Eingangsstrom dann noch einige 10 mA!!!)

Leistungsreduzierung setzen #<ID>L_001<CR> <LF>*<ID>L_001_z<CR> nur im MPP-Modus sinnvoll,

(1-100%, hier 1% Ausgangsleistung)

Leistungsreduzierung abfragen #<ID>L<CR> <LF>*<ID>L_001_z hier 1% Ausgangsleistung
Stromvorgabe setzen #<ID>S_ii.i<CR> <LF>*<ID>S_ii.i_z ii.i -
Stromvorgabe abfragen #<ID>S<CR> <LF>*<ID>S_ii.i nur im Modus 2 sinnvoll!
aktuelle Messdaten abfragen #<ID>0<CR> <LF>*<ID>0___0_45.7_1.23____55_230.1_0.21____50_45___635_z>CR> (Beispiel)

von links nach rechts: 0 Status 45.7 Eingangsspannung V (oft sehr ungenau!) 1.23 Eingangsstrom A 55 Eingangsleistung W 230.1 Netzspannung V

Beispiele: Folgende Beispiele sind für einen Wechselrichter mit Wechselrichternummer 32, bei max. 60V:

1. WR auf Modus 2 setzen (Spannungs- und Stromvorgabe): Anfrage: #32B_m_60.0<CR> Antwort: <LF>*<ID>B_m_uu.u_z<CR>

2. WR Stromvorgabe setzen (um Leistung zu reduzieren): Anfrage: #32S_08.0<CR> Antwort: <LF>*<ID>S_ii.i_z ii.i

3. Statusabfrage WR Anfrage: #320 <CR> Antwort: ???

In HTherm werden oben genannte Befehle in Ascii in das Eingabefeld eingegeben und das Häkchen bei „HEX“ gesetzt sowie soll nach jeder gesendeten Zeile eine CR (carriage return) zum Abschluss der Zeile angehängt werden:

Datei:Abbildung 9 Kommunikation mit dem Wechselrichter über das Programm HTherm.pdf
Abbildung 9 Kommunikation mit dem Wechselrichter über das Programm HTherm

Die Leistungsanpassung erfolgt im Arduinocode unter Reiter „WR“ in der Funktion „sendPowerAESGI4(int P_WR_temp)“. Die Leistungsanpassung des Wechselrichters erfolgt durch die Vorgabe des Stromes. Der gesetzte Betriebsmodus 2 (Spannungs- und Stromvorgabe) geht nach Unterbrechung der Stromversorgung des Wechselrichters verloren. Quelle: [3]

Wirkungsgradkennlinie Wechselrichter

Die Datenauswertung der AC und DC seitigen Wechselrichterleistung ermöglicht die Berechnung des Wechselrichterwirkungsgrades in Abhängigkeit der Wechselrichterleistung. Es ist zu erkennen, dass der Wirkungsgrad erst ab einer Leistungsabgabe von ca. 90W bei durchschnittlich 91% liegt. Bei 23W ergeben sich 78% Wechselrichtungswirkungsgrad.

Datei:Abbildung 9.2 Messung der Wirkungsgradkennlinie des Wechselrichters INV 350-60 von AE Conversion.pdf
Abbildung 9.2 Messung der Wirkungsgradkennlinie des Wechselrichters INV 350-60 von AE Conversion

PV Module

Durch die um 90° versetzt angeordneten Dachhälften sind je zwei PV Module nach Südost und zwei PV Module nach Südwest gerichtet montiert (siehe Abbildung 2) und in Reihe angeschlossen (Un = 62,8V). In der Verwendung sind vier SW 260 poly Module mit 260Wp von Solarworld. Diese haben eine Abmessung von LxBxH von 1675mm*1001mm*33mm, wiegen jeweils 18kg und haben eine Nennspannung von Un = 31,4V und einen Nennstrom von In=8,37A. Die Dachbefestigung erfolgt mittels Nutensteinen auf jeweils zwei Modultrageschienen aus Aluminium. Diese wiederum sind pro Modulfeld mit sechs Dachhaken für Pfannenziegel an den Dachsparren festgeschraubt. Die Modulerdung erfolgt mithilfe eines 10mm^2 dicken grün-gelben Erdungskabel (Litze H07V-K 1 x 10 mm²), das im Haushaltsschaltschrank auf die Potenzialschiene aufgeklemmt ist. Zum Anschluss der Module wird ein Ölflexkabel 6mm^2 verwendet. Jeweils zwei Module sind im Schaltschrank in Reihe geschaltet. Ebenfalls möglich und kabelsparend ist die direkte Verschaltung der Module mittels PV Stecker (MC4 Stecker) auf dem Dach. Sehr benutzungsfreundlich sind die PV Stecker der Firma Weidmüller, für die keine Crimpzange zur Befestigung der PV Stecker am Kabel notwendig sind. Das Kabel wird abisoliert bis zum charakteristischen „Klick“ der Wielandstecker eingeschoben und sind irreversibel aber schnell und sicher am Kabel befestigt.

Laderegler

Durch die unterschiedliche Dachausrichtung sind im vorliegenden Projekt zwei Laderegler mit integriertem MPP Tracking in Verwendung. Es handelt sich um zwei Victron MPPT 100-15, die über eine Schnittstelle und eine tauschbare 20A Sicherung verfügen. Die Schnittstelle läuft bei Victron Energy unter dem Namen „VE.Direct serial communication“ und erlaubt den einfachen Zugriff auf die aktuellen Leistungsdaten des Ladereglers, diverse Ertragswerte und erlaubt die Einstellung der Batterieparameter sowie ein Update der Geräte-Software. Das „VE-Direct interface“ verfügt über zwei Kommunikationsmodi: den textbasierten Modus sowie den „hex“ basierten Modus. Im „hex“ basierten Modus ist es nicht nur möglich Daten des Ladereglers auszulesen, sondern auch Parameter und Einstellungen dem Laderegler vorzugeben. So ist bspw. eine Reduktion der Leistung von der übergeordneten Steuereinheit oder bei mehreren Ladereglern in einem System die Vorgabe eines Master bzw. Slaveladereglers möglich. Ausführliche Informationen zur Kommunikation finden sich im pdf „VE.Direct-Protocol“ sowie im dazugehörigen „Whitepaper“ unter: [4]. Zum physikalischen Anschluss der Schnittstelle verkauft Victron einen Schnittstellenwandler (VE.Direct to USB interface cable), der das 5V TTL Signal des Ladereglers auf den USB Standard umwandelt. Um eine Kommunikation mit dem Computer über die auf der Homepage verfügbare Software „VE Power Setup“ zu erlangen genügt ein einfacher TTL – USB Wandler, der z.B. hier für wenige Euros zu erstehen ist (z.B. cp2102, ft232rl). Mit der Software ist es inzwischen über eine moderne Benutzeroberfläche möglich, die aktuellen Betriebsdaten des Ladereglers auszulesen. Weiterhin ist es möglich die Gerätesoftware des Ladereglers zu aktualisieren und die entsprechenden Einstellwerte für den Schutz des angeschlossenen Akkumulators einzustellen. Anschluss der Schnittstelle Für eine bidirektionale Kommunikation ist folgender Anschluss vorzunehmen:

Datei:Abbildung 10 Schnittstelle Laderegler Victron MPPT 100-15.pdf
Abbildung 10 Schnittstelle Laderegler Victron MPPT 100-15

Entsprechend der abgebildeten Pinbelegung am Schnittstellenstecker des Ladereglers ist der Anschluss „A“ des TTL-USB Schnittstellenwandlers mit VE.Direct-TX zu verbinden und der Anschluss „B“ mit VE.Direct-RX. GND und Power+ bleiben offen. Folgendes Anschlusskabel sollte verwendet werden: Konfektionierte Litze Polzahl Gesamt 4 Rastermaß: 2 mm Im vorliegenden Projekt wird das Schnittstellensignal direkt ohne Umwandlung von der Schnittstelle an der Steuereinheit (Arduino) angeschlossen und ausgelesen. Folgende Einstellungen sind für die serielle Schnittstelle notwendig:

Serial port configuration
Baud rate 19200
Data bits 8
Parity None
Stop bits 1
Flow control None

Folgende Daten werden von der Steuereinheit (Arduino) von beiden

  • Ladereglern ausgelesen:
  • Laderegler Erzeugung
  • Laderegler Leistung
  • Laderegler Ladestrom
  • Laderegler Batteriespannung
  • Laderegler Status
  • Laderegler Errorcode

Vorgehensweise Anschluss und Einrichtung des Ladereglers

  • Zuerst wird der Laderegler an den Akkumulator angeschlossen, sodass dieser die Systemspannung erkennt. Danach an die PV Module. Im vorliegenden Projekt wird der Lastausgang des Ladereglers nicht benötigt, da die Intelligenz für den Tiefentladeschutz sowie der Überladeschutz für den Akkumulator im externen Batteriemanagementsystem integriert ist. Der Schematische Aufbau ist in folgender Abbildung dargestellt:
Datei:Abbildung 11 Anschluss Laderegler MPPT 100-15.pdf
Abbildung 11 Anschluss Laderegler MPPT 100-15
  • Zur Einrichtung des Ladereglers das Schnittstellenkabel mit USB Wandler wie im Abschnitt „Anschluss der Schnittstelle“ beschrieben verbinden.
  • Installation und Starten des Programms VE Power Setup von victron energy.
  • Über den Button „Connect to this Computer“ Verbindung zum Laderegler herstellen
  • In der Hauptansicht sind die aktuellen Werte des Ladereglers wie z.B. aktuelle Leistung, erzeugte Wattstunden, aktuelle Akkuspannung, aktueller Ladestrom und Ladereglerstatus (bulk (Batterie wird geladen), absorption ( Konstanstspannungsphase) , float (Ladeerhaltung) zu erkennen.
Datei:Abbildung 12 Hauptansicht Victron Connect.pdf
Abbildung 12 Hauptansicht Victron Connect
  • Über das Zahnrädchen in der rechten oberen Ecke kommt man zu den Einstellungen. Zuerst sollte die Firmware mit einem Klick auf „Update“ unter Reiter „Produkt-Info“ aktualisiert werden.
Datei:Abbildung 13 Aktualisierung der Firmware.pdf
Abbildung 13 Aktualisierung der Firmware
  • Unter Einstellungen werden nun für den LiFePo Akkumulator mit neun Zellen folgende Parameter eingestellt:
Eigenschaft Parameter
Batteriespannung 24V
Max. Ladestrom 15A
Konstantspannung 31,05V
Maximale Konstantspannungsdauer 30min
Erhaltungsspannung 31,05V
Ausgleichsspannung 0V
Datei:Abbildung 14 Einstellung Akkumulatorparameter.pdf
Abbildung 14 Einstellung Akkumulatorparameter
  • Unter dem Reiter „TX“ Port „normale Kommunikation“ einstellen
  • Unter dem Reiter „RX“ Port „Ein/Aus Fernsteuerung“ einstellen
  • Unter dem Lastausgang „Immer aus“ einstellen
  • Straßenlichtfunktion „aus“ einstellen

Akkumulator

Im vorliegenden Projekt werden neun Zellen a 3,2V des Lithium-Eisen-Mangan-Phosphat Akkumulator von Innopower INNO-LFMP 60 AH (1,73kWh) verwendet. Diese wurden inklusive Transport im Jahr 2018 für 313€/kWh netto bezogen. Detaillierte Infos zum Aufbau, Verkabelung und Anschluss an das BMS ist in der Doku auf [5] in der Rubrik BMS 24V im Kapitel Schematischer Aufbau, Komponenten Akkumulator zu finden.

Arduino Board, Mosfetplatine, Stromversorgung

ArduinoBoard

Die Steuerzentrale des Solarspeichers ist das Arduino Board. Hier laufen alle Informationen aus den Teilkomponenten wie Laderegler, Modbuszähler, Batteriemanagementsystem und Temperatursensoren zusammen. Das Arduino Board errechnet die jeweils aktuelle Leistungsvorgabe für den Wechselrichter und stellt dem Raspberry Pi die notwendigen Daten zur Visualisierung über das Node Red User Interface bzw. Volkszähler Frontend zur Verfügung. Es wird ein Arduino Mega 2560 verwendet, das über vier serielle Hardware-Schnittstellen verfügt.

  • Schnittstelle 1: Binärprotokoll zum BMS
  • Schnittstelle 2: Modbus-Protokoll zum Modbuszähler
  • Schnittstelle 3: VE.direct Serial Communication zum Laderegler
  • Schnittstelle 4: Textbasiertes Protokoll zum Raspberry Pi
  • Software Schnittstelle 1: RS 485 zum Wechselrichter

Die Zusammenhänge und Kommunikationsprotokolle der einzelnen Komponenten des Solarspeichers sind in Abbildung 5 zu erkennen. Das Arduinoboard sitzt in einem Kunststoffgehäuse direkt unter der sogenannten Arduinoplatine und ist mit allen Pins mit dieser verbunden. Auf der Arduinoplatine sitzen die Pegelwandler (MAX 485) für die Kommunikation mit Wechselrichter (Senden) und Modbuszähler (Empfangen), RJ45 Buchsen für den Anschluss des Wechselrichters sowie des Modbuszählers per Cat5 Kabel, die Erzeugung einer Konstantspannung für die Logik auf der Mosfetplatine, der Sicherungshalter zur Absicherung des Spannungsteilers zur Batteriespannungsmessung, ein R-C Glied für die Glättung des Steuersignals des Heizstabes, ein Reset Taster sowie ein Analog-Digitalwandler für vier analoge Eingänge. In folgender Abbildung ist das Platinenlayout mit den entsprechenden Platinenschnittstellen dargestellt.

Die Klemmen Stromversorgung DC (5V), Eingang Stromsensor und Eingang analoge Signale wird derzeit nicht benutzt und stammen noch aus einer früheren Projektphase. Der Schaltplan sowie das Boardlayout sind hier als .zip downloadbar. [www.????.de]

Mosfetplatine

Die Aufgabe der Mosfetplatine besteht darin große Stromverbraucher wie die angeschlossenen Wechselrichter sowie den Schaltschranklüfter und die Heizstabansteuerung, gesteuert über das Arduinoboard, an- und auszuschalten. Die Platine ist für einen maximalen Stromfluss von maximal 11A bei 33V für die Versorgung der Wechselrichter ausgelegt. Jeweils zwei Mosfets (IRL1404-Z; Leistungs-MOSFET N-Ch TO-220AB 40V 160A) schalten parallel einen Ausgang. Die maximale Strombelastbarkeit eines Mosfets beträgt 75A (sofern 17W Abwärme zuverlässig abgeführt werden können, auf der Mosfetplatine ist dies nicht vorgesehen). Die Leistungsansteuerung der Wechselrichter ist so programmiert, dass die Mosfets wenn möglich nicht unter Last trennen. Vier LED’s zeigen optisch den jeweils aktuellen Schaltzustand der Mosfets an. Über zwei Potentiometer und einer logischen Schaltung ist eine Hardwareabschaltung für die Vermeidung der Überladung bzw. Tiefentladung vorgesehen. Es kann somit die Hysterese des An- und Ausschaltens der Mosfets eingestellt werden. Diese logische Schaltung (Komparator, Fliflop, And) benötigt eine Konstantspannung, die, neben der normalen Betriebsspannung von 5V über ein Flachbandkabel vom Arduino Board der Mosfetplatine zur Verfügung gestellt wird. Dieser hardwareseitige Tiefentladeschutz (und zusätzlich der Überladeschutz) wird derzeit primär über das BMS Controller- bzw. Leistungsboard übernommen. Die Hardwareabschaltung auf der Mosfetplatine kommt aus einer früheren Projektphase ohne Batteriemanagementsystem und dient nun als sogenannte zweite hardwareseitige Hintersicherung des Tiefentladeschutzes. In folgender Abbildung ist das Platinenlayout mit den entsprechenden Platinenschnittstellen dargestellt.

Datei:Abbildung 16 Mosfetplatine und deren Schnittstellen.pdf
Abbildung 16 Mosfetplatine und deren Schnittstellen

Der Schaltplan sowie das Boardlayout sind hier als .zip downloadbar. Arduino- und Mosfetplatine haben eine Kantenlänge von 110 mm x 110mm und wurden bei Platinenbelichter incl. Bohrungen für jeweils 22€ hergestellt. Die Bestückung erfolgte von Hand. Die Materialkosten incl. Bauteile belaufen sich pro Platine incl. Platinenherstellung auf 70€. Die Platinen wurden an das Gehäuse Bopla ET-217, 122x120x55 angepasst, sodass an allen vier Ecken die Platine ausgespart werden muss. Platinenbelichter konnte diese Aussparungen nicht selbst herstellen. Die Platine wird mit vier Abstandsbolzen und M3 Schräubchen im Gehäuse befestigt. An das Gehäuse wird zur Hutschienenbefestigung mithilfe metrischer Schrauben und Muttern zwei Hutschienenhalter BOPLA TSH 35 befestigt. Die notwendigen Einzelteile sind in der Exceltabelle „PV_Berechnung_Energiespeicher“ (siehe Kapitel "Berechnung, Simulation, Auslegung, Kostenberechnung, Optimierung" in dieser Doku) im Registerblatt „Kosten Arduino- und Mosfetplatine“ im Detail einzusehen.

Quellcode Arduinoboard

Um über die serielle Schnittstelle zwischen BMS und Arduino-Board im Binärprotokoll (Schnittstelle Nummer 3 in Abbildung 5) im Intervall von (0,25sec-1sec) alle relevanten Daten ohne Datenverlust übertragen zu können, ist es derzeit noch notwendig im Arduino den seriellen Puffer für den Dateneingang (Receive)zu vergrößern. Dies geschieht durch Änderung der Variable SERIAL_RX_BUFFER_SIZE von 64 auf 128 (byte) in einem beliebigen Texteditor (z.B. Notepad++, gesamte RAM-Speichergröße des Arduino Mega beträgt 8kB). Der zusätzliche Speicher für die vier Schnittstellen wird vom Gesamtspeicher abgezogen. Eine Anleitung ist unter folgendem Link zu finden:
[6]
Je nach Installation ist die Datei „HardwareSerial.h“ auch unter folgendem Verzeichnis zu finden:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino
VORSICHT: Die Änderung des seriellen Puffers wirkt sich global auf die Kompilierungssoftware Arduino aus und somit auf jedes kompilierte Projekt. Der Quellcode für das Arduinoboard ist in der gleichnamigen und frei zur Verfügung stehenden Programmierumgebung Arduino geschrieben und ist derzeit strukturiert in verschiedene Programmteile, die in den folgenden Tabs mit folgenden Funktionen zu finden sind:

Tabname Funktionsname Beschreibung
Hauptprogramm Void setup()
  • Definition globaler Variablen.
  • Definition aller verwendenten hardware und softwareseitigen Schnittstellen und Pins
ADS1115 void ADS1115()
  • Auslesen des A/D Wandlers ADS1115 für Akkumulatorspannung, Schaltschranktemperatur und Boilertemperatur
BMS void BMS_logging()
  • Auswerten der empfangenen Daten vom BMS und Übergabe an Variablen zur weiteren Verwendung im Gesamtcode
BMS void serialEvent_BMS()
  • Empfangen der Daten vom BMS aus dem Puffer der Schnittstelle. Vollständig empfangene Zeilen sind mit einer /n (newline) getrennt
Batterie void battState()
  • Definition der Ein- und Ausschaltschwellen für diverse Verbraucher wie Wechselrichter, Heizstab, Schaltschranklüfter, Mosfetplatine
Heizstab void Heizstab()
  • Ein- und Ausschaltkriterium Regelgröße
Heizstab void Heizstab_control()
  • Regelroutine für Heizstab in Abhängigkeit des Ladestromes des Akkumulators
LR (Laderegler) void serialEvent_LR()
  • Empfangen der Daten vom Laderegler aus dem Puffer der Schnittstelle. Vollständig empfangene Zeilen sind mit einer /n (newline) getrennt
Modbus boolean modbus()
  • Empfangen der Daten von den Modbuszählern aus dem Puffer der Schnittstelle. Routine wird erst ausgeführt, wenn ein vollständiger Datensatz im Puffer vorhanden ist.
Modbus uint32_t byte_to_uint32(byte byteArray(), byte pos)
  • Variablenumwandlung von byte in Integer
Modbus float byte_to_float(byte byteArray(), byte pos)
  • Variablenumwandlung von byte in float
Output void send_raspberry()
  • Ausgabe aller Daten über die Schnittstelle, die im Raspberry zum Loggen oder zum Darstellen im UI von Node Red erscheinen sollen
Updates -
  • Möglichkeit der Dokumnetation neuer Codeänderungen
WR (Wechselrichter) void calcPower()
  • Ständige Neuberechnung des Wechselrichtersollwertes in Abhängigkeit des Systemstatus (tag oder nachtbetrieb, geregelte Einspeisung oder Volleinspeisung
WR (Wechselrichter) void sendPowerAESGI4(int P_WR_temp)
  • Senden der Daten zur Leistungsreduktion an den Wechselrichter umgerechnet in Stromstärke.
WR (Wechselrichter) Loop
  • Systematischer Aufruf der obigen Funktionen in den jeweiligen Tabs des Programmiercodes
Datei:Abbildung 18 Kombinierte Arduino- und Mosfetplatine.pdf
Abbildung 18 Kombinierte Arduino- und Mosfetplatine

Weiterentwicklung

In Zukunft soll aus den bisher zwei Einzelplatinen Arduinoplatine und Mosfetplatine eine gemeinsame Platine entstehen, die mit 24V- 48V Systemen kompatibel ist. Die Vereinigung vereinfacht und verbilligt die Leiterplattenherstellung und Platinenbestückung sowie die Gehäusekonstruktion. Der Verkabelungsaufwand innerhalb des Schaltschranks minimiert sich. Folgende neuen Features sollen zusätzlich integriert werden:

  • Alle Anschlüsse werden mit einem geeignetem Steckersystem ausgestattet
  • Integration eines seriellen Anschlusses für das Datenkabel vom BMS und Trennung über einen elektronischen Isolator (Dual-Channel Digital Isolators ADuM1200) um Störströme zu vermeiden
  • Nutzung der vorhandenen RJ45 Buchse als softwareseitige Schnittstelle (software serial) für den Wechselrichter
  • Anschlussmöglichkeit für Display und Drehzahlsteller (Rotary Encoder) an den „interrupt pins“ des Arduino
  • Integration einer bidirektionalen Kommunikation zu den Victron Ladereglern

Stromversorgung

Die Mosfetplatine bezieht die Versorgungsspannung über ein Flachbandkabel direkt von der Arduinoplatine. Die Arduinoplatine wiederum kann entweder direkt mit 7,5 V Gleichspannung versorgt werden oder wird per USB Kabel mit dem Raspberry Pi verbunden und erhält darüber seine Stromversorgung. Letztere Variante entspricht dem vorliegenden Schaltschrankaufbau. Das Raspberry Pi wiederum wird über ein Hutschienennetzteil versorgt.

Raspberry Pi

Das Raspberry Pi besitzt die Aufgabe alle relevanten Parameter und Messwerte des Systems zu loggen und auf einer SD Karte zu sichern und über das Volkszähler Frontend auszugeben. Eine regelmäßige Sicherheitskopie der Datenbank erfolgt auf einen USB Stick. Weiterhin stellt das Raspberry Informationen für das Node-Red User Interface (UI) bereit und übernimmt die Steuerung der über Wlan steuerbaren Home Automationsaufgaben wie z.B. schaltbare Steckdosen uvm. Weiterhin ist das Raspberry für die Fehlerauswertung des Gesamtsystems zuständig und informiert den Besitzer z.B. per Mail oder Twitter über dessen Status. Das Raspberry Pi wird zur Hutschienenmontage in folgendem Gehäuse untergebracht: (Voelkner: RASPBERRY HUTSCHIENEN-GEH RASPB B+2B3B [2])

Datei:Abbildung 19 Hutschienengehäuse für Raspberry Pi.pdf
Abbildung 19 Hutschienengehäuse für Raspberry Pi [3]

Manueller Reset/Neustart des Raspberry Pi‘s

Um bei Wartungszwecken das Gesamtsystem schnell ausschalten bzw. herunterfahren und neu starten zu können wird in das Gehäuse des Raspberry Pis zwei Schalter installiert (Herunterfahren/OFF und Reset/ON). Das dazu notwendige Platinenlayout ist unter folgendem Link verfügbar: [7] Nachfolgend dargestellt ist der Schaltplan mit den erwähnten zwei Tastern S1 (Herunterfahren/OFF) und S2 (reset/ON).

Datei:Abbildung 20 Schaltplan für Taster Herunterfahren und Reset Raspberry.pdf
Abbildung 20 Schaltplan für Taster Herunterfahren und Reset Raspberry

Der Reset-Taster S2 löst einen harten Reset des BCM 2835 aus. Weiterhin ist es möglich mit diesem Reset-Taster das Raspberry nach dem herunterfahren wieder aufzuwecken. Der Resettaster verbindet im Falle des Resets beim Raspberry 3 GND mit RUN. Je nach Raspberryversion sind diese zwei direkt nebeneinander angeordneten Pins an anderer Stelle auf der Platine verortet. Ein direktes Verbinden der Pins führt zu einem sofortigen Reset bzw. Anschalten des Raspberrie Pis. In der Regel muss zur Benutzung dieser Pins eine Zweierpinleiste eingelötet werden. Um das Herunterfahren (bzw. ebenfalls Neustart) des Raspberrys zu initiieren wird der PIN GPIO4 mit dem Taster S1 über den Widerstand R2 330Ohm auf Masse gezogen. Ist der Taster geöffnet liegt an GPIO 4 ein high Signal an. Damit das Raspberry den Pin GPIO 4 kontinuierlich überwacht, wird ein zusätzliches Python-Skript benötigt. Erstellung und Installation sind unter folgendem Link erklärt:
[8] Wird der Herunterfahren/OFF Schalter für mindestens 0,5 Sekunden und kürzer als 3 Sekunden gedrückt, initiiert das Python-Skript einen Neustart des Systems. Wird der Herunterfahren/OFF Schalter jedoch für mehr als 3 Sekunden betätigt, fährt das System herunter und kann anschließend von der Stromversorgung getrennt oder über den Reset Button wieder aufgeweckt werden. Da das Raspberry Pi über das USB Kabel die Haupsteuereinheit (Arduino Board) mit Strom versorgt wird, wird dieses dann ebenfalls ausgeschalten.

Auswahl sd Karte

Die Anzahl der Schreibvorgänge auf der sd Karte wird bestimmt über die Anzahl der geloggten Kanäle (Systemparameter) sowie über das eingestellte Log-Intervall von volkszähler. Es hat sich herausgestellt, dass handelsübliche (Consumer) Micro-SD Karten, die direkt in das Raspberry eingesteckt werden zum Teil schon nach kürzester Zeit völlig unbrauchbar werden und ohne Backup sämtliche Logdaten verloren sind. Im industriellen Bereich werden spezielle SD Karten verwendet, die deutlich robuster gegen häufige Schreibzugriffe und äußere Umwelteinflüsse sind. Diese industriellen SD Karten (industrial grade) werden eingeteilt in die MLC- (Multi-Level Cell) und die SLC (Single-Level Cell) Technologie. Detaillierte Infos sind zu finden unter: https://www.elektronikpraxis.vogel.de/zehn-gruende-die-fuer-industrie-sd-karten-sprechen-a-284360/ Vorteile der industriellen SD Karten im Schnellüberblick:

  • hohe Zuverlässigkeit und Langlebigkeit
  • Schreibzyklen von 100.000 (SLC Flash) und für MLC-Flash (10.000) statt 200-300 in neueren SD Karten für Consumer-Anwendungen
  • aufwändige Fehlerkorrekturalgorithmen (z.B. Hamming Code) um Lese- bzw. Schreibfehlern vorzubeugen
  • gleichmäßige Verteilung der Schreibzugriffe auf alle Flash-Zellen durch das Wear-Leveling Verfahren.
  • Sicherer Schutz bei Stromausfall durch markieren fehlerhafter Sektoren
  • Rundum verschweißtes Gehäuse lässt SD Karte unempfindlich gegen äußere Spannungseinflüsse werden
  • Vergrößerte Mechanische Stabilität
  • Extra dicke und stabile Goldauflage auf Kontakten zur Erhöhung der Kontaktsicherheit und Lebensdauer

Im Projekt wurde folgende SD Karte eingesetzt: Transcend micro SDHC Card C10 Industrial 16GB für 30€ incl. Versand und MwSt.

Betriebssysteminstallation

Auf [9] wird ein Image für den Raspberry Pi angeboten, das die vollständige Betriebssysteminstallation incl. Volkszählersoftware enthält. Installation und Einrichtung sind unter folgendem Link beschrieben [10].
Folgende Skripte müssen nach der Betriebssysteminstallation noch manuell hinzugefügt werden:

Wpa_supplicant.conf

Dieses Skript beinhaltet alle Informationen über das Netzwerk, in das sich das Wlan des Raspberrys einwählen soll.

  1. Ausführbare Datei anlegen unter /etc/wpa_supplicant/ oder im Boot Verzeichnis der Linux Installation
  2. Folgender Dateiinhalt in einer Datei namens Wpa_supplicant mit der Endung .conf ablegen. Dabei unter dem Platzhalter >xxx< die jeweiligen Wlan Logindaten eintragen:
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid=">xxx<"
    psk=">xxx<"
    key_mgmt=>xxx<
}

network={
    ssid=">xxx<"
    psk=">xxx<"
    key_mgmt=>xxx<
}

3. Beim nächsten Neustart des Raspberry Pi's wird das Skript ausgeführt

Vzlogger.conf

Mit diesem Skript wird die Verknüpfung zwischen der eindeutigen UUID eines Kanals und den eingehenden Daten von der seriellen Schnittstelle hergestellt. (Ausführliche Erklärung siehe Abschnitt „Einrichtung der Kanäle im „web Frontend“ und in der Konfigurationsdatei „vzloggerconf“ unter 24-48V BMS

Push-server.service

Dieses Skript aktiviert den sogenannten push-Server (siehe Abschnitt „Starten des vzloggers über WinSCP“ bzw. unter [11])

Shutdownbutton.py

Siehe Abschnitt "Manueller Reset/Neustart des Raspberry Pi’s" in dieser Dokumentation

Vzsqlbackup.sh

Dieses Skript legt eine wöchentliche Sicherung der einige hundert MB großen Volkszähler-Datenbank mit Speicherdatum auf einem USB Stick an. Insgesamt bleiben immer die zwei älteren abgespeicherten Datenbankspeicherstände erhalten. Alle älteren werden gelöscht. Das Skript vzsqlbackup.sh wird wöchentlich automatisch ausgeführt, angestoßen von folgendem Befehl, der in der, auf einer Linuxinstallation existierenden Datei Crontab, angelegt werden muss. Hierfür die Eingabeaufforderung unter WinSCP starten, um per Kommandozeile über Menü --> Befehle --> „In PuTTY öffnen“ folgendes einzutippen: (siehe auch Beschreibung unter 24-48V_BMS BMS Doku Unterkapitel “ Starten des vzloggers über WinSCP„ :

# crontab öffnen
crontab -e							
# Folgende Zeile eintragen:
# jeden Sonntag um 22Uhr wird ein Backup erzeugt
00 22 * * 0 /usr/local/bin/raspiBackup.sh

Zum Erstellen des Skripts vzsqlbackup.sh wird zuerst eine leere, mit root Rechten ausführbare Datei angelegt, die unter einem der folgenden Links abgespeichert sein muss:

  1. System-Scripte mit Root-Rechten: "/usr/local/sbin"
  2. Allgemeine User-Scripte mit Benutzer-Rechten: "/usr/local/bin"

Folgender Inhalt wird im Skript niedergeschrieben. Für >xxx< beliebiges Passwort vergeben. Es erfolgt beim Anlegen des Backups keine Passwortabfrage, da dies ja automatisch ausgeführt werden soll.

#USB Stick mounten
mount /dev/sda1 /mnt/stick

#Backupdatei anlegen und abspeichern
mysqldump -u vz-admin ->xxx< volkszaehler > /mnt/stick/pi/mysqlvzbackup-$(date +%Y%m%d-%H%M%S).sql

#älteste Datei im Verzeichnis löschen
ls -tr /mnt/stick/pi/mysqlvzbackup* | head -n -2 | xargs rm -v

#Ende Skript
exit 0
Datenübergabe Arduinoboard zu Raspberry Pi

Zum Einrichten der Kanäle im Raspberry Pi siehe Abschntt Vzlogger.conf. Folgende Kanäle werden derzeit vom Arduinoboard an das Raspberry übergeben:

  • Batterie Spannung von Laderegler 1
  • Energieerzeugung Laderegler 1 + 2
  • Leistung Laderegler 1 + 2
  • Summe Leistung Laderegler 1 + 2
  • Ladestrom Laderegler 1 + 2
  • Summe Energieerzeugung Laderegler 1+2
  • Summe Ladestrom Laderegler 1 + 2
  • Ladestatus Laderegler 1 + 2
  • Errorstatus Laderegler 1 + 2
  • Vorgabewert Heizstabansteuerung
  • Saldierte Leistung Zweirichtungszähler
  • Leistungsbezug Zweirichtungszähler
  • Leistungseinspeisung Zweirichtungszähler
  • Erzeugungsleistung PV
  • Einspeiseleistung PV
  • Temperatur Schaltschrank
  • Temperatur Boiler
  • Sollwert Leistung Wechselrichter
  • Sollwert Stromaufnahme Wechselrichter
  • Balancing Status
  • SoC (State of Charge)
  • Batteriespannung
  • Lade-/Entladestrom
  • Temperatur Batterie 1 + 2
  • Zellspannung 1 - 9
Einrichtung der Kanäle im „web Frontend“ und in der Konfigurationsdatei „vzloggerconf"

Das Einrichten von Kanälen im „web Frontend“ sowie in der Konfigurationsdatei „vzloggerconf“, die Bedienung des Web Frontends, das Starten des „vzloggers über WinSCP und letztendlich den Export von Datenbanksätzen ist ausführlich beschrieben unter der Dokumentation 24-48V_BMS im Kapitel 5.

Übertragungsgeschwindigkeit der seriellen Schnittstelle zwischen Arduino und Raspberry

Um die Übertragungsgeschwindigkeit der seriellen Schnittstelle zwischen Arduino und Raspberry (vz logger) zu erhöhen (Standard 9600) bzw. an den derzeitigen Arduinocode anzupassen (115200) muss folgende Zeile nach nach der Zeile "device" eingefügt werden:

"device": "/dev/ttyACM0",
"baudrate": 115200,
            "aggtime": 30,
Arduino komfortabel über das Raspberry Pi flashen

Um einen neuen Arduinocode komfortabel direkt vom Raspberry Pi auf das Arduino zu flashen, sind folgende Schritte zu befolgen:

  1. Um den Vz logger zu stoppen, folgende Zeile in das Eingbefenster (putty) in WinSCP eingeben:
sudo systemctl stop vzlogger
  1. Navigiere in das “home” Verzeichnis und liste alle vorhandenen Ordner auf mit:
ls
#In Unterverzeichnis „Arduino“ wechseln (change directory):

cd Arduino

#Code kompilieren mit richtigem Dateinamen (in diesem Falle PV-System_20190629):

arduino-cli compile --fqbn arduino:avr:mega PV-System_20190629

#Code auf Arduino flashen mit richtigem Dateinamen (in diesem Falle PV-System_20190629):

arduino-cli upload --fqbn arduino:avr:mega --port /dev/ttyACM0 20190705_Heizstabregelung_Volleinspeisung/

#vz logger starten

sudo systemctl start vzlogger <syntaxhighlight lang="c"> Eine ausführliche Anleitung zur Installation der benötigten Pakete um vom Raspberry aus kompilieren zu können ist unter folgendem Link zu finden [12]

  1. Linktext, Wiki in Arbeit....
  2. Voelkner,.
  3. Voelkner,.