Projektvorstellung: Battery safety controller

ok, danke

dann weiß ich jetzt was der Fehler ist, und hoffe das ich den Prozessor noch nicht geschrottet habe

@rapo

Das ESP ist in dieser Hinsicht nicht sehr tolerant. Der geringe Strom, den dein RS232 Wandler treiben kann, sollte ihn aber nicht gleich töten.

Den ESP auf der Leiterplatte zu tauschen ist kein leichtes Unterfangen, da auf der Unterseite ein Thermalpad ist.

Ich habe heute eine neue Version (v0.3.0) fertiggestellt.
Die größte und wichtigste Änderung ist die Stabilität. Wenn mehr als ein NEEY verbunden war, oder wenn es häufige Wifi-Reconnects gab, gab es immer Probleme die meist in einem Reboot geendet haben. Dies sollte jetzt nicht mehr auftreten. Auch nach längerer Laufzeit mit tausenden von Wifi-Reconnects (die arme Fritzbox) läuft es bisher ohne Probleme.

1 „Gefällt mir“

@shiningman

müssen bei der 12V Variante beide DC/DC Wandler bestückt werden U1+U19 oder reicht nur der U19?

Ich grad gesehen das der U19 nicht bestückt werden kann, da der DC/DC Wandler auch 180 Grad gedreht werden muss.

@steve1625

Warum kann U19 nicht bestückt werden?

Bei der 12V Variante musst du U1 und U19 bestücken.

U1 macht die 3V3 aus der Versorgungsspannung.

U19 macht die 5V aus der Versorgungsspannung. U19 kann nur bei einer Versorgungsspannung von 5V unbestückt bleiben. Dafür muss dann der Lötjumper JP28 geschlossen werden.

weil der DC/DC am Kondensator ansteht, ich hoffe man kann es erkennen.

Ich habe die Pins vom DC/DC verlängert so geht es einigermaßen.

@steve1625

Wenn du die DC/DC-Wandler leicht schräg einbaust, geht das ohne große Probleme und du musst nichts verlängern.

Hallo,

ich verfolge das Thema auch schon etwas länger. In Github habe ich gelesen, dass das Bluetooth Protokoll für die Einbindung des JK-BMS über Bluetooth fehlt. Es wird hier im Forum von Scotty89 parallel am auslesen des JK-BMS gearbeitet, siehe https://www.akkudoktor.net/forum/open-source-software-projekte/jkbms-auslesen-ueber-ble-bluetooth-oder-rs485-adapter-mittels-eps-iobroker/ . Da ich ich im programmieren eine Pfeife bin, frage ich mich ob es nicht ein leichtes wäre den Code auf dieses Projekt zu adaptieren, da beide mit ESP32 arbeiten und somit die ganzen zusätzlichen Adapter, Isolationsprobleme und Kopfschmerzen zu umgehen.

Liebe Grüße

Ich bleibe auch die ganze Zeit beim Sync hängen :frowning:

@crazyd

Welches Kabel nutzt du zum Flashen?

Hast du den Boot Jumper vor dem einschalten gesteckt?

Evtl. auch ein Screenshot vom Flash-Tool um zu sehen ob alle Settings richtig sind.

Wie ist das Board denn mit Spannung versorgt?

Bei mir hat die USB-Spannung nicht ausgereicht.

Ich habe dann ein Netzgerät angeschlossen und dann hat es funktioniert.

@calle91

Machbar ist theoretisch alles. Die Frage ist der Nutzen-Zeitaufwand. Wie groß ist das Interesse an der Bluetooth Implementierung?

Serial via RS485 funktioniert es ja.

Hi,

bei mir klappt es auch nicht.

Habe einen Moxa Uport1150 und einen rs232 > TTL Wandler.

in der Console steht :

test offset : 4096 0x1000
case ok
test offset : 32768 0x8000
case ok
test offset : 57344 0xe000
case ok
test offset : 65536 0x10000
case ok
.
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Exception in thread Thread-1:
Traceback (most recent call last):
File "threading.py", line 932, in _bootstrap_inner
File "download_process.py", line 678, in run
File "espDownloader.py", line 601, in flash_download_test
File "espDownloader.py", line 803, in flash_download_func
err_define.FlashStatusRegError: ESP32 flash status reg error bat_read_status.

@shinigman

interessant auf jeden Fall mindestens für mich ?

