Forum: Mikrocontroller und Digitale Elektronik Geeigneter Mikrocontroller für Zellmessungen


von Eduard I. (eiten)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

da mir ein paar LiFePo4-Zellen zugeflogen sind machte ich mir mal ein 
paar Gedanken, wie ein BMS dazu ausschauen könnte (klar, kaufen geht 
immer). Meine Idee war ein Mikrocontroller pro Zelle, welche dann 
galvanisch getrennt mit einem übergeordneten Controller kommunizieren 
(siehe Anhang. Balancing würde ich dann auch vornehmen, ist aber 
momentan erst ein Gedankenspiel). Welcher uC kommt euch für diese 
Aufgabe in den Sinn? Klar, ein ATmega328PB würde da gehen, aber 
vielleicht gibt's noch was besseres.

Anforderungen:
- Versorgungspannung von *2.7V - 5V*, damit keine Spannungswandlung 
gebraucht wird
- UART zur Kommunikation
- Wiederholgenauer AD-Wandler, der ohne Spannungsteiler auskommt (z.B. 
interne Referenz gegen Versorgungsspannung als Referenz messen)
- So geringer Leistungsverbrauch wie möglich, vor allem im Schlaf (das 
Teil wird die grösste Zeit schlafen)
- Aufwachen bei UART-Kommunikation

hat da jemand eine Idee?

LG und Dank, Edi

von Obelix X. (obelix)


Lesenswert?

Willst du die LEDs der Optokoppler wirklich in Reihe schalten?

Eduard I. schrieb:
> (z.B.
> interne Referenz gegen Versorgungsspannung als Referenz messen)

Die Vcc schwankt aber in deinem Entwurf.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Eduard I. schrieb:
> hat da jemand eine Idee?

Spannungen von Zellen ändern sich lamgsam.

Nimm einen uC pro Zelle versorgt aus der Zelle (z.B. Attiny85) der 
verbunden ist mit dem Controller der Zelle über ihn un dem Controller 
der Zelle unter ihm über Kondensatoren. Denn Optokoppler ziehen viel 
Strom.

Die Kondensatoren trennen den Gleichspannungsunterschied  aber kurze 
serielle Übertragungsimpulse werden durchgereicht dank 
Wechselspannungskopplung.
1
  |      +-------+  |
2
  +---+--|VCC PB0|--+
3
  |  _|_ |       |
4
 Bat /_\'|    PB1|--+
5
  |   |  |       |  |
6
  +---+--|GND    | 220R
7
  |      +-------+  |
8
  |                1uF
9
  |      +-------+  |
10
  +---+--|VCC PB0|--+
11
  |  _|_ |       |
12
 Bat /_\'|    PB1|--+
13
  |   |  |       |  |
14
  +---+--|GND    | 220R
15
  |      +-------+  |
16
  |                1uF
17
  |      +-------+  |
18
  +---+--|VCC PB0|--+
19
  |  _|_ |       |
20
 Bat /_\'|    PB1|-----
21
  |   |  |       |
22
  +---+--|GND    |
23
  |      +-------+
Der uC der untersten Zelle kommuniziert mit der Welt.

Die Z-Dioden mit 5V1 verhindern Überspannung wenn noch nicht alle Zellen 
angeschlossen sind, die 220R verhindern Uberstrom der zum latch up 
führen würde beim Anschliessen. Das langsame Aufladen der Kondensatoren 
auf die reale Spannungsdifferenz der Zellen geschieht über die 
eingeschalteten internen pull ups, Ruhepegel der seriellen Verbindung 
also high.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Eduard I. schrieb:

> hat da jemand eine Idee?

Dafür gibts passende Bausteine wie den hier
https://www.analog.com/en/products/ltc6811-1.html
der dann 16 Bit ADCs enthält und Messen und Balancen macht.
Damit minimierst Du Platz, Bauteilezahl und letztendlich Kosten.

Es sei denn, der Weg ist das Ziel. Dann zählen Sachgründe natürlich 
nicht.

fchk

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Frank K. schrieb:
> Dafür gibts passende Bausteine

Jup, und dann auch noch den LTC6804 mit dem man genau das gleiche 
Konzept wie oben machen kann, aber halt in besser und sicher (!). Nutzt 
isoSPI und kann 12 Zellen pro Chip (statt nur eine wie beim hier 
ursprünglichen Konzept).

