JK-BMS über RS485 auslesen

Hallo,

ich habe hier eine "Nulleinspeisungs"-PV-Anlage, die mit 2 Soyosource-WR und über einen Raspberry Pi (der u.a den Hausstromzähler ausliest) gesteuert und z.Zt. noch aus einer 36 V-Blei-Batterie einspeist.
Da die Performance der Bleiakkus eh schon unprickelnd ist, und über die Jahre noch nachgelassen hat, habe ich mir gerade eine LFP-Batterie (12x EVE 280 Ah) zugelegt.
Für die Überwachung habe ich mich (wegen der integrierten aktiven Balancing-Funktion) für ein JK-BMS entschieden.

Spannung und Strom wird z.Zt. am Raspberry mit analogen Sensoren überwacht, die aber (neben einem unschönen Wust an Käbelchen) nicht sehr genau sind.
Es wäre jetzt eine riesen Verbesserung, wenn ich es iwie hinbekäme, die Daten (insbes. Zellspannungen und Batterie-Strom) aus dem JK-BMS über die Schnittstelle auszulesen, und in die Steuerungssoftware (selbst geschrieben in Python) zu integrieren.
Leider ist der ganze Schnittstellen-Kram für mich immer noch ein Buch mit 7 Siegeln, und ich würde mich riesig freuen, wenn Ihr mir hier etwas weiterhelfen würdet.

Es geht los mit der Adaptierung:

Frage 1 wäre, wie ich an so einen Stecker für die RS485-Schnittstelle am JK-BMS ran komme:

Weiss jemand, wie sich dieser Stecker nennt? Wollte eh die Tage auf Aliexpress Kleinkram bestellen.
Ich habe zwar solche Stecker in meiner Kramkiste gefunden, aber es scheint die in unterschiedliche Grössen (nicht nur, was die PIN-Anzahl angeht) zu geben

Die Kernfrage ist aber, welchen Adapter ich brauche.
Ich hatte mir mal (als ich mich damals mit dem selben Problem beim Soyosource rumgeschlagen hatte) fälschlicherweise zwei von diesen Adaptern bestellt:

Drauf ist ein FTDI-Chip FT232RL, und er schimpft sich "USB zu TTL RS485 Serial Konverter Adapter"
Ob ich den wohl hier verwenden könnte?
Aber wofür sind bloss die 4 Jumper (5V, RX, TX, GND) auf dem Adapter-Board?????
Und rate ich da richtig, dass ich "RX" vom BMS auf "A" am Adapter anschliesse, und "TX" auf "B"?
Die Eingänge (BMS-seitig) am Adapter sind "A", "B" und "-"
Und was ist mit Masse ("GND", "-")? Mit BMS verbinden, oder reicht es, "A" und "B" anzuschliessen?
Woher bekommt der Adapter seine Stromversorgung (scheinbar 5V)? Über USB vom Raspi? Wo wäre dann der Sinn, den Adapter mit dem GND-Port des BMS zu verbinden??

Sorry, wenn das alles blöde Fragen sind, aber Schnittstellen sind mir immer noch fürchterlich suspekt, und ich mache mir immer Sorgen, da bei falschem Vorgehen iwas hochzujagen :frowning:

Vielen Dank für jede Hilfe!!!
Greetz Harry

Moin Harry,

da bist Du schon auf einem guten Weg. Schau Dir mal das Video von TiBro an, ab Minute 4.55 wird es für Dich interessant.

Da geht es zwar um den Anschluss an einen RP mit einem Victron Multiplus II, von der Sache aber egal.

1 „Gefällt mir“

Hier findest du Infos dazu :slightly_smiling_face:

1 „Gefällt mir“

Hallo U-F-O,

vielen Dank für diesen Link, und insbes. auch dafür, dass Du dieses Howto verfasst hast.
Das hilft mir schon mal eine ganze Ecke weiter :+1:

Jetzt muss ich nur noch iwie raus finden, was es mit dem o.g. Adapter auf sich hat, (wäre schön, wenn ich den hier verwenden könnte, da ich ihn nun mal schon da habe - gibt genug Elektro-Schrott) und insbes. welche Bedeutung die Jumper auf dem Board haben.

Du kannst den JK-BMS auch mit der Solaranzeige auslesen. Dazu benötigst du einen Raspberry, einen RS485 zu USB Adapter und das Image der Solaranzeige.

Hi @Funkboje,

