Solarladeregler fürs Auto mit Arduino?

Hallo!

Ich bin günstig an eine Solarzelle rangekommen und überlege was ich damit, neben der Speisung von kleinen Projekten so machen könnte.
Ziemlich cool fände ich da ein Erhaltungsladungsgerät fürs Auto zu bauen. Meins steht oft rum und auf Dauer entlädt sich die Batterie dann doch ein wenig...

Kann man mit einem Arduino ein (Erhaltungs)Ladegerät für Autos bauen? Ich denke mal ja, oder?
Und lassen sich Funktionen wie Überladeschutz etc. auch vermeiden? Bzw. was will man bei sowas eigentlich an Funktionen haben?

Mal zur Solarzelle, das hier sind die Daten:

Leistung max. 20 W
U max. 9,12 V
I max. 2,25 A
U Leerlauf 10,94 V
I Kurzschluss 2,71 A

Lässt sich mit dieser Zelle überhaupt was in der Richtung anfangen?

Danke!

Hallo,

das wird mit dieser einen Solarzelle nicht ohne weiteres gehen, da sie nur U max 9,12 V hat. Entweder eine zweite gleiche Solarzelle in Reihe geschaltet (U max dann ca. 18 V) oder die Spannung mit einer entsprechenden Schaltung anheben.

Habe selbst drei 50 Watt-Module parallel geschaltet mit jeweils U max 28 V die einen großen Akku laden. Mit dem arduino messe ich die an dem Akku anliegende Spannung mittels einfacher Spannungsteiler-Schaltung (zwei Widerstände) und regle dann die Akku-Ladung über die Software über ein MOSFET. Steigt die Spannung (bei Erhaltungsladung 13,8 V) am Akku an, verbrate ich die überschüssige Leistung mit einem 12 V Tauchsieder in einem Wasserkanister (dumpload)

Gruß Klaus

Interessant... :slight_smile:

Ich kümmere mich mal um eine zweite Zelle gleichen Typs, dann hätte ich 40 Wp bei 18 V. Klingt nach einem Anfang. :slight_smile:

Wir haben für unsere Motorräder auch kleine Erhaltungsgeräte. Das sind keine Solarzellen, die bringen 12 V bei wenigen mA, glaube ich. Von der Bauart her, kann da auch schwerlich groß was an Technik untergebracht sein.

Um das so zu machen (Spannungsteiler, damit ~13,8 V abfallen, sonst nix) und einfach an die Batterie hängen, ist bei diesen größeren Zellen vermutlich keine so gute Idee, oder?

Hallo flomei,

das mit dem Spannungsteiler hast Du wohl falsch verstanden, über den Spannungsteiler messe ich die am Akku anliegende Spannung über einen Analogeingang des Arduino. Steigt die Spannung über einen, im Sketch festgelegten Wert (z.B. 13.8 V bei Erhaltungsladung) wird die Ladung über eine MOSFET-Schaltung, die von einem Digitalpin des Arduino angesteuert unterbrochen, indem die überschüssige Leistung per dupload verheizt wird (Tauchsieder).

Ich hatte diese Schaltung ursprünglich für ein Kleinwindrad zusammengebaut, betreibe sie jetzt aber an den schon genannten Solarpaneelen. Vielleicht kann man sie für Solarpaneele so abwandeln, dass die Ladung über den MOSFET erfolgt und bei Überschreitung der gewünschten Akkuspannung unterbrochen wird. Die Solarzellen laufen dann im Leerlauf, ich glaube das schadet den nicht?

Wenn Du interessiert bist, dann kann ich ja mal die Schaltung posten und die Experten im Forum können das Ganze vielleicht optimieren.

Gruß Klaus

Schaltung und Sketch würden mich auch interessieren. Es wäre toll, wenn Du das veröffentlichen könntest.

Grüße,
Mario.

Hallo!
Das wäre super, wenn du das veröffentlichen würdest, kann sicherlich noch mehr Leuten helfen.

Mit dem Spannungsteiler bezog ich mich auf die Erhaltungsladung von Batterien.
Bei zwei Solarzellen in Reihe a 9 V komme ich ja auf 18 V Spannung.
Die wollte ich mittels Spannungsteiler auf 13,8 V runterbrechen und das dann auf die Batterie "puffern".

Deine Lösung ist aber sicherlich eleganter, sicherer und skalierbar(er).