Ich hatte mal mit einem kommerziellen BMS zu tun welches nahezu genau so 
aufgebaut war wie hier oben vorgeschlagen, mit dem kleinsten PIC12. Das 
war absoluter Mist, teuer und extrem unzuverlässig. Die Kommunikation 
brach ständig zusammen, insbesondere unter Last, weil die Lastströme in 
die Kommunikationsleitungen eingekoppelt hatten. isoSPI wie beim LTC6804 
ist da viel robuster. Optokoppler alleine helfen da auch nicht.

Übrigens fehlt hier noch die Temperaturmessung pro Zelle!

von Benjamin K. (bentschie)


Lesenswert?

Michael B. schrieb:
> Die Kondensatoren trennen den Gleichspannungsunterschied  aber kurze
> serielle Übertragungsimpulse werden durchgereicht dank
> Wechselspannungskopplung.

Ja, kann man auch so oder so ähnlich machen.
Ein Hinweis am Rande, weil darüber habe ich auch schon andere stolpern 
sehen.
Unbedingt darauf achten, das die Stromaufnahme aus den Zellen bei allen 
Teilschaltungen identisch ist. Insbesondere die unterste Schaltung ist 
da kritisch. Über die Zeit summiert sich das und die unterste Zelle wird 
stärker entladen.

Das könnte letztlich dann auch das BMS ausgleichen, dann ist das aber 
dauernd am Arbeiten oder die Zellspannungen laufen doch auseinander, da 
nur an der oberen/unteren Spannungslage angeglichen wird.

von Eduard I. (eiten)


Lesenswert?

Obelix X. schrieb:
> Willst du die LEDs der Optokoppler wirklich in Reihe schalten?
Ich weiss nicht, ob das so eine grosse Rolle spielt. Da ich sowieso 
Hostseitig einen Transistor zur Invertierung brauche dachte ich, ich 
nehme die Gesammtspannung und schalte die LEDs in Serie.

> Eduard I. schrieb:
>> (z.B.
>> interne Referenz gegen Versorgungsspannung als Referenz messen)
> Die Vcc schwankt aber in deinem Entwurf.
Ja, da habe ich mich wohl nicht gut ausgedrückt. z.B. gewisse AVTRs 
bieten die Möglichkeit, die Versorgungspannung als Referenz zu setzen 
und dann die interne Referenz zu messen. Daraus kann man dann die 
Eingangsspannung berechnen. Verwirrend ist dann vielleicht, dass ein 
höherer Rohwert eine niedrigere Versorgungsspannung bedeutet.

von Eduard I. (eiten)


Lesenswert?

Michael B. schrieb:

> Nimm einen uC pro Zelle versorgt aus der Zelle (z.B. Attiny85) der
> verbunden ist mit dem Controller der Zelle über ihn un dem Controller
> der Zelle unter ihm über Kondensatoren. Denn Optokoppler ziehen viel
> Strom.
Generell? Oder nur wenn sie angesteuert sind? Ich habe mir da ehrlich 
gesagt nie gross Gedanken gemacht, die waren immer in Systemen, in denen 
Leistung keine grosse Rolle gespielt hat.

>
> Die Kondensatoren trennen den Gleichspannungsunterschied  aber kurze
> serielle Übertragungsimpulse werden durchgereicht dank
> Wechselspannungskopplung.
>
1
>   |      +-------+  |
2
>   +---+--|VCC PB0|--+
3
>   |  _|_ |       |
4
>  Bat /_\'|    PB1|--+
5
>   |   |  |       |  |
6
>   +---+--|GND    | 220R
7
>   |      +-------+  |
8
>   |                1uF
9
>   |      +-------+  |
10
>   +---+--|VCC PB0|--+
11
>   |  _|_ |       |
12
>  Bat /_\'|    PB1|--+
13
>   |   |  |       |  |
14
>   +---+--|GND    | 220R
15
>   |      +-------+  |
16
>   |                1uF
17
>   |      +-------+  |
18
>   +---+--|VCC PB0|--+
19
>   |  _|_ |       |
20
>  Bat /_\'|    PB1|-----
21
>   |   |  |       |
22
>   +---+--|GND    |
23
>   |      +-------+
24
>
> Der uC der untersten Zelle kommuniziert mit der Welt.
Das schaut sehr interessant aus. Die kommunikation muss da wohl selbst 
geschrieben werden, oder bietet der ATtiny85 da was in seiner 
Peripherie?
Kommunikation zu den Zellnodes (z.B. mach mal 50% auf den 
Balancing-Widerstand) sind auch möglich, wenn der oberste PB0 mit der 
Gesamtspannung angesteuert wird. Sehe ich das richtig?

