kleines Akkuladegerät mit PIC16F876

für einzelne NC- oder NMH-Zellen

(noch in Arbeit)



zurück zu Projekte , PIC-Prozessoren , Elektronik , Homepage


Ein Akkuladegerät für 750 mAh NiCd- und NIMh-Zellen
- Ladestrom 250 mA
- Ladedauer max 4 Stunden
- Ladeendeerkennung Delta-Peak
- Zellenzahl 1



Programme: 
  • Entladen
  • Laden
  • Topping-Laden
  • Erhaltungsladen
Controller des Ladegeräts

Einleitung
Die Zahl der im Haushalt mit Batterien oder Akkus betriebenen Geräte wächst ständig. Neben den Akkus (meist AA- oder AAA-Typ) besitzt man dann noch eine Billigladegerät. Eine exakte Ladung oder Akkupflege ist damit genausowenig möglich, wie die Analyse der wirklich in einem gealterten Akku noch verfügbaren Kapazität.
Richtige Ladegeräte, die das alles können kosten ein Vermögen. Also hat man schon wieder einen Grund, den Lötkolben in die Hand zu nehmen.


Anforderungen
Ein Akkuladegerät sollte in der Lage sein,

  1. mit einzelligen NiCd- und NiMh-Akkus umzugehen
  2. einen Akku bis zu seiner Entladespannung zu entladen
  3. einen Akku maximal zu laden, ohne ihn zu überladen
  4. einen Akku in max. 4 Stunden zu laden
  5. die in den Akku geladene oder aus ihm entladene Energiemenge zu messen und anzuzeigen
  6. Akkus von 150 mAh bis 7000 mAh zu laden/entladen.
Als ersten Schritt habe ich mir ein Akkuladegerät vorgenommen,. das die Punkte 1 bis 5 erfüllt. Das Gerät ist für 750 mAh-Akkus optimiert.
Später soll die gesamte Palette von 150 mAh bis 7000 mAh abgedeckt werden.

Ziel ist es nicht, nun alle Akkus einzeln mit diesem Gerät zu laden, sondern einzelnen Zellen zu pflegen und auszumessen.


Schaltung
Das Herz der Schaltung ist ein PIC16F876, der an PortB mit einem LCD-Display (2x16) und einer Tastatur versehen ist. PortA dient der Spannungsmessung und PortC der Steuerung der Ladeelektronik. Mit dem PWM-Ausgang RC2 soll später die Stärke des Lade/Entladestroms eingestellt werden.

Ein Netzteil liefert +5V / 300 mA (Vdd - Vss) für den PIC und die Ladeelektronik. Der dort eingesetzte 7805 erzeugt je nach Eingangsspannung erhebliche Hitze, die mit einem Kühlkörper abgeführt werden muss. Eine präzise Stabilisierung von Vdd auf +5V ist nötig, da diese Spannung auch als Referenz für den ADC des PIC benutzt wird.
 
Der PIC steuert eine Konstantstromquelle, die den Akku mit ca. 250 mA lädt, und eine Entladeschaltung, die den Akku mit 750 mA entlädt. Die Akku-Zellenspannung wird mit dem ADC des PIC überwacht.

Die Lade-Konstantstromquelle ist mit einem LM317 aufgebaut. Er regelt den Strom so, dass über dem Reihenwiderstand an seinem Ausgang (5 Ohm) eine Spannung von genau 1,25 V abfällt. Damit ergibt sich ein Konstantstrom von 250 mA. (R1 besteht aus 2 parallelgeschalteten 10 Ohm-Widerständen von jeweils 1/4 W). 

Die Entladeschaltung ist ein 1 Ohm Widerstand, der mit einem Transistor parallel zum Akku geschaltet wird. Der Entladestrom durch diesen Widerstand führt zu einem Spannungsabfall, der T3 öffnet, wodurch die Gatespannung von T2 verringert wird. Das stabilisiert den Entladestrom so, dass über R3 0,75 V abfallen (bei 20°C). Dies ist bei 750 mA der Fall. (R3 besteht aus zwei parallelgeschalteten 2 Ohm-Widerständen von jeweils 1/2 W). Da der Arbeitspunkt von T3 temperaturabhängig ist, gilt selbiges auch für den Entladestrom. (-50°C: 1,2A ; +150°C: 450mA). Für Indoor-Anwendungen ist die Stabilisierung aber ausreichend.

750 mAh Ladeadapter
Die Zellenspannung wird dem PIC auf zwei Wegen zugeführt. An RA0 liegt die Zellenspannung direkt an und kann mit einer Auflösung von ca. 5 mV gemessen werden. Um den Ladeschlusspunkt von NiMH-Akkus bestimmen zu können ist das aber nicht genau genug. Deshalb 'vergrößert' ein OPV das Spannungsfenster von 1,0V ... 1,75V auf 0V .. 3,75V. Diese 'Lupenspannung' wird an RA1 mit ca 1mV Auflösung gemessen. (LSB = 1,03 mV)

