Home ==> Power supply ==> Akku-Ladegerät

Akku-Logo Ungetestet und unfertig! Mit Vorsicht zu genießen!

Ein Akkupack-Lader für 4,8V-NiMH-Akkupacks mit Mikrocontroller und LCD

Akku-Logo 2 So, oder so ähnlich, sehen NiMH-Akkupacks aus: vier Zellen nacheinander geschaltet, und es kommen 4,8V heraus (linkes Bild: hinten sind auch noch zwei!).

Oder auch nicht. Wenn die Akkus nämlich leer sind, kommt halt auch nix mehr raus. Und man muss sie neu aufladen. Dazu kann kann einfach ein regelbares Netzteil auf 80 (für 800-mAh-Akkus) oder 200 mA (für 2000-mAh-Akkus) strombegrenzen und den Akkupack für genau 10 Stunden dranstöpseln.

Was passiert, wenn noch 400 mAh - oder wieviel auch immer - drin waren? Oder wenn man das Abstöpseln nach 10 Stunden vergisst und die Akkus 24 Stunden lang gebraten werden? Nun, dann kann man die 15 Euro, die der Akkupack gekostet hat, in die Wertstoff-Tonne kloppen (nein, besser in die Batterie-Sammelstelle damit, wegen dem vielen Nickel darin).

