Forum: Mikrocontroller und Digitale Elektronik ADC für differentielle Messung in Battery Pack


von Herbert H. (herbie_haf)


Lesenswert?

Hallo zusammen,
ich möchte gerne die Einzelzellspannungen eines Battery Packs messen. 
Jede Zelle hat 3,2V und 16 davon sind in Reihe geschaltet.

Mein Problem ist jetzt, das Ground meines µc (ESP8266) wohl auf den 
Minuspol der ersten Zelle gelegt wird. Jetzt war ich erst so naiv 
anzunehmen, das ich dann einfach einen differentiellen ADC nehmen kann 
um z.B. die Zellspannung der letzten Zelle zu messen. Allerdings liegt 
deren Potential ja um ~48V höher als das Bezugspotential meines 
ADCs/µcs. In den ADC Datenblättern wurden Begriffe verwendet die mich 
glauben lassen, das ein Standard ADC nicht so hoch über seinem 
Bezugspotential messen kann (ich finde das Datenblatt mit dem Begriff 
gerade nicht).

Zu meinen Fragen:
1. Ist die geschilderte Messsituation ein Problem für gängige ADCs?
2. Wenn das ein Problem ist: kennt ihr ADCs mit denen man so eine 
Messung durchführen kann - idealerweise mit I2C Interface?
3. Wie lauten die Fachbegriffe um nach einem ADC zu suchen der soetwas 
kann?

Ich hatte schon gesehen das es extra ICs gibt für Battery Packs, aber 
die scheinen recht komplex zu sein, sehr teuer und überall vergriffen. 
Und da ich die 16 Zellspannungen nicht parallel messen muss, sondern 
einfach sequentiell, dachte ich es tut vielleicht auch ein "normaler" 
ADC.

Viele Grüße
Herbert

von Olaf (Gast)


Lesenswert?

> 1. Ist die geschilderte Messsituation ein Problem für gängige ADCs?

Es ist standard fuer ALLE Ics das sie nur mit Eingangssignalen
umgehen koennen die innerhalb ihrer Betriebsspannungen liegen.
Sollte es ICs geben die mehr koennen steht das auf der ersten
Seite des Datenblatts weil die Marketingsabteilung da ganz doll Stolz 
drauf ist.

> 2. Wenn das ein Problem ist: kennt ihr ADCs mit denen man so eine
> Messung durchführen kann - idealerweise mit I2C Interface?

Ich meine Linear hatte da mal einen lustigen digitalen Bus fuer solche 
Faelle, weil der muss ja auch potentialfrei sein.

Du koenntest natuerlich einfach viele Spannungsteiler bauen, verlierst 
dabei aber an Aufloesung. Musst du halt mal rechnen ob dir das reicht.

Olaf

von Stefan F. (Gast)


Lesenswert?

Messe jede Zelle mit einem Mikrocontroller und gebe das Ergebnis seriell 
aus.

Die Ergebnisse kannst du dann (z.B. über Optokoppler getrennt) an einem 
zentralen Mikrocontroller einsammeln.

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Messe jede Zelle mit einem Mikrocontroller und gebe das Ergebnis seriell
> aus.
>
> Die Ergebnisse kannst du dann (z.B. über Optokoppler getrennt) an einem
> zentralen Mikrocontroller einsammeln.

Die Idee vom Stefan hatte ich schon 2012 mal umgesetzt. Im Anhang der 
Schaltplan falls es jemanden etwas nützt. Da steht auch noch Füllstand 
und Magnetventil. Das kann dann natürlich wegfallen!

Im zweiten Bild stelle ist nur einen Ausschnitt bereit. Da ich mit 
diesem Teil schließlich Geld verdiene. :-)
Hier habe ich mit Schalter ICs die einzelnen Zellen angesteuert und die 
Spannung jeder Zelle auf einen AD Wandler gegeben der mit I2C 
angesteuert wird. I2C ist dann mit einem ADUM1251 physikalisch getrennt.

Viel Spaß Tom.

von und zu (Gast)


Lesenswert?

Oder wenn es teuer sein soll so einen optisch isolierten ADC: SI8901B

von Herbert H. (herbie_haf)


Lesenswert?

Wow...vielen Dank für die vielen Rückmeldungen. Ich schau mir mal alles 
an und überlege wie ich vorgehen kann.

von Georg (Gast)


Lesenswert?