Gründe dafür:

  • keine zusätzlichen Adapter notwendig

  • kein Verkabelungsaufwand

  • keine zusätzlichen Kosten

  • zusätzliche Parameter auslesbar

  • evtl. irgendwann Steuerung möglich?

  • mehr als 3 Adapter möglich

Grüße

Ich fänd die Bluetooth-Implementierung für das JKBMS auch super. Die Infos zum Protokoll, falls das was hilft, von: esphome-jk-bms/jk_bms_ble.cpp at main · syssi/esphome-jk-bms · GitHub

  // Byte Len  Payload                Content              Coeff.      Unit        Example value
// 0     2   0x55 0xAA 0xEB 0x90    Header
// 4     1   0x02                   Record type
// 5     1   0x8C                   Frame counter
// 6     2   0xFF 0x0C              Voltage cell 01       0.001        V
// 8     2   0x01 0x0D              Voltage cell 02       0.001        V
// 10    2   0x01 0x0D              Voltage cell 03       0.001        V
// ...
// 54    4   0xFF 0xFF 0x00 0x00    Enabled cells bitmask
//           0x0F 0x00 0x00 0x00    4 cells enabled
//           0xFF 0x00 0x00 0x00    8 cells enabled
//           0xFF 0x0F 0x00 0x00    12 cells enabled
//           0xFF 0x1F 0x00 0x00    13 cells enabled
//           0xFF 0xFF 0x00 0x00    16 cells enabled
//           0xFF 0xFF 0xFF 0x00    24 cells enabled
//           0xFF 0xFF 0xFF 0xFF    32 cells enabled
// 58    2   0x00 0x0D              Average Cell Voltage  0.001        V
// 60    2   0x00 0x00              Delta Cell Voltage    0.001        V
// 62    1   0x00                   Max voltage cell      1
// 63    1   0x00                   Min voltage cell      1
// 64    2   0x9D 0x01              Resistance Cell 01    0.001        Ohm
// 66    2   0x96 0x01              Resistance Cell 02    0.001        Ohm
// 68    2   0x8C 0x01              Resistance Cell 03    0.001        Ohm
// ...
// 110   2   0x00 0x00              Resistance Cell 24    0.001        Ohm
// 112   2   0x00 0x00              Unknown112
// 114   4   0x00 0x00 0x00 0x00    Warning wire resistance too high?
// 118   4   0x03 0xD0 0x00 0x00    Battery voltage       0.001        V
// 122   4   0x00 0x00 0x00 0x00    Battery power         0.001        W
// 126   4   0x00 0x00 0x00 0x00    Charge current        0.001        A
// 130   2   0xBE 0x00              Temperature Sensor 1  0.1          °C
// 132   2   0xBF 0x00              Temperature Sensor 2  0.1          °C
// 134   2   0xD2 0x00              MOS Temperature       0.1          °C
// 136   2   0x00 0x00              System alarms
//           0x00 0x01                Charge overtemperature               0000 0000 0000 0001
//           0x00 0x02                Charge undertemperature              0000 0000 0000 0010
//           0x00 0x04                                                     0000 0000 0000 0100
//           0x00 0x08                Cell Undervoltage                    0000 0000 0000 1000
//           0x00 0x10                                                     0000 0000 0001 0000
//           0x00 0x20                                                     0000 0000 0010 0000
//           0x00 0x40                                                     0000 0000 0100 0000
//           0x00 0x80                                                     0000 0000 1000 0000
//           0x01 0x00                                                     0000 0001 0000 0000
//           0x02 0x00                                                     0000 0010 0000 0000
//           0x04 0x00                Cell count is not equal to settings  0000 0100 0000 0000
//           0x08 0x00                Current sensor anomaly               0000 1000 0000 0000
//           0x10 0x00                Cell Over Voltage                    0001 0000 0000 0000
//           0x20 0x00                                                     0010 0000 0000 0000
//           0x40 0x00                                                     0100 0000 0000 0000
//           0x80 0x00                                                     1000 0000 0000 0000
//
//           0x14 0x00                Cell Over Voltage +                  0001 0100 0000 0000
//                                    Cell count is not equal to settings
//           0x04 0x08                Cell Undervoltage +                  0000 0100 0000 1000
//                                    Cell count is not equal to settings
// 138   2   0x00 0x00              Balance current      0.001         A
// 140   1   0x00                   Balancing action                   0x00: Off
//                                                                     0x01: Charging balancer
//                                                                     0x02: Discharging balancer
// 141   1   0x54                   State of charge in   1.0           %
// 142   4   0x8E 0x0B 0x01 0x00    Capacity_Remain      0.001         Ah
// 146   4   0x68 0x3C 0x01 0x00    Nominal_Capacity     0.001         Ah
// 150   4   0x00 0x00 0x00 0x00    Cycle_Count          1.0
// 154   4   0x3D 0x04 0x00 0x00    Cycle_Capacity       0.001         Ah
// 158   2   0x64 0x00              Unknown158
// 160   2   0x79 0x04              Unknown160 (Cycle capacity?)
// 162   4   0xCA 0x03 0x10 0x00    Total runtime in seconds           s
// 166   1   0x01                   Charging switch enabled                      0x00: off, 0x01: on
// 167   1   0x01                   Discharging switch enabled                   0x00: off, 0x01: on
// 168   1   0xAA                   Unknown168
// 169   2   0x06 0x00              Unknown169
// 171   2   0x00 0x00              Unknown171
// 173   2   0x00 0x00              Unknown173
// 175   2   0x00 0x00              Unknown175
// 177   2   0x00 0x00              Unknown177
// 179   2   0x00 0x00              Unknown179
// 181   2   0x00 0x07              Unknown181
// 183   2   0x00 0x01              Unknown183
// 185   2   0x00 0x00              Unknown185
// 187   2   0x00 0xD5              Unknown187
// 189   2   0x02 0x00              Unknown189
// 190   1   0x00                   Unknown190
// 191   1   0x00                   Balancer status (working: 0x01, idle: 0x00)
// 192   1   0x00                   Unknown192
// 193   2   0x00 0xAE              Unknown193
// 195   2   0xD6 0x3B              Unknown195
// 197   10  0x40 0x00 0x00 0x00 0x00 0x58 0xAA 0xFD 0xFF 0x00
// 207   7   0x00 0x00 0x01 0x00 0x02 0x00 0x00
// 214   4   0xEC 0xE6 0x4F 0x00    Uptime 100ms
//
// 218   81  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
//           0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
//           0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
//           0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
//           0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
//           0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
//           0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
//           0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
//           0x00
// 299   1   0xCD                   CRC