Erwärmung:
Der LM317 und R1 setzen maximal je 0,5 W in Hitze um, R3 und T2 maximal 1W.Aufgrund der langen Betriebsdauer sollten der LM317 und T2 je einen Mini-Kühlkörper bekommen.
Der 7805 erzeugt je nach Eingangsspannung mindestens 1 W (bei 8V), bei 12V Eingangsspannung sogar über 2 W Wärme, die mit einem Kühlkörper abgeführt werden muss. Als Kühlkörper sollte ein Typ mit einem TK von höchstens 15 K/W eingesetzt werden.

Aufbau:
Beide Dioden müssen aufgrund der geringen Betriebsspannung von nur 5V Shottky-Dioden sein.
R4 und der Emitter von T3 sind auf kürzestem Wege direkt mit den beiden Enden von R3 zu verbinden.


Theorie der Akkupflege

Hinweis: Der Wert C beschreibt einen Strom, der der Akkukapazität/h entspricht. Beispiel: für einen 800-mAh-Akku beträgt C = 800 mA.

NiCd- und NiMH-Akkus zeigen beim Laden einen typischen Spannungsverlauf. Die Zellenspannung steigt während des Ladens stetig an. Gegen Ende der Ladung steigt sie steiler, um dann (wenn der Akku voll ist) wieder abzufallen. Dieser Spannungsberg kann zum Erkennen des Ladeendes benutzt werden.
 
Verlauf von Spannung und Spannungsänderung beim Laden (NC) Nebenstehende Grafik wurde aus den Spannungswerten erstellt, die der Akkulader beim Laden einer 700mAh-NiCd-Zelle an RA1 gemessen hat (Spannungs-'Lupe'). Dabei wurden 1566 Ladezyklen durchgeführt. 
Der ADC-Ausgangswert schwankt dabei zwischen 230 (=1,207V) und 521 (=1,507V). 

Interessant ist am Spannungs-Diagramm weniger die absolute Spannung (grün in V), sondern deren Änderung (pink ohne Einheit). Die kann nämlich zur Erkennung des Ladeendes benutzt werden. 

Da die Spannungsänderung über einen sehr langen Zeitraum stattfindet, ist der Abfall der Spannung am Ladeende nicht leicht zu erkennen. In meinem Ladeprogramm sorgt ein in Software realisiertes digitales Filter für die Erkennung des Ladeschlusspunktes.  Ein 16-stufiges FIR-Filter ist in der Praxis  für eine sichere Abschaltung bei NC-Zellen schon ausreichend. Ich benutze ein 64-stufiges FIR-Filter.

Beide Diagramme zeigen (in pink) die Ausgangsfunktion des 64-stufigen Summe-Differenz-FIR-Filters (pink), bei dem der Ladeendpunkt sehr gut zu erkennen ist. Die Zelle ist voll, wenn das FIR-Ausgangssignal 0 erreicht. 

NiMH-Zellen (nebenstehende Grafik mit Ladestrom C/2) weisen beim Laden keinen deutlichen Spannungs-Peak auf. Die Zellenspannung steigt linear bis zur Ladeschlussspannung, und bleibt dann etwa konstant. Dementsprechend ist der FIR-Ausgang während des Ladens nahezu konstant, und fällt dann auf Null, wenn die Zelle voll ist. Dadurch wird auch hier das Ladeende vom FIR-Filter erkannt. 

Merkwürdig ist der kleine 'Höcker' im NiMH-FIR-Diagramm nach ca. 2,1 Stunden Ladezeit. Den konnte ich bei jeder NMH-Ladung erkennen, es ist also kein 'Schweinereieffekt'. Die Frage ist nur, ob man das Laden schon vor diesem Höcker einstellen sollte?

Verlauf von Spannung und Spannungsänderung beim Laden (NMH)

Summen-Differenz-FIR-Filter
Wie schon erwähnt kann nur der Spannungsverlauf (grüne Linie in den Diagrammen) direkt vom PIC gemessen werden. Die pinkfarbene 'Spannungsänderungs'-Linie errechnet der PIC.
Dazu werden immer die letzten 64 Messwerte (also aus den letzten 7,2 Minuten) ausgewertet. Die 32 neuesten Messwerte werden zusammenaddiert, und von ihnen die 32 älteren Messwerte subtrahiert. Ist das Ergebnis der Berechnungen negativ, dann wird das Laden abgebrochen.

