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.

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