Forum: Mikrocontroller und Digitale Elektronik 4s LiPo Akku (14,8 V) mit AVR Zellenweise messen Nur wie?


von Michael K. (onkel_michi)


Angehängte Dateien:

Lesenswert?

Guten Tag,

ich möchte für ein Projekt die Zellenspannung eines LiPo Akku mit 4 
Zellen (je 3,7 Volt Nominalspannung / Zelle, 4,20 Volt Vollgeladen / 
Zelle) mit einem AVR (ATmega 8 oder ATmega 644) messen und die Werte 
später (wenn es kapiert habe) dann in eine MMC-Karte schreiben. Das 
Ganze dann noch mit Strom (ACS-750) als Datenlogger.

Doch zuerst einmal bin ich über ein viel einfacheres Problem gestolpert, 
wo ich nun irgendwie "feststecke".

Wenn ich ein Widerstandsnetzwerk wie im Anhang aufbaue und dann 
Zellenweise die Spannung messe, wird sich mein Spannungsteiler ja immer 
weiter "verstellen", weil meine Spannung aussen an dem Teiler ja immer 
weiter in den Keller geht. (Aber nicht unter 12 Volt, denn bei 3 V / 
Zelle unter Last lande ich und muß den Akku laden.)

Hat jemand vielleicht ein Schaltbild für dieses Problem für mich ?

Die Schaltung soll über einen Spannungsregler aus dem Antriebsakku, also 
dem Akku, der Zellenweise überwacht werden soll, versorgt.

Ich verzweifel noch, ausserdem habe ich über div. Versuche schon einige 
Widerstände "verheizt".

Danke für eure Mithilfe.

Michael

von Lupin (Gast)


Lesenswert?

Wo soll denn deine obere anschlussleitung hin gehen? Wohl an die 
+14.8Volt oder?

Dein AVR wird ja mit 5 Volt versorgt - die Spannung der ersten Zelle 
kannst du problemlos direkt an einen ADC eingang geben (da mit 3,7 bzw 
4,2 Volt noch gut unterhalb von 5 Volt).

Die spannungen der nächsten Zellen musst du halt runter teilen so das 
sich z.B. bei der ersten Zelle ein Spannungsteiler im Verhältnis von 
1,72 zu 1 ergibt (also die maximal 8,6 Volt die über beide Zellen in 
reihe anliegen teilst du auf maximal 5 Volt runter)

So geht das dann für alle weiter. Um auf die einzelzellenspannungen zu 
kommen musst du vom messwert der "oberen" Zellen jeweils den der 
"unteren" abziehen.

Das ganze wird aber ungenau, da dein messfenster über eine große 
Spannung geht (für die letzte Zelle halt über 17,2 Volt wenn man ne 
maximale Zellenspannung von 4,3 Volt pro Zelle annimmt).

Da kommst du nicht drum herum differenziell zu messen. Aber gott sei 
dank hat der AVR ja differenzielle Eingänge! Denkste! Die dürfen 
natürlich auch nicht mehr als 5 Volt sehen... Auch runter teilen und 
dann differenziell messen wird nicht gehen (da du bei der letzten Zelle 
nur 1/4 des Messfensters ausnutzen kannst)

Also brauchst du für jede Zelle einen Subtrahierer der die Spannung der 
darunter liegenden Zellen abzieht.

Hab mich selber mal damit beschäftigt und finde den Aufwand an OPs die 
man da verbauen muss irgendwie doof. Vielleicht hat jemand 'ne bessere 
Lösung.

von Spess53 (Gast)


Lesenswert?

Hi

Evtl. ist der ATMega406 dafür geeignet.

MfG Spess

von Michael K. (onkel_michi)


Lesenswert?

Ich habe mir den ATmega406 noch nicht angeschaut.

Was ich aber auch schon im Netz gelesen habe, waren Anleitungen wo die 
Leute Relais genommen haben, um dann Zelle für Zelle zum Messen an den 
ADC zu schalten.

