Dies Projekt ist keine grosse Wissenschaft. Der kleine Laderegler hat nur eines zum Ziel: Den angeschlossenen 12V Blei-Gel Akku mit einem Solarpanel (max. 30W) aufladen, über einen Verbraucher entladen und bei alledem sicherstellen, dass der Akku nicht beschädigt wird. Es wird lediglich die Spannung überwacht, da keine Strommessvorrichtungen vorgesehen sind. Maximaler Lade- und Entladestrom ist 3A. Der Vorteil gegenüber den ganz billigen Ladereglern ist, dass die Last abgeworfen werden kann. Schaltung Aufgebaut wurde alles um dem AtMega48 herum. Und selbst dieser ist eigentlich vollkommen überdimensionert. Hat aber z.B. den Vorteil, dass man zum Debuggen einen MAX232 anschließen kann (das sind die Kabel auf dem Bild) und nicht 50 verschiedene Controllertypen auf Lager haben muss. Natürlich lassen sich 88/168er auch verwenden. Aufbau Hier gibt es nicht viel zu beachten. Lediglich die dünnen roten Leiterbahnen auf dem Top-Layer sollen unterhalb der Platine mit mindestens 0,5 mm² Leitung verlegt werden. Dafür ist die Platine leichter zu ätzen bzw. billiger zu bestellen. Software Achillesferse bei diesem Projekt ist die Genauigkeit der Spannungsmessung. Eigentlich hatte ich vor VCC als Referenz zu verwenden. Laut Datenblatt hat die Spannung vom LP2950-5.0 nur 0,5% Toleranz und einen geringen Temperaturdrift. Also deutlich genauer die interne Referenz des AVRs. Leider war dies in der Praxis anders, so dass ich wieder auf die interne Referenz zurückgreifen musste. Die Software enthält ist ziemlich schnell zusammen geworfen, enthält aber einen schöne Funktion zum Linearisieren beliebiger Messwerte über einen Kennlinie mit beliebig vielen Stützpunkten. Sollte bei jeder gebauten Platine angepasst werden (leider :-( ). Der ADC betreibt oversampling um auf 12 Bit Auflösung zu kommen. Im Normalfall läuft der Controller bei 128 kHz und wacht etwa 4 mal in der Sekunde aus dem Idle-Zustand auf und übernimmt seine Aufgabe. Es gibt einen internen Laufzeitzähler, der einem aber erst dann etwas bringt wenn man den Controller mit mind. 1 Mhz taktet und per UART (1200 Baut 8N1) an den Rechner anschließt. Hier bekommt man nun einen Liste von CSV-Werten geliefert, die man so schnell zu einem Diagramm machen kann: Time[s];ADC_Batt[1];U_Batt[mV];ADC_Panel[1];U_Panel[mv] 0.262;3637;12954;6;159 1.048;3637;12954;7;166 1.310;3637;12954;8;172 1.572;3638;12957;9;178 1.835;3636;12951;9;178 2.097;3636;12951;8;172 ... Zum Schluss wurde noch die Messung des eingebauten Temperatursensors eingebaut. Doch entweder mache ich etwas falsch oder der Fehler liegt mit -23°C noch höher als im Datenblatt angegeben. Und selbst da lassen die +-10K bereits kalte Schauer den Rücken herunter laufen. Anzeigen Die grüne LED zeigt an, ob der Akku geladen wird. Die Rot-Grün Duo-LED soll einen Anhaltspunkt (!) für den Ladezustand (hoch, mittel, tief) des Akkus geben. Blinkt sie rot, so wurde die Last wegen zu tiefer Akkuspannung abgeworfen und kann nur durch erneutes Aufladen des Akkus wieder mit Strom versorgt werden. Viel Erfolg!
Verbesserte Kalibrierung und Unterdrückung der fälschlicherweise aktivierten "Charge"-LED. main.c
1 | // values from 2012-04-14
|
2 | linearizationTableU16_t linListBattVoltage = |
3 | {
|
4 | 6, |
5 | {
|
6 | { 0, 0}, |
7 | {929, 3240}, |
8 | {1781, 6166}, |
9 | {2616, 9038}, |
10 | {3522, 12154}, |
11 | {4064, 14021}, |
12 | }
|
13 | };
|
14 | |
15 | // values from 2012-04-14
|
16 | linearizationTableU16_t linListPanelVoltage = |
17 | {
|
18 | 8, |
19 | {
|
20 | { 0, 0}, |
21 | { 551, 3239}, |
22 | {1046, 6163}, |
23 | {1539, 9036}, |
24 | {2076, 12151}, |
25 | {2636, 15416}, |
26 | {3131, 18292}, |
27 | {3670, 21430}, |
28 | }
|
29 | };
|
main.h
1 | #define LED_CHARGE_THRESHOLD 135 // [mV] panel voltages has to be at leat this much higher than battery voltage
|
2 | #define LED_CHARGE_HYSTERESIS 20 // [mV]
|
Diese Werte variieren natürlich mit den Widerstandstoleranzen. Bei drei verschiedenen Controllern und Spannungsteilern hatte ich aber erstaunlicherweise nicht mehr als 0.7% Abweichung.
Hallo Frank, meld dich mal bitte bei mir bei PN, ich möchte dich etwas fragen. Grüße, Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.