Gast
#763675
Ich habe mal mein altes Ladegerät für 12V NiCd-Akkupacks (Werkzeugakkus) etwas aufgemotzt. War vorher rein zeitgesteuert (1h) und verfügt jetzt dank eines MSP430F2012 über eine -dU-Ladeenderkennung. Vielleicht kann jemand ja was davon als Anregung gebrauchen?! Features: - Ausgelegt für 12V NiCd-Akkus mit integriertem NTC (R0=6k8, B=4046,8) - mittlerer Schnellladestrom: 1,4A (1C) - -dU-Schwelle: 17,5mV pro Zelle -> 175mV - Ladestromregelung per Phasenanschnittsteuerung und Strommessung über Shunt - Erkennung ob ein Akku vorhanden ist oder nicht über dessen integrierten NTC - Temperaturüberwachung während des Ladevorgangs - Überprüfung auf Unter-/Überspannung des Akkus oder Kurzschluß - Anfangsladen mit reduziertem Ladestrom (1/5C), bis Zellenspannung >0,8V, mindestens aber 5min. - Schnellladen mit 1C. Während der ersten 5min. ist -dU-Erkennung deaktiviert - Erhaltungsladung (Trickle-Charge mit 1/20C) nachdem Schnellladung beendet ist oder falls Akuutemperatur zu niedrig ist oder falls Zellenspannung >1,95V - Ladeunterbrechung falls Akkutemperatur zu hoch - Sicherheitstimer, falls -dU-Kriterium versagt - Akkuspannung und Temperatur werden jede 1s gemessen und ausgewertet - Alle 10s wird der interne DCO-Oscillator neu auf die Netzfrequenz synchronisiert Der ganze Code ist recht kompakt, da ich im µC nur 2k Flash zur Verfügung habe. Daher ist der Code vielleicht auch nicht ganz so einfach zu lesen und zu verstehen... Da ich mit IAR arbeite, habe ich noch ein modifiziertes Linkerfile mit drangehängt, falls jemand den Code erweitern möchte und dazu den INFO-Bereich als Programmspeicher benutzen will/muss. Außerdem ein modifiziertes "cstartup"-File. Spart nochmal etwas Code, da kein exit-Code erzeugt wird (jeder halbwegs vernünftige Programmierer wird seine main() doch hoffentlich so schreiben, dass keine exit-Endlosschleife notwendig ist!) und spart 2Bytes auf'm Stack, da main() per Branch und nicht per Call aufgerufen wird! Dann mal viel Spaß damit. Kritik und Anregungen erwünscht! Stefan