Zweite Solarzelle bekommen, damit jetzt also 2 x 20 Wp mit 18 V... :smiley:

Hallo,
werde die einfache Arduinoschaltung und die Sketches einstellen. Brauche aber noch etwas Zeit, da ich noch eine ganze Menge drumherum gebastelt habe und ich das Ganze noch vereinfachen muss. Also ein bis zwei Tage...

Gruß Klaus

Hallo,

hier nun die Minimalschaltungen (mit und ohne dumpload) und den sketch dazu. Im sketch sind die notwendigen Änderungen für die beiden Varianten kommentiert.

Meine Originalschaltung und dementsprechend das Arduinoprogramm sind natürlich umfangreicher. Ich habe zusätzlich zur Spannungsmessung noch eine Strommessung, eine Drehzahlmessung für den Dreiphasengenerator für die Windradversion und ein vierzeiliges LCD-display. Z.Zt. bin ich gerad dabei die Schaltung für drei 50W Solarpaneele neu aufzubauen (die Platine dafür ist schon fertig, aber muss noch gebohrt undbestückt werden). Da ist dann noch zusätzlich ein Datenlogger mit SD-card und eine DCF77 Funkuhr integriert. Die einzelnen Module habe ich auf dem Steckbrett schon getestet, doch jetzt muss ich das alles noch in einem sketch zusammenfügen. Später will ich die Daten dann noch über ein Ethernetshield in das Netz stellen. Die letzten verbliebenen ports am Arduino will ich dann ach noch für einige Status-LEDs nutzen.

Zur Schaltung:
Den MOSFET kann man natürlich mit jedem logic-level Typen austauschen, natürlich müssen die Werte für die entsprechende Leistung passen. In meiner z.Zt benutzten Schaltng habe ich zwischen Gate und Arduinoport noch ein 56 Ohm Widerstand geschaltet.
Die Wahl der Widerstände für den Spannungsteiler habe ich so getroffen, weil ich diese ungraden Werte geradeaus einem Sortiment daliegen hatte, die können natürlich verändert werden.

Ich hoffe, dass ich als Laie hier nichts Falsches poste, aber bei mir funktioniert das was ich hier reingestellt habe. Kritik sehe ich als hilfreich an.

  /*Spannungsmessung mit Arduino PV-Einspeiseregler (Ausschnitt)
   Schaltung Spannungsteiler:
   Vin )------33,4k---+---6,6k---( GND Arduino und Vin
                      |----( A0
   */
  
  #define voltPin A0    // inputpin für Spannungsmessung an Batterie
  #define shuntPWM 6 //pin 6 für PWM-Ansteuerung MOSFED GATE
  const int lVoltConst = 29; /* Konstante für Umrechnung analogen Messwert in Volt 
  muss durch Messung und Berechnung in Abstimmung mit den Spannungsteilerwerten errechnet werden Formel:
  Messwert Multimeter (Volt) * 1023 / analogIn-Wert am Arduino (Messreihe erforderlich)*/
  const float UMAX = 13.8; //Maximalwert der Ladespannung, je nach Akkutyp und Ladezyklus
  int lVoltSensor = 0;  // Spannungsmessung an analogIn Pin A0
  int lVolt = 0; //gemessene Spannung
  float fVolt = 0; //Ausgabewert
  int i_PWM = 0;    //PWM-Wert MOSFET Ansteuerung
  
  void setup()
  {
    pinMode(shuntPWM, OUTPUT); // pin als Ausgang definieren
    pinMode(voltPin, INPUT);   // Pinmode für A0
    Serial.begin(9600); // +++Serial initialisieren - nur debug
    Serial.print("hallo - Spannungsmessung");
    delay(2000);
  }
  void loop() 
  {
    lVoltSensor = analogRead(voltPin);  //Auslesen Messwert A0  
    Serial.println(lVoltSensor, DEC); // +++debug
    fVolt = lVoltSensor * lVoltConst; // Berechnung Volt 1.
    Serial.println(lVolt); // +++debug
    delay(500); // +++debug
    fVolt = fVolt/1024; // Berechnung Volt 2
    Serial.println(fVolt); // +++debug
    delay(1000); // +++durch withoutDelay ersetzen   
    PWM_shunt(); //Funktion
  }
  
  //Funktionen
  void PWM_shunt() // Funktion zur  Ermittlung des aktuellen PWM-Wertes zur Ladereglung
  {
    if (fVolt > UMAX) //Ladespannung Obergrenze prüfen
    {
      if (i_PWM < 254) i_PWM--; //PWM am shunt erhöhen !für Schaltung 01
      // für Schaltung 02 : if (i_PWM < 254) i_PWM++; 
    }
    else if (i_PWM > 0) i_PWM++;//PWM  am shunt absenken !für Schaltung 01
        // für Schaltung 02 : if (i_PWM < 254) i_PWM--; 
    analogWrite(shuntPWM, i_PWM); // PWM-Wert ausgeben für Shunt, je nach Spannung
  }