dass ich das auslesen via Python (gibt mir einfach mehr Möglichkeiten, als irgendwelche vorgefertigten Systeme ... ausserdem habe ich ja hier seit Jahren ein fertiges System in Python, wo viel Arbeit drin steckt) hin bekomme, bin ich recht zuversichtlich.
Habe da auch schon ein Script auf Github gefunden.

Problem ist halt erstmal die Hardware so hinzubekommen, dass überhaupt eine Kommunikation JK-BMS - Raspberry möglich ist

Vielleicht hilft dir dieser POST weiter:
https://solaranzeige.de/phpBB3/viewtopic.php?t=5272&hilit=JK+BMS
oder dieser:
https://solaranzeige.de/phpBB3/viewtopic.php?p=39238&hilit=JK+BMS#p39238

Ich habe leider so ein BMS nicht.

Ich würde deinen Konverter nicht verwenden da er keine Galvanische Trennung hat.

Ich habe mal mit dem Durchgangsprüfer "in" und "out" durchgemessen:
Wenn ich den Jumper "GND" entferne, habe ich hier keinen Durchgang.
Quasi dasselbe beim VCC-Jumper (5V) - aber hier wird VCC vom BMS ja eh nicht angeschlossen.
Das bedeutet doch, dass GND und VCC damit getrennt sind, oder????????

Meine Vermutung (als eigentl. elektronischer Laie!!!!!) wäre, dass diese beiden Jumper "offen" sein müssten, und nur die beiden für "TX" und "RX" gesetzt sein dürfen?!

Eine RS485 Verbindung sind nur 2 Kabel A + B kein GND.

Wie gesagt: Ich bin Laie ... deshalb die viell. blöde Frage:
Wozu ist dann eine galvanische Trennung nötig, wenn eh nur RX und TX durchgeschaltet sind?

Ich nehme an, die Spannunsversorgung des Boards kommt dann in diesem Fall über den USB-Port??

Habe gerade von einem Forumsmitglied die Info bekommen, dass es mit o.g. Adapter funktioniert, wenn man eben nur "A" und "B" anschliesst (und die Masse vom BMS offen lässt)
Dann muss ich mir jetzt nur noch diesen "JST SH 4 Pin 1,25mm"-Stecker besorgen, und werde das dann mal probieren.

BTW:
Habe gerade mal geschaut:
Dieser Adapter kostet bei ALI nur 3,70 € incl. Versand:

wäre damit also auch eine preiswerte Alternative

Du brauchst GND, RX, TX, und der Adapter muss auf 3,3V laufen (vielleicht macht er das wenn du den 5V Jumper offen lässt). Ohne Ground geht bei mir am JK-BMS garnix. Wenn aus welchen Gründen auch immer irgenteinem Gerät (Raspberry zb.) die Masse geklaut oder unterbrochen wird kann bzw. wird es diese Masse über die Signalleitung vom Adapter ziehen wenn es zb. damit über das JK-BMS verbunden ist, und dann raucht es. Beim JK-BMS ist GND von der RS485 Schnittstelle mit dem Akku Minus Pol verbunden. Ich würde immer Grundsätzlich so bauen das jeder Betriebszustand sicher ist, auch für den Fall wenn du mal was umbaust und dann eben nicht mehr an den Adapter ohne Galvanische Trennung denkst. Wer sowas trotz ausdrücklichen Hinweisen hier im Forum noch ohne Galvanische Trennung aufbaut wegen einem Adapter der ein paar Euro kostet, dem ist so hart es klingt nicht mehr zu helfen.

Hier was zum lesen und anschauen:

1 „Gefällt mir“

In der Tat bin ich so gar nicht vom Fach, und verfüge leider nur über ein löchriges Halbwissen, das ich mir über die Jahre beim Basteln angeeignet habe.
Da das Ziel solcher Basteleien, aber meist genau war, von Verbrennung so weit wie möglich wegzukommen (18 Jahre Emobil ohne Werkstatt), bin ich für solche Warnhinweise wirklich dankbar!!!! :handshake:

Hier testet Off-Grid-Garage 5 solcher Adapter:

Seltsamerweise funktionieren bei ihm alle 5 ohne Masse-Verbindung zum BMS (also nur A und B am BMS angeschlossen).
Was ist bei ihm anders???
Er hat allerdings nicht das "normale", sondern das JK-Inverter-BMS.
Ist dabei irgendwas anders (ausser der Steckverbindung)?

Und woher kommen die 3,3 V?
Vom Raspi über USB müssten doch 5V anliegen?!
Werden die dann auf dem Board runter gewandelt?

1 „Gefällt mir“