Eine solche Lösung, z. B. mit dem CD 4066 habe ich auch schon in 
Erwägung gezogen, allerdings habe ich zu viel Angst, wenn ich da Etwas 
falsch schalte, das es mächtig raucht. (Schließlich kann der Akku 
Impulsströme bis zu 200 Ampere ab ...)

@Lupin

Kannst Du mir von Deiner Schaltung mit den Widerständen mal ein 
Schaltbild schicken ?

Ich kriege aus Deiner Erklärung irgendwie kein Bild zusammen, wie Du das 
meinst.

Danke Dir schonmal dafür.

@all
Ich werde mal gründlich weiterforschen. Diese Idee läßt mich nun nicht 
mehr los.

Michael

von Marius S. (lupin) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich würde die akku spannung so runter teilen. die dicken striche sind 
die Widerstände...

Ich habe das Gefühl dir fehlen noch ein paar Grundlagen... irgendwas mit 
relais wird dir hier nicht viel bringen.

Was an den normalen Modellbaupacks doof ist, ist das die immer in reihe 
geschaltet sind. Es sollte eine steckbare Brücke geben mit der man die 
Reihenschaltung entfernen kann (und so jede zelle einzeln laden/messen 
kann). Aber solch eine Brücke müsste gut strom ab können ;)

edit: der mega406 ist übrigens sehr gut, ich glaube der ist gut geeignet 
hierfür...

von Spess53 (Gast)


Lesenswert?

Hi

Ich habe noch mal schnell im Datenblatt des ATMega406 gelesen: Du kannst 
die Spannungen von 4 in Reihe geschalteten Zellen direkt einzeln messen. 
Spannungsfestigkeit der Eingänge 35V.

MfG Spess

von Michael K. (onkel_michi)


Lesenswert?

Ich bin gerade dabei, mir das Datenblatt zu dem ATmega406 
herunterzuladen.

Das mir Grundlagen fehlen gebe ich ja unumwunden zu. Die will ich mir 
aber über dieses Projekt erarbeiten. Es ist mir lieber, wenn ich 
Irgendetwas "nützliches" mache zum lernen, als "nur" irgendwelche 
Tutorials durchzuackern und dann zu versuchen, das erworbene Wissen zu 
transferieren.

@Marius Schmitt
Es geht nicht um das loggen beim Laden, sondern um das Loggen beim 
Entladen.
Da sind locker schon mal Entladeströme im Peak von 100 Ampere drin. Der 
Akku (ein 4s 4800mAh Kokam H5 mit echten 30C) zuckt da nicht einmal. 
Wenn ich bedenke, das ich den dann noch mit Steckbrücken 
zusammenstöpseln müsste ...

Der Balanceranschluß ist halt am Akku dran und der muß für das Messen an 
den einzelnen Zellen herhalten.

Mal sehen, was der mega 406 kann, wäre echt schön, wenn ich ohne die 
ganzen Widerstände auskäme.

Michael

von Eddy C. (chrisi)


Lesenswert?

Nene, das bringt mich auf eine Idee:

Analogschalter, die eine Kapazität, den Samplingkondensator, sowohl mit 
Fusspunkt, also auch mit dem oberen Punkt an die zu messende Zelle 
hängen und auf die Messspannung aufladen. Zur Messung wird der 
Kondensator zwischen Masse und ADC-Eingang geschaltet. Das geht auch mit 
(Reed-)relais oder PhotoMOS-Relais, womit die Problematik der 
Versorgungsspannung für den Analogschalter wegfällt. Keine Opamps! Nur 
Schaltergedöhns...

von Marius S. (lupin) Benutzerseite


Lesenswert?

die idee finde ich gut, kann ich mir aber als schaltung nicht 
vorstellen...

von Tcf K. (tcfkat)


Lesenswert?

