|
[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)
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
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 |
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...
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. |
Ü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. ![]() |
||||
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. | |
loetmeister ©2013