Das Hochladen der Bilder klappt nicht. Habe auch kein vernünftiges Tutorial zum einbinden von Bildern im Forum gefunden.

Erhalte jedesmal die folgende Fehlermeldung:
The upload folder is full. Please try a smaller file and/or contact an administrator.

Hallo,

werde nochmal einen Versuch starten die beiden Schaltungen hier einzufügen

Danke für die Pläne!

Wofür hast du eigentlich eine Blindlast in dem Schaltkreis?
Kann ich den nicht einfach öffnen und an meinen Zellen liegt Spannung an, aber ich nehme die halt nicht ab?

Danke!

Hallo flomei,

für die von Dir genannte Variante ist die erste Schaltung. Damit kann mann die Solarzelle einfach über den MOSFET vom Akku trennen bzw. PWM-gesteuert die Spannung am Akku herunterfahren. In dem geposteten Beispielsketch kann dann die Funktion void PWM_shunt() so wie sie dasteht genutzt werden und die als Kommentar // gesetzten beiden Zeilen können gelöscht werden.

Die Variante mit dem dumpload ist für den Anschluss an ein Windrad gedacht. Hier kann man den Anschluss an einen Akku nicht einfach abschalten, sonst würde das Windrad ungebremst hochtouren und letztendlich bei Sturm auseinanderfliegen. Deshalb muss hier immer eine Last anliegen.

Gruß Klaus

@berlin1109 Verzeihung mal; da sind eine ganze Menge Fehler in den beiden Schaltplänen.

  • Der Spannungsteiler zur Batterie-Spannungsmessung ist falsch dimensioniert. Sollte R2 vieleicht 33kOhm sein?
  • Ein MOSFET brauch einen Gate-Widerstand damit der Arduino-Ausgang nicht kaputgeht (Stromspitze beim Laden der Gatekapazität).
  • Im ersten Schaltbild: Wie soll der MOSFET schalten. Er ist hochohmig wenn die Gate-Sourcespannung (fast) null ist und schaltet auf niederohmig wenn die Gate-Sourcespannung über UGS(th) Gate Threshold Voltage ist. In diesem Fall mit der Gatespannung 0V bzw 5V ist die Gate Souce Spannung -12V bzw -7V. Das sind unzulässige Werte.
  • Im zweiten Schaltbild ist der MOSFET richtig gepolt aber erklärst Du mir bitte wie ein Tauchsieder in einem Auto funktionieren soll. Soll man da 200 Liter Wasser mitführen? Bei 18V wären 0,6 Ohm Tauchsieder 30A; bei 12V immernoch 20 A. Das wären 240W die verheizt werden müssen und sichergegangen werden muß, daß bei Temperaturen um 40 Grad im Sommer das Wasser nie verdampft. 30 A bei 18V Solarzelle wären das 540W also eine Solarpannel zwischen 4 und 5 Quadratmeter.

@flomei Spannunsteiler verwendet man nur für Spannungsmessung. Zum Angleich von Solarpannel und Batterie verwendet man Laderegler die auf das Solarpannel abgestimmt sein müssen, dieses im Arbeitspunkt der max Leistungsabgabe betreiben und die notwendige Ladespannung des Akkus liefern.

Grüße Uwe

Hallo ihr Lieben :slight_smile:

//Nichternstgemeinterlästermode_on
Du machst gerade folgendes:

  • Du möchtest einen Anhänger ziehen, Dein PKW ist jedoch zu schwach
  • Du kaufst einen zweiten PKW dazu und hängst ihn davor
  • Du stellst fest, dass die Fuhre zu schnell wird
  • Du verstopfst bei beiden PKW die Luftfilter bis die Leistung passt
    //Nichternstgemeinterlästermode_off

