Battery Tester (PIC)
Home > Elektronik > Akku/Batterie Tester  
 

[Jul. 2013] Akku/Batterie Tester mit PIC 12F675

Für meinen mobilen LiPo USB Akku musste eine Anzeige zur verbleibenden Akkukapazität her. Einen Tester für Lithium Akkus basierend auf der Zellspannung zu Bauen ist nicht optimal, aber zur Einschätzung der verbleibenden Ladung sollte es reichen. Dank den Erfahrungen mit dem PIC Mikrocontroller 12F675 im Akku Kapazitätsmessgerät, konnte auf eine Code Basis zurückgegriffen werden, welche mit relativ geringen Aufwand diesen Akku Tester umsetzt.

Die Idee zur Ansteuerung von zwei LEDs an einem GPIO Pin hatte ich mit von diesem Battery Tester abgeschaut. Somit können 6 LEDs an drei IO Pins des PICs betreiben werden. Die Sechs Spannungswerte für die Anzeige der LED Stufen sind als Konstanten in einer Header Datei eingetragen und lassen sich auch für andere Akkuspannungen anpassen.

 

top Planung des Programms

Besser als die Spannungsmessung wäre es ständig den Stromfluss am Akku zu messen und so die entnommene Ladungsmenge zu bestimmen, genau wie beim Akku Kapazitätsmessgerät. Da dies aufwändiger ist, ist es in diesem Anwendungsfall ausreichend eine grobe Aussage über die Spannung herzuleiten. Bei der Messung wir eine kleine Last zugeschaltet, um die Leerlaufspannung des Akkus zu drücken und bessere Messergebnisse zu erhalten.

Nun zum eigentlichen PIC Pgrogramm. Zur Steuerung des zeitlichen Ablauf kommt wieder ein timer Interrupt zum Einsatz (für die Entprellung des Taster, automatische Abschaltung und LED Ansteuerung). Damit der PIC bei einem Tastendruck vom SLEEP Modus aufwacht, wird ein Pin-change Interrupt benutzt.

Programmablauf

  1. Bei betätigen des "Test"-Taster vom SLEEP Modus aufwachen
  2. Last mit Transistor zuschalten
  3. Lesen der ADC Werte
  4. Berechnung des Durchschnitts der letzten "n" Messungen (moving average)
  5. Aktivieren der Anzeige LEDs (GND/5V im Wechsel)
  6. Nach ca. 3 Sekunden wieder in SLEEP Modus versetzten

Die sechs LEDs werden der Reihe nach, je nach Höhe der gemessenen Spannung, angesteuert. Da an jedem Pin zwei LEDs angeschlossen sind, eine nach Masse, die andere an +5V, kann immer nur eine der beiden LED Leuchten. Damit es aber so aussieht das alle LEDs zur selben Zeit Eingeschaltet sind wird im Wechsel des TMR0 Interrupts zwischen den LEDs an Masse bzw. +5V umgeschaltet, so das sie mit einer Frequenz von ca. 62,5Hz "blinken" und so für das menschliche Auge wirken, als würden sie permanent leuchten. Damit eine LED ausgeschaltet werden kann wird der IO Pin in den "input" Modus versetzt, somit ist er Hochohmig und es kann kein Strom über die LEDs fließen.

Die Folgende Konfiguration ermöglicht mit einer Interruptfrequenz von 125Hz und einer nachgelagerten Zähler Variable ("timer2") von 4,1Hz eine einfache Realisierung der verschiedenen Zeitlichen Abläufe, wie z.B. eine Autoabschaltung, etc., mit relativ kleinen Zählern.

PIC Frequenz effektive Frequenz Vorteiler zu TMR0 TMR0 Interruptfrequenz "timer2" Zähler Variable
4 MHz 1 MHz 64

256 - 125 = 131

(1MHz / 64 ) / 125 = 125 Hz

30
(Wird bis 0 herunter gezählt) = 4,1667Hz

 

top Aufbau

Um im mobilen LiPo USB Akku nicht zu viel Platz einzunehmen wurde eine kleine, doppelseitige SMD Platine erstellt, welche auch ein paar bedrahtete Bauteile aufnimmt.
Der Tester ist auf eine Konstante Spannungsversorgung angewiesen, in der aktuellen Konfiguration muss es 5V sein, da dies auch die Referenzspannung des ADC ist. Für meinen Anwendungsfall, der LiPo Akkupack, wird über den ohnehin benötigten Step-Up Wandler die Versorgungsspannung erzeugt.

Die Oberseite der Platine mit LEDs und Taster, im Vergleich mit einer ein Euro Cent Münze. Die Anschlussbeine des Tasters wurden zur Seite gebogen und gekürzt um eine Montage auf der Oberfläche zu ermöglichen.
Die Widerstände unterhalb der LEDs haben die Bauform 0805, auch wenn sie gegenüber den relativ großen LEDs klein wirken sind sie gut zu handhaben. Die anderen Widerstände haben die nächst größere Bauform 1206.

Auf der anderen Platinenseite finden sich u.a. der PIC, Lastwiderstand und Transistor. Der Transistor hätte auch etwas kleiner ausfallen können, da ich ihn aber zu Hand hatte und die Platine nicht schmaler hätte werden können ist es ein BD135 geworden.

Die „komische“ Konstruktion mit je zwei stehenden Dioden entstand, da die verbauten roten SMD LEDs eine extrem niedrige Spannungsschwelle haben und mit den geplanten vier Dioden im Strang einfach weiter geleuchtet haben. Mit je einer zusätzlichen Diode ist es auf ein kaum sichtbares Maß gesunken. Im aktuellen Layout ist dies berücksichtigt, da sie nun aber unter dem Transistor liegen sollte man ihn von unten isolieren.

 

top Schaltpläne/Layout

 

Schaltplan als PDF Datei.