High End MPPT Controller für Solarpaneel

  Home     Übersicht     Hardware     Software  

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:

  1. 12V-13V am Netzanschluss anlegen
  2. Stromsensoren nullen, entweder mit USB Terminal und dem Kommando ZERO, oder der Taste unter dem USB Anschluss.
  3. Spannung am Batterieanschluss genau messen.
  4. Mit dem Parameter U1 anpassen bis die Anzeige stimmt mit der Formel U1 = U1 * Gemessen / Anzeige.
  5. Last am Batterieanschluss anlegen und den Strom messen.
  6. Mit dem Parameter S2 den Strom vom Netzgerät anpassen bis die Anzeige stimmt mit der Formel S2 = S2 * Anzeige / Gemessen.
  7. 12V-13V am PV Anschluss anlegen.
  8. 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.





© 2023-2025 by Stefan Ludescher