//Helpmode_on

  1. Du brauchst natürlich nur 1 Solarmodul

  2. Du must die Belastung des Moduls abhängig von der Bestrahlung verändern (Das nennt man MPP Tracking, die Einstellung auf den besten, jedoch sich mit der Einstrahlung verändernden Arbeitspunktes Pmpp=Umpp*Impp)

  3. Mit der zur verfügung stehenden Energie kann man mittels Step up Wandler hochREGELN und auf 13,8 V begrenzen.

  4. Da die Taktfrequenz für einen SU-Wandler zu gering ist muss direkt auf die Hardware des Arduino zugegriffen werden.

-> 1 Modul, Wirkungsgrad ~90%, sicheres Laden

Code für Stepup mit Arduino 2009:

// Sketch for Elektor Design Tip 090894-I
// Arduino step-up converter
//
// CPV, 25/11/2009

#define TIMER_CLK_STOP    0x00  /* Timer stopped */
#define TIMER_CLK_DIV1    0x01  /* Timer clocked at F_CPU */
#define TIMER_CLK_DIV8    0x02  /* Timer clocked at F_CPU/8 */
#define TIMER_CLK_DIV64   0x03  /* Timer clocked at F_CPU/64 */
#define TIMER_CLK_DIV256  0x04  /* Timer clocked at F_CPU/256 */
#define TIMER_CLK_DIV1024 0x05  /* Timer clocked at F_CPU/1024 */

#define VREF  (5.0) /* volt */
#define VREF_FIDDLE  (0.07) /* volt, to correct for resistor precision problems etc. */
#define VRATIO  (22.0/(82.0+22.0)) /* Vadc/Vout, these are the feedback resistor values in kOhm */

const int gate = 11; // Gate drive pin (PWM).
const int feedback = 0; // Vout measure input.
int vout = 0;
int vout_average = 0; // For debug/feedback only.
int vtarget = 0;
const int hysteresis = 3;
int pwm = 1;

#define PRESCALE  25 /* times 10 ms */
int prescale = 0;


// Not used, for completeness sake only.
float adc_to_vout(int adc)
{
  return ((float)adc*(VREF+VREF_FIDDLE))/(1023.0*VRATIO);
}


// Convert an output voltage to an ADC value.
// Calculations are done in ADC values (int), not volts (float).
int vout_to_adc(float volt)
{
  return (int)((volt*VRATIO/(VREF+VREF_FIDDLE))*1023.0);
}


void setup()
{
  // Setup serial port for control & debug.
  Serial.begin(9600);

  // Pins default to inputs, so we only have to setup this one.
  pinMode(gate,OUTPUT); 

  // Here are some instructions that write directly to registers.
  // The goal is to set the PWM frequency as fast as possible
  // and to activate the right output(s).
  TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
  TCCR2B = _BV(TIMER_CLK_DIV1); // Set prescaler to 1.

  // Set initial output voltage to 10.0 V.
  vtarget = vout_to_adc(10.0);

  // Another direct register write.
  OCR2A = pwm; // Set duty cycle (0..255).
}


void loop()
{
  // Measure the current value of Vout.
  vout = analogRead(feedback);

  // Keep a running average of Vout (for feedback only).
  vout_average += vout;

  // Adjust PWM so that the target will be reached.
  // Use a hysteresis to prevent fast oscillations
  // around the target value.
  if (vout>vtarget+hysteresis) pwm -= 1;
  else if (vout<vtarget-hysteresis) pwm += 1;
  OCR2A = pwm; // Update PWM.

  // Don't print Vout every time we go through the loop.
  prescale += 1;
  if (prescale>=PRESCALE)
  {
    // Print Vout to the serial monitor:
    Serial.print("vout = " );
    Serial.println(vout_average/PRESCALE);
    vout_average = 0;
    prescale = 0;
  }

  // See if a new target value came in.
  // Values should _always_ be three digits long: 000 to 240
  // The third digit is the decimal, i.e. 123 means 12.3 V.
  if (Serial.available()>=3)
  {
    // Convert 3-digit ASCII value to target voltage.
    int temp = (Serial.read()-'0')*100;  // tens
    temp += (Serial.read()-'0')*10;  // units
    temp += Serial.read()-'0'; // decimal
    if (temp>240) temp = 240; // No more than 24 V!
    // Set new target.
    vtarget = vout_to_adc(temp/10.0);
    // Show what we understood.
    Serial.print("vtarget = ");
    Serial.println(vtarget);
  }

  // Wait 10 milliseconds.
  // This way we sample at 100 Hz.
  delay(10);
}