Herbert H. schrieb:
> Und da ich die 16 Zellspannungen nicht parallel messen muss, sondern
> einfach sequentiell, dachte ich es tut vielleicht auch ein "normaler"
> ADC.

Du musst auch nicht differentiell messen, sondern du bestimmst die 
Spannung an jedem Verbindungspunkt der Zellen - Plus von Zelle X ist 
dabei Minus von Zelle X+1, du brauchst also 17 Messungen. Eine 
Subtraktion wird dein Prozessor wohl schaffen. Du brauchst auch keine 16 
Spannungsteiler, es genügt einer, der sicherstellt dass die höchste 
vorkommende Spannung gemessen werden kann. Umschalter für die 17 
Anschlüsse brauchst du natürlich.

Problem ist dabei u.U. die Genauigkeit: du misst an der obersten Zelle 
z.B. 47 und 50 V, die Differenz willst du auf 10 mV genau wissen - das 
ist anspruchsvoll aber keineswegs unmöglich, jedes Multimeter aus dem 
Baumarkt kann das, es entspricht einer Anzeige von 4 Stellen (49,99 V). 
Nötigenfalls geht es auch noch genauer, dann muss der ADC halt mehr als 
12 Bit auflösen, sowas soll es ja geben.

Eine echte differentielle Messung braucht man nur bei sich schnell 
ändernden Messwerten, was bei Akkus eher nicht der Fall ist.

Georg

von Michael B. (laberkopp)


Lesenswert?

Herbert H. schrieb:
> 1. Ist die geschilderte Messsituation ein Problem für gängige ADCs?

Ja.

> 2. Wenn das ein Problem ist: kennt ihr ADCs mit denen man so eine
> Messung durchführen kann - idealerweise mit I2C Interface?

Nein. Aber Instrumentstation-OpAmps, wie INA117

Herbert H. schrieb:
> Jede Zelle hat 3,2V

Merkwürdig. Üblich sind 4.2V, wenn sie voll sind, also 68V zusammen. Bei 
3.2 eher leer.

LTC1043 kann das bis 18V, nützt also nichts.

Daher sind Akkupacks in Reihenschaltung nicht-trivial, ein Job vor dem 
Tesla nicht zurückschreckte und heute die Früchte ernten kann.

Man muss sich halt an das anpassen was es auf dem Markt gibt und sich 
nicht irgendwas zusammenwünschen.

LTC6802 und TLE9012 gehen bis 12 Zellen, sind aber kaskadierbar. 
MAX11080/MAX11081 12-372 Zellen.

von Manfred (Gast)


Lesenswert?

Olaf schrieb:
> Es ist standard fuer ALLE Ics das sie nur mit Eingangssignalen
> umgehen koennen die innerhalb ihrer Betriebsspannungen liegen.

> Sollte es ICs geben die mehr koennen steht das auf der ersten
> Seite des Datenblatts

Es gibt diese tatsächlich, gerade im Umfeld Batteriemanagement. Hier 
müsste er mal die Angebote von Texas durchgehen, ob die in der Reihe 
INA_irgendwas einen Stein haben, der 60 Volt kann.

Michael B. schrieb:
>> Jede Zelle hat 3,2V
> Merkwürdig. Üblich sind 4.2V, wenn sie voll sind, also 68V zusammen. Bei
> 3.2 eher leer.

Für Dich vom Google kopiert:
========
Die Nennspannung einer LiFePo4 Zelle beträgt 3,2 V (Blei-Säure: 2 V pro 
Zelle). Eine 12,8 V LiFePo4-Batterie besteht daher aus 4 in Reihe 
geschalteten Zellen und eine 25,6 V Batterie besteht aus 8 in Reihe 
geschalteten Zellen.
========

Auf jeden Fall muß Herbert auch die vollen Zellen berücksichtigen, das 
sind 3,6 V und in Summe rund 60 Volt.

von Elektrolurch (Gast)


Lesenswert?

Wie schon von Michael B. geschrieben, nimmt man dafür Batery Management 
ICs.
Die gibt es reichlich, oft auch mit Balancing das du wahrscheinlich auch 
brauchst, man muss nur danach suchen.
Mit einer diskreten Lösung bräuchtest du ja auch einen differentiellen 
Multiplexer, der diese hohe Spannung kann.
Spannungsteiler würden deinen Akkupack langsam entladen = Designpattern
"das viereckige Rad neu erfinden".

von Mehmet K. (mkmk)


