Das 1000ste DIY BMS

Hallo Leute,
seit einem Jahr betreibe ich ein JK Inverter-BMS mit 16x LF280K an einem Victron Multiplus und bin nicht so recht zufrieden. Preis-Leistung ist zwar OK, Leistung alleine aber nicht.

Für die langen Winterabende habe ich mir deshalb vorgenommen, ein eigenes BMS zu entwickeln. Konzept ähnlich Boostech.
Prio auf niedrige Teilekosten und einfache Hardware. Ganz nach dem Motto: was nicht dran ist, kann nicht kaputt gehen.
Mich stören die tausend Balancer-Leitungen, deshalb:
16 PCBs, die direkt auf die Zellen geschraubt werden:


Schaltplan:

Kommunikation mit dem Master-Modul ausschließlich per Infrarot, kein schnelles IRDA sonder langsames aber robusteres und reichweitenstärkeres Protokoll wie bei TV-Fernbedienungen. Das sollte gerade so reichen, um alle Module 1-2mal pro Sekunde abfragen zu können bzw. den Balancer an/abschalten zu können.

Zum Mastermodul habe ich noch nichts gezeichnet, nur Ideen:

  • ESP32 (C6)
  • isolierter CAN-Bus
  • SigmaDelta ADC zur Anbindung an einen Shunt
  • 1 Ausgang für einen Modellbauservo, der mit den Sicherungsautomaten auslösen kann
  • Mehrere universelle Schaltausgänge

Es wird keine MOSFETs zum Trennen der Batterie geben. Bei Überstrom habe ich den Sicherungsautomaten, bei anderen gravierenden Fehlern lasse ich das Servo oder einen käuflichen Stellantrieb (teuer) den Automaten öffnen.

Das Ganze wird also ziemlich minimalistisch.

Was das Ding besser machen soll als das JK-BMS:

  • temperaturahängige Lade/Entladestromlimits (meine Batterie steht draußen)
  • temperaturabhängige Ladeschlussspannung
  • Ladestromlimit abhängig von höchster Zelle
  • Ladeschlussspannung abhängig von höchster Zelle
  • Daten aller Zellen auf den CAN-Bus
  • ...

Bin auf Eure Kommentare gespannt.

Michael

Um Minimalistisch zu sein, braucht es nur eine Platine, und keine 16.

Ich würde weder ein minimalistisches konzept machen, noch Einzelplatinen.

gibts doch schon als open source von stuart pittaway
ist schon sehr ausgereift

setze ich selbst bei mir ein aber es ist nicht wirklich eine bms alternative weil die relais pro paralelakku fehlen wie beim boostech.
nur kostet das diy bms einen bruchteil vom boostech
fürs diy bms gibts auch schon module für direkte zellmontage von anderen usern
einfach mal den thread durchscrollen

Ja, über die Definition von Minimalistisch lässt sich sicher streiten. Minimalistisch bedeutet hier für mich:

  • kein Kabelsalat
  • geringe Komplexität
  • wenig Risiko, mehr als einen Hardware-Stand machen zu müssen
  • überschaubarer Entwicklungsaufwand
  • keine HW-Komponenten, die intensives und zeitaufwändiges Testing notwendig machen, wie aktives Balancing und MOSFET-Schalter, die auch hohe Ströme sicher abschalten können.

Für meine Anlage hat dieses Konzept aktuell keine für mich relevanten Einschränkungen. Für andere kann das Konzept zu wenig. Das verstehe ich.

Ich hab voll Lust auf das Projekt und möchte es auch selbst machen und programmieren. Es soll aber auch in überschaubarer Zeit fertig werden und wenige technische Risiken beinhalten.

Das Projekt von Stuart Pittaway unterscheidet sich dahingehend, dass er doch noch Kabel von Zelle zu Zelle braucht. Die habe ich nicht mehr. Aber danke für den Tipp. Eine Idee (LED für den Balancer) habe ich mir schon geklaut.

Vermutlich werde ich das Projekt auch Open Source machen, ich werde es aber ganz sicher nicht lange pflegen. Wenn es bei mir läuft ist es für mich abgeschlossen.
Gerade in Sachen freier Konfigurierbarkeit über WiFi kann man ja extrem viel Zeit in User-Interface und Visualisierung stecken. Das wird nicht mein Fokus sein und schränkt es dadurch natürlich auch massiv ein, wenn andere es benutzen möchten.

