Akku Kapazitätsmessgerät
Home > Elektronik > Akku Kapazitätesmesser  
 

[Mrz. 2013] Messgerät zur Bestimmung der Akku Kapazität

Angeregt im Jahr 2009 durch einen Baubericht auf einer Tschechischen Seite, keimte der "will Haben" Gedanke auf. Auf den ersten Blick schien die Schaltung nicht allzu kompliziert, wenn mir auch der Abgleich des VCOs nicht in allen Punkten klar war...
Auf der Suche nach den benötigten Bauteilen stellte sich leider heraus, dass ein nicht mehr gefertigter Chip von Maxim eingesetzt wurde. Es gab aber ein Nachfolger, welcher mit ein paar anderen Bauteilen (1-Wire, LED-Treiber) als Muster bestellt wurde.
Die weiteren Bauteile fanden sich zum überwiegenden Teil im eigenem "Lager", dennoch lag der Kram fast drei Jahre herum, bis ich mich an die Umsetzung machte.

Leider passte der neue Maxim MAX4071 nicht besonders gut in die Original Schaltung, da die ausgegebene Messspannung in Relation zu einer Referenzspannung von 1,5V steht. Bei dem alten Chip wäre dies bei einem Stromfluss von 1,5A der Fall, Null Volt bedeutet: kein Stromfluss.
Da zufälligerweise noch ein paar PIC 16F675 zur freien Verwendung standen, wurde der Schaltplan neu gezeichnet und Assembler gelernt. Das Grundgerüst aus PIC Initialisierung, ADC auslesen und timer Interrupt Routine hatte ich auch nach einigen Tagen Datenblatt Studium und Assembler Beispielen stehen, bei 16bit Rechenoperationen mit 8bit Registern verging mir aber ein wenig die Lust.
Zum Glück gibt es aber auch einen kostenlosen C-Compiler von Microchip, samt Entwicklungsumgebung: MPLAB X IDE. Dank der Vorarbeit in Assembler konnte ich den C-Code an einem Abend in ein Programm umsetzten, welches sogar lief, nachdem ich daran erinnert wurde das Interrupt flag auch wieder zu Löschen.

Messfunktionen/Möglichkeiten

Entladestrom: max. 3,5A
Messfehler: 0,8% bei 1A
Messbereich: 0 - 9999mAh
Abschaltspannung: 0,8 - 10V
Akkuspannung: max. 40V

(Sinnvoll z.B. 14,4V/12 Zellen NiMh oder 3 Zellen Lithium bei 9,xV Abschaltspannung)

top Planung/Grundlagen

Die Schaltung orientiert sich grob am Tschechischen Original, einige Teile, wie das 7-Segment Zählwerk sind komplett übernommen, andere Teile hingegen dem Mikrocontroller gewichen. Natürlich hätte man einen PIC mit mehr IO Pins nehmen und eine LCD Anzeige und andere Extras spendieren können, aber die Bauteile waren Vorhanden und so viele andere Verwertungsmöglichkeiten für 7-Segment Anzeigen habe ich auch nicht.

Die Hauptkomponenten sind:

Der MAX4071 kann mit Messwiderständen verschiedener Größe kombiniert werden, um denn Messbereich voll auszuschöpfen. Das Datenblatt enthält eine Beispieltabelle der Messwerte, Widerstände und verwendeten gain Faktor.
Der von mir verwendete 0,02 Ohm Widerstand (aus einem Notebook Akku) lässt Messwerte von 3,75A oder 2,5A, LOW bzw. HIGH gain zu. Die Messspannung, würde 3,75V bei 3,75A und LOW gain betragen, bei HIGH gain wären es 5V für 2,5A. Nutzen lässt sich dieser Messbereich nicht ganz, da der ADC im Bezug auf die Masse des PIC "misst" und dann zu der Messspannung immer 1,5V Referenzspannung Addiert werden müssen.
Anfänglich hatte ich die Masse für den PIC angehoben um dies zu umgehen (zwei Dioden an Masse eines 78L05), leider konnte ich dann nicht mehr die gewünschten Abschaltspannungen messen.
Da aber vor der Messung den gain Faktor gewählt werden kann, sind Ströme bis zu 3,5A möglich. Mit der hohen Auflösung noch bis 1,75A.

Programmablauf

  1. Abfragen des GAIN Schalter und Starttaster
  2. Starte Entladen
  3. Ermitteln der ADC Werte
  4. Berechnen des Messwerts
  5. Herunterzählen eines Ergebniszählers
  6. Ausgabeimpuls (1mAh) bei Ergebniszähler = 0
  7. Beenden der Entladung bei unterschreiten der Abschaltspannung

Damit die Ausgabeimpulse immer zu einem bestimmten Zeitpunkt generiert werden, sollte eine timer Interrupt Routine verwendet werden. Dazu hatte ich mich an dem Grundprinzip der Stoppuhr von sprut.de orientiert. Nach ein wenig hin und her Rechnen hatte ich folgende Werte ermittelt:

