Forum: Analoge Elektronik und Schaltungstechnik Zellspannungen mit Atmega328 messen


von Spoe N. (elkoo)


Lesenswert?

Hallo,

Ich möchte mit einem ATmega328 Zellspannungen von einem LiIon Akku 
messen. Der Atmega wird über einen DC-DC stepdown board vom zu messenden 
Akku versorgt. Der Akku und der ATmega haben einen common ground. Nun 
kann ich vermutlich die erste Zelle (max. 4.2v) direkt & ohne 
Vorwiderstand an einem A-Pin messen.

Meine Absicht: Die weiteren Zellenpluspole über Widerstände an die 
weiteren A-Pins legen (damit die Pins gegen den common ground nie über 
5v sehen... die weiteren Pluspole hätten ja abhängig von den anz. Zellen 
ein Vielfaches von 4.2v). Damit nimmt zwar die Messgenauigkeit von Zelle 
zu Zelle ab (da der ADC immer 1024 Schritte macht), das nehme ich aber 
in Kauf (um die einzelnen Zellspannungen zu kriegen, kann ich dann die 
jeweils vorherige Spannung vom aktuellen Wert subtrahieren).

Meine Frage(n) dazu:
Wie lege ich die Widerstände aus, welche die Zellabgriffe der höheren 
Spannungen mit den weiteren Analog-Pins verbinden? (Und kann ich das 
überhaupt einfach so lösen oder mache ich noch einen Denkfehler?)

Meine Annahme ist, dass der Analog-Pin eine definierte Impendanz 
(welche?) aufweist und so ein Spannungsteiler entsteht(?). Der 
Widerstand vor dem A-Pin ist also in Relation zur Impendanz des A-Pins 
zu wählen (?).

Anmerkung: Um die Genauigkeit der Messung zu erhöhen, würde ich die 
interne Referenzspannung (statt VCC) als Vergleichsspannung heranziehen 
und diese erstmalig kalibrieren (also den Ist-Wert im Vergleich zu 
externer Messung austarieren), da die interne Referenzspannung von IC zu 
IC variieren kann.

von Falk B. (falk)


Lesenswert?

Spoe N. schrieb:
> Hallo,
>
> Ich möchte mit einem ATmega328 Zellspannungen von einem LiIon Akku
> messen. Der Atmega wird über einen DC-DC stepdown board vom zu messenden
> Akku versorgt. Der Akku und der ATmega haben einen common ground. Nun
> kann ich vermutlich die erste Zelle (max. 4.2v) direkt & ohne
> Vorwiderstand an einem A-Pin messen.
>
> Meine Absicht: Die weiteren Zellenpluspole über Widerstände an die
> weiteren A-Pins legen (damit die Pins gegen den common ground nie über
> 5v sehen... die weiteren Pluspole hätten ja abhängig von den anz. Zellen
> ein Vielfaches von 4.2v). Damit nimmt zwar die Messgenauigkeit von Zelle
> zu Zelle ab (da der ADC immer 1024 Schritte macht), das nehme ich aber
> in Kauf (um die einzelnen Zellspannungen zu kriegen, kann ich dann die
> jeweils vorherige Spannung vom aktuellen Wert subtrahieren).

Und du glaubst, daß damit eine ausreichende Genauigkeit erreicht wird?
Träumer ;-)

> Wie lege ich die Widerstände aus, welche die Zellabgriffe der höheren
> Spannungen mit den weiteren Analog-Pins verbinden? (Und kann ich das
> überhaupt einfach so lösen oder mache ich noch einen Denkfehler?)

Denkfehler.

> Meine Annahme ist, dass der Analog-Pin eine definierte Impendanz
> (welche?)

Nö.

> aufweist und so ein Spannungsteiler entsteht(?). Der

Nö. Den müßte man extern aufbauen. Aber auch dann geht deine Genauigkeit 
ziemlich in die Knie.

> Anmerkung: Um die Genauigkeit der Messung zu erhöhen, würde ich die
> interne Referenzspannung (statt VCC) als Vergleichsspannung heranziehen
> und diese erstmalig kalibrieren (also den Ist-Wert im Vergleich zu
> externer Messung austarieren), da die interne Referenzspannung von IC zu
> IC variieren kann.

Das reicht nicht, dein Grundkonzept taugt nicht viel.
Wieviel Zellen willst du denn in Reihe messen?

von Andrew T. (marsufant)


Lesenswert?

Spoe N. schrieb:
> Meine Annahme ist, dass der Analog-Pin eine definierte Impendanz
> (welche?) aufweist und so ein Spannungsteiler entsteht(?).

Schau doch ein ids Datenblatt des ATM32, dann siehst Du wie es wirklich 
ist.
du wirst sehr erstaunt sein.