Vielleicht lasse ich den ESP32 auch sein und machs doch mit einem STM32. Mal schauen...

Das halte ich für einen schwerwiegenden Mangel. Gerade aktives Balancing ist einer der entscheidenden Fortschritte, die moderne BMS mit sich bringen. Einfach aus dem Grunde weil Selbstentladung von Zellen der wichtigste Grund für Balancerarbeit ist.

Schau dir mal die disbezüglichen Konzepte von @nimbus4 an. Kontinuierliches aktives Balancing.

Wenn du wirklich so minimalistisch deinen Akku schützen willst: nimm ein einfaches Smart/Bluetooth BMS aus der 40 Euro klasse. Benutze den Mosfet nicht, mach deine Regelkreise und Automatsicherungen wie du beschrieben hast.

Dann hast du eine getestete Hardware für Spannungsmessung gegen deine 16 kaum getestete Platinen. Die Beurteilung von Zuverlässigkeit und Ausfallsicherheit ist dazu sehr eindeutig.

Was @nimbus4 da leistet, ist beeindruckend und technisch sicher auf einem ganz anderen Level. Aber er ist da auch schon lange dran, steckt viel Aufwand rein.
Hat er eigentlich mal einen Schaltplan veröffentlicht?

Du hast meine Motivation noch nicht verstanden bzw. ich habe sie nicht erklärt.

  • Ich möchte sowas unbedingt selbst machen
  • Ich möchte aber nicht meine komplette Freizeit der nächsten Jahre dafür opfern
  • Ich möchte die Ladesteuerung viel besser machen als das JK-BMS
  • Ich möchte die Möglichkeit haben, eigene Algorithmen zu implementieren
  • Ich will was ausprobieren, was noch keiner gemacht hat (Infrarot)
  • Ich möchte die Komplexität niedrig halten.
    niedrige Komplexität ist für mich aber nicht gleichbedeutend mit wenigen PCBs.

Mein Anspruch ist nicht, es besser zu machen als andere. Ich sehe mich da auch nicht in Konkurrenz zu anderen, sehe das nicht als Wettbewerb. Ich kenne die Einschränkungen meines Konzepts, die stören mich aber nicht.
Wieviel Energie ich durch das passive Balancen wirklich verliere, kann ich ja dann auch mal mitloggen, interessiert mich echt.

Du wirst mich also nicht davon abbringen, es so zu machen.
Für Anregungen und Verbesserungsvorschläge bin ich aber immer offen und freue mich auf die Diskussion. Vielleicht findet sich ja auch jemand, der dieses Konzept mitgehen möchte, dass man da zu zweit dran arbeitet.

Ich verstehe deine Motivation und dein Interesse. Ich habe meinen ersten Transistor vor mehr als 65 Jahren in der Hand gehabt.

Ich habe aber, auch beruflich, gelernt, dass man nur selber macht, was man nicht kaufen kann. Am Anfang war im Amateurfunk fast alles selbstbau, heute fast nichts. Wäre deine Motivation “lernen” könnte ich es verstehen.

Ein BMS ist reine Schutzfunktionalitat eines Akkus. Dafür hat man das eingeführt, das ist seine Aufgabe. Als eine eigene, unabhangige schakrung und Instanz. Schon das Auslesen eines BMS, um eine Ladesteuerung zu Machen, zerstört das gesamte Konzept und vernichtet den vorgesehenen Sicherheitsasspekt der Zweikreisigkeit.

Auch da verweise ich auf @nimbus4, er hat vieles in zahlen druber geschrieben. Hängt vor allem davon ab, wie die Selbstentladung deiner Zellen ist. Problem ist such nicht der Wert der verlorenen Energie, sondern die Probleme bei unublichet betriebsart ( zu lange nicht vollgeladen).

Ich will dich nicht davon “abbringen”. Ich gebe Denkanstöße.

PS: was ich “kritisieren” würde ist, dass du nicht nur die Sicherheitsmängel der durch BMS daten gesteuerten Lade/Entladesteureung übernimmst, sondern auch weitere Sicherheitsaspekte veränderst oder abbaust.

Ich halte aus dieser Gesamtbetrachtung (fast) alle Einzelplatinenkonzepte für nicht mehr zeitgemäß. Dass ergibt sich z.B. auch daraus, wofür man sie anfangs entwickelt hat: für 4s 100 Ah Akkus.

