Spannungsmessung an LIPO Akkus

OP #5408873
Lesenswert?

Hallo Elektronikexperten,

das Thema Spannungsmessung an Akkus( in meinem Fall Lipos) ist natürlich 
nicht neu, auch nicht hier im Forum.

Ich möchte zum Üben aber selbst eine kleine Meßplatine entwickeln.
Der derzeitige Status der Schaltung ist als Bild angehängt.

Überlegungen/Komponenten:

1) Die Zellen werden einzeln über den Balancer Stecker abgegriffen 
(JST-EH für 6S)

2) 8 Kanal analog multiplexer/demultiplexer um jede Zelle separat 
weiterleiten zu können

3) OP AMP als Impedanzwandler (74HC4051BQ) --> Schaltung soll 
Spannungsquelle möglichst nicht belasten um

4) Referenzspannung (LM4040) zur Erhöhung der Meßgenauigkeit

5) 10-bit ADC am Mikrocontroller (ATTINY85) zur Spannungsmessung

6) später noch Ausgabe auf Display (Keystudio 2004A)

Die Spannungsversorgung ist noch offen, sollte vorerst nicht aus dem 
Akku kommen, um nicht die Messung zur verfälschen.

Die Zellspannungen liegen ty­pi­scher­wei­se zwischen 3.1 und 4.2 Volt.

Nun die Fragen ans Forum:

1) Funktioniert die Schaltung in dieser Form?
2) Reichen 5V VCC für den OP AMP? Oder muss da mind. 1-2V mehr 
Versorgungsspannung als Eingangsspannung anliegen?
3) Wird es rauchen, hähäh ...

Vielen Dank für alle Kommentare im Voraus.

Andi
Gast #5408891
Lesenswert?

Hallo Andreas E. schrieb:
> LM4040

zum LM4040 gibt es auch ein Datenblatt:
http://www.ti.com/lit/ds/symlink/lm4040-n.pdf

Das im Bild 1 einen einfachen Aufbau des LM4040 zeigt.

Wie passt das zu deiner Schaltung.

Dann fehlen wie immer Kondensatoren an unterschiedlichen Stellen.

Auch wäre es spannend mal die Auflösung solch einer Beschaltung, ohne 
Spannungsteiler am Eingang, zu bestimmen.

Auflösung je Bit = 5000mV /1023 = 4,888mV
Gast #5408895
Lesenswert?

Und noch etwas,

man muss auch die Bezugspegel der Messung mit umschalten, sonst
misst man nicht 6x 4,3V = 25,6V, sondern jeweils die Reihenspannungen am 
Stecker.

Das kann so ein Attiny / Atmega nicht mit dieser Beschaltung, denn Vcc 
muss kleiner gleich des Messspannung sein.
Mehr steht im Datenblatt des Attiny85.
(Firma: matzetronics) #5408899
Lesenswert?

Die Pins werden ja auch knapp, denn du möchtest den Demultiplexer ja 
auch umschalten, wodurch nochmal 3 Pins des ATTiny fällig werden. Dann 
bleibt dir am Tiny praktisch kein Pin mehr, um das Ergebnis der Messung 
der Aussenwelt mitzuteilen.
(Reset zähle ich mal nicht mit, weil man sich da schnell aussperrt, wenn 
was schiefgeht).
Gast #5408900
Lesenswert?

Andreas E. schrieb:
> 1) Funktioniert die Schaltung in dieser Form?

Nein.

Es kommen ja bis 25.2 V rein an Y5.

Sie könnte funktionieren, wenn sie eine 5V Versorgung hat die galvanisch 
unabhängig von der Akkuspannung ist und nicht nur der Messeingang mit 
einem 4051 umgeschaltet wird, sondern auch die GND Verbindung an den 
Minuspol der entsprechenden Zelle umgeschaltet wird. Aber VEE und VDD 
des 4051 müssen an minus und plus des Akkus und der 4051 hält keine 
25.2V aus. Es müsste ein DG409 oder so sein, mit GND und VCC an die 5V 
des uC.

> 2) Reichen 5V VCC für den OP AMP?

Bei einem R2R rail-to-rail OpAmp ja.
OP #5409351
Lesenswert?