Danke, Edi

von Eduard I. (eiten)


Lesenswert?

Frank K. schrieb:
> Eduard I. schrieb:

> Es sei denn, der Weg ist das Ziel. Dann zählen Sachgründe natürlich
> nicht.
Ja, der Weg ist das Ziel, es geht eher um Hobby und etwas zu lernen. 
Diese Spezialchips sind schwer zu beschaffen und brauchen viel 
Einarbeitungszeit.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Eduard I. schrieb:
> und brauchen viel Einarbeitungszeit.

Die Mikrocontroller selbst entsprechend zu programmieren dass es 
zuverlässig (!) funktioniert dauert länger.

von Michael B. (laberkopp)


Lesenswert?

Benjamin K. schrieb:
> Das könnte letztlich dann auch das BMS ausgleichen,

Normalerweise übernimmt der uC an der Zelle durch gesteuerte Entladung 
das Balancing gleich mit.

Er IST das BMS.

von Peter D. (peda)


Lesenswert?

Eduard I. schrieb:
> Die kommunikation muss da wohl selbst
> geschrieben werden, oder bietet der ATtiny85 da was in seiner
> Peripherie?

Ich hatte mir mal was dafür entwickelt:

Beitrag "mehrere MC seriell über Datenbus verbinden (1Draht)"

von Michael B. (laberkopp)


Lesenswert?

Eduard I. schrieb:
> Die kommunikation muss da wohl selbst geschrieben werden, oder bietet
> der ATtiny85 da was in seiner Peripherie?

SPI oder UART, wobei das dann nicht mehr bidirektional über 1 Leitung 
erfolgen würde, also besser selbst programmiert. Der uC hat ja eh nichts 
zu tun und hängt in sleep.

> Kommunikation zu den Zellnodes (z.B. mach mal 50% auf den
> Balancing-Widerstand) sind auch möglich

Sicher.

> wenn der oberste PB0 mit der
> Gesamtspannung angesteuert wird.

?!?

von Eduard I. (eiten)


Lesenswert?

Niklas G. schrieb:
> Übrigens fehlt hier noch die Temperaturmessung pro Zelle!
Danke für den Hinweis!

von Peter D. (peda)


Lesenswert?

Niklas G. schrieb:
> Übrigens fehlt hier noch die Temperaturmessung pro Zelle!

Man könnte den ATtiny25 thermisch in Kontakt mit seiner Zelle bringen 
und ihn dann die Chiptemperatur messen lassen.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Peter D. schrieb:
> Man könnte den ATtiny25 thermisch in Kontakt mit seiner Zelle bringen

Jau, erfahrungsgemäß funktioniert das bei einem gewissen kommerziellen 
professionellem BMS überhaupt nicht. Die mechanische Konstruktion wird 
dann ein großes Problem, insbesondere wenn der ganze Akku kompakt sein 
soll und kein Platz zwischen den Zellen ist. Ein separater Sensor lässt 
sich viel besser an den Zellen unterbringen, und manche Zellen haben 
sowieso einen Sensor innen integriert, so eine gute thermische Kopplung 
kriegt man sonst nicht hin.

von Bauform B. (bauformb)


Lesenswert?

Eduard I. schrieb:
>> ...Kondensatoren. Denn Optokoppler ziehen viel Strom.
> Generell? Oder nur wenn sie angesteuert sind?

Nur wenn sie angesteuert sind. Die meiste Zeit sieht die LED Null Volt, 
also fließt kein Strom, also fließt auch durch den Fototransistor kein 
Strom (max. 100nA). Ja, auch bei einem guten Optokoppler können es bei 
125°C 30µA werden und bei Billigschrott auch 100µA bei 75°C. Dann wären 
die ISO7021 mit 18µA wieder klar im Vorteil.

von Paul B. (paule201)


Lesenswert?

Frank K. schrieb:
> Dafür gibts passende Bausteine wie den hier
> https://www.analog.com/en/products/ltc6811-1.html

Ich Schaltplan sieht es nach 4S aus, dann ist der Baustein für diesen 
Anwendungsfall unpassend und funktioniert nur mit einer zusätzlichen, 
externen Spannungsversorgung....
Abgesehen davon ist er eher für verteilte Systeme gedacht, wie Grid 
Speicher oder BEV Batterien. Etwas drüber für eine 4S LiFePo BMS.