3750mA ÷ 3600s = 1,041667Hz
2500 ÷ 3600s = 0,694444Hz

Dies ist die Mindestfrequenz um den 7-Segement Messwertzähler um 1mAh zu erhöhen, bei höherer Frequenz muss länger für einen 1mAh Impuls gewartet werden. Wäre die Frequenz zu hoch, würde ein 16bit Zähler nicht ausreichen, denn "irgendwie" soll der Zähler mit dem 10bit Ergebnis des ADC zusammenhängen.
Zur Auswahl der geeigneten ganzzahligen Teiler und Vorteiler hatte ich in einer Liste alle möglichen Kombinationen errechnen lassen. (mit z.B. LibreOffice Calc)

Die Folgende Konfiguration ermöglicht mit einer Interruptfrequenz von 62,5Hz und einer nachgelagerten Zähler Variable ("timer2") die zwei-, bzw. dreifache Frequenz der oben errechneten "Mindestfrequenz" von 2,0833Hz. Bei dieser doppelten/dreifachen Frequenz lässt sich am Ausgang einfach von HIGH, beim nächsten Herunterzählen des "timer2" auf LOW wechseln, ein ausreichend langer Impuls erzeugen. (Der Wechsel von LOW zu HIGH lässt die 7-Segement Anzeige ihren Wert um einen erhöhen.)

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

256 - 250 = 6

(1MHz / 64 ) / 250 = 62,5 Hz

30
(Wird bis 0 herunter gezählt) = 2,0833Hz

Mit diesem Grundgerüst wird nun das Ergebnis des AD Wandlers verarbeitet und wenn nötig der Ausgangsimpuls für einen 1mAh Schritt erzeugt. Dies wird über einen ADC Ergebniszähler erreicht, in dem das Ergebnis der AD Wandlung addiert wird und mit einem konstanten Maximalwert verglichen wird. Bei erreichen dieses Werts wird der Ausgangspin auf HIGH gesetzt und der Rest des Ergebniszählers für den nächsten Durchlauf übertragen.

Bei LOW gain (I=3750mA) wäre der maximale Messwert des ADC, abzüglich der Referenzspannung 767.25 (3,75V).
(3.75V ÷ 5V) × 1023 = 767.25
Da die Frequenz das doppelte der "Mindestfrequenz" beträgt (3750mA ÷ 3600s × 2 = 2,0833 MHz) kann bei Erreichen eines summierten Ergebnis von 1534,5 (767,25 × 2) der 1mAh Impuls erzeugt werden.

Bei HIGH gain (I=2500mA) wäre der maximale Messwert des ADC, abzüglich der Referenzspannung 1023 (5V).
(5V ÷ 5V) × 1023 = 1023
Hier ist die Frequenz das dreifache der "Mindestfrequenz" (2500mA ÷ 3600s × 3 = 2,0833 MHz) so kann bei Erreichen eines summierten Ergebnis von 3069 (1023 × 3) der 1mAh Impuls erzeugt werden.

Zu den Strömen ist einschränkend zu sagen, dass weder 3,75 noch 2,5A gemessen werden können. Da sich die Messspannung immer auf die 1,5V Referenzspannung bezieht, was z.B. bei 2,5 Ampere eine Spannung von 5V + 1,5V = 6,5V ergibt, aber nur max. 5V mit dem PIC gemessen werden kann, sind es statt 2,5A nur 1,75A und bei theoretischen 3,75A "nur" 3,5A. Hier könnte man eventuell mit Spannungsteiler arbeiten oder einem anderen Massepegel, um den vollen Messbereich zu nutzen. (Möglichst ohne die Messspannung zu verfälschen)

Um den mAh Messbereich zu vergrößern, könnte der Dekadenzähler mit 7-Segment Anzeige um Stellen erweitert werden, oder man lässt im PIC Programm die niedrigsten Stellen mit einem zusätzlichen Zähler aus. So könnte der Messbereich um Faktor 10 gesteigert werden.

Um die GAIN Umschaltung zu ermöglichen, wird aufgrund der wenigen IO Pins des PIC 16F675, der Out Pin genutzt.
Wenn keine Messung erfolgt und somit keine Ausgabe nötig ist, wird die Funktion des Out Pin (5) kurzzeitig von "Ausgang" zu "Eingang" gesetzt. Ein 100k Ohm Widerstand wird als "weak pullup/pulldown" gegen Masse oder die Versorgungsspannung geschaltet und ermöglicht das erkennen eins HIGH oder LOW Pegels. Er verhindert aber nicht die Ausgabe der Impulse an den Zählerbaustein. Parallel dazu wird auch der GAIN Pin am MAX4071 umgeschaltet.

Ein paar weitere beschreibende Informationen befinden sich im Quelltext...

 

top Aufbau