1)Drei Stück Instrumentation Amplifier nehmen, z.B. AD620. -Vs auf GND 
legen, +Vs an die Akkuendspannung. Der Ausgang dieses OPs kann von 
(-Vs+1,1V) bis (+Vs-1,2V) arbeiten, die Eingänge von (-Vs+1.9V) bis 
(+Vs-1,2V) verkraften.
2)Den ersten Akku direkt an den ADC legen (über Reihenschutzwiderstand).
3)Akku zwei und drei über den Instrumentation Amp anschliessen, dessen 
Gain auf 1 eingestellt ist.
4)Beim vierten Akku wäre +In = +Vs, deswegen die Spannung des vierten 
Akku durch Spannungsteiler über dem Akku so teilen, dass +In <= 
(+Vs-1,2V) wird. Den Teilerfaktor durch einen höheren Gain, oder in 
Software kompensieren.
Die drei Ausgänge der OPs auf die weiteren ADC-Eingänge schalten, aber 
Reihenschutzwiderstand vorsehen, die OPs könnten auch schon mal 
Akkuspannung durchschalten!

Vorteil: Du brauchst "nur" 3 INAs, keine Multiplexer mit umschalten etc.

von Tcf K. (tcfkat)


Lesenswert?

Oder noch einfacher:
-Den ersten Akku direkt messen.
-Den zweiten und dritten Akku über INA messen.
-Die Akkugesamtspannung über Widerstandsteiler wieder direkt am ADC 
messen.
Der vierte Akku ist Gesamtspannung - Akku1 - Akku2 - Akku3.

Braucht nur ZWEI Ops!

von Anon Y. (anonymous)


Lesenswert?

Es gibt noch die möglichkeit 4 opamps als differenzverstärker zu 
verwenden.
4 opamps wären ein lm358 o.ä. Gain ließe sich einstellen. Man braucht 
nur pro Differenzverstärker 4 Widerstände.

Gemacht habe ich es auch noch nicht - das wäre atm meine Methode der 
Wahl. Sag bitte Bescheid, wenn du#s gemacht hast oder wenn nicht wieso.

von Tcf K. (tcfkat)


Lesenswert?

Es scheint sich wohl hartnäckig zu halten, dass man Instrumentation Amps 
unbedingt diskret aufbauen muss...

von Eddy C. (chrisi)


Angehängte Dateien:

Lesenswert?

Hier ist eine konkretere Version des Vorschlages mit Analogschaltern. 
Die 4000-Reihe packt die maximal auftretende Spannung gerade so. Was 
noch fehlt, sind Pegelumsetzer, die die erforderlichen Digitalpegel für 
die beiden ICs erzeugen. Ansosnsten darf ich die entscheidenden Vorteile 
dieser Schaltung erwähnen :-)

- Minimalster Stromverbrauch (ein paar uA)
  aus den zu messenden Zellen
- Gleichbleibende Präzision der Messung unabhängig
  von der angewählten Zelle
- Keine Offsetprobleme
- Niedrigster Preis
- Einfache Erhältlichkeit der ICs beim "local Dealer"

Evtl. gibt es auch Analogschalter, die man mit gepflegtem TTL-Pegel 
ansteuern kann, dann fallen aber zwei Vorteile weg...

Ablauf einer Messung:

- Enable auf Low
- Zelle anwählen, z.B. Zelle 2 -> Binäre 2 an SEL anlegen, also 010
- Enable auf High
- Ladezeit abwarten
- Enable auf Low
- ADC anwählen -> Binäre 0 an SEL anlegen, also 000
- Enable auf High
- ADC-Messung starten

von Onkel_Michi (Gast)


Lesenswert?

Hallo,

danke für das Schaltbild. Werde morgen hoffentlich die Teile geliefert 
bekommen und dann mal ausprobieren.

Werde euch sagen, ob es geklappt hat, oder nicht.

Michael

von Tcf K. (tcfkat)


Lesenswert?