Eine vernünftige Ladesteuerung ist eine Schutzfunktion. Das BMS muss dem Ladegerät (also bei mir Multiplus und zwei MPPTs) mitteilen, mit wieviel Strom die Batterie gerade geladen werden darf, ohne Schaden zu nehmen.
Das kann das JK-BMS nicht. Das kennt nur 2 Werte: Vollgas und gar nicht laden.

Die günstigen China-BMS taugen deshalb nur für Batterien, die im Haus stehen und immer >15°C haben.
Das JK-BMS reduziert z.B. die Ladestromanforderung auch nicht, wenn eine Zelle alleine hochläuft. Bin mir nicht sicher, ob es dann einfach den Lade-MOSFET öffnet (was übel für das 48V-Netz des Victron wäre) oder vorher den Victron über eine Warnung bittet, gar nicht mehr zu laden.
Beides ist aber für mich eine Schutzfunktion, die ein BMS können muss und die ich bisher über ein Zusatzscript im GX abgebildet habe.

Zu den MOSFETs:
@nimbus4 hat ja genug darüber geschrieben, auf was man bei der MOSFET-eFuse alles achten muss. Ich möchte nicht wissen, wieviele Stunden er da reingesteckt hat. Auch er bindet einen Stellantrieb mit an, weil er der eFuse nicht 100% traut.
Ich gehe davon aus, dass mein Victron-System so stabil funktioniert, dass ich den MOSFET-Trenner innerhalb der Lebensdauer maximal 5mal brauche. Dann kann ich ihn auch weglassen und den Automaten seinen Job tun lassen. Der schützt genau so gut vor Kurzschluss und zusammen mit dem Stellantrieb auch vor Überladung/Tiefentladung.

Ich bin ja beruflich auch Hardware-Entwickler und sehe das genauso wie Du.
Im Hobby-Bereich bin ich aber anders unterwegs. Hier geht es mir um den Spaß am Entwickeln und darum, Dinge so umzusetzen, wie ich das will. Bei einem käuflichen BMS gibst Du entweder sehr viel Geld aus oder musst mit dem leben, was ein anderer Entwickler sich ausgedacht hat.
Im Hobby-Bereich setze ich meinen Stundensatz mit 0€ an. Bei den Kosten für andere Hobbys rechne ich ja auch keine Stundenkosten von mir mit rein.
Als Herausforderung sehe ich es dann auch an, etwas mit möglichst wenigen Euros Bauteilkosten umzusetzen. Das treibt mich an. Beruflich würdest Du mit so einer Haltung gegen die Wand fahren, weil Du hier immer ein vernünftiges Verhältnis zwischen Entwicklungskosten und Herstellkosten erreichen musst.

Aber auch im professionellen Bereich (Ich arbeite auch mit HV-Batterien in der E-Mobilität bei Nutzfahrzeugen) muss man sich bei jedem Feature die Frage stellen: Brauche ich das wirklich, ist es die Entwicklungszeit und Zusatzkosten wert.

Die HV-Batterie des bisherigen Lieferanten unseres Systems hatte auch nur einen passiven Balancer, gerade in HV-Systemem reduziert das die Komplexität massiv. Der Balancer war aber so schwach ausgelegt, dass wir da dann doch erhebliche Einschränkungen in Kauf nehmen mussten.

Imho ist das genaue Gegenteil richtig. Eine feste Ladespannung entsorechend der gewünschten Ladespannung ist eine Schutzfunktion: der V Zeil der CC/CV Ladung.

Das auslesen dnt nur dazu , eine zeitweise höhere Spannung anzulegen, um einen Höheren Ladestrom zu bekommen, famit der akku schmeller voll ist… in den letzten 5% SOC. Die kürzere Zeit wiederum lässt weniger Zeit für das Balancieren - bei gleichzeitig kleinerem Spannungshub. Daher kommen die Typischen balancierprobleme, die alle gleich aussehen. Benutze mal das Suchwort “quirl”.

Das bms m niemandem etwas mitteilen. Tut es bei mir auch nicht. Und trotzdem wird der Akku wundersamerweise genau voll.

Und wenn du Temperatur meinst: das ist ein feld, das von keinem BMS richtig beackert wird, das stimmt. Das wäre die aufgabe eines Temperatursensors, der an dein lafeequipment angeschlossen ist. So wie das bei blei au gemacht wird. Dann bleibt die Zweikreisigkeit erhalten. Dazu musst du nicht jeder Zelle eine Platine geben.