Lesenswert?

Stefan ⛄ F. schrieb:
> Messe jede Zelle mit einem Mikrocontroller und gebe das Ergebnis seriell
> aus.
> Die Ergebnisse kannst du dann (z.B. über Optokoppler getrennt) an einem
> zentralen Mikrocontroller einsammeln.

Z.Zt. plane ich für mein neues Haus, in das ich (hoffentlich) dieses 
Jahr einziehen werde. Da es etwas abgelegen ist, will ich bei einem 
Defekt die Reparatur selbst durchführen können. Alles andere würde zu 
lange dauern. Deshalb versuche ich soweit als möglich Fertig-Lösungen 
von der Stange zu vermeiden.
Meine BMS sieht genau so wie von Stefan beschrieben aus.
Ein INA229 zusammen mit einem STM32F030 überwacht alles, was in den Akku 
rein- und rausfliesst.
Alle LiFePo4-Stränge werden von Attiny412 kontrolliert, die auch das 
Balancing übernehmen.
Verbunden sind sie alle über Optokoppler mit einem etwas 
leistungfähigeren Controller.

von Stefan F. (Gast)


Lesenswert?

Mehmet K. schrieb:
> Meine BMS sieht genau so wie von Stefan beschrieben aus.

Wie genau sammelst du die Daten zentral ein?

Ich würde die Ausgänge der Optokoppler gerne alle parallel schalten, 
aber dann muss man irgendwie sicherstellen, dass nicht mehrere Sensoren 
gleichzeitig senden.

von Mehmet K. (mkmk)


Angehängte Dateien:

Lesenswert?

Senden tun die Balancer nur bei Request.
So konnte ich die TxD-Optos parallel schalten, während die RxD-Optos 
über einen Multiplexer angesteuert werden. Siehe Anhang.
HD4 dient dazu, die Leitungen innerhalb der gestapelten PCBs zu 
verbinden.
Da ich z.Zt. in Arbeit ertrinke, habe ich noch immer keine Zeit 
gefunden, das Ganze nochmals zu überdenken und die PCBs zu bestellen.
Kritik ist also durchaus erwünscht.

von Günni (Gast)


Lesenswert?

Für Messungen mit hohen Offset-Spannungen (beispielsweise um Ströme mit 
einem Shunt zu messen, der im positiven Spannungspfad liegt) gibt es 
spezielle Operationsverstärkerschaltungen. Teilweise wurde dazu auch 
Operationsverstärker auf den Markt gebracht, die die notwendigen 
Widerstände schon integriert hatten (z.B. von BurrBrown - jetzt bei 
Texas Instruments). Einen ersten Ansatz liefert die 
Applikationsschaltung SBOA097B von Texas Instruments, die mit dem INA146 
Operationsverstärker aufgebaut ist.
Statt nun 15 dieser Schaltungen aufzubauen, um die Spannung der 16 in 
Reihe geschalteten Zellen zu messen, würde ich nur eine aufbauen und 
diese mit Reedrelais an die jeweils zu messende Zelle schalten.

von Peter K. (Gast)


Lesenswert?

was für eine bekackte Idee da mit Relais zu arbeiten

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Alternativ zu Optokopplern:

Du könntest die Signale auch übertragen durch "Low-Power Digital 
Isolators":
ISO7021, ISO7041, IL01x Series, MAX 1293x, Si861x/2x, usw.

Oder analog übertragen mit:
ISO124, AN614

Die analogen Übertrager haben allerdings eine höhere Ruhestromaufnahme.

von Mehmet K. (mkmk)


Lesenswert?

Dieter D. schrieb:
> "Low-Power Digital Isolators"
Nebst der Kleinigkeit, dass das preislich in einer ganz anderen Liga 
spielt: meine Intention ist es, soweit als möglich keine 
Spezial-Bausteine zu verwenden, damit ich bei einem Schadensfall auf das 
zurückgreifen kann, was ich eh schon massenhaft auf Lager habe.

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Mehmet K. schrieb:
> was ich eh schon massenhaft auf Lager habe.

Also Optokoppler, Drosseln mit zwei galvanisch getrennten Wicklungen und 
µC im Leistungsbereich von ATtiny13.

von Mehmet K. (mkmk)


Lesenswert?

Dieter D. schrieb:
> Also Optokoppler, Drosseln mit zwei galvanisch getrennten Wicklungen und
> µC im Leistungsbereich von ATtiny13.

