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)
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.
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.
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!
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.
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.
(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.
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?
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.
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.
...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.
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.
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.
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.
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?
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.
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.