Solar MPPT FOCV Tracker
Zusatzplatine zum MPP Tracking nach Fractional Open Circuit Voltage (FOCV) Methode
Soll die maximale Leistung aus einem Solarpanel bezogen werden, ist aufgrund dessen Kennlinie eine Regelung nötig. Dies nennt man Maximum Power Point Tracking. Beim Experimentieren mit dem CN3722 Solar MPPT Laderegler fiel mir auf, dass dieser erst ab Erreichen der eingestellten MPP-Spannung mit dem Ladevorgang beginnt. Dies ist tatsächlich das vorgesehene Verhalten der meisten einfachen Laderegler ICs, erfüllt jedoch im Grunde genommen nicht die Anforderungen eines echten Trackings, bei dem durch eingangsseitige Messung von Spannung und Strom auf maximale Leistung geregelt wird.
Der tatsächliche MPP-Punkt ist nicht nur von der Umgebungstemperatur abhängig, sondern insbesondere von der Beleuchtungsstärke. An einem trüben Tag wird der Akku unter Umständen überhaupt nicht geladen. Lässt sich der bestehende Aufbau um ein solches Trackingverfahren erweitern?
Neben komplexen Algorithmen, die kontinuierlich Eingangsstrom- und Spannung überwachen und regeln, stieß ich auf die Fractional Open Circuit Voltage (FOCV) Methode. Diese geht davon aus, dass die MPP-Spannung immer in einem annäherungsweise festen Verhältnis (etwa Faktor 0,7-0,8) zur Leerlaufspannung des Panels liegt. Die Leerlaufspannung wiederum ist abhängig von Umgebungslicht und Temperatur, sodass dieses vergleichsweise einfache Verfahren deutliche Vorteile gegenüber einer fixen Eingangsspannung bietet. Daher entstand die im folgenden beschriebene winzige Zusatzplatine.
Schaltungsbeschreibung
Die Zusatzplatine ersetzt das Präzisionspotentiometer des Ladereglers durch ein MCP4151 Digitalpotentiometer (IC3) mit 257 Schritten. Die Messung der Eingangsspannung erfolgt mittels des Spannungsteilers bestehend aus R1 und R2. Der Mikrocontroller vom Typ ATTiny412 (IC2) besitzt einen integrierten Analog-Digital-Konverter und übernimmt die Messung, Berechnung und Ausgabe durch Ansteuerung des Digitalpotis. Die UPDI-Programmierschnittstelle des Controllers ist auf der Stiftleiste K3 herausgeführt. Die 5V Stromversorgung ist mit einem Low-Drop-Spannungsregler MCP1804 (IC1) direkt aus der Eingangsspannung realisiert. Diese wird mit einer Drahtbrücke am Eingangskondensator der Ladereglerplatine abgegriffen. Der Betriebsstatus wird mit der roten LED (D1) angezeigt. Der dafür benutzte Portpin ist gleichzeitig die UART-Schnittstelle, welche somit für Debugausgaben nutzbar bleibt.
Firmware
Der Mikrocontroller misst in definierten Zeitabständen von 2 Sekunden die Leerlaufspannung des Solarpanels. Um den Laderegler abzuschalten, wird dabei das Digitalpoti auf die Position mit der höchstmöglichen MPP-Spannung eingestellt. Nach der Messung erfolgt die Berechnung der Sollspannung mittels des vorgegebenen Faktors. In der ersten Version greift der Controller auf eine Wertetabelle zurück (das Verhältnis ist nicht linear), um die nötige Position des Digitalpotis zu ermitteln. Im Falle des CN3722 ergab sich jedoch eine Abweichung von bis zu einem Volt gegenüber der vorberechneten Werte. Die Erklärung dafür fand sich im Datenblatt: Auf den MPPT-Pin wird ein Temperaturkoeffizient angewendet, welcher eigentlich den Koeffizienten des Panels ausgleichen soll. Damit ist es bei diesem IC nicht möglich, eine feste Position des Potis einer MPP-Spannung zuzuordnen. Der Code wurde daher durch eine Regelschleife ergänzt. Diese misst permanent die Eingangsspannung und erhöht oder verringert die Position des Potentiometers bei Abweichungen von der Sollspannung. Mit diesem Ansatz wird eine ausreichend hohe Genauigkeit erreicht. Der Code erlaubt ein Umschalten zwischen beiden Varianten per Compilerschalter. Ebenfalls kann eine optionale Debugausgabe mit 9600 Baud 8N1 via UART erfolgen, die die gemessene Leerlaufspannung, Sollspannung und Potiposition ausgibt. Der Schnittstellenwandler wird an den Anschluss der LED und Masse angelötet.
Die Firmware ist in C geschrieben und nutzt die Arduino-Bibliotheken im Platformio-Buildsystem. Zur Benutzung auf der Konsole genügt die Installation von PlatformIO Core, wer eine komplette Entwicklungsumgebung bevorzugt, kann VS Code mit PlatformIO als Plugin verwenden. Alle weiteren Abhängigkeiten werden automatisch nachgeladen.
Nach dem Download der Firmware von Github wechseln wir auf der Konsole zunächst in das entsprechende Verzeichnis:
cd solar-mppt-focv
Nun müssen die Fusebits gebrannt werden. Sie bestimmen die Grundeinstellungen wie z.B. die Taktfrequenz des ATTiny412. Dazu wird der UPDI Programmer mit dem 3 Pin Stecker K3 verbunden. Außerdem wird eine Stromversorgung >6V (z.B. Labornetzteil) benötigt. Bei einer losen Platine kann die Masseverbindung über K2 hergestellt und die Betriebsspannung über VIN / K1 eingespeist werden. Im eingebauten Zustand wird die Spannung einfach am Eingang des Ladereglers angelegt. Der Programmiervorgang geschieht mit folgendem Kommando:
Im nächsten Schritt muss die Firmware compiliert und in den Flash Speicher des Mikrocontrollers übertragen werden. Eventuelle Anpassungen des Spannungsfaktors oder Änderungen zur Debugausgabe werden zuvor in der Datei src/main.cpp vorgenommen. Der Upload wird dann wie folgt durchgeführt:
Wenn die Leuchtdiode nun aufleuchtet und im 2 Sekunden Takt flackert, wird das Solar Tracker Programm ausgeführt.
Montage
Um der Zusatzplatine etwas Abstand zu den darunterliegenden Bauteilen zu verschaffen, habe ich einen passenden Abstandshalter aus ABS gedruckt, der auf die gewinkelte Stiftleiste geschoben wird. Die Stiftleiste wird statt dem Präzisionspotentiometer mit der Ladereglerplatine verlötet und ein zusätzlicher Draht zum V_SOLAR Testpunkt oder Pluspin des Kondensators im Spannungseingang gezogen.
Inbetriebnahme
Am einfachsten lässt sich die Funktion am Labornetzteil prüfen. Dieses wird zunächst auf die gewünschte Leerlaufspannung eingestellt und die Strombegrenzung unterhalb des möglichen Ladestroms geregelt, da so die MPP-Regelung greift. Am Laderegler müssen Temperaturfühler und ein geeigneter, nicht vollständig geladener Akku angeschlossen sein. Nun kann eine Messung der begrenzten Eingangsspannung vorgenommen werden. Idealerweise werden zur Kontrolle Messpunkte mit verschiedenen Spannungen angefertigt. Diese müssen jeweils um den im Code definierten Faktor unterhalb der Leerlaufspannung liegen. Mit einem Solarpanel ist dieser Test ebenfalls möglich. Zur Messung der Leerlaufspannung muss der Laderegler zeitweilig abgeklemmt werden.
Fazit
Das Projekt befindet sich derzeit in einem experimentellen Status. Ob sich das Ladeverhalten bei schwachem Licht bessert, werden Langzeitdaten zeigen.