SLACC – Solar lead acid charge controller

Dies ist der große Bruder des SSLACC. Auch hier kann die Last abgeworfen und ein 12V Blei-Akku geladen werden. Die Unterschiede bestehen darin, dass

  • hier eine Leistungsanpassung durchgeführt wird. Dadurch soll das Solarpanel immer maximalen Leistungspunkt betrieben werden (MPPT),
  • der Buck-Converter 2 phasig arbeitet und so die Ripple-Ströme reduziert,
  • nun eine externe Spannungsreferenz zum Einsatz kommt,
  • eine Strom- und Spannungsmessung jeweils am Panel und an der Batterie durchgeführt wird (Möglichkeit der Berechnung der eigenen Effizienz),
  • 3 Temperatursensoren (1: Mosfets, 2: Batterie, 3: Panel) verbaut werden können,
  • Datenlogging auf eine microSD-Karte möglich ist,
  • der Maximalstrom nun 10A beträgt.

Schaltung

Der AtMega48 wurde durch einen 328 ersetzt – insbesondere da der Code für das FAT-Dateisystem viel RAM benötigen wird. Der UART wurde nun auf einem Pinhead herausgeführt. Ansonsten ist die Schaltung eine Mischung zwischen Tim Nolans MPPT und dem SSLACC. Die beiden Schaltregler werde durch 180 Grad verschobene PWM-Signale gesteuert mit der Erwartung die Lebensdauer insb. der Kondensatoren zu erhöhen und den Ladestrom zu steigern.

Aufbau

Die wirepads müssen mit 1,5 mm² Kabel verbunden werden – Dies war die einzige Möglichkeit die Kompaktheit bei nur 2 Layern zu erreichen. Zwar sind die Leiterbahnen die höhere Ströme Tragen breit ausgeführt, doch eine Direktverbindung der Leistungsbauteile auf der Unterseite mit eben so dicker Leitung wie bereits erwähnt könnte vllt. noch für kleine Effizienzgewinne gut sein.

An der Oberkante der Platine werden alle MosFets isoliert auf einen 100x50x40mm Rippenkühlkörper geschraubt.

Software

Ist nun nach dem Aufbau des Prototypen vorhanden. Man sollte auf jeden Fall darauf achten, dass _SD der MosFet-Treiber betätigt wird sobald man die PWM-Versorgung einstellt. Sonst würde die Batterie unter Umständen kurz geschlossen. Auch darf die PWM keine 100% erreichen, da sonst die Bootstrapschaltung für den oberen MosFet nicht mehr funktioniert (der Kondensator könnte sich mangels Massepotential nicht mehr aufladen).

Auf dem UART werden die aktuellen Messwerte ausgeben sowie auf der Karte gespeichert so diese beim Einschalten erkannt wird. Nachteil der Karte ist, dass sie doch einige Milliampere schlucken wird und so den Leerlaufverbrauch des Ladereglers ohne Solarpanel erhöht.

Achtung: Vor dem Flashen des Controllers die SD-Karte entfernen, da sie über zu hohe Pegel auf der MISO-Leitung geschädigt werden könnte!

Anzeigen

Exakt wie bei SSLACC.

Effizienz

Da der Laderegler sowohl am Aus- als auch am Eingang Strom und Spannung misst, kann er seine eigene Effizienz errechnen. Sicherlich ist die Messung fehlerbehaftet, dennoch wurden die Werte in der Firmware für den Prototypen kalibriert, so dass 5-7% Fehler sicherlich nicht überschritten werden. Und dafür kann sich das Ergebnis sehen lassen:

Das Diagramm wurde aus den CSV-Daten automatisch generiert, deswegen die „Spitzen“. Es stammt aus einem Vergleich zwischen 63 kHz (bei 8 Bit Auflösung) und 125 kHz (bei 7 Bit Auflösung).

Bilder

Downloads

Stand: Mai 2012
EAGLE-Daten v1.1
Firmware v1.2