Damit das alles nicht passiert, braucht man ein intelligentes Ladegerät: eines, das den Akku zuerst kontrolliert entlädt und dann ebenso kontrolliert mit den richtigen mAh volllädt. Und das Beste an diesem hier ist: man kann immer genau sehen, wieviel noch drin war und wie lange es noch dauert, bis das Laden fertig ist. Neben einer grünen LED (die bei angeschlossenem Akku leuchtet, gibt es eine gelbe (die beim Entladen angeht) und eine rote (die beim Laden angeht).

Die LCD zeigt noch mehr an: die Spannung am Akkupack in Millivolt, den Entlade- und Ladestrom in mA und die Entlade- und Ladekapazität in mAh. Also: volle Transparenz und Kontrolle.

Die Schaltbilder, der Aufbau und weitere Zeichnungen sind in der LibreOffice-Draw-Datei hier enthalten. Berechnungen gibt es in der LibreOffice-Calc-Datei hier zum Download. Diese enthält auch die Rechenschritte für den Bleiakku-Lader hier.

1 Schaltbild

Schaltbild des Akkuladers Das ist die Hälfte der Miete: die Entlade- und Lademimik und die Aufbereitung der Messwerte. Das Ganze geht an eine sechspolige Verbindung zum TN24-LCD Modul. Das ist hier genauer beschrieben.

Das Trafo-Netzteil links macht die Ladespannung von ca. 10 Volt. Der Spannungsregler 78L05 macht daraus die 5V, die der Mikrokontroller und das CMOS-IC 4066 so brauchen.

Ein Spannungsteiler mit 10kΩ und 1kΩ bereitet die Akkuspannung zur Messung mit dem AD-Wandler im ATtiny24 auf (Sense-V, ADC0) und gibt sie an den ADC0-Eingang des ATtiny24 weiter. Dieser arbeitet mit der intern erzeugten Referenzspannung von 1,1 V. In der gezeigten Teiler-Schaltung können Spannungen bis knapp oberhalb von 12 V gemessen werden.

Überschreitet die Spannung am Akku den Mindestschwellwert (per Default: 1.000 mV), dann beginnt der Entlade-Algorithmus. Solange die Akkuspannung 4.500 mV überschreitet, schaltet dazu der ATtiny24 die Unload-Leitung auf Eins-Potenzial. Das öffnet den daran angeschlossenen BD439, dessen Kollektor über einen 39 Ω-Widerstand den Akku entlädt. Der Entladestrom fließt durch den 3,9Ω-Widerstand am Emitter, an dem pro mA Entladestrom 3,9 mV anfallen. Der Analogschalter 4066-1 schaltet beim Entladen diese Spannung auf die Sense-I- Leitung, die an ADC1 des ATtiny24 führt.

Unterschreitet der Akku die Entladespannung von 4.500 mV, schaltet der Kontroller die Leitung Unload auf Low und die Leitung Load auf High. Das startet das Laden. Der an Load angeschlossene BC547-Transistor schaltet dazu die Basis des Ladetransistors BD440 auf 2 V unterhalb der Betriebsspannung, eingestellt mittels der Durchlass-Spannung der roten LED. Der Emitter des BD440 wird dadurch auf 1,35 V unterhalb der Betriebsspannung eingestellt. Der 5,6Ω-Widerstand stellt dadurch den Ladestrom auf ca. 250 mA ein.

Noch eine Anmerkung zum Analogschalter 4066. Der hat neben der Tatsache, dass für alle Strommessungen nur ein einziger ADC-Kanal benötigt wird, eine weitere sehr wichtige Funktion. Beim Entladen würde an dem 3,9Ω-Widerstand am Minus-Pol des Akkus eine negative Spannung von bis zu -1,1 Volt abfallen. Das würde nicht nur keine Strommessung ermöglichen, da der ADC-Eingang bei negativen Spannungen immer nur Null liefert. Mehr noch: die Spannung würde die Grenze von -0,5 Volt unterschreiten, die minimal für jeden Pin des ATtiny24 in den Absolute Maximum Ratings festgelegt sind. Könnte also durchaus sein, dass der ATtiny24 damit kaputtgeht. Der 4066 kann solche negativen Spannungen aber locker ab und schaltet die Verbindung zu ADC1 zuverlässig ab, solange kein Laden eingeschaltet ist.

Aufbau

Aufbau des Ladegeräts So passen alle Bauteile für das Ladegerät auf ein Stück Platine mit 50 x 80 mm (1/4 Euro).

Achtung bei den drei LED, die an den sechspoligen Stecker angeschlossen werden! Ist die rote LED nicht angeschlossen, dann kann es beim Laden zu einem üblen Überstrom kommen. Das verbrät den 5,6Ω-Widerstand mit mehr als einem Watt, vergrämt den 2,3VA-Trafo und das alles tut auch dem angeschlossenen Akku nicht gut.

Stückliste

Stückliste Akkupacklader Viele Kleinteile. Beim Gehäuse kann man etwas sparen, bei der LCD sollte man das auf jeden Fall.

Das Ganze ist nicht viel teurer als ein Ladegerät von der Stange, aber hier hat man alles im Griff, kann es nach Bedarf umbauen (z. B. auf 800 mAh-Packs - einfach den 6Ω8 in 18Ω und den Sollwert in der Software von 2.000 auf 800 umschreiben), die Software an die eigenen Bedürfnisse anpassen und überhaupt ist alles viel schöner als nur mit drei popeligen LEDs. Und man hat was Eigenes, was sonst keiner hat.

Die Software

Die Software ist noch in Arbeit. Bitte etwas Geduld.

TBD

Wie es funktioniert

TBD

16*16-Bit-Multiplikation

16*16-Multiplikation, Zahlen Das sind zwei 16-Bit-Zahlen M1 und M2, die miteinander malgenommen werden sollen. Sie sind in vier Registern untergebracht.

16*16-Multiplikation, Vorbereitung Bevor es ans Malnehmen geht, muss erst einiges vorbereitet werden. Für M2 brauchen wir zwei zusätzliche Register, denn wir müssen M2 im ungünstigsten Fall 16 mal mit Zwei malnehmen, und dafür brauchen wir leeren Platz, wozu wir zwei Register entleeren (= mit Null-Bits befüllen).

Und für das Ergebnis brauchen wir vier weitere leere Register, denn bei Malnehmen zweier 16-Bit-Zahlen kann das Ergebnis 32 Bits haben. Wir beginnen den Tanz auch hier mit leeren Null-Bits.

16*16-Multiplikation, Rechtsschieben M1 Aber jetzt geht es endlich los. M1 wird jetzt um ein Bit nach rechts geschoben. Zuerst wird M1H nach rechts geschoben. Von links wird eine Null ins Bit 7 geschoben und rechts rollt Bit 0 in das Carry-Bit. Die Instruktion dafür ist Logical-Shift-Right (LSR). Dieses Carry wird nun mit einer anderen Instruktion, nämlich Rotate-Right (ROR), in das untere Byte hereingeschoben. Dafür rotiert jetzt das Bit 0 des unteren Bytes in das Carry-Bit.

Faktisch haben wir damit M1 halbiert, denn jedes Rechtsschieben macht jedes Bit zu seinem halben Wert: was vorher zwei war (Bit 1), wird nun eins (Bit 0), was vier war wird zwei, usw. usw.

16*16-Multiplikation, Addieren von M2 zum Ergebnis War beim Rechtsschieben eine Eins herausgerollt, müssen wir M2 zum Ergebnis dazu addieren. Dazu addieren wir E0 mit M2L mit der Instruktion ADD und schreiben das Ergebnis in E0 zurück. Weil bei jedem Addieren auch ein Überlauf auftreten kann, wird E1 mit M2H UND gleichzeitig das Carry addiert, mit der Instruktion ADC, und dessen Ergebnis in E1 geschrieben. Und so geht es weiter mit E2 und M22 und dann E3 und M23.

War keine Eins herausrotiert, dann lassen wir das einfach mit dem Addieren.

Jetzt müssen wir testen, ob alle beide Bytes von M1 schon Null sind. Wenn das der Fall ist, sind wir fertig mit dem Malnehmen. Sind hingegen noch Einsen in den beiden Registern, müssen wir weiter malnehmen.

16*16-Multiplikation, Linksschieben von M2 Weil das nächste Bit, das aus M1 rechts herausgeschoben werden wird, doppelt so viel wert ist wie das vorherige, muss M2 jetzt mit zwei malgenommen werden. Das könnten wir mit ADD und ADC mit sich selbst erledigen. Oder wir verwenden LSL (dasselbe wie ADD) und ROL (dasselbe wie ADC). Auf jeden Fall ist das Carry-Bit dabei wieder der Zwischenspeicher.

Nun geht es einfach mit dem Rechtsschieben von M1 weiter und das nächste Bit wird behandelt. Alle Schritte werden nun solange wiederholt, bis alle Einsen aus M1 herausgerollt sind.

Die Spannungsberechnung

Berechnung der Spannung aus den 64 ADC-Messungen Das hier zeigt am Beispiel einer Spannung von +5V, wie die Spannungsberechnung funktioniert. Wie man sieht, teilt der Spannungsteiler aus den beiden Widerständen die Spannung so, dass dann 455 mV am ADC0-Eingang liegen. Daraus macht der AD-Wandler einen Wert von 424, bei 64 Messungen und Aufsummieren werden daraus 27.136. Das passt in eine 16-Bit-Zahl.

In eine zweite 16-Bit-Zahl passt FU mit 12.100. Mit der nehmen wir die AD-Wandler-Summe mal und kriegen gigantische 328.345.600 heraus, eine 32-Bit-Zahl. Nun streichen wir einfach die beiden untersten Bytes dieses Ergebnisses (bzw. runden diese auf), was dem Teilen durch 65.536 entspricht, und kriegen dezimal 5.010 heraus. Das weicht, in mV, nur ganz wenig von 5.000 ab und entspricht unserer Genauigkeit des Widerstandsteilers und der Auflösung.

Wer die Teilerwiderstände ein wenig ändern will, kriegt mit der Tabelle hier, im Tabellenblatt "ADC" einen anderen Wert für FU heraus.

Die Stromberechnung

Berechnung des Entladestroms aus den 64 ADC-Messungen Beim Entladen schaltet der Kontroller die Unload-Leitung auf High und den ADC1-Messeingang mit dem 4066-Analogschalter auf den 3,9Ω-Widerstand, durch den der Entladestrom fließt. Am Beispiel eines Entladestroms von 130 mA ist hier der Rechengang gezeigt.

Wie bei der Spannung wird auch hier eine 16*16-Bit-Multiplikation verwendet. Allerdings nicht mit 12.100, sondern nur mit 282. Das ergibt beim Teilen durch 65.536 direkt den Strom in mA.

Wer mit der Auflösung von +/-1mA unzufrieden ist und lieber +/-0,1mA haben möchte, nimmt statt mit 282 einfach mit 2.820 mal und setzt vor der Ausgabe der letzten Ziffer ein Komma davor. Einfacher geht's nicht. Und wer es noch weiter treiben will, nimmt stattdessen 28.200 und kriegt +/-0,01mA Auflösung. Das ist dann allerdings bei der letzten Dezimalziffer eher Kaffeesatz.

Die Kapazitätsberechnung

Berechnung der Kapazität aus dem Ladestrom Das Berechnen der Kapazität ist beim Entladen und beim Laden zu erledigen, schließlich wollen wir auch gerne wissen, wieviel mAh noch in den Akkus waren.

Das hier zeigt den Rechengang, wie das erledigt wird, am Beispiel des Ladens mit 250 mA Ladestrom. Entscheidend ist dabei der Zeitraum, über den der Ladestrom bei jeder Spannungs- und Strommessung in den Akku fließt. Das sind hier 0,213 Sekunden. In dieser Zeit laden 250 mA eine Kapazität von 0,01479 mAh in den Akku. An dieser kleinen Zahl sieht man schon, dass wir nicht einfach mAh zählen können: erst nach etwa einer Minute ist ein mAh erreicht.

Der zweite Abschnitt zeigt die Berechnung des Ladestroms aus den gemessenen 975 mV am ADC1-Eingang, die der zweite 4066-Analogschalter beim Laden dorthin transportiert hat. Beim Teilen durch 65.536 kommen die 250 heraus, aber zur Kapazitätsberechnung brauchen wir ein weiteres Byte, zur Vermeidung von Rundungsfehlern. Das machen wir, indem wir nur das letzte Byte des Ladestroms aufrunden und die beiden höheren Bytes (64.002) mit dem Faktor FK von 993 multiplizieren.

Das Teilen durch 65.536 (mit Aufrunden) liefert uns 970 in den beiden untersten Bytes der Multiplikation. Teilen wir das durch 65.536, kriegen wir 0,01480 mAh heraus, was wir schon von oben her kennen (dort: 0,01179).

Das addieren wir nun jedes Mal zur 32-Bit-Zahl der Kapazität. Wenn wir das 10 Stunden / 0,213 Sekunden = 169.014-mal genauso addieren, kriegen wir die 2.500 mAh schon zusammen, die 10 Stunden Laden mit 250 mA so in die Akkus schaufeln. Nun sehen wir auch, wie bedeutend es ist, den Strom mit einem weiteren Byte zu versehen, denn 169.000-faches Addieren würde ohne weiteres Byte ziemlich ungenau werden.

Noch ein Wort gegen Genauigkeitsfanatiker: bloss nicht zu viel erwarten, denn der ATtiny24 ist ohne Quarz zwischen 3 und 10% ungenau beim internen RC-Oszillator. Und die Prozente gehen so in die Zeit von 0,213 Sekunden und damit auch in die Kapazitätsberechnung ein. Also: Vorsicht und nicht zu viel des Guten tun.

Die LCD-Ansteuerung

TBD

Viel Erfolg beim Nachbau.

Email an mich:

Mail-Adresse als Grafik

©2023 by http://www.gsc-elektronic.net