Niklas G. schrieb:
> noch den LTC6804

Der genauso ungeeignet für ein 4S BMS mit LiFePo Zellen ist. 11V 
Mindestspannung sind zum Betrieb nötig. Auch hier ist der Anwendungsfall 
wieder eher Grid oder BEV Bereich. Warum sollte man so einen teuren Chip 
einsetzen, wenn er nicht benötigt wird?

Nimm lieber sowas: BQ76920PW. Damit erstelle ich auch gerade ein kleines 
3-5S BMS. Der kümmert sich auch gleich noch um die Ansteuerung der 
MOSFETs und wenn du noch einen BQ76200PW mit verbaust, dann kannst du 
sogar ganz easy das Pack Highside schalten. Hat diverse Vorteile.
Abgesehen davon ist er sehr sparsam, lässt sich in einen ultra low power 
Mudlus versetzen und macht gleich noch das Coulomb Counting für dich, 
was bei LiFePo unerlässlich ist um einen vernünftigen SOC ausgeben zu 
können und es gibt EVAL Boards und Co an denen man sich gut orientieren 
kann.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Paul B. schrieb:
> Der genauso ungeeignet für ein 4S BMS mit LiFePo Zellen ist.

Sind es denn wirklich nur 4 Zellen insgesamt? Dann macht ein verteiltes 
System wirklich gar keinen Sinn, egal ob Mikrocontroller oder nicht.

LiFePo geht mit dem LTC6804 durchaus, aber sinnvoll nur mit mehr Zellen

von Frank K. (fchk)


Lesenswert?

Na ja, aus der Serie gibts auch noch kleinere wie den LTC6810 für *bis 
zu* 6 Zellen. Der Fragesteller hat auch außer im Schaltplan nicht 
explizit erwähnt, wie viele Zellen er zu verwenden gedenkt. Und der 
Schaltplan könnte auch vereinfacht sein.

4 Zellen sind jetzt auch nicht so viel. Da kann man auch einfach mit 
Spannungsteilern arbeiten, ohne zu viele Bits zu verlieren, wenn man 
wollte.

fchk

von Eduard I. (eiten)


Lesenswert?

Paul B. schrieb:
> Nimm lieber sowas: BQ76920PW. Damit erstelle ich auch gerade ein kleines
> 3-5S BMS. Der kümmert sich auch gleich noch um die Ansteuerung der
> MOSFETs und wenn du noch einen BQ76200PW mit verbaust, dann kannst du
> sogar ganz easy das Pack Highside schalten. Hat diverse Vorteile.
> Abgesehen davon ist er sehr sparsam, lässt sich in einen ultra low power
> Mudlus versetzen und macht gleich noch das Coulomb Counting für dich,
> was bei LiFePo unerlässlich ist um einen vernünftigen SOC ausgeben zu
> können und es gibt EVAL Boards und Co an denen man sich gut orientieren
> kann.

Der kling sehr interessant, Danke! Dem kann ich evtl. sogar NaIon 
beibringen. Was sind denn die Vorteile vom High Side Schalten?

von Eduard I. (eiten)


Lesenswert?

Frank K. schrieb:
> Na ja, aus der Serie gibts auch noch kleinere wie den LTC6810 für *bis
> zu* 6 Zellen. Der Fragesteller hat auch außer im Schaltplan nicht
> explizit erwähnt, wie viele Zellen er zu verwenden gedenkt. Und der
> Schaltplan könnte auch vereinfacht sein.
Naja, es geht eher ums Spielen und Erfahrungen sammeln. Sind ca. 15 
Zellen vorhanden, aber 4 sind eigentlich nicht schlecht, um dann 
vielleicht auch was praktikables draus zu machen wie ne Hausbatterie für 
den Wohnwagen/fürs Boot.

von Markus H. (dasrotemopped)


Lesenswert?

open Source Projekt für BMS:
https://github.com/tinfever/FU-Dyson-BMS

Schaltplan und Firmware vorgekaut zum Lernen.

defekte Akkus als Experimentiermaterial incl. BMS Platine gibts sehr 
günstig bei der Bucht. Meist sind die Zellen nur aus der Balance, einmal 
einzeln nachladen und man hat was feines zum Basteln.

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.