18 Kommentare zu SLACC – Solar lead acid charge controller

  1. Henk sagt:

    Moin,
    wie schauen eigentlich die Leistungsdaten deines MPPT aus?

  2. Frank sagt:

    Moin auch,
    10A in einen 12V Blei-Akku.

  3. Matt Po sagt:

    Geil geil. So was wollte ich schon immer mal gesucht=)

  4. Matt sagt:

    Hi Welche Funkion hat genau das Bauteil 74hc4050 vor deiner SD Karte?
    Und wo lässt du deine Platinen drucken?
    Cheers
    Matt

  5. Frank sagt:

    Der dient als Pegelwandler für die Datenleitungen in Richtung der Karte. Der Controller läuft mit 5V (wg. Takt), das verkraftet die Karte nicht. Der Controller wird aber den 3,3V Ausgangspegel der Karte dennoch als „high“ interpretieren.
    Platinen habe ich mal bei Leiton machen lassen. Aber eine einzelne lohnt nicht wirklich.

  6. Frank sagt:

    Moin du,
    das Design auf dieser Seite ist ja auch bereits ein bisschen angegraut, aber das scheint mir, wenn ich mir deine Schaltung angucke – und das so sagen darf – noch einiges drin zu sein, was du dir abgucken kannst :) mittlerweile würde ich wieder vieles anders machen – tue ich aber nicht, da ich beruflich vollkommen Elektronik-ausgelastet bin.
    Ich habe nicht mehr vor Augen, wie meine Software genau implementiert ist. Die Suche in beide Richtungen ist dennoch interessant – nur die ganzen Zwischenschritte würde ich mir sparen. Die Zeitkonstanten der Module sind dafür zu groß und, abhängig von der jeweiligen Situation, misst du eher was vor zwei Schritten war. Das mein Gerät sich immer neben dem Mpp bewegt ist klar. Ich habe mich aber dafür entschieden, um die Komplexität (und damit Fehleranfälligkeit) in Grenzen zu halten. Den Energieverlust durch knapp neben dem Mpp zu liegen habe ich damals im unteren einstelligen Prozentbereich erwartet. Und sowieso war der Benchmark das direkte Aufschalten des Panels auf die Batterie. Dafür hat’s gereicht;)

    Was das Laden einer Batterie angeht will ich noch gerne darauf hinweisen, dass du weniger eine Spannung einstellst, sondern nur ein Verhältnis + parasitäre Effekte. Und das Verhältnis zusammen mit der OCV und der Impendanz der Batterie wird so den Ladestrom und damit den MPP bestimmen. Deine implementierte Mess- und Testmethode ist insofern m.M.n. recht ungeeignet und du müsstest eher „in“ eine CV-Last testen.
    Ich wünsch‘ noch viel tolle Bastelzeit :)

    Ich habe noch ein Board, was irgendwo einen kleinen Fehler hat, den ich damals nicht mehr suchen wollte. Konnte aber nix großes sein. Gegen Versandkosten kannst du das für Lau und zum Umbauen haben…

    PS: Altium Lizenz? Lohnt sich das privat?

  7. Jochen sagt:

    Hi, Frank!
    Ich möchte mich recht herzlich für die Veröffentlichung dieser Dokumentation inklusive Quellcode und Eagle-Dateien bedanken! Auch wenn das Projekt 5 Jahre zurück liegt – mich hat es bei meinem Projekt „Solarstrom für meinen Camper“ sehr weiter gebracht. Vielen Dank! :) Da ich 130W-Module mit einer Nennspannung von 35V habe, habe ich ein paar Änderungen an der Schaltung vorgenommen und beim Testen auch noch 1-2 kleinere Bugs in der Firmware gefunden. (Oder vielleicht waren esa uch beabsichtigte Änderungen..) Wenn Du Interesse hast, poste ich gern nähere Details dazu..?
    viele Grüße,
    Jochen

  8. Frank sagt:

    Hallo Jochen, danke für deine Rückmeldung. Gerne kannst du das posten, was dir aufgefallen ist :-)

  9. Jochen sagt:

    Hi, Frank!

    Ok, here we go..! :)
    Zu der Hardware:
    -ich habe ein alphanumerisches 12×3 I2C-Display (EAT123-I2C) aus der Wühlkiste an PD4 und PB1 angeschlossen.
    -die Versorgung der Gate-Treiber habe ich von Solar+ getrennt und auf Batterie+ umgelegt
    -die Eingangskondensatoren habe ich mit 100µF 50V bestückt
    -den Ausgangskondensatoren habe ich weitere vier 100µF 16V (THT, low ESR) aus der Wühlkiste parallel geschaltet
    -einen Temperaturfühler habe ich auf den SMD-Ausgangskondensator „oben rechts“ geklebt, weil der am heißesten wurde
    -statt der grünen „Charge“-Led treibt der MCU-Pin einen BSS138, der einen 24V-Lüfter einschaltet (24V-Lüfter laufen schön leise an 12V)
    -ich habe eine 1.5KE51CA TVS-Diode als Überspannungsblocker antiparallel zum Solarmodul-Eingang eingelötet
    -ebenso eine 1.5KE18CA TVS-Diode antiparallel zum Batterieanschluss: Das ist segensreich, wenn jemand die Batterie abklemmt (oder die Sicherung durchbrennt), während das Solarmodul in den Regler einspeist. Ohne die TVS-Diode würde in diesem Fall die Spannung auf der Ausgangsseite auf die Leerlaufspannung der Solarmodule ansteigen. In meiner Anwendung wären das 40V – nicht gut. Mit der TVS-Diode stellen sich 13.4V ein und der Ausgangsstrom stellt sich auf 200 – 300 mA ein. Das geht lange genug gut,dass man den Regler vom Solarmodul trennen kann.
    -ich habe bemerkt, dass die Temperatursensoren aus +5V gespeist werden. Die „+5V“ von dem Regler sind in meinen Exemplaren aber tatsächliche 4.89V,..
    -Alu-Gehäuse, um wenigstens ein bisschen EMV-netter zur Umwelt zu sein
    -großer roter Notaus-Knopf :)
    -KFZ-Sicherung 5A für den Solarmoduleingang im Gehäuse
    -Anderson Powerpole 30A für die Leitung zur Batterie
    -im Sicherungskasten von der Camper-Elektrik eine 10A KFZ-Sicherung

  10. Jochen sagt:

    Erste Erfahrungen:
    Der Regler funktionierte auf Anhieb -> das rockt!
    Beim Testlauf am Labornetzteil wurden die Ausgangskondensatoren sehr heiß: Kein Wunder, mit 35V->12V ist die Spannung über den Induktivitäten höher und es stellt sich fast die doppelte Stromänderung ein, als Deiner Bemessung zugrunde lag. Da brachten die zusätzlichen Ausgangskondensatoren Besserung.
    Der erste Betrieb in meinem Camper jetzt am Wochenende lief erfreulich gut:
    Der höchste Strom im Testlauf war für ca eine Stunde um 8A, das hat der Regler problemlos weggesteckt und der Kühlkörper für die Mosfets wurde kaum warm. (Beim nächsten Exemplar nehme ich einen kleineren Kühlkörper..) Der Lüfter sprang ab und zu an, und kühlte innehalb von 15-20s die Ausgangskondensatoren wieder unter 50° runter. Mit 8A bei 13.4V hatte ich gut 104W, das ist für 130W-Module in unseren Breiten schon das erreichbare Maximum, weil wir hierzulande 800W / m² Sonneneinstrahlung haben statt der 1000W/m², die für die Leistungsangabe vorausgesetzt werden. Meine Batterien (55Ah || 40Ah) wurden nach und nach voll aufgeladen, obwohl meine Freundin und ich regen Gebrauch von LED-Licht, Wasserpumpe etc. machten. Mein Fazit: Der SLACC rockt! :)

  11. Jochen sagt:

    Firmware:
    -für das Display habe ich eine library namens i2csoft und eine Arduino-Library für das EAT123-i2c im Netz aufgetrieben und angepasst. Das Display wird in main initialisiert und zeigt sekündlich aktualisiert Strom und Spannung vom Solarmodul und an den Batterieklemmen sowie die Temperatur von Sensor 1 und den Betriebszustand (idle, bulk, float) an. (Nice, imho!)
    -in pwm.c, function pwm_enable ist in Zeile 114..116:
    TCNT2 = (PWM_TOP + 1) + 1; // Timer1 – 180 deg phase shifted

    Ich glauube, das ist ein bug, denn so stellt sich nicht 180 Grad Phasenversatz ein, sondern nur ca. 1-2 Grad. Ich habs bei mir wie folgt geändert:
    Zeile 116: TCNT2 = (PWM_TOP + 1) >> 1; // Timer1 – 180 deg phase shifted
    Damit kriege ich den erwarteten Phasenversatz um 180 Grad zwischen den beiden Buck Convertern.
    -die Temperaturwerte von den KTY81s werte ich aus, um den Lüfter bei 60 Deg C ein und bei 50 Deg C wieder auszuschalten
    -zu der Anmerkung über die Versorgung der Temperatursensoren: Ich habe mit dem Datenblatt vom KTY81-210 Deine Linearisierungstabelle nachgerechnet und kam auf die selben ADC-Werte, wie Du. Dennoch zeigte mein Thermoelement was sehr anderes an. Ich glaube, das liegt an der Differenz zwischen angenommener Versorgungsspannung und tatsächlicher Versorgungsspannung. Ich berichte nochmal, wenn ich das näher überprüfen konnte. :)

  12. Frank sagt:

    Hallo Jochen,
    ganz vielen Dank für deine Mühe um Verbesserungen. Ich kann das gerade aus Zeitgründen nicht alles „prüfen“, denke aber mal, dass du weißt was du tust (anders als der andere Kommentator, der offenbar seinen Post gelöscht hat, wie ich gerade sehe…). Wenn du möchtest kannst könnte ich deine Verbesserungen, deinen Code und einige Bilder an die Seite hängen und ganz oben quasi als erweiterte Version feilbieten. Bis auf deinen Widerruf natürlich. Die Kommentare würde ich dann hier entfernen und so fällt das anderen Besuchern, die du ja auch erreichen willst, evtl mehr auf?
    Mail mir an frank Ät ich-war-hier Punkt de

  13. Frank sagt:

    – PWM Phasen: Kannst ja auf meinem Oszibildern sehen, dass es bei mir stimmte. Keine Ahnung, was da falsch gelaufen ist bei deinem Aufbau. Wenn es tut, ist ja alles gut.
    – Was mir zu deiner TVS parallen der Battarie einfällt, würde ich die Standoff-Spannung deutlich höher wählen. Weniger Leckströme = Selbstentladung und 13,4V können durchaus ja längere Zeit anliegen (je nachdem wie groß die Batterie ist), so dass die schon mal den thermischen Tod sterben könnte. Würdest du etwas richtung 15V wählen, würde der Regler Anfangen mit sehr kleinem Tastverhältnis zu oszillieren (da die Ausgangselkos ja die Spannung im „Batterievoll“-bereich hielten).
    – Heute würde ich, glaube ich, kleinere FETs nehmen um weniger Verluste zu generieren.

  14. Jochen sagt:

    Hi, Frank!
    Eine Beschreibung mit Bildern und dem erweiterten Quellcode schicke ich gern. :)
    zu der PWM: jupp, Deine Bilder zeigen die erwarteten 180 Grad Phasenversatz. Das macht es etwas mystisch, denn das downloadbare Quellcodearchiv in deiner Beschreibung zum SLACC hat in der Datei pwm.c in z. 116 eben jene Codezeile, in der ich einen Bug vermute. Vielleicht ist beim Hochladen des Quellcodes was schief gegangen? Oder könnte sich bei der Erweiterung für automatisches Umschalten zwischen 64 und 125 kHz Schaltfrequenz was eingeschlichen haben?
    Die TVS-Diode parallel zur BAtterie ist auf 18V dimensioniert, damit ich meine Batterien getrost im Winter bis 14.4V hochladen kann. Warum sich bei Batterietrennung unter Last die 13.4V eingestellt haben, ist mir nicht ganz klar, ich hätte auch erwartet, dass statt dessen der Regler langsam zwischen idle und bulk schwingt. Ich werde nochmal testen, was passiert, wenn ich mit einem Labornetzgerät 14.4V – 15V in die Batterieanschlüsse vom SLACC einspeise. Hoffentlich bleibt die Stromaufnahme dann bei 20-40mA, als Indiz, dass die TVS-Diode noch nicht leitet.

    -_kleinere_ FETs für weniger Verluste? Meinst Du damit eine Einsparung bei der Gatetreiberleistung?
    -wie denkst Du über einen Schaltregler für die +5V, um den Eigenverbrauch nachts zu senken?

  15. Frank sagt:

    – Vergiss die 13,4V, habe da Sachen durcheinander gemacht. 18V TVS müsste gut gehen.
    – ETs: Ja die IRFZ44 sind natürlich billig und fett, aber haben haben auch ne riesige Eingangskapazität und die Energie geht ja komplett in Wärme. Höchstens noch Q4 und Q8 belassen.
    – Und die Kondensatoren deutlich größer machen (wie du es schon gemacht hast).
    – Schaltregler für 5V ist ’ne gute Idee, habe ich damals nicht gemacht, da mein Focus auf MPPT lag. Allerdings muss man hier gucken, dass im Leerlauf ja wirklich nicht viel Energie weggeht. Also muss der Schaltregler schon wenig Ruhestrombedarf haben und effizient im Bereich 10 bis 50mA sein. Gibt es integriert, aber kosten gut Geld.
    – Die 5V kann man auch auch mit wenigen Transistoren und kaum Offset aus der ADC-Referenz bauen. Die dafür nicht aus 5V sondern aus Batterie versorgen, und mit ’nem minimalst Op-Amp verdoppeln. So laufen die 5V immer Faktor 2 höher als die Referenz und selbst bei kleinen Schwankungen derer wird der ADC-Wert wegen der doppelten Schwankung auf 5V gleich bleiben.

  16. Max sagt:

    Hallo Leute,

    danke für das Bereitstellen deiner Arbeit! :)

    Eine kleine Frage hätte ich noch:
    Sind die Q4 und Q8 als Verpolschutz gedacht?
    Ist der einzige Grund dafür, dass normale Dioden zu heiß werden würden?

  17. Frank sagt:

    Ja, über Dioden hat man mehr Verluste. Ich kann dich auch nur ermutigen die Gatetreiber _nicht_ direkt von DCDC_IN zu versorgen, so wie es Jochen gemacht hat.

  18. Thomas W. sagt:

    Chapeau,
    ein geiler chice
    da es ja schon den einen oder anderen Nachbauer gibt, hat sich einer erbarmt gleich ein paar Platinen mehr zu machen?
    Können diese für die zukünftigen Nachbauer eine Kostenabschätzung über ein Modul machen?

    MfG
    Thomas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*