Naturgemäß ist das Prozessing immer 3,6 Minuten der Realität hinterher. Eine um 3 Minuten verzögerte Abschaltung ist aber vertretbar.
Ein 64stufiges FIR-Filter lässt sich mit einem 16F876 problemlos mit 16-Bit Routinen realisieren. Dazu benötigt man allerdings 128 Register zum Speichern der letzten 64 Messwerte. Ich benutze dafür die meisten Register der Bänke 1 und 3.


Programme des Akkuladegeräts

Folgende Hauptprogramme stehen nach dem Einschalten zur Wahl:

Zur Realisierung wird auf folgende Unterprogramme zurückgegriffen:


Entladeprogramm:
Um dem viel diskutierten Memmoryeffekt aus dem Wege zu gehen, sollten insbesondere NiCd-Akkus vor dem Laden entladen werden. Dazu werden sie mit einem Strom belastet, der ihrer Nennkapazität C entspricht (also ein 750 mAh-Akku mit 750 mA). Die Entladung wird beendet, wenn die Zellenspannung 1,0 V erreicht hat. Während der Spannungsmessung, wird die Entladung kurzfristig unterbrochen.

  1. Einschalten der Entladeschaltung für 2,25 Sekunden
  2. 5 ms Pause
  3. Anzeigen der entnommenen Energiemenge
  4. Messen der Zellenspannung
  5. falls Spannung unter 1V liegt, dann das Entlade-Programm verlassen: zum Ladeprogramm gehen
  6. ansonsten zurück zu Punkt 1
Ladeprogramm:
Falls die Akkuspannung unter 0,4V liegt wird zuerst das Belebungs-Programm aufgerufen. Dann geht es im Ladeprogramm wie folgt weiter.
Der Akku wird mit einem Strom geladen, der 1/3 seiner Nennkapazität entspricht. dabei steigt seine Zellenspannung an. Ist der Akku voll, stagniert seine Zellenspannung und beginnt schließlich zu fallen. Das kann zum Erkennen des Ladungsendes genutzt werden. Zum Messen der Zellenspannung muss das Laden unterbrochen werden.
Außerdem erwärmt sich ein voller Akku, wenn er weiter geladen wird, auch das kann genutzt werden, um den Ladevorgang zu beenden (tu ich aber noch nicht).
Schließlich sollte es nicht länger als 4 Stunden dauern einen Akku mit 1/3*C zu laden. Nach dieser Zeit sollte die Ladung also auch abgebrochen werden.
  1. falls die Zellenspannung unter 0,4V liegt, dann zum Belebungsprogramm gehen
  2. sind schon 4 Stunden vorbei?
  3. wenn ja: dann STOP TIMEOUT
  4. Einschalten der Ladeschaltung für 6,75 Sekunden
  5. 5 ms Pause
  6. Anzeigen der geladenen Energiemenge
  7. Messen der Zellenspannung
  8. falls Spannung fällt, dann das Lade-Programm verlassen: zum Topping-Programm
  9. ansonsten zurück zu Punkt 1
Belebungs-Programm:
Falls ein Akku unter 0,4V entladen ist, wird versucht ihn mit diesem Programm wieder zu aktivieren. Dazu erfolgt eine Ladung mit C/10. Sobald der Akku 0,4V erreicht hat, wird zum Ladeprogramm gewechselt. Hat der Akku nach 2h keine 0,4V erreicht, ist er defekt.
  1. Einschalten der Ladeschaltung für 250 ms Sekunden
  2. 750 ms Pause
  3. sind 2 Stunden vorbei? Wenn ja, dann STOPP. Der Akku ist defekt
  4. Messen der Zellenspannung
  5. Liegt die Zellenspannung über 0,4V, dann das Belebungs-Programm verlassen: zum Ladeprogramm
  6. ansonsten zurück zu Punkt 1
Topping-Programm:
Um einen Akku maximal zu laden, kann er nach dem Laden noch eine Topping-Ladung bekommen. Dazu wird er 2 Stunden lang mit 1/10 seiner Kapazität geladen.
  1. Einschalten der Ladeschaltung für 250 ms Sekunden
  2. 750 ms Pause
  3. sind 2 Stunden vorbei? Wenn ja, dann das Lade-Programm verlassen: zum Erhaltungslade-Programm
  4. ansonsten zurück zu Punkt 1
Erhaltungslade-Programm:
Um den fertig geladenen Akku vor Selbstentladung zu schützen, bis er aus dem Ladegerät genommen wird, kann mit 1/40 seiner Nennkapazität C eine Erhaltungsladung durchgeführt werden.
  1. Einschalten der Ladeschaltung für 75 ms Sekunden
  2. 1 Sekunde Pause
  3. zurück zu Punkt 1

Anzeige der Zellenspannung
Da als Referenzspannung für den ADC 2,56V und Vss benutzt werden, beträgt die Auflösung des ADC 2,56V/1024 V = 2,5 mV. Um den Messwert in eine Spannung in Millivolt umzurechnen, muss er nur mit 2,5 multipliziert werden. Um den Aufwand zu vermindern gehe ich anders vor