Danke für die schnellen Antworten.
Ich wusste es raucht ...

Denkfehler Nummer 1 war dass der Balancer je Pin die 
Einzelzellenspannung abgreift. Also muss ich jeweils die 
Differenzspannung zwischen 2 Zellen messen oder die Schaltung 
anderwertig anpassen. OK?

Kondensatoren habe ich vergessen stimmt. 100nF zwischen VCC und GND 
möglichst nah am AVR. Und dann zur Unterdrückung kleiner Schwankungen am 
Spannungssignal. Richtig?

Spannungsteiler für höhere Auflösung auch verstanden. Kalibrieren (wegen 
Toleranz der Widerstände) muss man dann ja entsprechend in der Software.

Zu wenig Pins. OK. Dann nehme ich den ATTINY84A.
Zur Info: ich hab eh etliche dieser MCs von ATTINY13 bis ATMEGA328 bzw. 
auch Rasperrys und Arduinos zur Verfügung. Hier geht es nur ums Üben und 
wie man sieht hab ich das nötig :)

Den LM4040 habe ich mir als externe Referenzspannung (weil genauer) 
statt der internen Spannungsreferenz gedacht. Die muss halt höher als 
das zu messende Signal sein. Falsch?

Gruß und Danke für die Hilfe!
Gast #5409500
Lesenswert?

MaWin schrieb:
> Bei einem R2R rail-to-rail OpAmp ja.

Warum Sollte ein Rail2Rail verwendet werden? Die Eingangs- und 
Ausgangsspannung geht weder an die 0V noch an die 5V ran.

Man könnte aber mit einem R2R OpAmp die Auflösung erhöhen wenn man man 
bei von 3,0V -> 0V ausgibt und bei 4,2V -> 5V ausgibt.
Gast #5409531
Lesenswert?

Wenn du eh einen Zweikanal-Analogschalter verwendest könntest du 
genausogut gleich eine diferentielle Messung über einen Kondensator 
machen.

Einfach einen "genügend großen" Kondensator zwischen die beiden Ausgänge 
(X,Y) des Multiplexers, und an die Eingangspaare schaltest du deine 
Zellen (X1,Y1; X2;Y2;...) und den ADC (Xn,Yn). Um die Spannung einer 
Zelle zu messen, schaltest du den Schalter erst auf die Zelle, dadurch 
wird der Kondensator parallel zur Zelle geschaltet und lädt sich auf die 
Spannung der Zelle auf. Dann schaltest du den Schalter auf die ADC-Pins, 
dadurch wird der Kondensator dessen Spannung die Batteriespannugn ist an 
den ADC angeschlossen und du kannst offsetfrei und 
spannungsteilerfrei deine Zellspannung messen.

Braucht halt a) einen Analogschalter der die Eingangsspannung ab kann.
Der Kondensator muss groß genug sein damit Charge Injection und 
ADC-Ladungsenthnahmen vernachlässigbar sind und genügend gering 
eLeckströme haben dass die Spannung weniger als die geforderte 
Genauigkeit absinkt während der ADC misst.
Die Schaltung muss langsam genug schalten dass sich der Kondensator über 
die Analogschalterwiderstände genau genug auflädt.
Gast #5409543
Lesenswert?

Gibt es einen Grund weshalb du einen ATTiny und Multiplexer für 6S einem 
normalen ATMega8 mit 6(8) Analogeingänge vorziehst?

Bedenke das du am Eingang bei 6S bis zu 25,2 Volt hast, welche dir alle 
Bauteile grillen werden. Du musst also von Zelle zu Zelle durchschalten 
und dabei den jeweils vorletzten Pin als Masse verwenden um die 3,7/4,2V 
nicht zu überschreiten.
Gast #5410993
Lesenswert?

MaWin schrieb:
> Er will/muss 4.2V messen bei 5V Versorgung, das schafft ein single
> supply OpAmp wie LM358/LT1013 nicht.

Der OPA ist hier eh sinnlos: Der AVR hat hochohmige Eingänge, die können 
direkt über einen Spannungsteiler am Akku hängen.