von Michael B. (laberkopp)


Lesenswert?

Spoe N. schrieb:
> Wie lege ich die Widerstände aus

Als Spannungsteiler.
Und weil der ATmega maximal 10k als Quellimpedanz sehen will, sollte der 
untere Widerstand höchstens 10k betragen.

Spoe N. schrieb:
> würde ich die
> interne Referenzspannung (statt VCC) als Vergleichsspannung heranziehen

Macht 1.0 bis 1.2V für 10k also 110uA pro Zelle Dauerentladestrom, wenn 
du den Spannungsteiler nicht abtrennst.

von Liebliches Gezwitscher (Gast)


Lesenswert?

Michael B. schrieb:
> Spoe N. schrieb:
>> Wie lege ich die Widerstände aus
>
> Als Spannungsteiler.
> Und weil der ATmega maximal 10k als Quellimpedanz sehen will, sollte der
> untere Widerstand höchstens 10k betragen.

Damit er das dem Nutzer auch sagen kann, habe ich extra eine .wav-Datei 
angefertigt, damit er per PWM mahnende Worte erheben kann.

Beitrag #6309550 wurde von einem Moderator gelöscht.
von Stefan F. (Gast)


Lesenswert?

Spoe N. schrieb:
> Meine Annahme ist, dass der Analog-Pin eine definierte Impendanz
> (welche?) aufweist und so ein Spannungsteiler entsteht(?)

Das ist aber nicht so. Der Eingangswiderstand ist annähernd unendlich, 
dafür hat er aber eine nicht zu vernachlässigende Kapazität von ungefähr 
15pF. Das ist nur sehr grob abschätzbar.

Wozu willst du die Spannungen denn messen? Welche Anforderungen an die 
Genauigkeit ergeben sich daraus?

von Spoe N. (elkoo)


Lesenswert?

Zur Überwachung der Batteriespannung (vor allem um die Last abzuklemmen, 
wenn die Entladeschlussspannung einer Zelle erreicht ist).

Ich habe hier gelesen, dass eine Messgenauigkeit von 0.25% erreicht 
werden kann:
http://www.skillbank.co.uk/arduino/measure.htm

Das würde bei 21v (5 Zellen in Serie) eine Spannbreite von 0.05v 
bedeuten.
Meines Erachtens ist dies ausreichend (die Spannung fällt ja am Schluss 
bei LiIon Zellen recht steil ab - da kann ich schon 0.2 oder 0.3v mehr 
als Sicherheit in den Zellen belassen als die vorgegebene 
Entladeschlussspannung von z.B. 2.5 oder 3v pro Zelle (je nach Zelltyp).

Die interne Referenzspannung kann ich ermitteln (bzw. errechnen) wenn 
ich diese vom Atmega ausgeben lasse und VCC messe. So weiss ich recht 
genau den Wert der Referenz und kann einen Kalibrationswert hinterlegen, 
der auch das Errechnen / Messen der ADC Werte genauer macht.

Den Punkt mit den Spannungsteilern habe ich verstanden - also Extern. 
Wenn ich jeden Spannungsteiler über eine Diode und anschliessend über 
einen FET auf Gnd führe, könnte ich mit einem FET (und damit mit einem 
Pin des Atmega) den Mess-Strom für alle Zellen zeitgleich freigeben? 
Oder ich lege den «freigebe-Pin» einfach an die Gates von 5 FETs welche 
vor den Spannungsteilern liegen...?

von MaWin (Gast)


Lesenswert?

Spoe N. schrieb:
> Ich habe hier gelesen, dass eine Messgenauigkeit von 0.25% erreicht
> werden kann:

Im Internet steht auch, dass in Area51 Aliens gefangen gehalten werden.

Arduino-Kleinkinder-Aussagen sind ähnlich seriös. Wenn man alle Fehler 
ignoriert, wird es 1/1024tel genau...

Spoe N. schrieb:
> die Spannung fällt ja am Schluss bei LiIon Zellen recht steil ab

Die Entladeschlussspannung ist unkritisch und auch mit Arduino-Referenz, 
1% Widerständen und INL Fehlern ausreichend genau zu messen.

Spoe N. schrieb:
> Wenn ich jeden Spannungsteiler über eine Diode und anschliessend über
> einen FET auf Gnd führe, könnte ich mit einem FET (und damit mit einem
> Pin des Atmega) den Mess-Strom für alle Zellen zeitgleich freigeben?

Nein, natürlich funktioniert das nicht, der Stfom fliesst dann übrr die 
oberrn Spannungszeilerwiderstande und die Eingangsschutzdioden ab in 
VCC.

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.