Ich verstehe den Aufwand mit den Analogswitches nicht. Stromverbrauch 
dürfte bei den Monster-Akkus egal sein. Zwei INAs dran, und gut ist... 
nix umschalten, und alle Spannungen im sicheren Bereich!

von Eddy C. (chrisi)


Lesenswert?

Du und Deine zwei INAs ;-) Wie sieht's da mit der Genauigkeit aus? Ach 
so, ja, der OP hat dazu ja keine Angaben gemacht. Zum Stichwort 
akkumulierter Fehler muss ich ebenfalls nichts weiter sagen. Wieso soll 
ich die Akkugesamtspannung über Teiler direkt messen und brauch' für den 
2. und 3. einen Opamp? Das ist doch Humbug!

von Tcf K. (tcfkat)


Lesenswert?

Nö, kein Humbug. Akku1/2/3 werden mit der Genauigkeit der INA/ADC 
gemessen, beim vierten, gebe ich zu, gibt es einen akkumulierten 
Messfehler.
Ich werde mir Deine Schaltung nochmal genauer angucken, so ganz glaube 
ich nicht, dass das von den Spannungen hinhaut...

von Bastler (Gast)


Angehängte Dateien:

Lesenswert?

Ich versuche das mit den Einzelzellen gerade so wie in der Graphik.

Allerdings scheint mir der Innenwiderstand des AVR da so mit 
reinzuspielen, das jedesmal wenn ich den Akku anschließe, bevor der AVR 
läuft, das Gehäuse des Mega8 heiß wird und sogar schon 2 mal geplatzt 
ist.

Wenn der Mega8 an Spannung ist und ich dann den 4s Akku anstöpsel kriege 
ich zwar völlig falsche Werte, aber das führe ich erst einmal auf mein 
Programm zurück. (Die Spannungen, ausser der ersten Zelle sind alle um 
0,3 Volt zu hoch angezeigt. Ein LiPo kann keine 4,51 Volt pro Zelle 
haben.)

Was ist an dieser Schaltung im Bild falsch, das bei ausgeschaltetem Mega 
8 der Controller zerstört wird ?

Gruß vom Bastler.

von Lowtzow .. (lowtzow)


Lesenswert?

Anon Ymous schrieb:
> Es gibt noch die möglichkeit 4 opamps als differenzverstärker zu
> verwenden.
> 4 opamps wären ein lm358 o.ä. Gain ließe sich einstellen. Man braucht
> nur pro Differenzverstärker 4 Widerstände.
>
> Gemacht habe ich es auch noch nicht - das wäre atm meine Methode der
> Wahl. Sag bitte Bescheid, wenn du#s gemacht hast oder wenn nicht wieso.

das funktioniert sicher so!
das einzige problem ist dann die genauigkeit der widerstände.

von Lowtzow .. (lowtzow)


Lesenswert?

Bastler schrieb:
> Was ist an dieser Schaltung im Bild falsch, das bei ausgeschaltetem Mega
> 8 der Controller zerstört wird ?

impedanzwandler oder optokoppler verwenden.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

>Was ist an dieser Schaltung im Bild falsch, das bei ausgeschaltetem Mega
>8 der Controller zerstört wird ?

Die Zelle 1 ist ohne strombegrenzenden Widerstand an den Controller 
angeschlossen. Intern hat der Controller Clampingdioden gegen Gnd und 
Vcc, was ihn und die restliche Schaltung, die noch an der Vcc-Schiene 
angeschlossen ist, über den ADC Eingang weiterversorgt, wenn man ihm die 
Versorgung abschaltet. Wenn hier zu viel Strom fließt (ich glaube, die 
Clampingdioden halten etwa 2 mA aus), wird der Controller zerstört.

Grüße,

Peter

von Dolphi (Gast)


Lesenswert?

Moin, moin zusammen,