Für alle die noch Probleme beim Flashen haben, habe ich Bilder vom Kabel und den Einstellungen des Download-Tools gemacht.

Wenn es Probleme gibt, würde ich als erstes die Spannungsversorgung und das Kabel anschauen.

@madplayer

Welchen rs232 > TTL Wandler hast du?

RX/TX richtig verbunden?

Wie ist die Versorgungsspannung?

Python ist installiert?

Ich hätte Interesse und würde mich auch gerne an den Tests beteiligen. Oder wie bekomme ich mehr als 3 JK-BMS in die Überwachung, mein derzeitiger Endausbau wären 7 BMS. Ich bin relativ naiv davon ausgegangen 3x seriell + 4x bluetoth (auch wenn mir eine Kabelverbindung lieber gewesen wäre)

Da ich kein eigenes JK-BMS habe, sehe ich die Implementierung ohne Unterstützung als schwierig an. Denn wenn ich etwas implementiere, muss es stabil laufen. Für mich ist z.B. ein sporadischer oder gewollter Neustart des ESP, weil das JK scheinbar keine Verbindung mehr aufbauen will, nicht akzeptabel. Dazu muss ich genau wissen, wie der Verbindungsaufbau etc. abläuft. Wenn mich jemand unterstützen kann, indem er mir ein paar Bluetooth HCI Logs beim Verbinden etc. der Android App mit dem BMS zur Verfügung stellt, dann kann ich das BMS schon implementieren. Ich werde es nicht einfach durch Kopieren und Einfügen von anderem Code implementieren.
Eine weitere Möglichkeit, mehr als 3 serielle BMS zu verbinden, ist die Kaskadierung des BSC. Der BSC hat einen Erweiterungsport. Hier war meine Idee, mehrere BSCs zu verbinden, um die Anzahl der seriellen Ports zu erhöhen. Ein BSC wäre praktisch der Master, die anderen wären dann Slaves und würden nur Daten an den Master liefern, der dann die Wifi Verbindung, MQTT und die Überwachungslogik abwickelt. Aber das ist alles noch nicht realisiert. Alles hängt vom Interesse ab. Ich würde auf jeden Fall einer Kabelverbindung immer den Vorzug vor BT geben.