Ach, da war ja noch was: Der AVR möchte für den Sample&Hold einen 
Eingangswiderstand von 10kohm sehen, um den Sample-Kondensator laden zu 
können. Dafür packt man einfach einen Kondensator 10-100nF an den 
Eingang, aus dem sich der Sample&Hold bedienen kann.

Der Multiplexer ist auch sinnlos: Jeder AVR hat einen Analogschalter 
drin. Und ein ATtiny84 nimmt nicht mehr Platz weg wie ein ATtiny85 plus 
ein Multiplexer.

6 Analogeingänge, an jeden Eingang ein Spannungsteiler plus 
Pufferkondensator. Bei Runterteilen der Spannung 1:20 und 10bit ADC 
erreicht man eine Auflösung von etwa 20mV. Die Frage ist schlichtweg: 
Reicht das?
Gast #5411046
Lesenswert?

Michael B. schrieb:
> Man müsste mindestens 0.1% Widerstände verwenden, und die Belastung
> durch den Analogeingang (Fehlerstrom 1uA) bei 1/1000 des
> Spannungsteilerstroms halten, also 1mA ziehen. Als Dauerbelastung zu
> hoch.

Ach, der Laberkopp mal wieder: Nein, müsste man nicht.

Man kann stinknormale 1% Widerstände nehmen und klemmt alle Eingänge 
einmal an die Referenzspannung, dann kann man die Eingänge kalibrieren.

Abgesehen davon sind 0.1% Widerstände in SMD 0805 inzwischen so 
spottbillig, dass das auch egal wäre.

Datenblätter lesen ist out? Der ADC hat einen Rin von 100Mohm. Da kann 
man locker mit einem Spannungsteiler 2,2 Mohm / 100kohm bei einer Vref 
von 1,1 V rangehen, selbst 10 Mohm / 1 Mohm bei einer Vref von 2,56 V 
wären kein Problem. Das sind dann 2 µA bei 22V Akkuspannung.
Gast #5411067
Lesenswert?

Hallo,

Karl schrieb:
> Datenblätter lesen ist out? Der ADC hat einen Rin von 100Mohm. Da kann
> man locker mit einem Spannungsteiler 2,2 Mohm / 100kohm bei einer Vref
> von 1,1 V rangehen, selbst 10 Mohm / 1 Mohm bei einer Vref von 2,56 V
> wären kein Problem. Das sind dann 2 µA bei 22V Akkuspannung.

Es geht nicht direkt um das Rin, sondern um dem Strom für Sample and 
Hold Kondensator.

So dass ich immer eine Spanungsquelle verwende, die <= 10kOhm hat.
Sonst ergeben sich Messfehler mit mehr als 5%.
Auch diese !10kOhm) findet man im Datenblatt unter "ADC Wandler".

Wenn dass nicht geht, kommt ein OPV OPA334 zum Einsatz, der als 
Spannungsfolger geschaltet wurde.

http://www.ti.com/product/OPA334
#5411121
Lesenswert?

Karl schrieb:
> Ach, der Laberkopp mal wieder: Nein, müsste man nicht.

Ach der Karl, dumm wie immer.

> Man kann stinknormale 1% Widerstände nehmen

Wenn die denn eine Stabilität über Lebensdauer und Temperatur wie 0.1% 
Widerstände hätten. Haben sie üblicherweise aber nicht.


Karl schrieb:
> Datenblätter lesen ist out? Der ADC hat einen Rin von 100Mohm.

Im Gegenteil, bei dir reicht aber offenbar dein Aufmerksamkeitsdefizit 
auch nur für die erste Seite.

Ich habe schon 1uA erwähnt, da hättest du merken können daß du noch was 
übersiehst, aber Karl ist dumm wie immer.

Um es mal mit Worten von jemand anderen zu sagen, mir glaubst du ja eh 
nicht:

The ADC is specified as having a 100 MΩ (that is MegaOhm) input 
impedance.
 However, this seems somewhat suspicious to me. Together with the fact 
that there is no analog input leakage specified, I would guess that this 
is the electrical characteristics of just the ADC, rather then the ADC 
together with the entire IO pin structure. I would guess that the ADC IO 
lines that are shared with digital IO have much more leakage current (1 
uA from the docs).
Gast #5411132
Lesenswert?

