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
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
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
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
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!
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.
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.
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
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.
Eduard I. schrieb: > und brauchen viel Einarbeitungszeit. Die Mikrocontroller selbst entsprechend zu programmieren dass es zuverlässig (!) funktioniert dauert länger.
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.
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)"
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. ?!?
Niklas G. schrieb: > Übrigens fehlt hier noch die Temperaturmessung pro Zelle! Danke für den Hinweis!
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.
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.
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.
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.
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
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
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.