Twizy Virtual BMS
- Silvester
- Senior Boarder
- Tankst Du noch oder lädst Du schon?
- Beiträge: 117
- Dank erhalten: 60
hier mal eine Zusammenfassung aus meiner Sicht, was das Virtual BMS leistet:
Im Original Twizy haben wir folgende Komponenten:
- Sevcon Gen4: Übernimmt die Motorsteuerung ist ist die Haupkomponente in der Kommunikation
- UCH: Wegfahrsperre, Blinker, D/N/R Schalter, etc (ich glaube auch Airbacksteuerung, bin mir nicht sicher), Baugleich mit alter Twingo UCH
- DashBoard: Anzeige für Geschwindigkeit/Akkustand...
- Charger - ELIPS: Kann mithilfe von CAN Messages dazu bewegt werden, mit geringerer Leistung zu laden
- BMS: Battery Management System: Stellt Daten, wie Akkustand(SOH), Zellenspannungen nebst Temperaturen, aktuell fließender Strom (beim Rekupieren/Laden ist der negativ) zur Verfügung
Möchten man den Akku wechseln, dann braucht man im allgemeinen auch ein neues BMS, zumindest dann, wenn die Zellenchemie sich ändert(daduch ändern sich die erlaubten Ladespannungen).
Auch eine andere Kapazität ist problematisch, weil das BMS den aktuellen Akkustand berechnet oder mittrackt. Es berechnet die entnommene / geladene aktuelle Leistung über einen Strom und Spannungssensor.
Neuer Akku bedeutet also neue Zellen und ein passendes BMS, das entsprechend konfiguriert werden muss. Ein passendes BMS ist auf dem Markt wahrscheinlich auch zu bekommen, aber dieses wird nicht mit dem Twizy komunizieren können, weil nicht für ihn gedacht.
Und hier hilft das Virtual-BMS: Es vermittelt zwischen neuen Akku und übersetzt die Daten in das Format, das der Twizy versteht, und gaukelt ihm ein Orignales BMS vor.
Daher besteht das Virtual BMS aus einem Arduino Uno, also einem Minicomputer, und einem CANBUS-Shield, das an den Twizy CANBUS angeschlossen wird.
Die Software ist OpenSoure und auf github für jeden einsehbar und anpassbar. Der Code ist gut dokumentiert und sollte für jemanden, der sich mit hardwarenaher Programmierung ein bisschen auskennt, verständlich sein, die Enwickler sind zwar beim Projekt nicht mehr aktiv, aber erreichbar.
Zu einem großen Teil sind die CAN Meldungen und ihre Bedeutung bekannt, es gibt zwar noch Lücken, aber es gibt einige erfolgreiche Akku-Umbauten, die mit den Virtuell BMS arbeiten.
Auf der anderen Seite war die Hoffnung, dass weitere Interessenten das Repository clonen/forken und entsprechend an andere käufliche BMS anpassen.
Das hat aber anscheinend bis jetzt niemand gemacht, alle Forks, die ich gefunden habe, haben keine Änderungen eingecheckt. Das liegt sicherlich auch daran, dass das edriver BMS entwickelt wurde und für viele eine präferierte Alternative ist.
Die Hauptarbeit für eine Anpassung an ein entsprechendes BMS ist bereits erledigt.
Folgende Schritte sind noch nötig:
- BMS finden, dass eine protokollierte Schnittstelle hat und die Daten zur Verfügung stellt, die der Twizy braucht, am Besten RS232, evtl. CAN
- Software um dieses Protokoll erweitern
- Daten in das Twizy Protokoll transformieren
- Sevcon Konfiguration anpassen
Noch nicht gelöst:
- Wie das Ganze rüttelfest bekommen
- Wie Umgang mit Lücken im "reverse-engineerten" Protokoll
Meine (eigentlich Snorres) Idee war, den Sachstand mal (aus meiner Sicht) zusammenzufassen. Bitte hier nur auf inhaltliche Fehler/Ergänzungen eingehen.
Diskussionen bitte im anderen Thread... Danke Euch.
Gruß Thomas
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- dexter
- Autor
- Moderator
- Beiträge: 6037
- Dank erhalten: 4222
Die Lücken im Protokoll waren übrigens bei allen bisherigen Anwendungen irrelevant, die Twizy waren in jeder Situation voll funktionsfähig.
Michael
Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)
dexters-web.de
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Delvecchio
- Pro Boarder
- Fabio java
- Beiträge: 577
- Dank erhalten: 904
Just a consideration which looks like a question, and it is.
I see more near the corner to follow a solution like KlausBMS (i.e. to use Arduino not only to run VirtualBMS but also for measuring battery voltage, current and temperature), with the adding of an external active balancer.
It's what is doing Richie .
Do you think this could be an affordable solution, or is absolutly preferable the usage of an additional BMS?
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- dexter
- Autor
- Moderator
- Beiträge: 6037
- Dank erhalten: 4222
Consider designing a better voltage probing though, as the standard Arduino A/D resolution is quite low for higher voltages.
Kamsta99 used a 16 bit A/D converter (ADS1115) in his second design, as shown here: github.com/dexterbg/Twizy-Virtual-BMS/issues/8
There also are specialized ICs for cell monitoring, but that means rebuilding about half the actual BMS.
Michael
Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)
dexters-web.de
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Snorre
- Moderator
- Beiträge: 5822
- Dank erhalten: 3830
Seit Richie das Projekt wieder hervorgeholt hat, habe ich etwas mehr darüber nachgedacht und bin für mich zur Überzeugung gekommen, dass es wohl so wie von Fabio beschrieben, funktionieren würde,
Folgende Überlegungen haben mich dahin gebracht:
Das Original BMS und auch das edriver BMS sind nahezu identisch aufgebaut und funktionieren so:
Das BMS hat Mess- bzw. Steuerleitungen mit den es die einzelnen Zellspannungen misst und falls erforderlich korrigiert, also balanciert.
Dann hat es noch Messeingänge für die Zelltemperaturen und den Stromsensor.
Und zu guter letzt noch die Eingänge für die Steckerüberwachung.
Leistungselekronik für die gewaltigen Fahrströme gibt es bei den beiden BMS keine.
Da ich von Elektronik und auch vom Arduino kaum Ahnung habe, dachte ich mir, dass es nicht allzu schwierig und aufwändig sein würde, eine entsprechende Hardware zu entwickeln und bauen, die den Arduino um diese Funktionalität und Anschlüsse erweitert.
Der Arduino würde diese Ein-/Ausgänge überwachen und steuern und dem Ladegerät bzw. dem SEVCON "beratend zur Seite stehen".
Softwareseitig vermutete ich, dass bereits alles Wesentliche vorhanden sei.
Dexters letztem Post entnehme ich aber, dass das wohl doch nicht ganz so trivial ist.
Aber wenn ich nicht völlig daneben liege, verfolgt Richie diesen Weg.
Mir leuchtet natürlich schon ein, dass ein bereits am Markt verfügbares BMS mit zum Arduino passender Schnittstelle diese Hardwareentwicklung überflüssig machen würde.
Jedoch habe ich bei einem solchem BMS diese Verständnisschwierigkeiten:
Wenn ich es richtig gesehen habe, fehlen bei diesen BMS die Temperatursensoren und es gibt auch keinen Stromsensor.
Außerdem würden über diese BMS dann der Lade- und der Fahrstrom des Akku fließen.
Wenn ich mich richtig erinnere fließen bei einem getunetem Twizy bis zu 450 A.
Ein entsprechend belastbares Fertig BMS schlägt da finanziell doch ganz schön ins Gewicht.
Sollte da die Entwicklung und der Bau einer Erweitungsplatine für den Arduino nicht sinnvoller und auch deutlich günstiger sein?
Arduino, CanShield und Erweiterunsplatine in ein schmuckes Gehäuse packen und fertig ist die Laube!
@dexter:
Mir ist schon klar, dass es in der Praxis nicht ganz so einfach ist und das ich mit hoher Wahrscheinlichkeit irgendwo einen gewaltigen Denkfehler habe.
Aber wo bzw. welchen?
Bitte erhelle mich mal wieder.
Twizy Cargo, EZ 07/2014, 110.000 km, Stand 09/2024
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Goldbacher
- Platinum Boarder
- Beiträge: 3877
- Dank erhalten: 1756
An Dexter hätte ich auch noch Fragen:
Wäre es möglich, dass das OVMS die CAN-Übersetzung vornimmt oder ist es zu langsam / schwach dafür?
Könnte man vom Arduino (oder OVMS) auch noch die CAN-Daten von einem Fremdladegerät simulieren (Virtual-Charger)? Weil es demnächst einige Akkus mit 20 kWh gibt, wird der Bedarf nach einem kleinen Drehstromladegerät größer.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Berthold
- Platinum Boarder
- Beiträge: 2008
- Dank erhalten: 1820
Damit auch für die Reichweitenberechnung.
Das Max Stom wird vermutlich vom Sevcon begrenzt.
Der wird selber den Strom und die Spannung messen.
Ohne Strommessung im Akku wird es nicht gehen.
Twizy Intens ; EZ 11/16 ; Parrot mit Pioneer-Sub ; H145/13 V135/13; Spacer 10mm; Zusatzlager, Lader Ventilation optimiert ; Mario Hack ; Kaufakku; Rückfahrkamera, Lüftungsschlitze freigeräumt , LED Frontlicht, ToM , LEGASTHENIKER aus NRW
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- dexter
- Autor
- Moderator
- Beiträge: 6037
- Dank erhalten: 4222
Beim KlausBMS habe ich zwei Stromsensoren dokumentiert, die wir verwendet hatten. Der LEM HAC 600-S bspw. liegt einzeln bereits bei rund 140€.
Der Stromsensor wird benötigt um den SOC und den SOH zu ermitteln. Durch Summierung der Ströme über die Zeit (Coulombzählung) ergibt sich die Ah-Zahl: fließen 5 A für 2 h, dann sind das 5 A x 2 h = 10 Ah. Wenn ich nun weiß, dass der Akku theoretisch 100 Ah hat, dann nehme ich an, dass ich damit 10% SOC verbraucht habe.
Wann der Akku leer oder voll ist sagt mir die Spannung. Zeichne ich die Ah auf, die von leer bis voll (oder umgekehrt) fließen, dann bekomme ich die reale Kapazität. Sind das im Beispiel dann 95 Ah (statt 100), dann kann ich daraus auf einen SOH von 95% schließen, und kann beim nächsten Zyklus den SOC darauf normieren.
Kann man auf die Strommessung verzichten? Selbstverständlich, wenn man auf einen zuverlässigen SOC verzichten kann. Mein Roller zeigt bspw. den Akkustand (LFP!) nur über die Spannung an, da muss man dann halt lernen, aus dem Spannungseinbruch bei Last auf den Ladezustand zu schließen. Das war vor 15 Jahren Standard bei E-Rollern. Kann man sich dran gewöhnen, die Frage ist eher ob man will.
"Smart" BMS stellen diese Daten bereit, sind daher etwas teurer, brauchen aber sonst nichts mehr. Einfache BMS messen keine Ströme und können entsprechend keinen SOC und SOH bereitstellen. Ein einfaches BMS macht im Wesentlichen nur Balancing und steuert Relais an, um bei Über/Unterspannung oder Übertemperatur den Strom zu unterbrechen.
Weil das KlausBMS mit einem solchen "stupid" BMS arbeiten sollte macht dort der Arduino die ganzen Messungen.
Selbstverständlich kann man das auch noch um Cell-Monitor und -Balancer erweitern, damit baut man dann sein komplettes eigenes BMS. Dafür gibt es fertige IC, bspw. von TI:
www.ti.com/power-management/battery-management/monitors-balancers/overview.html
Einfacher als ein fertiges Standard-BMS ist das eher nicht, günstiger in der Regel auch nicht.
Die VirtualBMS-Software kann theoretisch natürlich auch im OVMS laufen. Das OVMS ist ca. 30x schneller als ein Standard-Arduino, und kann völlig problemlos auch noch weitere Aufgaben übernehmen. Das 3MW-Relais kann man über einen der freien I/O-Ports ansteuern. Bedenken muss man, dass bei einem Reboot des OVMS dann auch die Batterie offline geht.
Michael
Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)
dexters-web.de
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- euver
- Platinum Boarder
- Beiträge: 3793
- Dank erhalten: 1133
dexter schrieb: Das BMS braucht regulär keine Leistungselektronik für die Fahrströme. Die Kostenunterschiede rühren primär daher, dass ein Stromsensor benötigt wird, der den gewünschten Messbereich mit der benötigten Genauigkeit abdeckt. Manche BMS bringen auch Leistungsrelais mit, die den Stromkreis bei Bedarf unterbrechen können, auch die müssen dann entsprechend ausgelegt sein. Im Twizy sind diese Relais bereits vorhanden, jeweils für den Fahrstromkreis und für den Ladestromkreis.
Beim KlausBMS habe ich zwei Stromsensoren dokumentiert, die wir verwendet hatten. Der LEM HAC 600-S bspw. liegt einzeln bereits bei rund 140€.
Der Stromsensor wird benötigt um den SOC und den SOH zu ermitteln. Durch Summierung der Ströme über die Zeit (Coulombzählung) ergibt sich die Ah-Zahl: fließen 5 A für 2 h, dann sind das 5 A x 2 h = 10 Ah. Wenn ich nun weiß, dass der Akku theoretisch 100 Ah hat, dann nehme ich an, dass ich damit 10% SOC verbraucht habe.
Wann der Akku leer oder voll ist sagt mir die Spannung. Zeichne ich die Ah auf, die von leer bis voll (oder umgekehrt) fließen, dann bekomme ich die reale Kapazität. Sind das im Beispiel dann 95 Ah (statt 100), dann kann ich daraus auf einen SOH von 95% schließen, und kann beim nächsten Zyklus den SOC darauf normieren.
Kann man auf die Strommessung verzichten? Selbstverständlich, wenn man auf einen zuverlässigen SOC verzichten kann. Mein Roller zeigt bspw. den Akkustand (LFP!) nur über die Spannung an, da muss man dann halt lernen, aus dem Spannungseinbruch bei Last auf den Ladezustand zu schließen. Das war vor 15 Jahren Standard bei E-Rollern. Kann man sich dran gewöhnen, die Frage ist eher ob man will.
"Smart" BMS stellen diese Daten bereit, sind daher etwas teurer, brauchen aber sonst nichts mehr. Einfache BMS messen keine Ströme und können entsprechend keinen SOC und SOH bereitstellen. Ein einfaches BMS macht im Wesentlichen nur Balancing und steuert Relais an, um bei Über/Unterspannung oder Übertemperatur den Strom zu unterbrechen.
Weil das KlausBMS mit einem solchen "stupid" BMS arbeiten sollte macht dort der Arduino die ganzen Messungen.
Selbstverständlich kann man das auch noch um Cell-Monitor und -Balancer erweitern, damit baut man dann sein komplettes eigenes BMS. Dafür gibt es fertige IC, bspw. von TI:
www.ti.com/power-management/battery-management/monitors-balancers/overview.html
Einfacher als ein fertiges Standard-BMS ist das eher nicht, günstiger in der Regel auch nicht.
Die VirtualBMS-Software kann theoretisch natürlich auch im OVMS laufen. Das OVMS ist ca. 30x schneller als ein Standard-Arduino, und kann völlig problemlos auch noch weitere Aufgaben übernehmen. Das 3MW-Relais kann man über einen der freien I/O-Ports ansteuern. Bedenken muss man, dass bei einem Reboot des OVMS dann auch die Batterie offline geht.
Das bestätigt nur das, was ich hier geschrieben habe ...........
www.twizy-forum.de/tourenberichte/90720-...hsrapport-von-big-battery?start=0#246254
3 Möglichkeit, nehmt eine davon
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- dexter
- Autor
- Moderator
- Beiträge: 6037
- Dank erhalten: 4222
Beachten müsst ihr dabei, dass Stromsensoren je nach Typ unterschiedliche Signale liefern, wie ich in der Teileliste geschrieben hatte:
The pack current can be measured using either a shunt (with an instrumentation amplifier or an ADC with preamp) or a hall sensor module like the LEM HAC 600-S or the Tamura L06P400S05. The LEM outputs -4…+4 V so needs to be mapped to the Arduino's 0…5 V (i.e. using an offset voltage divider), the Tamura outputs 0…5 V (2.5 V = 0 A) so can be used directly.
Was der Originalsensor liefert müsstet ihr also zuerst ausmessen.
Michael
Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)
dexters-web.de
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Snorre
- Moderator
- Beiträge: 5822
- Dank erhalten: 3830
Ich habe aber noch immer eine Denkblockade.
Die folgenden beiden Bilder stammen von dort .
So wie ich das bisher verstehe, stellt das was Blazej dort verbaut hat ein vollwertiges Pendant zum Original BMS bzw. zum edriver BMS dar.
Die einzigen Unterschiede, die ich feststellen kann, sind die fehlende Steckerüberwachung und dass er nur 2 Temperatursensoren verbaut hat.
Beides stellt für mich keinen gravierenden Mangel dar.
Auf mich als Laie wirkt das zum einen sehr professionell und zum anderen aber auch so als wäre es nicht extrem schwierig im Aufbau und auch nicht zu teuer.
Sollte es tatsächlich aufwändiger und teurer sein so was zu entwickeln und in Kleinserie nach zubauen, und statt dessen auf ein derartiges
Monstrum zurückgreifen?
Wo liegt mein Denkfehler?
Twizy Cargo, EZ 07/2014, 110.000 km, Stand 09/2024
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- dexter
- Autor
- Moderator
- Beiträge: 6037
- Dank erhalten: 4222
Blazej hat auch einen Standard-Balancer eingebaut das ist die hintere Platine im Bild, beschriftet mit "14S Balancer (untere Ebene)". Das ist anhand der Beschriftung rechts wohl ein BestTech HCX-D131A → www.bestechpower.com/balanceboard/JH-D131A.html
Die Schutzschaltungen, die daraus ein "Monstrum" machen, kann man bei BestTech auch bekommen, das ist dann das "D131" ohne A: www.bestechpower.com/64v20spcmbmspcbforlifepo4batterypack/PCB-D131.html -- das ist auch noch ohne Schnittstelle und SOC/SOH-Ermittlung, d.h. "stupid".
Wenn man nur einen Balancer verbaut verlässt man sich darauf, dass der Arduino einen Zellfehler sicher erkennt und dem Twizy den Befehl zur Abschaltung gibt. Das kann man durchaus so machen. Mit Schutzfunktion im BMS darf der Arduino auch defekt sein, die Abschaltung macht das BMS dann autonom, man hat also eine doppelte Absicherung.
Und mit einem Smart BMS in Kombination braucht man im Arduino-Part gar keine Zusatzsensoren, d.h. man braucht nur rund die Hälfte an Komponenten dort, außer man möchte auch da eine doppelte Absicherung haben. Und was nicht vorhanden ist, kann nicht kaputt gehen.
Dein halber Denkfehler ist: das ist absolut eine Bastel-Lösung.
Professionell wäre eine integrierte Platine mit den verbauten Arduino-Komponenten und sauberen Lötpunkten statt einer Lochrasterplatine mit handgezogenen Verbindungen und gesteckten Komponenten.
Jede Steckverbindung ist ein Point of Failure, mit Alterung schon eher eine Sollbruchstelle. Insbesondere die einfachen Platinenstecker der Arduino-Standardkomponenten sind nicht für den KfZ-Einsatz geeignet. Blazej hat versucht, das durch die Befestigung des gesamten Konstrukts mit nur locker gespannten Kabelbindern abzumildern, aber jedem KfZ-Mechatroniker dürfte das Tränen in die Augen treiben.
Auch eine integrierte Platine ist natürlich viel einfacher erstellbar, wenn man sich dabei rein auf den VirtualBMS-Part konzentrieren kann.
Michael
Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)
dexters-web.de
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- dexter
- Autor
- Moderator
- Beiträge: 6037
- Dank erhalten: 4222
dexter schrieb: Das BMS braucht regulär keine Leistungselektronik für die Fahrströme.
Wo ich so drüber nachdenke, das wird wohl falsch sein: die Schutzschaltungen werden vermutlich schon auch auf die Ströme ausgelegt sein müssen.
Michael
Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)
dexters-web.de
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Jack-Lee
- Gold Boarder
- Beiträge: 1343
- Dank erhalten: 1451
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Berthold
- Platinum Boarder
- Beiträge: 2008
- Dank erhalten: 1820
Die sollten doch passen. An gesteuert werden die Drei über den Yasaki Stecker (richtig geschrieben?) vom Ladegerät , vom Sevcon.
Das BMS muss keine Leistung schalten es muss nur ein paar CAN Kommandos absetzen. Wir müssen ein Serien BMS finden das frei Programmierbare CAN Meldungen absetzt. Oder die Meldungen per Virtual BMS emulieren. Leichter gesagt als getan.
Twizy Intens ; EZ 11/16 ; Parrot mit Pioneer-Sub ; H145/13 V135/13; Spacer 10mm; Zusatzlager, Lader Ventilation optimiert ; Mario Hack ; Kaufakku; Rückfahrkamera, Lüftungsschlitze freigeräumt , LED Frontlicht, ToM , LEGASTHENIKER aus NRW
Bitte Anmelden oder Registrieren um der Konversation beizutreten.