Zunächst wurden Teile der Schaltung auf einem Steckbrett aufgebaut, um die Funktion des MAX4071 zu Verstehen und Anbindung an den PIC zu testen. Auch die Ansteuerung des FET wurde getestet und Messungen für den Spannungsteiler zu Endladungsbeendigung durchgeführt. Erst dann konnte das Layout fertiggestellt und gefräst werden.
PIC Programmierung mit dem Brenner 5.

Ganz schön klein, so ein TQFN Gehäuse. 3x3x0,8mm um genau zu sein.
Damit die Funktion auf einem Steckbrett getestet werden kann, wurde ein DIL Adapter gefräst. Nun hat es die Größe eines normalen 8-poligen IC (DIL Gehäuse).
Den kleinsten Bauteilen wird der Vortritt gelassen... Rechts im Bild dann wenig später der Funktionstest der 7-Segment Anzeige.
Diese Module von HP sind nicht besonders Hell, die Effizienz scheint bei neueren besser zu sein, besonders wenn ihnen nur wenige mA zufließen. Das es nicht in der prallen Sonne lesbar ist, ist zu verschmerzen.
Zwei Fehler hatten sich leider eingeschlichen. Der Spannungsteiler war quasi "verdreht", mit dem variablen Teil gegen Masse, statt der Batterie. Dies was der erste Draht...
Der zweite musste die fehlerhafte Ansteuerung des FET korrigieren.
Ein wenig problematisch gestaltete sich die Programmierung der Abschaltspannung. Nicht so sehr im PIC, sondern die Abstimmung der Spannungsteiler und Berücksichtigung der Leitungsverluste.
In der Theorie würde ein Einstellen auf 0,9V reichen um dann den Spannungsteiler für 3,3V (bzw. die Skala für das Poti) anzupassen. Leider hat der Spannungsabfall der Zuleitungen einen merklichen Einfluss, gerade bei geringer Akkuspannung und hohem Stromfluss, so das die erziele Abschaltspannung ein wenig driftet.
Da der Spannungsteiler am PIC die Messspannung "erst" an den Platinen Anschlüssen (ein Stück entfernt vom Akku) abgreift, verbessert ein großzügiger Leitungsquerschnitt zum Akku dieses Verhalten deutlich.
Testmessung mit 1 Ampere Entladestrom.
Statt Batterie ist ein regelbares Netzgerät angeschlossen und auf Strombegrenzung eingestellt.

Nach 30 Minuten werden 503mAh Angezeigt.

Ein ganz guter Wert, welcher natürlich von der Ungenauigkeit des Multimeters beeinflusst wurde.
Insbesondere für die Vergleichsmessungen von einzelnen Zellen aber vernachlässigbar.

 

top Gehäuse

Über ein halbes Jahr später hat die Platine endlich ein zu Hause bekommen. Alu Blech, mit einem Kunststoffboden und hübscher Gravur aller wichtigen Bedienelemente.

Meist rückt ein Gehäuse beim Design des Platinenlayouts in den Hintergrund. Der Ansporn eine möglichst kompakte Platine zu erstellen ist meist größer, als Bohrungen für eine Spätere Montage vorzusehen. Wenn natürlich ein bestimmtes Gehäuse verwenden werden soll sieht es natürlich anders aus, meist wird aber selbst gebaut...

Das 0,8mm Alublech lässt sich zwar super Biegen, aber leider nicht so doll Fräsen. Mit wenig Drehzahl, mäßigem Vorschub und Spiritus Kühlung aber möglich. Da ich gerne die Schutzfolie so lange wie möglich aufgeklebt lasse, ergibt sich bei 0,8mm Frästiefe und einem Antasten auf der Folie, ein dünner Steg der einfach weggedrückt werden kann. Dicke ca. 0,06 mm, je nach Ebenheit der Opferplatte...

Die Gravur ist mit einem 90° Stichel ca. 0,2 mm tief Gefräst worden. Die Größe der Buchstaben liegt zwischen 6,5 und 1,5 mm.

Die Plexiglasabdeckung ist 4mm stark und von innen mit Heißkleber fixiert. Der erste Versuch mit UHU Alleskleber scheiterte wohl am nicht besonders verwindungssteifen Alu. Über das Plexi wird eine rote Folie gelegt und fixiert.
Rechts im Bild ist der weiße Kunststoffboden zu sehen, er hat eine Aussparung für das Poti. Nicht auf dem Bild sind die Abstandshalter für die Drei Schrauben, die die Platine und auch den Gehäusedeckel an Position halten.
Die Montage war etwas kniffelig, da nur 1,5 mm "Luft" zwischen Gehäuse und Platine ist und die Anschlussdrähte vorher angelötet werden mussten. Das könnte man auch etwas großzügiger gestalten.
         

top Schaltpläne/Layout

Wie immer: alles was sich wiederverwenden lässt, ist als gebrauchtes Bauteil verbaut. Das Maxim IC ist, wie erwähnt ein Muster, ein paar Teile wie PIC und Dekadenzähler IC sind neue Teile. Der C Programm Code ist ebenfalls neu...

Schaltplan als PDF Datei.

 
PIC C-Code als MPLAB X IDE Projekt.