NiMH Akku Lader
Da ich mit kaufbaren Geräten entweder
unzufrieden war, oder aber diese mir einfach zu teuer erschienen, hatte
ich schon lange mal vor mir ein eigenes Ladegerät für NiMH Akkus zu
bauen. Das Gerät sollte sowohl sehr kleine als auch größere Akkus
laden und auch mit Akkupacks die aus mehreren Zellen bestehen umgehen
können. Darüber hinaus sollte auch die Möglichkeit bestehen Akkus zu
entladen und dabei die Kapazität zu ermitteln. Für die Erkennung eines
voll geladenen Akkus sollte das -deltaU Verfahren verwendet werden. Zum
Einsatz kommt hier zum ersten mal eine von einem Leiterplattenhersteller
individuell hergestellte Platine.
Dies geschah zeitgleich mit der Platine für den Signalplotter,
so dass es bei beiden Projekten eine ähnliche Platine zum Einsatz kommt.
Inzwischen ist bei dem Ladegerät die Hardware fertig, die Software ist
überwiegend fertig, leider funktioniert insbesondere die -deltaU Erkennung nicht
wie gewünscht.
Eigenschaften
- Controller: ATMEGA168 mit 8MHz
- Eingangsspannung: 7V bis 20V
- Ladestrom: 5mA bis 2,4A
- Entladestrom: max 2,4A
- Ladeverfahren: Konststantstrom
- Zellenzahl: 1 bis 8 (die maximale Anzahl ist abhängig von der Eingangsspannung)
- Serielle Schnittstelle um die Messdaten zum PC zu übertragen
- LCD zum Auswählen der Modi und Anzeigen der Akku Werte
- Vier Tasten Bedienung
Laden
Vor Beginn des Ladevorgangs muss die
Zellenzahl, die Kapazität des Akkus und die gewünschte
Ladegeschwindigkeit eingestellt werden. Aus dem Ladestrom und der
vorher eingestellten Kapazität wird laufend der Ladezustand
errechnet.
Erreicht dieser 100%, wird der Ladevorgang beendet. Eine zu hohe
Zellspannung oder ein Ladestrom der stark vom Sollwert abweicht beenden
den Ladevorgang ebenfalls. Eine -deltaU Abschaltung ist ebenfalls
implementiert, tendiert bei manchen Akkus aber zu einer zu frühen
Abschaltung. Deswegen kann die -deltaU Abschaltung bei niedrigen
Ladeströmen deaktiviert werden.
Sonstige Features
Anstelle als Ladegerät, kann die
Schaltung auch als einstellbare Konstantstromquelle dienen. Allerdings
dürfte der Ausgang nur bei ohmschen Lasten eine ausreichende
Regelcharakteristig liefern. Für die Akkus stehen verschiedene
Funktionen zur Auswahl: Laden, Entladen, Entladen mit anschließendem
Laden und Kapazitätsmessung, welche aus Entladen-> Laden->
Entladen-> Laden besteht. Eine weitere Funktion versucht den
Innenwiderstand von Akkus zu bestimmen. Softwareseitig kann eingestellt
werden, dass die Schaltung (ohne Akku) eine bestimmte Verlustleistung
(zb 8W) nicht überschreiten soll. Der Lade und Entladestrom wird dann
entsprechend begrenzt. Zu guter Letzt lassen sich noch für einige
Widerstände kalibrierte Werte im EEPROM des Mikrocontrollers ablegen.
Die Schaltung sollte verpolt angeschlossene Akkus ohne Schäden
überstehen können... getestet habe ich dies allerdings nicht ;-)
Java GUI
Um die Messwerte zu erfassen wurde eine GUI in Java geschrieben. Mit
dieser lassen sich auch die Kalibrierungswerte einstellen. Für die
Serielle Kommunikation kommt die RXTX Lib zum Einsatz. Diese bietet
Unterstützung für diverse Plattformen und Prozessoren.
Getestet wurde das Programm allerdings nur unter Linux.
Probleme
Wie oben schon geschrieben
funktioniert die -deltaU Abschaltung nicht 100%tig zuverlässig.
Das
Problem ist, dass bereits das Berühren des Akkus oder Bewegen der
Kabel
Spannungsänderungen provoziert, die eine zuverlässige
Erkennung eines
Spannungsabfalls (wie er bei einem vollem Akku auftritt) verhindern
oder aber zu früh auslösen. Daneben haben manche Akkus einen
extrem flachen Anstieg der Spannung während des Ladens, welcher zu
niedrig ist um von dem Ladegerät erkannt zu werden, so dass das
Ladegerät wegen einer nicht steigenden Spannung zu früh
abschaltet.
Daneben gab es noch eine Reihe weiterer Probleme, die ich inzwischen gelöst habe, die aber eine ganze Menge Zeit kosteten. So war der erst verwendete ATMEGA8 irgendwann voll und musste durch einen ATMEGA168 ersetzt werden, was ich aufgrund der äußerst ungünstigen Lage des Mikrocontrollers im Gehäuse (es musste alles auseinander geschraubt werden) so lange wie möglich hinausgezögert habe ;-) Auch der Verpolungsschutz hätte in der ersten Schaltungsversion nicht ausgereicht. Ebenso war zunächst T2 ein herkömmlicher Bipolartransistor, was zur Folge hatte, dass der Basisstrom beim Entladen mit gemessen wurde. Dies war im Normalfall zwar verschwindend wenig, war der Akku jedoch schon leer, versuchte die Regelung durch mehr Basisstrom den Transistor weiter zu öffnen, was dazu führte das irgendwann nur noch der Basisstrom von 20 bis 40mA (Kurzschlussstrom des OP Ausgangs) gemessen wurde und somit kleine Akkus scheinbar nie leer wurden. Nachdem dieser deswegen durch einen Mosfet ersetzt wurde, war dieser störende Strom zwar weg, dafür fing das ganze oberhalb von 100mA Entladestrom plötzlich an zu schwingen. Nach Schilderung des Problems in einem Forum gab mir jemand den Tipp einen Kondensator zwischen den Ausgang von OP2 und den Invertierten Eingang zu schalten. Dies half (in der Schaltung C3). Sollte sich herausstellen, dass auch die Regelung für die Ladeschaltung schwingt, wird auch an OP1 ein ähnlich geschalteter Kondensator eingebaut werden müssen. All dies war auf einer geätzten Platine deutlich schwieriger nachträglich zu ändern, als dies auf einer Lochrasterplatine mit freiem Platz der Fall gewesen wäre.
Daneben gab es noch eine Reihe weiterer Probleme, die ich inzwischen gelöst habe, die aber eine ganze Menge Zeit kosteten. So war der erst verwendete ATMEGA8 irgendwann voll und musste durch einen ATMEGA168 ersetzt werden, was ich aufgrund der äußerst ungünstigen Lage des Mikrocontrollers im Gehäuse (es musste alles auseinander geschraubt werden) so lange wie möglich hinausgezögert habe ;-) Auch der Verpolungsschutz hätte in der ersten Schaltungsversion nicht ausgereicht. Ebenso war zunächst T2 ein herkömmlicher Bipolartransistor, was zur Folge hatte, dass der Basisstrom beim Entladen mit gemessen wurde. Dies war im Normalfall zwar verschwindend wenig, war der Akku jedoch schon leer, versuchte die Regelung durch mehr Basisstrom den Transistor weiter zu öffnen, was dazu führte das irgendwann nur noch der Basisstrom von 20 bis 40mA (Kurzschlussstrom des OP Ausgangs) gemessen wurde und somit kleine Akkus scheinbar nie leer wurden. Nachdem dieser deswegen durch einen Mosfet ersetzt wurde, war dieser störende Strom zwar weg, dafür fing das ganze oberhalb von 100mA Entladestrom plötzlich an zu schwingen. Nach Schilderung des Problems in einem Forum gab mir jemand den Tipp einen Kondensator zwischen den Ausgang von OP2 und den Invertierten Eingang zu schalten. Dies half (in der Schaltung C3). Sollte sich herausstellen, dass auch die Regelung für die Ladeschaltung schwingt, wird auch an OP1 ein ähnlich geschalteter Kondensator eingebaut werden müssen. All dies war auf einer geätzten Platine deutlich schwieriger nachträglich zu ändern, als dies auf einer Lochrasterplatine mit freiem Platz der Fall gewesen wäre.
Bilder
Für eine größere Ansicht auf die Bilder klicken
Software und Schaltplan
Wie immer, Verwendung auf eigenes Risiko und ohne Gewähr.
akkulader1_final1-0-1.zip |
Version Final 1.0.1 der AVR und PC Software (GPL) |
lader1-2.png |
Schaltplan Version 1.21 |
Bei einem erneuten Entwerfen würde ich...
- Die Schaltung vorher intensiver testen, bevor sie geätzt wird
- Noch mehr Bauteile auf die Platine verlagern, auch wenn sie das etwas größer und teurer macht
- Die Bauteile im Gehäuse besser platzieren, so dass sich leichter Teile tauschen lassen
- Den RS232 Anschluss statt vorne, auf der Rückseite des Gehäuses platzieren
- Dem Mikrocontroller eine präzise Referenzspannungsquelle geben
- Die Taster an anderen Portpins anschließen um die A/D Eingänge für weitere Messpunkte in der Schaltung frei zu haben
- Die Möglichkeit vorsehen, den Ladestrom sehr schnell an und abzuschalten, damit sich auch während des Ladens die Leerlaufspannung ohne Last messen lässt und somit Leitungswiderstände die Messung nicht (signifikant) verfälschen können
- Gleich einen AVR mit 16KB Programm Speicher nehmen
- Die Hintergrundbeleuchtung des LCDs anschließen
- Das Gehäuse präziser bearbeiten
- Ein Gehäuse nehmen bei dem sich die entstehende Wärme besser abführen lässt
- Einen A/D Wandler mit mindestens 12Bit statt der jetzigen 10Bit Auflösung nehmen