Da werden wir verschiedener Meinung bleiben. Das ist eine Funktion, die das Ladeequipment können muss. Unabhängig vom BMS. Zweikreisigkeit. Getrennte Instanz.

Ich bin doch ganz bei dir. Nimm ein JK BMS. Setze ein 40 Euro BMS parallel, ohne die mosfets zu benutzen, als quelle für die Akku daten und Spannungen. Dann kannst du nach herzenslust Regeln und steuern, und hast immer noch eine getrennte instanz, das jk, zum schutz des Akkus.

Voll schon. Aber wenn eine Zelle alleine zuerst hochläuft und der Victron nichts davon weiß ist das ziemlich blöd. Bei mir ist das so, weil ich nur Grade A- gekauft habe.

CC/CV ist übrigens für LFP zwar üblich, im professionellen (E-Mobilität) wird das dort aber auch nicht gemacht. Da reduziert man den Ladestrom schon deutlich vorher als es sich automatisch mit CC/CV sich ergeben würde.
Ich habe in der Firma ein (confidential) Datenblatt einer EVE-Zelle gesehen, in dem für jeden SOC ein zulässiger Ladestrom in Abhängigkeit der Temperatur spezifiziert ist.

Professionelle BMS in der E-Mobilität machen das.
Deine Ansicht: Der Victron oder Deye müsste sich drum kümmern. Die können das aber auch nicht.
Für mich ist das ein BMS-Thema, aber für Batterien, die im Keller stehen, nicht wirklich relevant, wenn man genug Abstand von 0,5C hält.

Mit 40€ meinst Du das JK, das ich schon habe? War eher 100€.
Das war eh der Plan, mein eigenes BMS erstmal zusätzlich reinzusetzen und das JK drin zu lassen. Ob das dann rausfliegt, entscheidet sich später.

Das passiert nur bei schlecht eingestelltem Balancing, zu langer Zeit ohne Balancing, oder zu kurzer Balancerzeit gerade durch die gesteuerte vollknallerei. Ein Akku aus ordentlichen Zellen hält 4 Wochen oder 10 Zyklen ohne balancing aus.

Die sind noch deutlich weiter als die Selberbastler. Im grunde genommen sind die BMS Hersteller alle noch nicht in der LiFePo welt angekommen.

Die jetzige BMS struktur stammt aus der LiIon Pedelec Welt. So wie die Einzelplatinen - eahrscheinlich - aus den ersten Pkw/wohnmobil bastlern stammen.

Und durch die Einstellbarkeit “gehen die auch” für liion. Es fehlt die kortekte behandlung des SOC unter 20 % und lin lineare absekung des Ladestroms nach der Temperatur. Wobei man klar sagen muss: es ist nicht die Aufgabe des BMS, dafür zu sorgen. Das ist die aufgabe der Last/Ladestruktur. Das BMS müsste das aber richtig überprüfen und abschalten, wenns die Aussenwelt falsch macht.

Ja, für beides.

Nein, 40 Euro für ein 20 A BT BMS von JBD oder ähnlichem.

Ganz grundsätzlich verstehe ich deine Herangehensweise nicht.

Ja das JK-BMS ist nur rudimentär in den Parametern und stellt sicher dass die Zellen nicht überladen werden und Balancing gemacht wird.

Anstatt aber hinzugehen die Daten entweder
a) vom JK-BMS auszulesen und dann darüber deine Laderegler zu steuern.
b) über eine zweite Platine gerne Marke Eigenbau die Zellspannungen und Temperaturen auszulesen und darüber dann deine Laderegler zu steuern

Nimmst du die "nukleare" Option c) und implementierst ein komplettes BMS mit den schon genannten "Problemen"

Was spricht gegen z.B. GitHub - shining-man/bsc_fw: Firmware battery safety controller (BSC)

Das passiert bei meinem JK-BMS im Sommer jeden Tag. Ich weiß aber noch nicht, warum, denn auch nach mehreren Wochen ohne Balancing ist das Balancing am Ende doch relativ schnell abgeschlossen. Evtl. macht der Balancer des JK-BMS am Anfang des Balancings Mist. Aber da ich nicht an die Einzelzellspannungen rankommen und auch nicht sehen kann, welche Zelle gerade gebalanct wird, ist das Kristallkugellesen.
Ich habe die ganz Funktionalität, die mal in das DIY-BMS rein soll, im Moment in einem Script als virtuelles BMS auf dem GX laufen, welches verhindert, dass die erste Zelle durch die Decke geht, indem es den Ladestrom reduziert bzw. wenn das nicht reicht, die Gesamt-Ladespannung reduziert. Es sind Grade A- Zellen EVE, bei NKON gekauft.