Ja, so könnte man es auch machen.
Oder aber man benutzt gleich die zu balancierende LiFePo4 als Quelle.

von Rüdiger B. (rbruns)


Lesenswert?

Es gibt für ca 60 Euros ein BMS mit RS485 oder Bluetooth. Da bekommst du 
die einzelnen Batteriewerte. Wenn du es in Stückzahlen bauen möchtest 
ist es was anderes.

von Rüdiger B. (rbruns)


Lesenswert?


von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Herbert H. schrieb:
> 1. Ist die geschilderte Messsituation ein Problem für gängige ADCs?

Die Auflösung eines ADC mit 10bit hätte folgende Auflösung:
1. Zelle 5mV,
2. Zelle 10mv
3. Zelle 15mv
4. Zelle 20mV

Erforderliche Genauigkeit der Teilerwiderstände und Referenz:
1. Zelle - Teilerwiderstände <0,5%
2. Zelle - Teilerwiderstände <0,25%
3. Zelle - Teilerwiderstände <0,13%
4. Zelle - Teilerwiderstände <0,08%

D.h. auf der Platine solltest Du noch Platz lassen um Widerstände für 
den Feinabgleich parallel ergänzen zu können.

> 2. Wenn das ein Problem ist: kennt ihr ADCs mit denen man so eine
> Messung durchführen kann - idealerweise mit I2C Interface?

Obiges heißt, dass bis zu 4 Zellen möglich wären mit einem Chip zu 
verarbeiten. Wenn ein digitales Interface, z.B. I2C oder SPI vorhanden 
sein sollte, dann wäre am sinnvollsten µC zu verwenden. Zum Beispiel 
ATtiny.

> 3. Wie lauten die Fachbegriffe um nach einem ADC zu suchen der soetwas
> kann?

- Siehe unter 2. Der µC muss mindestens einen 10bit ADC beeinhalten.
- Auf ausreichende programmierbare Pins achten.

: Bearbeitet durch User
von Ralf X. (ralf0815)


Lesenswert?

Dieter D. schrieb:
> Herbert H. schrieb:
>> 1. Ist die geschilderte Messsituation ein Problem für gängige ADCs?
>
> Die Auflösung eines ADC mit 10bit hätte folgende Auflösung:
> 1. Zelle 5mV,
> 2. Zelle 10mv
> 3. Zelle 15mv
> 4. Zelle 20mV

Wenn es um 16 serielle Zellen geht, stellt sich mir einiges an Fragen, 
warum man hier mit lächerlichen 10bit arbeiten sollte, wenn Du schon 
eine Messgenauigkeit nach Zellenebene angibst.
Ein ADS1115 arbeitet mit 16bit, bei ideal theoretischen damit 
aufgelösten 60V könnte der auf 0,915..mV genau messen.
Mit 10bit käme man immer noch auf (theoretische) Auflösung von knapp 
60mV bei 60V.

Deine ideale Spannungsmesswertgenauigkeit eines 10bit ADC gilt für eine 
angenommene maximale Messspannung von 5,12V.
Ohne Begründung für den Fragesteller kaum sinnvoll.

> Erforderliche Genauigkeit der Teilerwiderstände und Referenz:
> 1. Zelle - Teilerwiderstände <0,5%
> 2. Zelle - Teilerwiderstände <0,25%
> 3. Zelle - Teilerwiderstände <0,13%
> 4. Zelle - Teilerwiderstände <0,08%

Bei einem seriellen Akkupaket ist anzunehmen, dass die 
Tellebenenspannungen  interessant sind, auch der Threadtitel führt in 
die Richtung.
Kaum anzunehmen, dass man mit üblichen ADC-Bauteilen das Ergebniss 
einfach "so" irgendwie irgendwo ohne einem kleinen Progrämmchen auf 
einem μC irgendwo ausgeben oder speichern mag.

Egal ob man einen ADC-Eingang durch weitere Beschaltung nacheinander an 
alle Spannungsteilermesspunkte schaltet oder 4 x ADC mit vier Eingängen 
und z.B. vier unterschiedlichen I2C-Addys abfragt, man kommt um eine 
Korrekturtabelle im μC nicht drumrum.
An die theoretischen <1mV bei 60V und 16bit wird man dabei nicht kommen, 
aber vieles hängt davor dabei auch nur noch von den vorhandenen 
Fähigkeiten und Equigment ab.

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.