-> Schaltung hierzu in Elektor 7/8 2010

Viele Grüße

Jörg

@uwefed
Ja, habe den Fehler bemerkt, der Widerstand im Spannungsteiler hat einen Wert von 32,4 kOhm. (Der Schaltplan für den jetzt von mir Benutzten Laderegler war noch Handgezeichnet und da habe ich mich wohl beim Übertragen verlesen…) Danke für den Hinweis.

Zum Gate-Widerstand:

  • Den MOSFET kann man natürlich mit jedem logic-level Typen austauschen, natürlich müssen die Werte für die entsprechende Leistung passen. In meiner z.Zt benutzten Schaltng habe ich zwischen Gate und Arduinoport noch ein 56 Ohm Widerstand geschaltet.

Als Laie hatte ich dazu vorher bei mikrocontroller.net einiges gelesen und da wurde immer wieder heftig diskutiert ob Gate-Widerstand oder nicht. Deshalb die Schaltung ohne. Jetzt habe ich einen 10 Ohm Widerstand zwischen Gate und arduino d6 eingezeichnet. Werde es dann auch bei meinem Laderegler so umsetzen. (Der z.Zt. genutzte hat den Widerstand noch nicht und bisher keine Probleme)

Ja, zweiter Fehler: es fehlt eine Rückstromdiode. Habe die jetzt auch eingezeichnet und so müsste es funktionieren!?

Das mit dem dumpload (z.Zt zwei 12V Tauchsieder , je 200W parallel in 30L Kanister mit Wasser) habe ich unter #11 schon erklärt, schließt man ein Windrad (in meinem Fall max. 300W) an, dann ist er unbedingt notwendig! Ist nur eine zweite Variante, da ich Windrad und Solarzellen parallel betrieben habe.

Das verstehe ich nicht:

  • Im zweiten Schaltbild ist der MOSFET richtig gepolt aber erklärst Du mir bitte wie ein Tauchsieder in einem Auto funktionieren soll...

Ich habe das so verstanden, dass flomei den Akku bei Standzeiten des Autos (Garage/Carport/Hof) laden will und Solarzelle wie auch der Laderegler Stationär sind. Dann stört doch auch kein Tauchsieder im Wasserkanister? Ladekabel einfach an den Akku...

Bei 18V wären 0,6 Ohm Tauchsieder 30A; bei 12V immernoch 20 A.

Der dumpload sollte möglichst niederohmig sein damit die gesamte überschüssige Leistung bei Erreichen der Akkuschlussspannung abgeleitet und der Akku nicht mehr geladen wird. Bei ca. 18 Vmax und 2,25 A 40,5 (W max = Herstellerangaben für die sahara ausgelegt) kann der dumpload natürlich kleiner ausfallen.

30 A bei 18V Solarzelle wären das 540W also eine Solarpannel zwischen 4 und 5 Quadratmeter.

Ja, wenn ich 5 Quadratmeter Solarpaneel mit der angenommenen Leistung installiere und damit nur einen unterdimensionierten Akku laden will, dann muss ich den Überschuss „verheizen“ oder die Solarzellen irgendwie vom Akku trennen, sonst wird er überladen und man kann ihn entsorgen. Deshalb sollte Solarpaneel und Akku so dimensioniert sein, dass möglichst wenig Energie „verheizt“ oder nicht genutzt wird. Trotzdem muss ich das Überladen verhindern.

In verschiedenen Solarforen werden Ladereglerschaltungen vorgestellt, die ähnlich funktionieren und bei Ladeschluss die Energie einfach verheizen. Bei 2x20W max (die Flomei jetzt hat) ist das doch nicht viel. Die Energie wird bei Ladeschluss eh nicht mehr genutzt.

Natürlich will flomei nur mit Solarzellen laden, deshalb Schaltung 01 mit entsprechender sketch-Version.

Gruß Klaus

Hier nun die überarbeiteten Schaltungen:

@Kickboxer
Natürlich ist Deine Lösung auch ein Ansatz oder einfach ein anderer Lösungsansatz.