obwohl der Thread schon etwas älter ist hätte ich zur Thematik
auch noch ein wenig Klärungsbedarf.
Bin derzeit auch in "Mission Lipo" im Neuland unterwegs und
im Zusammenhang auf Andi's Lama Zoo gestoßen
(http://home.arcor.de/schwobaseggl/LamaLightBoard/index.htm).

Das seht jetzt für mich von der Schaltung her doch recht ähnlich
aus. Durch Andi's disassemblierten Hex-Code bin ich derzeit noch nicht
so ganz durchgestiegen - ist aber schwer in Arbeit.
Falls da jemand nach einem schnellen Blick kurz ein paar erklärende
Worte zum Messprinzip hätte (differenziell oder single ended und
wieso PA1 am Minuspol und nicht gegen GND im Single-Ended-Fall)
würde mich das bestimmt in die richtige Richtung schieben.

Alles in allem schwebt mir eine Lipo-Zellen-Einzel- und
Summenspannungsüberwachung mit 3 single ended ADC-Kanälen des
Tiny25 vor, wobei ich auf den 4. Kanal frei nach Thomas Pfeiffer
(http://thomaspfeifer.net/) auch agnz gerne noch die Temperaturen
der FETs (Motorregler in der 4-in-1) mittels 1N4148-Diode im Glasgehäuse
(der Temperatur wegen, siehe Laminator Temperaturregelung) im Auge
behalten wollen würde.

Ggf spiele ich dann mit dem Gedanken, in weiterer Ausbaustufe die 4-in-1 
mit zusätzlichen 3 Kanälen zu erweitern wie hier beschrieben
http://www.rclineforum.de/forum/thread.php?postid=3089920,
die FET's der 4-in-1 mit stärkeren zwischen den bestehenden und den 
Motoren zu entlasten und den Motoren einen Sanftanlauf (PWM) zu
bescheren - könnte dann wohl eng werden mit dem Tiny...

Jegliche Ideen und Inspirationen - besonders konstruktive - zu den
genannten Themen wären jedenfalls sehr willkommen und Resultate auf
meiner Seite sollen auch nicht im dunklen Kellerchen verschwinden...

Besten Dank und Gruß

Dolphi

von Andi (Gast)


Lesenswert?

@Dolphi:

Spar dir ggf. das Disassemblieren des Hexfiles. Melde dich bei mir (via 
Lama-Zoo, Impressum, dann sorge ich dafür dass dir der Jones den 
Sourcecode (winavr) zukommen lässt.

gruß

der Andi vom LamaZoo

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Eddy Current schrieb:
> Ablauf einer Messung:
>
> - Enable auf Low
> - Zelle anwählen, z.B. Zelle 2 -> Binäre 2 an SEL anlegen, also 010
> - Enable auf High
> - Ladezeit abwarten
> - Enable auf Low
> - ADC anwählen -> Binäre 0 an SEL anlegen, also 000
> - Enable auf High
> - ADC-Messung starten

Da Enable beim 4051/52/53 Low-Aktiv ist, sollte man die oben genannten 
Pegel invertieren. Dann funktioniert die Sache mit den Analogschaltern. 
Habe es gerade nachgebaut. Da ich nur 3 Zellen überwachen muss, tut´s 
auch ein einzelner 4052, der 2x4 multiplext. Dann spart man sich eine 
Select-Leitung ;-). Die Pegelwandler sind einfache Transen mit Pullup 
nach Vcc. Die Steuersignale invertiert der Controller. Dem 4052 habe ich 
noch eine Z-Diode 15V und einen Keramik-C über Vcc und GND mitgegeben 
und das Ganze über 270 Ohm an den Akku angeschlossen. Ausserdem habe ich 
die die Anschlüsse der Schalter zu den Akkus noch 10k jeweils eingefügt, 
falls der Akku mal doch aus der Reihe fällt oder falsch angeschlossen 
wird und mir somit nicht die Eingangsstufen grillt. Danke an Eddy 
Current für diese Idee!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.