Karl M. schrieb:
> sondern um dem Strom für Sample and
> Hold Kondensator.

Der Sample&Hold Kondensator ist in der Größenordnung 10pF (Pico!). Der 
ist aus dem 10nF Pufferkondensator am Eingang lässig bedient.

Das schlägt Atmel selbst in einer App-Note zum ADC so vor. Aber Atmel 
ist ja nur der Hersteller, was weiß der schon...
Gast #5411136
Lesenswert?

Michael B. schrieb:
> However, this seems somewhat suspicious to me. Together with the fact
> that there is no analog input leakage specified, I would guess that this
> is the electrical characteristics of just the ADC, rather then the ADC
> together with the entire IO pin structure. I would guess that the ADC IO
> lines that are shared with digital IO have much more leakage current (1
> uA from the docs).

https://dict.leo.org/englisch-deutsch/guess

guess => raten, meinen, vermuten, annehmen, schätzen, ahnen

Dann guess mal schön weiter.
OP #5414236
Lesenswert?

Habe den Schaltplan aktualisiert (siehe Anhang).

Korrektur der Schaltung für die Spannungsreferenz. Datenblatt gelesen.

Kein OPAMP.

Spannungsteiler für jede Zelle einzeln. Dabei ca. 10k Impedanz 
eingestellt. Datenblatt: "The ADC is optimized for analog signals with 
an output impedance of approximately 10kΩ or less."

Vielleicht reichen jetzt die Ströme nicht bzw. ich muss entsprechend 
lange warten.

Bitte wieder um Kommentare. Freu mich schon :)

Lg,
Andi

Ps.: ich lese immer die Datenblätter; ich verstehe halt bei weitem nicht 
alles bzw. bei den Mengen merke ich mir auch nicht was ich schon gelesen 
habe bzw. weiß ich nicht was jeweils für meinen Anwendungsfall relevant 
ist. Daher übe ich eben um mehr Sicherheit zu bekommen.

Und frage im Forum ...
(Firma: TU Chemnitz) #7489381
Lesenswert?

Die angegebenen Schaltungen belasten den 6S-Akku solange er angesteckt ist. Eine (nahezu) belastungsfreie und dabei genau messende Schaltung verwendet zwei billige CD4052-Analogmultiplexer (keine 74HC4052), die an verschiedenen Spannungspegeln angeschlossen werden, und einen Mikrocontroller an der 4. Zelle, also etwa in der Mitte. Die beiden Multiplexer, die jeweils max. 20 V vertragen, laden einen Kondensator auf und schalten diesen danach an den Spannungsteiler vor dem ADC-Eingang. So genügt für die ganze Spielerei ein ATtiny13. Die Stromaufnahme wird nach unten allenfalls durch den Watchdog des Mikrocontrollers begrenzt; ein Software-Timeout kann diesen wegschalten (dann << 1 µA), und der Controller braucht ein externes Reset. Schaltplan später.

Die gängige Lösung mit Hochvolt-Multiplexern, etwa TMUXxxxx, erscheint mir schlichtweg zu teuer. Und geschaltete Widerstände zu umständlich und zu ungenau. Für mehr als 6S muss man das Ganze allerdings anders lösen.

(Firma: TU Chemnitz) #7489478
Lesenswert?

Zunächst der Vorschlag für 3 LiPo-Zellen in Reihe. Man sieht den 4052 „unten“ und den Mikrocontroller „oben“. (Pardon, 2× hochgeladen bekomme ich den nicht wieder weg.)

Bei der Schaltung für 6 Zellen wird „oben“ noch ein 4052 draufgesetzt, für den es allerdings externe Digital-Pegelwandler braucht. Es arbeiten nun zwei A/D-Wandler des ATtiny13A.

Das Schaltregime ist Sache der Firmware. Der Reset-Anschluss ist frei zum ISP-Programmieren und zum Rücksetzen.