Meine Meinung:
Das BMS kennt die Batterie am besten, hat alle Parameter und muss den angeschlossenen Ladegeräten und Verbrauchern mitteilen, was die Batterie im Moment kann und was nicht.
Das ist an jeder DC-Ladesäule bei E-Autos auch so. Das BMS des Autos sagt der Ladesäule, wie sie laden soll, das entscheidet die Ladesäule nicht anhand fest einprogrammierter Werte.
Nur dieses Vorgehen ermöglicht es, dass an einem Victron-System oder Deye-System verschiedene Akkus überhaupt funktionieren, ohne dass Victron für jeden neuen Akkutyp auf dem Markt einen Datensatz anlegen muss, in dem penibel hinterlegt wird, was der Akku in welchem Zustand kann. Und genau dafür sind die BMS-Datenprotokolle auch gemacht. Die billigen BMS nutzen das nur nicht.

Nein, 40 Euro für ein 20 A BT BMS von JBD oder ähnlichem.

Das verstehe ich jetzt gar nicht. Was kann so ein Ding besser als mein Minimal-BMS?

Habe ich im Moment umgesetzt. Ist ein Python-Script, welches auf dem Victron GX läuft.

Hatte ich auch überlegt, so zu machen. Macht das Gesamtsystem aber noch komplexer. Ich stehe eher auf Keep it Simple, wenige einfache Komponenten.

Weil ich Bock drauf habe und dem JK-BMS langfristig nicht über den Weg traue. Die Software ist teils so grottig, dass man nur hoffen kann, dass die Hardwareentwickler nicht auch so gepfuscht haben.

Auch wenn ich hier bisher nur Gegenwind bekomme: Danke für die Diskussion, regt zum Nachdenken und auch Zweifeln an.

Eine Platine , Millionen fach hergestellt und getestet.

Nein, muss es nicht. Muss es nämlich nur deswegen, weil der Akkubetrieb bis an die Grenzen des Akkus ausgequetscht ist.

Und wenn man denn das unbedingt will: daten (mit einem 16 fachspannungsmesser) am akkumitteln und an die Last weitergeben.

Das bms heißt “battery Management”, nicht “Deye Management”.

Es ist ausschließlich genau dafür gedacht. Ich habe eine andere Ansicht als du. Es bringt garnichts, wenn ich dir zustimme. So haben wir zwei verschiedene Ansichten, auch für zukünftige Leser.

Und sorry, dass es nur Gegenwind ist…. Ich gehe davon aus, dass du deinen Plan verfolgen wirst. Aus Interesse, aus Sport, aus Training. Ich würde sogar dabei helfen, wenn du willst.

Ob du dann am Ende damit glücklich bist.. wahrscheinlich schon. Ob du es dann noch empfehlen wirst… keine Ahnung. Genau deswegen macht man es , um das herauszufinden.

Die ich aber nur noch zur Spannungsmessung der Zellen nutze?
Der Mehrwert wäre dann doch arg überschaubar.

Da werden wir uns wohl nicht mehr einig :slight_smile:
Für mich und den Installateuer muss ein Akku eine Blackbox sein. Im Idealfall muss man dem Victron oder Deye dann nichtmal mehr sagen, ob es Blei, LFP, NMC oder NaIon ist. Der Akku (bzw. das BMS) teilt dem Rest des Systems seine Parameter mit und dann ist es Plug&Play.

Vielen Dank. Hast Du mal in den Schaltplan geschaut und evtl. noch einen Fehler gesehen? Ansonsten würde ich mal 20PCBs bestellen. Im Moment interessiert mich am meisten, ob das mit dem Infrarot funktioniert.

Der Mehrwert ist, dass du die völlige Unabhängigkeit des BMS erhältst. Wenn das zusatzbms falsch messen bund damit falsch steuern sollte, hakt das bms notfalls ein.

Selbstverständlich können wir beide verschiedener Meinung bleiben. Würden wir ein Atomkraftwerk steuern, wäre die Notwendigkeit zur Einigkeit deutlich dringender. :rofl:

Ne noch nicht. Morgen.