U[mV] = Uadc + Uadc + Uadc/2

Diese Berechnung lässt sich einfach auf  Bitverschiebebefehle, zwei 16-Bit-Additionen  zurückführen. Auf richtige Multiplikationen und Divisionen lässt sich verzichten.


Berechnung der geladenen/entladenen Energie
Der Energiezähler ist ein 24 Bit-Softwarezähler dessen obere 16 Bit der Energie in mAh entsprechen. Das LSB hat also eine Wertigkeit von 1/256 mAh = 0,0004 mAh.

Das Ladeprogramm arbeitet in einem 6,75 Sekunden-Rhythmus. Bei 33,3 mA-Ladestrom (100 mAh-Akku) wird dem Akku in 6,75 s genau 0,0625 mAh (also 1/16 mAh) zugeführt.
Ein 24-Bit-Zahler wird nach jedem Ladezyklus um einem Wert erhöht, der dem Ladestrom in 100/48 mA entspricht (für 200 mA also um 96, für 1 A folglich um 480). Die oberen 16 Bit des Zählers enthalten dann die geladene Energie in mAh. Werte bis 60 Ah sind auf diese Weise zählbar. Das ist für 7000 mAh-Akkus ausreichend :-)

Das Entladeprogramm arbeitet in einem 2,25 Sekunden-Rhythmus. Bei 100 mA-Entladestrom wird dem Akku in 2,25 s genau 0,0625 mAh (also 1/16 mAh) zugeführt.
Ein 24-Bit-Zahler wird nach jedem Entladezyklus um einem Wert erhöht, der dem Entladestrom in 300/48 mA entspricht (für 600 mA also um 96, für 3 A folglich um 480). Die oberen 16 Bit des Zählers enthalten dann die geladene Energie in mAh. Werte bis 60 Ah sind auf diese Weise zählbar. Das ist für 7000 mAh-Akkus ausreichend.

Die Energieberechnung erfordert das Einstellen der Ladeströme in 2,0833 mA-Stufen (Entladestrom ist immer 3 mal so groß). Der Akkutyp kann also in Stufen von 6,25 mAh ausgewählt werden. Die Software erlaubt nur ein Einstellen in der sinnvollen Stufen von 50 mAh. (wird von der Hardware aber noch nicht unterstützt)


Mögliche Verbesserungen
Anstelle der Tastatur sollte ein Rotary-Encoder verwendet werden.

Die Schaltung besitzt noch keinen Verpolschutz. Ein falsch herum eingesetzter Akku kann den Eingang RA0 des PIC und den OPV beschädigen. Das Problem lässt sich durch den Einsatz von 2 Schutzdioden beheben.

Die Spannungsmessung könnte einfacher (ohne OPV) und genauer (0,4mV Auflösung bei 10 Bit im Bereich von 1,2 bis 1,6 V) erfolgen, wenn man anstelle eines 16F876 einen 16F628 verwendet, und mit dem Komparator einen 10-Bit-Delta-Sigma-ADC aufbaut. Der kleinere RAM des 16F628 würde aber eine Verkleinerung des FIR-Filters auf 48-Stufen nötig machen. Das sollte aber reichen. Außerdem kostet der 16F628 nur die Hälfte des Preises des 16F876.

Bei Erhöhung der Speisespannung für den LM317 könnten auch mehrzellige Akkus geladen werden. Allerdings ist dann mit einer Erhöhung des Entladestroms bis auf maximal 900 mA zu rechnen, da die Entladestromstabilisierung einfach aufgebaut ist. Dadurch würde die entladene Energiemenge um 20% zu klein angegeben werden.
Die geringe Temperaturstabilität der Entladeschaltung verlangt nach dem Einsatz den Geräts bei Temperaturen von 15°C..30°C. Ansonsten wird die Anzeige der entnommenen Energie ungenau.

Der Ersatz von Lade- und Entladeschaltung durch einstellbare Stromquellen (50 mA..2,3 A) bzw. Stromsenken (150 mA ..7 A), ermöglicht es Akkus von 150 mAh bis zu 7000 mAh zu laden. und zu pflegen. Dazu ist ein stärkeres Netzteil und eine erweiterte Software nötig. Die Einstellung des Lade/Entladestroms kann über Pin RC2 des PIC mit einem PWM-Signal vorgenommen werden. Das Tastverhältnis des PWM-Signals ist proportional der Zellenkapazität. 100% entsprechen 7000 mAh.



Programmlisting



zurück zu Projekte , PIC-Prozessoren , Elektronik , Homepage
Autor: sprut
erstellt: 09.01.2003
letzte Änderung: 06.02.2003