Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:tech:jkbmscan

JK-BMS-CAN

Motivation

Teil des Solar Systems ist das Batteriemanagementsystem (BMS). In meinem Fall verwende ich ein chinesisches Unternehmen JKBMS, das sich online einen Namen gemacht hat. Ein Nachteil war die fehlende Verbindung zwischen BMS und Wechselrichter. Ohne diese Verbindung kann der Wechselrichter beispielsweise den Batterieladestand nur schätzen. Das folgende Projekt schließt diese Lücke.

Planung

WECHSELRICHTER

Damit zwei Systeme miteinander kommunizieren können, müssen wir entweder ein kompatibles Protokoll finden oder eine Seite an die andere anpassen. Der Wechselrichter GROWATT SPF5000ES aus meinem Solar System unterstützt RS485- und CAN-Protokolle.

Unterstützte Protokolle

Anschluss

Leider verwendet der Batteriehersteller eigene, proprietäre Protokolle. Zumindest das Protokoll von PYLONTECH ist leicht im Internet zu finden (siehe Download-Bereich). Für GROWATT lautet die Protokolleinstellung CAN L52 (Protocol)

BMS

Die Dokumentation des BMS B2A245-20P beschreibt eine CAN-Schnittstelle, diese ist jedoch nur optional (kann angepasst werden). Eine RS485-Schnittstelle namens GPS ist hingegen Standard. Tatsächlich handelt es sich um eine serielle Schnittstelle mit integriertem 3,3V-Pegelwandler und MODBUS-Protokoll. JKBMS-Schnittstellen.

ACHTUNG: Der Versorgungspin VCC am RS485/GPS-Anschluss liegt auf VBAT. Das bedeutet, an diesem Anschluss liegt eine Spannung von 45-58V (=Batteriespannung) an.

Die Protokollbeschreibung findet sich im Download-Bereich.

Die Aufgabe unseres Konverters besteht darin, alle notwendigen Daten vom BMS per MODBUS anzufragen und diese über dedizierte CAN-Nachrichten an den Wechselrichter zu senden.

Lösung

Viele findige Bastler haben sich dieser Aufgabe bereits gestellt. Hier eine unvollständige Liste:

Da ich Home Assistant für meine Hausautomatisierung nutze, bevorzugte ich eine ESPHome-Lösung von Sleeper85. Da ich aber ein Freund kompakter Lösungen bin, habe ich meine eigene Platine und mein eigenes Gehäuse entworfen.

Hardware

Das Blockschaltbild des Konverters sieht nicht allzu kompliziert aus.

JKBMS to CAN converter
                 UART-TTL                RS232-TTL                 CAN BUS (5V).
┌──────────┐                ┌──────────┐             ┌────────────┐              ┌──────────┐
│          │<TX----------RX>│16      23│<TX-------TX>|            |              |          |
│  JK-BMS  │<RX----------TX>│17      22│<RX--4K7--RX>|  TJA1050   |<---CAN H --->| Inverter |
│          │<-----GND------>│   ESP32  │<----GND---->|    CAN     |<---CAN L --->|          |
│          │<VBAT-+    +-5V>│VIN    VIN│<----5V----->|            |              |          |
└──────────┘      |    |    └──────────┘             └────────────┘              └──────────┘
                ┌────────┐
                │ Power  │
                │ Supply │
                └────────┘      

Der Konverter sollte (wie auch das BMS) dauerhaft mit Strom versorgt werden, um Deadlocks zu vermeiden. Deshalb verwende ich VBAT als Stromquelle. Die Stromversorgung basiert auf einem XL7015 Buck-DC/DC-Wandler (0,8A 150KHz 80V) von XLSEMI. Die 5V-Ausgangsspannung wird über zwei Widerstände (R1/R2) festgelegt. Die CAN-Schnittstelle ist mit dem bekannten TJA1050 von NXP und einem Standard-RJ45-Stecker realisiert. Das Herzstück des Konverters ist ein 38-poliger ESP32-DEVKIT.

Schaltplan

Platine

Das fertige Modul in meinem 3D-gedruckten Gehäuse. Die zugehörige STL-Datei liegt ebenfalls im Download-Bereich.

Das fertige Modul

Software

Wie erwähnt basiert die Software auf ESPHome JK-BMS-CAN. Ich habe nur leichte Anpassungen an den CAN-Protokolldaten vorgenommen.

Hinweis: Die folgende YAML-Konfigurationsdatei enthält Code samt Kommentaren in englischer Sprache. Da sie unverändert in ESPHome verwendet werden soll, wurde sie bewusst nicht übersetzt.

jk-bms-can.yaml

Fazit

Dieser Konverter läuft seit August 2023 ohne Probleme. Die Live-Daten in Home Assistant:

BMS-Daten in Home Assistant

Downloads

Spenden

Wenn dir meine Artikel gefallen, kannst du gerne einen Cappuccino oder Ähnliches spenden…

de/tech/jkbmscan.txt · Zuletzt geändert: von 127.0.0.1