Hauptsache ist du machst es richtig ;).
Wenn keine Masse gebraucht wird dann gäbe es das "Problem" nicht, das ist richtig.
Ja vermutlich liegt es dann daran das er das Inverter BMS hat. Wie gesagt ich habs extra nochmal getestet, und am normalen JK-BMS funktioniert es nicht ohne GND.
Ja der Saft kommt vom USB und wird dann vom Adapter bereitgestellt.

Hmmmm ... ich habe da etwas seltsames entdeckt:

Ich kenne es ja von meinen Soyosource, bei denen der RS485-USB-Adapter auch nur zwei Anschlüsse (A+B) hat ..... eben genau wie in dem Video von Off-Grid-Garage beim JK-Inverter-BMS.

Offenbar hat das normale JK-BMS keinen "normalen" (sorry für diesen unfachlichen Begriff!) RS485-Ausgang.
Denn offenbar dient lt. dem Foto der Original-JK-Adapter nur dazu, das Signal erstmal in ein "normales" RS485-Signal unzuwandeln, damit man es dann mit einem üblichen 2-poligen RS485->USB-Adapter (genau so einen habe ich für meine Soyosource) umwandeln kann,

Ich vermute mal, dass das JK-Inverter-BMS schon einen "echten/normalen" RS485-Ausgang hat (und das Zusatzmodul von o.g. Bild ggf. schon im BMS integriert ist), so dass nur noch der 2-polige RS485->USB-Adapter nötig ist.

Und ich nehme mal an, dass die im Thread How To - Verbindung JK BMS - Steckertypen - Adapter - Einschalten empfohlenen Adapter beide Wandelschritte in einem Gerät machen???

Und was spricht eigentlich dagegen, den Original-Adapter zu nehmen, und es wie in o.g. Bild zu machen?

Edit: Hier nochmal die Quelle für das obige Bild:

Mir gefällt diese Variante eigentl. ganz gut:
Beim Original-Adapter kann man sich wohl darauf verlassen, dass er für das BMS gut geeignet ist, und zum USB hat man dann nur die beiden Datenleitungen, so dass da imho eigentl. nicht viel schief laufen sollte?????

Ja das kann gut hinkommen wie du es beschreibst.
Nach meinem Verständnis müste das am JK-BMS eine TTL Schnittstelle sein.
Allerdings hatten damals als das JK-BMS auf den Markt gekommen ist einige Probleme mit dem Jikong RS485 Adapter, sprich die Ausfallrate war hoch und die Adapter haben nicht lange funktioniert. Darum auch die Empfehlung gleich einen isolierten Adapter aus den Links zu nehmen und direkt anzuschließen. Dann hat man eine Fehlerquelle weniger. Ich selbst habe den DSD Tech USB zu TTL schon seit über 2 Jahren am laufen und es gibt null Probleme. Ansonsten kannst du es ja ausprobieren mit dem Jikong Adapter.

Ja, ich hätte auch den DSD Tech-Adapter genommen (alleine schon, weil ich durch Dich weiss, dass er gut funktioniert :+1: - der andere ist mir zu klobig).
Blöderweise gibt es den nicht auf Aliexpress (und bei Amazon habe ich kein Konto).

Ich habe also gestern Abend noch lange auf Aliexpress rum gesucht, und schliesslich diesen bestellt (den Original-Jikong sicherheitshalber gleich auch noch mit):

Ich schätze, der dürfte dem DSD Tech entsprechen.
Jedenfalls ist er isoliert, und man kann auch 3,3 V und 5 V per Jumper umsetzen.
Dummerweise eie blankes Board ohne Gehäuse ... aber wozu gibt es 3D-Drucker :grinning:

Hier der Link ( der mittlere "with the isolation" - aber Achtung: Ich habe ihn noch nicht getestet!!!!):

Also der im letzten Post verlinkte USB-Adapter funktioniert prima (TX, RX und GND vom BMS angeschlossen - VCC bleibt offen!!!! - und den Jumper auf 3,3 V gesetzt). :+1:

Ich hänge hier mal eine Zip-Datei an, die die STL-Dateien für den 3D-Drucker für ein einfaches Gehäuse für diesen Adapter enthält, so wie ein Python-Script, um das BMS damit auf einfache Weise auszulesen.

Das Script hatte ich auf Github gefunden. Leider habe ich den Link nicht mehr :slightly_frowning_face:

Und falls jemand noch weniger Ahnung hat als ich:
Das Script startet man beim Raspi aus dem Terminal mit folgendem Kommando:
python3 printbms.py.
JK-BMS-Housing.zip (655,7 KB)