Die gestürzte Zuordnung der Kanäle „oben“ und „unten“ liegt an der Invertierung des Levelshifters: Der Standardfall „Transistoren gesperrt“ (R3 und R4 fressen keinen Strom) soll am längsten wirksam sein: Dann kann der Ladungsaustausch stattfinden und der A/D-Wandler arbeiten.

Statt Abschalten ist auch jede andere Reaktion an IC2:PB2 möglich.

Cleverer: Bei Verwendung besserer Kondensatoren (geringer Spannungsabhängigkeit der Kapazität) kann statt dem Widerstandsteiler ein kapazitiver Teiler zum Einsatz kommen: C2 wird 3× so groß wie C1 dimensioniert, und die Spannung teilt sich durch 4. Vorher wird C2 entladen, indem PB4 zum Lo-Ausgang wird. Vorteil: Kein Entladevorgang durch Widerstände lassen dem A/D-Wandler viel Zeit.

Nebeneffekt: Permanentes Umschalten von C1 zwischen den Zellen führt zum Balancing. Das wäre aber eher etwas für niederohmigere Multiplexer und Elkos.

Angehängte Dateien:
#7570267
Lesenswert?

Ich habe in den letzten Tagen etwas ähnliches gebaut. Allerdings für 8S LiFePo4. Hier gibt es ebenfalls das Problem:CD4052 etc vertragen max 20V. Für flying cap Messung könnte man anti-serielle p-ch mosfets nehmen und das händisch nachbauen. Aber braucht viel Platz auf der Platine.

Vorerst habe ich jetzt mal einen 100k/15k (1:7.67) Spannungsteiler mit 10n genommen. Den Cap kann man sich ev sogar sparen. Ich bin einfach mit den ADC timings hoch gegangen. Dann bekommt man sogar damit brauchbare Werte. Ich verwende dazu einen ATtiny1626. Das sind die neueren 2-series. Die haben einen 12 bit ADC, und eine Vref von uA 4.096mV (real pendelt er je nach chip zw 4V und 4.180V, aber dann ausreichend stabil). Also 1 step==1mV. Was mir noch aufgefallen ist: die unteren 10mV sind komplett tot, dann noch weitere 5mV non-linear. Ab dann geht es. Sprich man muß einen ordentlichen offset dazu rechnen. Hab 3 1626er (2x TSSOP und 1x SOIC) ausprobiert, und der Fehler scheint systematisch zu sein. Ich nehme an das kommt davon, weil die neuen 2-series auch diff ADC können (MUXPOS und MUXNEG auf jeden der Ain schaltbar, und ganz runter dürfte das Teil nicht kommen.

Zur Kalibrierung wollte ich ursprünglich eine 3.000V Referenzspannungsquelle die ich hier habe verwenden. Aber das gab wenig zufriedenstellende Ergebnisse aufgrund der 1:7.67. Deshalb habe ich schnell mit einem TL431 eine 10V ref gebastelt die ich mit meinem Fluke einstelle. Der tiny1626 macht beim Einschalten eine Messung. Und wenn er auf allen 8 inputs eine ähnliche Spannung im Bereich 10.00V +-200mV sieht, schaltet er sich in den Kalibriermodus und macht einen Abgleich auf die 10.00V. Somit kann ich Toleranzen in den Spannungsteilern in der SW ausgleichen. Soweit sieht es schon mal ganz ok aus. Die Spannungen stimmen bis auf ca 20mV. Bei 26V Uin sind das immerhin ca 0.1%.

Was noch auf meiner Weihnachtsferien-TODO Liste steht: der Attiny1626 kann auch differential input ADC und hat einen PGA (programmable gain amplifier). Man könnte also die heruntergesetzten Differenzspannungen mit dem PGA x8 verstärken und dann messen. Beim Kalibrieren liegen ja überall 10V an. Und auch hier kann man bereits die Differenz (pos und neg) messen und als Korrekturfaktor wegspeichern. Natürlich dann angepasst an die Spannungshöhe. Bei 20V -> doppelter Korrekturwert. Achtung: bei differential input gibt es effektiv 'nur' 11bit Auflösung weil es ja signed ist So in der Richtung könnte es funktionieren, aber wie immer gilt: in der Praxis schlummern sicher noch etliche Stolperfallen.

LieGrue, strub

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren