Software Blockdiagram Übersicht
Die Software wurde komplett in Micro-Python geschrieben und besteht aus
mehreren Dateien. Um sie in die Zielhardware zu laden, benötigt man eine
entsprechende Entwicklungsumgebung. mit dem Raspberry-Pi wird
üblicherweise Thonny
für Micropython verwendet. Ebenfalls muss erst das Micro-Python Binary
auf den Raspberry-Pi Pico (oder Zero bzw. RP2040) geladen werden.
Das Blockschema zeigt die ungefähren Abläufe. Diese sind aber auf
verschiedene Dateien verteilt. So ist z.B. im mppt_hw.py der gezeigte
10ms Intervall, welcher die AD Wandler liest und filtert. Die Paneel
Spannung wird alle 10ms verarbeitet, da der PI Regler den Strom
einstellt und eine schnellere Reaktion braucht. Die anderen Werde werden
nur alle 50ms verarbeitet.
Die Iteration (auch approximative Annäherung genannt) sucht den
größten Ladestrom. Dieser ist vom Ladezustand und der Sonneneinstrahlung
abhängig. Ist die Batterie nahezu voll geladen, fließt nur wenig Strom
und die Strom-Einstellung hat kaum noch Einfluss.
Weitere Hardware basierte Funktionen und Abläufe werden in mppt_hw.py verarbeitet.
Im main.py werden dann alle 500ms die Werte gelesen, skaliert,
gerundet und angezeigt. Auch die Ein- und Ausgaben über den USB werden
da verarbeitet sowie die Parameter aus der Datei params.py gelesen und
geschrieben.
Die Datei ads1x15.py ist die Schnittstelle zum AD Wandler und ist im Internet frei verfügbar.
Die Datei mppt_tft.py steuert das 1.8-Inch TFT Display. Da werden
auch die Grafiken erzeugt und ein eigener 12x16-Bit Font schreibt die
Zahlen und die Einheiten dazu auf das Display. Der vom Micro-Python
unterstützte 8x8-Pixel Font ist leider etwas klein und unschön. Man kann
ihn zwar hoch-skalieren, aber nur mit Ganzzahlen, z.B. x2 = 16x16, x3 =
24x24...
Die Datei tft18.py ist der Treiber für das Display. Darin ist die
Bildaufbereitung mit der Python Frame-Buffer Funktion und die Steuerung
und Initialisierung der Hardware. Die Datei ist aus dem Internet und man
findet dazu auch die entsprechende Dokumentation. Die Datei wurde etwas
erweitert z.B. mit einer Funktion zur Farbcodierung oder auch die
Orientierung (0°, 90°, 180°, 270°).
CPU Programmieren bzw. Software laden
In der folgenden Zip Datei sind alle nötigen
Python Dateien vorhanden. Diese werden mit Thonny in die
Ziel-CPU gespeichert. Dazu im Thonny Menü Ansicht die Option Dateien
wählen (falls nicht schon gewählt. Nun erscheinen im linken Fenster Oben
die Dateien des PCs und Unten die des Raspberry-Pi. Dateien markieren
(außer main.py), rechte Maustaste, dann Upload.
Die Datei main.py wird als letzte geladen. Dieser Dateiname wird
nämlich nach dem Einschalten automatisch geladen und gestartet. Das
heißt, wenn diese Datei mal gespeichert und gestartet ist, verliert man
den Zugriff mit Thonny. Und weil das so ist, wurde am Anfang des Codes
eine Pause von einer Sekunde programmiert. So kann man unmittelbar nach
dem Start bzw. Reset auf Thonny die Stopptaste klicken um abzubrechen
und wieder Zugriff zu erhalten.
Konfiguration
Hinter dem Kunststoffdeckel auf der Oberseite ist die USB Buchse vom
RP2040 (bzw. Raspberry PI Zero) und gleich darunter eine kleine Taste.
Mit dieser kann man ein Menü aufrufen um die Strom-Sensoren auf Null zu
stellen.

Ebenfalls sichtbar das kleine Loch im Gehäuse (Unten Links im Bild). Es
ermöglicht die maximale Spannung von 14.0V des Ladereglers abzugleichen
ohne das Gehäuse zu öffnen. Das ist die maximale Batteriespannung mit
welcher das Paneel die Batterie lädt. 14.1V bzw. 2.35V pro Zelle ist das
absolute Maximum für ein Blei-Säure-Batterie.
Im weiteren kann man via USB Anschluss auf einem PC oder auch mit dem Handy die Konfiguration vornehmen. Siehe dazu die Konfiguration mit PC bzw. mit dem Smart Phone in anderen Projekten.
Da im Betrieb am USB 5V anliegen, kann es sein, dass das Smart-Phone in
den Lademodus geht und den USB nicht zur Kommunikation erkennt. In
diesem Fall die Steckklemme abziehen um den Strom zu unterbrechen,
danach das Smart-Phone einstecken und die Steckklemme wieder
einstecken.
Folgende Parameter bzw. Kommandos sind damit einstellbar bzw. durch die Eingabe von ? abrufbar:
?
QUIT beendet und startet neu
LIST listet alle aktuellen Parameter
SHOW Zeigt Regelparameter auf der Konsole
NEGI Zeigt negativen Strom zum Null Abgleich
ZERO Automatischer Null Abgleich
SAVE speichert alle Parameter in der prms.py Datei
XX=VV Setzt Parameter XX auf den Wert VV
Gibt man "LIST" ein, erhält man folgendes:
LIST
Actual prms:
TN= 18.00 PVU Nominal PV Spannung
TP= 8.00 PVU Prop.Band V (CC = 50% x (TN/TP))
TI= 0.30 PVU Integral Gain
CL= 0.50 PVU CC Lin, 0=Linear, 1=Exp.
TS= 5.00 Tracking Span V (TN +/- 0.5xTS)
TT= 0.05 Tracking Gain V/Step
BM= 25 TFT Helligkeit Min %
U0= 25.13 PV Spannung Endwert
U1= 18.10 Batterie Spannung Endwert
Z0= 1.171 Null Strommessung PV
Z1= 1.158 Null Strommessung PV Einspeisung
Z2= 1.165 Null Strommessung Ladegeraet
Z3= 2.477 Null Strommessung Verbraucher
S0= 0.375 Steilheit Strommessung PV (0.4V/A)
S1= 0.390 St. Strom PV Einspeisung in Batterie
S2= 0.395 Steilheit Strommessung Ladegeraet
S3= 0.098 Steilheit Strommessung Verbraucher (0.1V/A)
SAVE eingeben zum zu speichern
Nach der Eingabe werden die Parameter sofort aktiv. Man kann so also direkt optimieren und sehen wie es reagiert.
Z0...Z3 Die Null-Werte Z0...Z3 können automatisch
kalibriert werden mit dem Kommando "ZERO". Vorher müssen aber PV,
Netzteil und alle Verbraucher abgeschaltet werden. Auf der Übersicht gibt es auch eine Anleitung mit der Taste.
S0...S3, U0, U1 Die Skalier-Werte für die Strommessung
S0...S3 sowie die Spannungsmessung U0, U1 müssen im entsprechenden
Stromkreis mit einem Volt- bzw. Ampèremeter gemessen und abgeglichen
werden.
TN Der Wert für die Nominal PV Spannung ist im
Datenblatt des Solar Paneels ersichtlich. Es ist die Spannung bei
welcher es die größte Leistung erbringt. Also irgendwo zwischen 14V
(Max. Batteriespannung) und der Leerlauf Spannung (meist 22V oder so).
Das ist die Spannung welche erst als Soll Spannung angenommen wird bevor
das Tracking beginnt.
TP, TI, CL Optimierng des PI Reglers. Dieser regelt die Soll-Spannung des Paneels. Siehe auch das Projekt Solar Booster.
- Der TP Wert ist die Bandbreite der Spannung für die Regelung. Ein
kleinerer Wert bedeutet mehr Reaktion, wird aber auch instabil. Das
sieht man dann an der LED vom Spannungsregler, welche dann blinkt oder
flackert.
- Der TI Wert ist die Regel-Geschwindigkeit. Ein größerer Wert ist schneller, wird aber auch instabil.
- Der CL Wert bewirkt eine Lineare (0.0) oder Exponentielle (1.0)
Regelung. Exponentiell heißt, bei kleinen Leistungen weniger starke
Regelung als bei höheren Leistungen. 0.5 scheint etwa gut zu sein.
TS, TT Optimiertung der Iteration zur Bestimmung der optimalen Paneel Spannung.
- Der TS Wert ist die maximale Bandbreite von der Nominalspannung.
Also z.B. bei 18V Nominal und TS = 5V kann die Iteration zwischen 15.5V
und 20.5V Liegen (= max. 5V Differenz).
- Der TT Wert bestimmt den Spannungsschritt bzw. die Geschwindigkeit
um wie viel die Soll-Spannung pro Schritt (2 Sek.) verändert wird.
Steigt der Strom, läuft es in diese Richtung weiter. Sinkt er, ändert
die Richtung.
MB bestimmt die minimale Helligkeit des Displays. 25%
bedeutet dass wenn die Sonne nicht scheint, das Dispaly auf 25%
Helligkeit abdunkelt. Ansonsten wird es je nach PV Spannung zwischen dem
MB Wert und 100% beleuchtet.
Hardware abgleichen (kalibrieren)
Dazu benötigt man ein Netzteil, ein Ampèremeter, ein Voltmeter und
eine Last, mit welcher man 2-3A
bei 12V belasten kann, also etwa 4-6 Ohm und ca. 25 Watt. Es kann auch
eine
12V 20W Glühlampe sein. Und zum Messen geht auch ein Multimeter mit
welchem man Strom und Spannung einzeln abgleichen kann. Da die Anzeige
gefiltert ist, muss man immer ein paar Sekunden warten bis der richtige
Wert stabil angezeigt wird. Man kann wie
Folgt vorgehen:
- 12V-13V am Netzanschluss anlegen
- Stromsensoren nullen, entweder mit USB Terminal und dem Kommando ZERO, oder der Taste unter dem USB Anschluss.
- Spannung am Batterieanschluss genau messen.
- Mit dem Parameter U1 anpassen bis die Anzeige stimmt mit der Formel U1 = U1 * Gemessen / Anzeige.
- Last am Batterieanschluss anlegen und den Strom messen.
- Mit dem Parameter S2 den Strom vom Netzgerät anpassen bis die Anzeige stimmt mit der Formel S2 = S2 * Anzeige / Gemessen.
- 12V-13V am PV Anschluss anlegen.
- Spannung am PV Anschluss genau messen.
Es ist schon richtig dass beim Abgleich der Spannung "Gemessen /
Anzeige" gerechnet wird, und beim Strom jeweils "Anzeige / Gemessen".
Dies deshalb weil der Wert 0.4 V/A ein Multiplikator ist und bei der
Spannungsmessung den Endwert repräsentiert, also ein Teiler ist.
|