NiMH-Akku-Ladegerät

Auszug au dem Lernpaket Mikrocontroller-Programmierung in Bascom und C                     
Elektronik-Labor  Literatur  Projekte  Lernpakete  Mikrocontroller





Das Lernpaket Mikrocontroller-Programmierung in Bascom und C habe ich irgendwann im letzten Herbst fertig gestellt. Aber eine der beschriebenen Anwendungen ist immer noch im Einsatz: Das Akkuladegerät. Ich halte damit immer meine Akkus fit für den Einsatz in der Digitalkamera. Zur Stromversorgung verwende ich das USB-Kabel einer verstorbenen PC-Maus. Alles läuft jetzt mit 5 V aus dem USB-Anschluss.

Im Handbuch sind zwei Ansätze beschreiben, einer in Bascom und einer in C. Das Bascom-Beispiel (s.u.) gibt die aktuelle Akkuspannung über die serielle Schnittstelle aus. Das C-Beispiel zeigt die Spannung im Display an. Für den Dauereinsatz ist das Display etwas zu hell. Deshalb habe ich als neue Filterscheibe ein weißes Blatt Papier eingelegt.

Akku-Ladegerät

Das hier vorgestellte Ladegerät für NiMH-Akkus arbeitet nach dem Impulsverfahren. Der Ladestrom wird jeweils für eine Sekunde eingeschaltet. Nach dem Abschalten des Stroms und einer kurzen Pause von 50 ms wird die Akku-Spannung gemessen, um zu erkennen, wann der Akku vollständig geladen ist. Der Vorteil dieses Verfahrens ist, dass der Akku während der Spannungsmessung stromlos ist. Es kann daher keine Verfälschung durch erhöhte Innenwiderstände geben. Das Ladeverfahren eignet sich auch für ältere Akkus, die von anderen Ladegeräten nicht mehr korrekt geladen werden.

 

Direktes Laden über die Ports 

Das Ladegerät ist für zwei Akkuzellen ausgelegt. Wenn man mit kleinem Ladestrom um 50 mA arbeiten möchte, kann der Strom direkt von zwei Ports geschaltet werden. Ein Portanschluss des Mega8 darf mit bis zu 40 mA belastet werden. Bei einer Akkuspannung von 2,4 V und einer Betriebsspannung von 5 V sind bei einem Vorwiderstand von 100 Ω theoretisch etwa 26 mA pro Portanschluss zu erwarten. Tatsächlich ist der Strom etwas geringer, weil der Port selbst einen endlichen Innenwiderstand hat und weil die Akkuspannung beim Laden bis auf ca. 3 V ansteigt. Die Ausgangsports sind zugleich AD-Eingänge, über die die Akkuspannung gemessen werden kann. Dazu müssen die Ports in den hochohmigen Zustand umgeschaltet werden.

 

Laden mit einem Schalttransistor  

 
Wenn größere Ladeströme bis etwa 200 mA erwünscht sind, kann ein Transistor eingesetzt werden. Diese Schaltung  wird auch in Kap. 11.8 für ein Ladeprogramm in C eingesetzt. Solange Port C.4 hochohmig geschaltet wird, ist der Transistor gesperrt. Über die beiden Widerstände liegt dann die Leerlauf-Akkuspannung am analogen Eingang ADC4.

Das Bascom-Programm kann ohne Änderung für beide Schaltungsvarianten eingesetzt werden. Die Ports C4 und C5 werden jeweils als Ausgänge geschaltet und hoch gesetzt. Nach einer Sekunde werden sie abgeschaltet und in den Eingangszustand zurückversetzt. Dann wird nach 50 ms die Leerlaufspannung gemessen und in Volt umgerechnet. Es wird dabei davon ausgegangen, dass der Controller mit 5 V versorgt wird. Man kann VCC nachmessen und die Referenzspannung im Programm entsprechend anpassen (z.B. 4,9 V). Die Genauigkeit wirkt sich direkt auf die Ladeschlussspannung aus, die hier mit 1,4 V pro Zelle festgelegt wurde.

Das Programm bleibt solange in einer Warteschleife, bis eine Spannung unter 2,8 V gemessen wurde. Die aktuelle Leerlaufspannung wird laufend über die serielle Schnittstelle an das Terminal gemeldet. Man kann also den aktuellen Ladezustand am PC erkennen. Am Anfang des Ladevorgangs ist die Akkuspannung noch deutlich unter 1,4 V. Dann wird jeweils nur einmal gemessen und die Schleife dann für den nächsten Ladeimpuls verlassen. Gegen Ende ist die Spannung kurz nach dem Ladeimpuls über 1,4 V und fällt dann langsam ab, bis ein neuer Impuls nötig wird. Ein vollständig geladener Akku erhält nur noch selten einen Ladeimpuls. Er wird damit niemals überladen, das Programm bewirkt aber eine Ladungserhaltung.

'Akku-Ladegerät

$crystal = 8000000
$regfile = "m8def.dat"
$hwstack = 64
$swstack = 64
$framesize = 64


Dim D As Integer
Dim R As Single
Dim U As Single

Open "comb.4:9600,8,n,1,inverted" For Output As #1
Open "comb.5:9600,8,n,1,inverted" For Input As #2

Config Adc = Single , Prescaler = 64 , Reference = Off
Start Adc

Print #1 , "Akku"
Do
Portc.4 = 1
Portc.5 = 1
Ddrc.4 = 1
Ddrc.5 = 1
Waitms 1000
Ddrc.4 = 0
Ddrc.5 = 0
Portc.4 = 0
Portc.5 = 0

Waitms 50
Do
D = Getadc(4)
U = D
U = U / 1023
U = U * 4.9 'Feinabgleich
Print #1 , U ; " V"
Waitms 200
Loop Until U < 2.8
Loop

End


Elektronik-Labor  Literatur  Projekte  Lernpakete  Mikrocontroller