Deiner

//Nichternstgemeinterlästermode_on
Du machst gerade folgendes:

  • Du möchtest einen Anhänger ziehen, Dein PKW ist jedoch zu schwach
  • Du kaufst einen zweiten PKW dazu und hängst ihn davor
  • Du stellst fest, dass die Fuhre zu schnell wird
  • Du verstopfst bei beiden PKW die Luftfilter bis die Leistung passt
    //Nichternstgemeinterlästermode_off

Allegorie kann ich nicht ganz folgen.
Um anzunehmen ob das zweite Solarpaneel wirklich nicht benötigt wird, muss man erst einmal wissen wie schwer der Anhänger ist und welche Leistung das Auto hat.

Also ein Akku mit 36, 50 oder 80 Ah? Wie lange steht das Auto und wie alt ist der Akku und wie lange hält der Akku (z.B. bei Frost) noch die Ladung. Wie viel Sonne strahlt auf das Solarpaneel ein (besonders im Winter bei nur wenigen Sonnenstunden) wenn grade Energie am Akku gebraucht wird?

Wenn ein Solarpaneel mit max. 20W ausreicht um die Autobatterie zu laden und nur 9V Maximalspannung liefert (effektiv liegt Vmax erheblich darunter – Saharawerte) kann Dein Vorschlag funktionieren. Aber auch dabei muss man davon ausgehen, dass im Sommer die Sonne 12 Stunden mit voller Kraft brennt und der Autoakku nach langer Urlaubsreise voll aufgeladen ist. Also kann man auch in diesem Fall die Ladung nur unterbrechen oder „verheizen“.

Letztendlich muss die benötigte (Solar-)Energie ausreichen um den „Nachladebedarf“ des Akkus abzudecken. Dabei wird es immer dazu kommen, dass mehr Solarenergie anliegt, als gerade vom Akku gespeichert werden kann und dann muss man eben abschalten oder „verheizen“, sonst nimmt der Akku Schaden.

Es liegt als primär nicht an der Schaltung (Hochregeln, Abschalten oder Verheizen) sondern an der Dimensionierung von Energiequelle (Akku, Windrad, Wasserrad oder Hometrainer mit Generator) und Verbraucher (Akku, Einspeiseregler uvm.)

Gruß Klaus

Hallo!
Vielen Dank für all die Antworten.

Ich hab jetzt auch nochmal was gemacht, nachdem ich darüber nachgedacht habe, wie sowas funktionieren muss bzw. sollte bzw. tut.

Hier erstmal der Schaltplan:

Dann will ich mal anfangen...

Oben links (roter Bereich) sind die Anschlüsse der Solarzellen. Die sind in Reihe geschaltet und liefern damit im Idealfall etwa 18 V.

Daraus erzeuge ich zunächst permanent (blauer Bereich) mit einem LM 7805-Baustein eine 5 V Versorgungsspannung für den Arduino bzw. den ATMEGA-Chip.
Ferner werden (grüner Bereich) 3,3 V erzeugt, die der Step-Down-Wandler als Referenzspannung benötigt.

Jener findet sich oben rechts (gelber Bereich). Der ist ziemlich vereinfacht dargestellt, da gehören eine Menge Kondensatoren, Spulen etc. pp. bei. Ich dachte da an einen "L5973 D", der (korrekt beschaltet) dann 13,8 V bei maximal 2,5 A Strom liefert.

Das wird über einen MOSFET (pinker Bereich) dann auf die Batterie gegeben.

In regelmäßigen Abständen wird dieser Ladevorgang unterbrochen (d.h. der MOSFET nicht leitend geschaltet) und der Arduino leistet seine Arbeit.

Über einen Spannungsteiler (oranger Bereich) wird geprüft, ob die Batterie schon eine Spannung von, in diesem Fall, 13,8 V erreicht hat. Das ist allerdings zu hoch, wie mir gerade bewusst wird. Da müsste man den Spannungsteiler bzw. die Programmierung so anpassen, dass bei etwa 12,6 V der MOSFET dann nicht mehr eingeschaltet wird.

Nunja, der Arduino prüft also dann regelmäßig die Spannung der Batterie. Sollte diese unter einen Schwellenwert fallen (12,2 V? 12 V?), dann wird der MOSFET wieder eingeschaltet und lädt die Batterie wieder...

