Guten Tag.
Ich bin gerade am Programmieren eines MPPT Trackers für ein PV Modul
(Datenblatt nicht vorhanden, da einige zellen selbst zusammengefügt
wurden)
Den MPPT Regler habe ich mit einem STM32 realisiert. Es wird ein Boost
Converter mit einem vairblen Dutycycle (PWM Signal) vom STM32 gesteuert.
Die Eingangsleistung des PV Modules messe ich mithifle des ADCs des µC.
Nun verändere ich den Dutycycle und beobachte die Leistung, wird sie
größer, so verändere ich den Dutycycle in dieselbe Richtung bis die
Leistung maximal wird. Wird die Leistung geringer, so verändere ich den
Dutycycle eben in die andere Richtung. So weit so gut, es funktioniert
auch. Nur ein Verhalten ist sehr seltsam. Beim Starten, ist der
Dutycycle sehr klein eingestellt, er wird immer größer (und die Leistung
damit auch), irgendwann hat sich dieser bei einem Wert eingependelt,
jedoch nicht beim MPP. Nach einigen Sekunden (5-30s), springt der
Dutycycle auf einen noch etwas höheren Wert und die Leistung des PV
Modules nimmt rapide zu, auf den wirklichen MPP. Kennt von euch jemand
dieses Verhalten. Im Anhang noch ein Bild vom zeitlichen Verlauf der
kenngrößen: Dutycycle, PVStrom, PVLeistung, PV_AVERAGELeistung
Erhöhe ich die Anstiegsrate des Dutycycles, also um wie viel er sich
ändert bei jedem Durchlauf, so wird dieser Punkt schneller erreicht.
Für Anregungen bin ich Euch dankbar!
LG Benjamin
Benjamin Gräf schrieb:> Im Anhang noch ein Bild vom zeitlichen Verlauf der> kenngrößen: Dutycycle, PVStrom, PVLeistung, PV_AVERAGELeistung
Da steige ich nicht durch, sorry
Hallo,
ich denke der erste Punkt ist ein lokales Maximum.
Nach 5-30s (und vielen hin- und herbewegungen) springt dein Regler über
dieses hinweg und findet den richtigen MPP.
Das würde auch erklären wieso der Regler den echten MPP bei grösseren
Sprüngen schneller findet.
Alternative wäre den MPP von der anderen Seite aus (Kurzschluss anstelle
Leerlauf) zu suchen.
Du hast schon auf dem Plan, dass die Spannung eines Boostconverters
nicht liniear mit dem Tastgrad zusammenhängt und die Leistung mit der
Spannung quadratisch ansteigt?
Interessante Frage.
Hier wird der MPP bei in Serie geschalteten und teilverschatteten Zellen
behandelt:
https://de.wikipedia.org/wiki/Maximum_Power_Point_Tracking#
Denkbar wäre ja, dass es ein lokales Maximum der Leistung geben kann
wenn nichts verschattet ist aber die in Serie geschalteten Zellen
unterschiedlich sind.
Cheers
Detlef
Bei viel Sonnenlicht/Lumen kriegt er mehr Leistung, aber bei erhöhter
Temperatur des PV sinkt die Leistung(nicht viel). Hab das früher mal mit
einen Baustrahler experimentiert.
Und du darfst nicht verschiedene PVs zusammen schalten, weil die
kleineren PV größere Ströme nicht ab können(Wenn du die in Reihe
geschaltet hast!).
Danke für die vielen, und vor allem schnellen Antworten!
Also das mit dem lokalen Maximum klingt logisch (und würde auch das
Verhalten erklären), wobei ich aber keine Verschattungen habe. Die
Zellen sind alle die gleichen, sollte also kein Problem sein die
zusammenzuschalten. Ich habe jetzt einmal den Dutycycle vom Minimum bis
zum Maximum durchlaufen lassen und die Kurven aufgezeichnet (Grau ist
übrigens die Ausgangsleistung des PV Modules @Ingo Less) Ab einem
bestimmten Dutycycle wieder der Sprung wie vorhin beschrieben.
Setze ich den Startwert auf den maximalen Dutycycle, findet das Programm
den MPPT natürlich sofort, da er sich von der andere Seite annähert.
Ich werde ein anderes Modul bei gelegenheit Testen und schauen ob da
auch dieses Phänomen auftritt.
Benjamin Gräf schrieb:> Also das mit dem lokalen Maximum klingt logisch (und würde auch das> Verhalten erklären), wobei ich aber keine Verschattungen habe.
Gibt es auch ohne Verschattung. Hatte das selber mal bei einem kleinen
MPPT.
Meine Lösung war beim einschalten zunächst mit recht großen Schritten
(5% oder so) den Bereich abzufahren und dann an den Punkt mit der
höchsten Leistung zu springen. Von da an konnte der MPPT den MPP genau
verfolgen.
Benjamin Gräf schrieb:> Setze ich den Startwert auf den maximalen Dutycycle, findet das Programm> den MPPT natürlich sofort, da er sich von der andere Seite annähert.
Dann lass es so! Never change a running system ;-)
Evtl. hilft hier auch eine Hysterese, damit du nicht auf dem zappeln der
Bits und Messfehler an einem virtuellen Maximum hängen bleibst, das es
nur Aufgrund von Messfehlern gibt. Darf man fragen was da als Last dran
hängt? Sicher kein ohmscher Widerstand oder?
Ingo Less schrieb:> Evtl. hilft hier auch eine Hysterese, damit du nicht auf dem zappeln der> Bits und Messfehler an einem virtuellen Maximum hängen bleibst
Es ist ein echtes lokales Maximum. Die Physik dahinter kenne ich nicht,
aber habe es schon selbst gemessen.
Ingo Less schrieb:> Darf man fragen was da als Last dran> hängt? Sicher kein ohmscher Widerstand oder?
Sofern es eine Batterie ist, würde ich als "Leistungsgröße" für den MPPT
den Ausgangsstrom anstelle der Solarmodulleistung nehmen.
Steigert die Effizienz ein bisschen, da auch die verschiedenen
Wandlerverluste etc. je nach Dutycycle mit berücksichtigt werden.
Irgendwie sehen mir die Diagramme so aus, als ob die angeschlossene
Schaltung denn Vorgabewert des Mikrocontrollers sprunghaft übernimmt
bzw. der gesteuerte Wandler erst ab diesem Punkt richtig Leistung
übertragen kann.
Ich verstehe auch leider die Kurven nicht besonder gut, da die in den
Diagrammen verwendeten Abkürzungen mal wieder nur dem TE verständlich
sind und auch keine Zuordnung im Text erfolgt. Sowas ist dann natürlich
schade wenn man helfen soll.
Im Diagramm ist:
potest die Power der PV Zelle
Power_avg die gemittelte Power der PV Zelle
IPVtest die Spannung der PV Zelle
dctest der dutycycle
Das mit den Anfangs großen Schritten funktioniert beim Einschalten. Wird
die PV Zelle jedoch abgeschattet und fällt wieder auf das lokale Maximum
zurück, braucht der Regler wieder lange bis er beim wirklichen MPP
angelangt ist, da die Schritte ja wieder klein sind. Das selbe Problem
habe ich wenn ich den Startdutycycle ganz groß setze, da es am Anfang
zwar sehr schnell den MPP findet, beim unterschreiten und Abfallen auf
das Lokale Maximum wieder relativ lange braucht um auf den MPP zu
kommen.
Als Last habe ich einen 12V Bleiakku dranhängen. Auf den Ausgangsstrom
kann ich nicht regeln, da ich vorhabe mehrere solcher Laderegler
paralell auf einen Akku zu schalten.
Eine Hysterese einzubauen war auch ein Gedanke von mir, werde ich auch
noch ausprobieren.
Ich werde mich mal mehr in das Thema MPPT reinlesen.
mfg Benjamin Gräf
Benjamin Gräf schrieb:> Das mit den Anfangs großen Schritten funktioniert beim Einschalten. Wird> die PV Zelle jedoch abgeschattet und fällt wieder auf das lokale Maximum> zurück, braucht der Regler wieder lange bis er beim wirklichen MPP> angelangt ist, da die Schritte ja wieder klein sind. Das selbe Problem> habe ich wenn ich den Startdutycycle ganz groß setze, da es am Anfang> zwar sehr schnell den MPP findet, beim unterschreiten und Abfallen auf> das Lokale Maximum wieder relativ lange braucht um auf den MPP zu> kommen.
Wenn du Abschattung (rapiden Leistungsverlust oder zuwachs) erkennst,
dann kannst du ja wieder mit großen Schritten beginnen zu suchen.
Wird das Modul denn so oft abgeschattet, dass die 30s spürbar sind?
Benjamin Gräf schrieb:> Als Last habe ich einen 12V Bleiakku dranhängen. Auf den Ausgangsstrom> kann ich nicht regeln, da ich vorhabe mehrere solcher Laderegler> paralell auf einen Akku zu schalten.
Den Ausgangsstrom von jedem Regler messen? Sehe da kein Problem welches
das verhindert..
Wobei viele Regler parallel war noch nie eine gute Idee. Kannst du nicht
die Solarzellen zusammenschalten und nur einen Regler bauen?
Benjamin Gräf schrieb:> Nach einigen Sekunden (5-30s), springt der> Dutycycle auf einen noch etwas höheren Wert und die Leistung des PV> Modules nimmt rapide zu, auf den wirklichen MPPBenjamin Gräf schrieb:> Als Last habe ich einen 12V Bleiakku dranhängen.
Is doch klar, wenn die Ausgangsspannung kleiner als die Batteriespannung
ist, passiert nunmal nichts. Das was du da vorher misst, sind die
Eigenverluste des Boosters => kein sinnvoller Punkt.
Versuche mal folgendes:
Miss die Eingangsspannung und die Batteriespannung. Daraus berechnest du
den theoretisch nötigen Dutycycle. Dieser ist dann dein Ausgangspunkt
für das MPPT, aber hier gehts los. Wenn nun eine Verschattung erfolgt,
könntest du den neu berechneten Duty als Zielpunkt anvisieren (Duty hier
hinführen). Hast du ihn erreicht, beginnst du ein neues MPPT. So sollte,
wenn auch erstmal nicht sonderlich elegant, der MPP schneller gefunden
werden. So vermeidest du jedenfalls, dass der Regler sich in einem Punkt
befindet, in dem eigentlich keine Leistung ansteht.
Statische Abschattung durch Bebauung ist kein Problem. Da sinkt oder
steigt die Leistung sehr langsam, das kann der Regler problemlos
mitlaufen.
Problematisch sind Wolken (90% Leistungsabfall- oder Anstieg einer
Sekunde) oder dynamische Abschattung durch z.B. einen Zweig, der im Wind
bewegt wird.
Erstes muß der Regler schnell mitlaufen können (vor allem wenn er den
Solarstrom als Regelgröße verwendet, wenn er die Solarspannung vorgibt
ist das weniger kritisch, da könnte man den Regler sogar für ein paar
Sekunden einfrieren und dann langsam neu auf die MPP-Suche schicken),
zweites kann Dir richtig schön die Messung versauen... Wenn bei einem
300W-Modul auch nur eine Zelle durch ein wedelndes Blatt abgeschattet
wird, hat man 300W Modulation in der Leistung, mit recht kurzer Periode
und der Tracker findet den MPP eigentlich nie.
Man könnte den Algorithmus so ändern, dass man im Hintergrund immer eine
grobe Abtastung macht:
- Nach dem einschalten erstmal grob alles abmessen
- MPP auf den besten Punkt setzten und da starten lassen
- Alles x Sekunden ein Teil des Gesamtbereiches abtasten, dann zurück
auf Original MPP gehen. Wenn alles abgetastet ist, dann den MPP
korrigieren wenn die Abweichung zu gross ist.
Damit könnte man erkennen ob man im Dauerbetrieb eventuell sich doch auf
einen lokalen maximum bereich gefunden hat.
Errinnert mich an damals wo ich ein Laserstrahl auf ein Siliziumwafer
fokusieren musste. Da haben wir einen Lock-In gebaut und damit
Phasenverschiebung gemessen. Darauf basierend die Linse bewegt. Um beim
einschaltenschnell zu sein, habe ich einen schnell durchlauf gemacht.
Dann zurück auf den gemessen max und da Lock In gestartet. Es hab reisen
hysterese, also der lock in brauchte auch noch bisschen Zeit, war aber
trozdem schneller als sofort nur mit Lock In zu gehen.
MiMa schrieb:> Es ist ein echtes lokales Maximum. Die Physik dahinter kenne ich nicht,> aber habe es schon selbst gemessen.
Mir ist unklar, warum es bei PV ein lokales Maximum geben sollte. Es
gibt für mich KEINEN physikalischen Grund. Wenn überhaupt, käme nur ein
Schaltungsfehler in Frage, der z.B. beim Übergang kontinuierlich zu
diskontinuierlich des step up zum tragen käme.
Also das mit dem Boost Converter, dass dieser erst ab einem gewissen
Dutycycle die richtige Ausgangsspannung hat und deshalb die Leistung so
gering ist, werde ich morgen mal überprüfen. Habe jetzt auch eine
weitere Variante entdeckt die 2 vorige Punkte speichert und eine
Fallunterscheidung macht jenachdem welche werte die 3 Messpunkte (2 alte
+ aktuelle) haben.
Die anderen von euch erwähnten varianten kann ich anschließend auch noch
tesetn :)
lg Benjamin
Benjamin Gräf schrieb:> Also das mit dem Boost Converter, dass dieser erst ab einem gewissen> Dutycycle die richtige Ausgangsspannung hat und deshalb die Leistung so> gering ist, werde ich morgen mal überprüfen.
Is ja klar, wenn Ua < UBat => warum sollte Strom in die Batterie
fließen? Erst wenn du UBat übersteigst, gehts los mit dem Laden.
MiMa schrieb:> ich denke der erste Punkt ist ein lokales Maximum.
Dann sollte man mal die Kennlinie vom PV-Modul bei konstanter
Einstrahlung messen. Dann sieht man, ob die zwei Maxima hat.
Wenn am Ausgang eine Batterie hängt wird ja einiges klar. Wie mißt Du
denn die Leistung, PVStrom*PVSpannung? Dann zeigt Deine Kurve von 14:37
solange die Wandlerverluste, bis die Ausgangsspannung die Batterie laden
kann. Du muss das Tastverhältnis auf jeden Fall so fahren, dass die
Batterie die Leistung aufnehmen kann.
Hatten meine Vorposter auch schon alles gesagt.
Cheers
Detlef
PS: Wenn die These stimmt macht Dein Wandler ganz schön grosse Verluste.
Guten Morgen,
Also ich habe das mal überprüft und diese These stimmt nicht. Da zur
Batterie Strom fließt und sie somit geladen wird. Es ist tatsächlich ein
lokales Maximum, welches dadurch entsteht, dass eine PV Zelle etwas
abgeknickt ist und deshalb den Strom aller Zellen begrenzt(soweit meine
Theorie). Ich werde demnächst ein anderes Modul testen und schaun ob
dort dieser Effekt verschwunden ist.
LG Benjamin
MaWin schrieb:> MiMa schrieb:>> Es ist ein echtes lokales Maximum. Die Physik dahinter kenne ich nicht,>> aber habe es schon selbst gemessen.>> Mir ist unklar, warum es bei PV ein lokales Maximum geben sollte. Es> gibt für mich KEINEN physikalischen Grund. Wenn überhaupt, käme nur ein> Schaltungsfehler in Frage, der z.B. beim Übergang kontinuierlich zu> diskontinuierlich des step up zum tragen käme.
Konnte es mir auch nicht erklären. War aber definitiv immer im
kontinuierlichen Betrieb. Wir hatten aber auch nur eine sehr kleine
Zelle (vielleicht schon vorgeschädigt?)
Benjamin Gräf schrieb:> Es ist tatsächlich ein> lokales Maximum, welches dadurch entsteht, dass eine PV Zelle etwas> abgeknickt ist und deshalb den Strom aller Zellen begrenzt(soweit meine> Theorie). Ich werde demnächst ein anderes Modul testen und schaun ob> dort dieser Effekt verschwunden ist.
Wäre interessant zu wissen woher dieses Maximum stammt. Wenn es
hochwertige Zellen sind könnte man mal den Hersteller kontaktieren? :-)