Hallo zusammen,
einige haben es schon gesehen: GitHub - Adminius/mitpylon: Man In The Middle Adapter For Pylontech Communction Protocol
Die Idee da hinter:
ein ESP32 Microcontroller mit 2x CAN Busen, an einen steckt man eine Batterie die Pylontechisch spricht, den andern CAN verbindet mit dem Wechselrichter.
Ziel: ESP32 gilt als "Man in the middle" und modifiziert bestimmte Parameter im Protokoll um die Batterie/den WR besser/einfacher zu steuern.
Beispielhafte Anwendungsfälle:
- Charge Voltage wird um 0.x Volt erhöht, um die Verluste in der Leitung bzw. ungenaue Messungen des WRs zu kompensieren.
- Charge Current wird verkleinern or gar auf 0A gesetzt, um z.B. über SmartHome die Ladung zu stoppen oder auf die Mittagszeit zu verlegen
- Allgemein die Werte aus BMS auslesen und im Smarthome nutzen
- 100% SoC an den WR erst angeben, wenn Float Voltage erreicht wird, bis dahin wird max. 99% gesendet. Manche WRs laden nicht mehr sobald 100% gemeldet werden, JK BMS lädt bei 100% aber noch fleißig weiter
- Dem WR "charge request" senden, um z.B. bei niedrigen Strompreisen Akku aus dem Netz laden
- Dem WR "charging disabled" senden, um z.B. bei niedrigen Strompreisen Akku nicht nutzen, und die Energie im Akku für teure Zeiten lassen.
- ...
Deswegen habe ich angefangen eine Platine zu entwerfen:
Die Platine ist eher als Grundträger für käufliche Module (z.B. bei Aliexpress) gedacht. Einige Sachen kann man direkt als SMD drauf löten.
Bis zu 4x RJ45 Ports 10 stücke RJ45 8P8C 18*13mm Modulare Netzwerk PCB Jack 8P LAN Adapter Stecker - AliExpress 13
2x sind für CAN SN65HVD230 KÖNNEN bus transceiver kommunikation-modul für arduino - AliExpress 502
und
2x sind für RS485 gedacht TTL drehen sich in RS485-Modul, Hardware, automatisches Flusskontrollmodul, serielles UART-Pegel, gegenseitige Konvertierung, Stromversorgungsmodul, 3,3 V, 5 V - AliExpress 502
Wobei die CAN Ports können per Lötbrücken um RS485 ergänzt werden (Um z.B. Deye BMS Port mit nur einem Kabel auslesen zu können).
Statt RJ45 können 2.54mm Schraubklemmen verwendet werden.
Es wird ESP32 C6 super mini verwendet, wobei auch ESP32 S3 super mini oder C3 super mini auch passen würden TENSTAR ROBOT ESP32-C3 ESP32-S3 ESP32-H2 ESP32-C6 Entwicklungsboard ESP32 C3 SuperMini WiFi Bluetooth ESP32C3 - AliExpress
ESP32 C6 hat 2x CAN Controller on Board, es müssen nur CAN-Transceiver genutzt werden (fertige Module oder SMD)
Es kann mit MCP2515 noch zwei CANs per SPI geschaffen werden (also bis zu 4x insgesamt), das geht nur mit SMD löten.
ESP32 S3 hat nur 1x CAN On Board, somit geht nur ein 1x wenn man Modul nutzt oder 3x wenn man SMD lötet
ESP32 C3 kann 1x CAN und 2x RS485 und als SMD Option noch 2x CAN via SPI
Die Platine ist 53x87mm groß, wird per USB-C mit Strom versorgt.
Als Gehäuse nehme ich https://aliexpress.com/item/1005005650188094.html es müssen ein paar Ausschnitte für die RJ45 und USB Ports gemacht.
Die Platine ist möglichst generisch gehalten. D.h. man kann diese auch für andere Projekte nutzen:
- nur Batterie per CAN oder RS485 auslesen
- Batterie per RS485 auslesen und als CAN an WR weitergeben (z.B. alten JK-BMS Inverter fähig machen)
- Wechselrichter über RS485 auslesen
- Stromzähler auslesen und dem WR andere Werte vorgaukeln (mein nächstes Projekt)
Was sagt Ihr? Alle mögliche Tipps, vor allem zur PCB-Routing sind willkommen.