...

Alternativ... Spar ich mir den Aufwand und kauf irgendeine billige Solarzellenerhaltungsgeschichte. Da bleibt allerdings der Bastelspaß auf der Strecke...

Tja, Meinungen oder Korrekturen zum Entwurf?

Danke!

Das hol ich doch ganz dreist auf der ersten Seite nochmal nach oben... ;-D

Hallo flomei,

deine Schaltung könnte auch so funktionieren, jedoch stellen sich mir einige Fragen. Mit dem LM7805 verheizt man viel energie, vorallem wenn im Sommer der Akku voll ist und und die Sonne senkrecht steht. Da würde ich eine andere Lösung wählen (z.B. gibts bei pollin folgenden Bausatz:

der hat einen besseren Wirkungsgrad und ist nicht teuer.

Einen Stepdown-Wandler brauchst Du nicht. Mann kann einen 12 V Akku ohne Gefahr direkt mit 18 V Voltpaneelen laden. Liegen die (nur theoretisch erreichbaren) 18 V max. an und der Akku ist nicht voll geladen, bricht die Spannung sofort ein. Bei Bleiakkus ist eine Ladestrombegrenzung in diesem Aufbau nicht notwendig, da die beiden Paneele mit Ihrer Leistung den Akku nicht gefährden können. Der Akku darf nur nicht überladen werden. Wird die maximale Ladespannung des Akkus erreicht, soll ja der arduino über das Mosfet die Ladung unterbrechen.

In der Praxis werden Blei-Säure-Akkus mit bis zu 14,5 V geladen. für eine Erhaltungsladung ist jedoch oft 13,8 V üblich.

Es reicht also der Arduino zum Spannungsmessen über den Spannungsteiler und für die Ansteuerung des Mosfets. Mit einigen LEDs kann mann sich die Funktion anzeigen lassen (an freie digitalports mit Vorwiderstand und dann im Programm ansteuern, z.B. läd, Akku ist unter 13,8 V oder Akku ist voll). Besser ist natürlich ein LCD auf dem die Werte und der Ladezustand ausgegeben werden können.

Bin übrigens mit meinem Laderegler weitergekommen. Die Platine ist fertig und ich bin gerade beim Testen und Zusammenschreiben der einzelnen Programmteile für Mosfetansteuerung, Strom,- und Spannungsmessung, SD-datenlogger und LCD Ausgabe. Dabei fallen mir immer wieder Dinge ein, die ich mit den letzten freien ports am Atmega umsetzen kann. Auch muss ich mir gedanken um ein Gehäuse dafür machen...

Gruß Klaus

Hallo,

einen Dumpload oder ähnliches braucht man für PV-Module auf keinen Fall.
Das ist nur unnötiger Ballast. Üblicherweise werden die Module kurzgeschlossen, wenn sie nicht gebraucht werden.
Somit fällt die Spannung auf nahezu 0V und die Leistung bricht dann logischerweise auch fast komplett zusammen.
Daher macht ein Kurzschluss den Modulen nichts.

Wenn das Modul 18V Leerlaufspannung hat, dann heißt das, dass kein Strom fließt und somit das Modul keine Energie liefert.
Daher ist ein Step-Down Wandler für diesen Fall unsinnig. Sobald man die Zellen belastet, haben sie ja nicht mehr ihre Leerlaufspannung sondern die Spannung, die sich für die jeweilige Belastung einstellt. Da sich ein Bleiakku nun ziemlich viel "Strom nehmen kann", bricht die Spannung bis auf die Zellspannung des Akkus ein. Jedes einfachere Solarladegerät arbeitet nun so, dass es die Solarzellen einfach an die Batterie schaltet und bei Ladeschlussspannung von der Batterie weg und gleichzeitig kurz schließt. Bei dieser Art Ladung weiß man leider nie, ob man im optimalen Wirkungsgrad der Solarmodule arbeitet. Da sich dieser auch mit der Sonneneinstrahlung und Temperatur ändert, wird man den nur selten treffen.

Daher gibt es die feinere Lösung: Ein MPP Tracker Ladegerät. Wurde ja auch schon angesprochen.
Hier hat sich da mal einer genauere Gedanken gemacht:
http://www.timnolan.com/index.php?page=arduino-ppt-solar-charger

Grüße,

Tom