JIKONG Smart BMS B1A8S10P - универсальная "умная" BMS на замену старой "глупой"
- Цена: $26 на Ali ( ₽2500 - Озон, $18 - Pinduoduo)
- Перейти в магазин
Всем привет!
Договорился с жабой, которая меня душила и таки купил на замену старой BMS за несколько долларов — очень крутую, умную JK BMS (или как её называют в народе «Жека BMS»), с током до 100А, активной балансировкой — 1А (я думал, что для LiFePo4, активная балансировка — избыточна, как же сильно я ошибался, но подробнее в обзоре), Bluetooth и возможностью очень большой свободы в ручной настройке параметров работы. Так же её метрика очень информативная. В отличии от Li-ion с их кривой разряда, где уровень заряда аккумулятора можно определить по напряжению, в LiFePo4 напряжение стабильное (порядка 3.2v) и существенно меняется только в полностью заряженом и полностью разряженом состоянии. Определить уровень заряда и ёмкость таких аккумуляторов можно лишь рассчитав уровень полученной и отданной энергии, с чем данная BMS, разумеется справляется. BMS универсальная, позволят подключить последовательно от 4 до 8 элементов — LiFePo4, от 3 до 8 элементов Li-ion, или от 6 до 8 элементов LTO. Так же есть возможность интегрировать в Home Assistant (что я и сделал и расскажу об этом детально).
Приглашаю на обзор ↓
Предвкушая традиционные комментарии о логистике, сразу начну с того, то данную BMS, как и любой другой товар, можно купить за абсолютно разную цену, на абсолютно разных площадках. Каждый человек выбирает для себя ту, которая ему больше подходит по тем или иным параметрам. В карточке обзора я указал цену на следующих площадках: $26 на Ali, ₽2500 на Озон и $18 на Pinduoduo (+ оплата форвардеру). Думаю если поискать, то каждый найдёт для себя самый оптимальный вариант.
Комплектация и внешний вид:

Поставляется устройство в такой коробочке. На ней написана модель и основные характеристики.

В комплекте, помимо самой BMS, есть провода для подключения аккумуляторов (длина — 68см), двойной термодатчик, два винта для фиксации кабеля от батареи, а так же провод для кнопки активации платы (она опциональная, так как подачей заряда плата тоже активируется).

Самой кнопки в комплекте не было, но в целом не сказать, что это проблема. Стоят они очень дёшево, есть много вариантов, разных размеров, разных материалов, можно подобрать самый удобный вариант конкретно для своей сборки.

Вот новая BMS в сравнении со старой. Разница и в весе и в габаритах — внушительная.

На чертеже — точные замеры. Вес — 260 грамм.



На обратной стороне устройства — наклейка с названием модели и характеристиками BMS, а так же MAC-адрес BLE, который нам ещё пригодиться.
Из интерфейсов на плате: подключение термодатчика, подключение кнопки и/или дисплея (дисплей приобретается отдельно), подключение к батареям и порт RS485 для подключение по UART.
Плата закрывается массивными металлическими пластинами для отвода тепла и защиты самой платы от механических повреждений. На одном из винтов — стоит пломба, вскрытие которой аннулирует гарантию. Учитывая, что у меня заказ из Китая и гарантии всё равно нет, конечно я раскрутил корпус, чтобы посмотреть внутренний мир:


Технические характеристики:
- Количество батарейных линий (Li-ion): 3-8
- Количество батарейных линий (LiFePO4): 4-8
- Количество батарейных линий (LTO): 6-8
- Метод балансировки: Активная балансировка (управляемая)
- Ток балансировки: 1A
- Сопротивление проводимости в главной цепи: 0.3mΩ
- Непрерывный ток разряда: 100A
- Максимальный ток разряда (макс. 2 мин): 200A
- Ток защиты от перезаряда (ADJ): 10-100A
- Другие интерфейсы (настраиваемые): RS485
- Размер (мм): 153*126*18мм
- Точность сбора напряжения: ±5mV
- Напряжение защиты от перезаряда: Регулируемое 1.2-4.35V
- Напряжение снятия защиты от перезаряда: Регулируемое 1.2-4.35V
- Задержка обнаружения перезаряда: Регулируемая 2-120с
- Напряжение защиты от глубокого разряда: Регулируемое 1.2-4.35V
- Напряжение снятия защиты от глубокого разряда: Регулируемое 1.2-4.35V
- Количество датчиков температуры: 1 шт (двойной).
- Защита по температуре: Да
- Защита от короткого замыкания: Да
- Функция Bluetooth: Поддержка для Android и iOS
Схема элементов платы:

Схема подключения 4s:

На схеме показана логика подключения, если элементов менее, чем 8. В данном примере — 4s. но по такому же принципу подключается 3s, 5s, 6s и 7s. B- на минус, B+ на плюс, B1-B8 на плюсы последовательных элементов.
Управление с помощью смартфона:
После подключения платы и её активации, зуммер (звукоизлучатель) издаёт звуковой сигнал, а так же на плате загорается красный светодиод.
После этого можно установить официальное приложение и подключиться к BMS:

Открыв приложение и подключившись, запросит пароль. По-умолчанию он: 1234. Его было бы не плохо поменять, чтобы любой человек в радиусе действия не зашёл в управление и "не наделал делов", но на такой, чтобы точно не забыть. При редактировании параметров, запросит второй пароль, он — 123456. Его можно не менять.




В метриках мы видим, прежде всего, напряжение на батарее в целом, на каждой ячейке в отдельности, ёмкость батареи (после каждого цикла заряда-разряда обновляется на актуальную), остаток заряда, мощность в Ah и W получаемой/отдаваемой энергии, температуру на мосфетах и датчиках.
Перейдя в настройки, нужно выбрать тип батареи, количество ячеек, при необходимости откалибровать напряжение, ёмкость, как я писал ранее, указывать не обязательно, она сформируется после цикла. Так же очень много настроек по самой батарее, которые вы подбираете индивидуально, в зависимости от технических спецификаций ваших аккумуляторов. Можно указать максимальный ток заряда, разряда, максимальное напряжение, минимальное напряжение, ток начала балансировки, шаг дисбаланса между ячейками для начала балансировки (от 0.003v), допустимая температура разряда, заряда. В общем полная свобода настройки, в отличии от дешёвых (не смарт) BMS, где все эти параметры статичные и установлены в процессе изготовления. Так же можно устанавливать время, после которого BMS уйдёт в сон и перестанет потреблять энергию до повторной «активации» платы (подачей зарядки или кнопкой).
Так же можно включать и отключать зарядку, разрядку, балансировку.
Добавление в Home Assistant:

Реализуется на проекте: https://github.com/syssi/esphome-jk-bms
Так, как интеграция в Home Assistant построена на базе EPSHome, потребуется EPS32. Один из самых дешёвых ESP32-C3 supermini за $1-$1.5, отлично подойдёт. А так же понижающий преобразователь за $0.5 до напряжения 3.3v или 5v, если хотите питать ESP сразу от батареи.
А теперь есть два пути подключения: по UART или по BLE. Я выбрал второй вариант, так как у меня не было нужного кабеля, а паять саму BMS мне не хотелось. В целом всё работает отлично, так и оставлю.
Но есть нюанс! Одновременно доступно только одно подключение по BLE! После подключения ESP, со смартфона подключиться не получится, пока не отключить питание ESP. Если нужно одновременное подключение и со смартфона и Home Assistant — придётся подключить по UART. По UART подключение так же к BMS (правда .yaml другой), GND-GND, TX-RX, RX-TX, и, что очень важно, питание порт RS485 выдаёт такое же, как у батареи. Поэтому подключение к ESP только через понижающий преобразователь!
substitutions:
name: jk-bms-lifepo4
device_description: «Monitor and control a JK-BMS via bluetooth»
external_components_source: github://syssi/esphome-jk-bms@main
mac_address: XX:XX:XX:XX:XX:XX #подставляете свой MAC
protocol_version: JK02_32S
esphome:
name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: «syssi.esphome-jk-bms»
version: 2.2.0
esp32:
board: esp32-c3-devkitm-1
framework:
type: esp-idf
external_components:
— source: ${external_components_source}
refresh: 0s
# Enable logging
logger:
level: INFO
logs:
esp32_ble_tracker: INFO
esp32_ble_client: INFO
# Enable Home Assistant API
api:
encryption:
key: !secret api_key_jk-bms
ota:
platform: esphome
password: !secret ota_password_jk-bms
on_begin:
then:
— switch.turn_off: ble_client_switch0
— logger.log: «BLE connection suspended for OTA update»
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
captive_portal:
# api:
esp32_ble_tracker:
scan_parameters:
active: false
ble_client:
— mac_address: ${mac_address}
id: client0
on_connect:
then:
— logger.log: «Connected to JK-BMS»
on_disconnect:
then:
— logger.log: «Disconnected! Reconnecting...»
— delay: 3s
— ble_client.connect: client0
jk_bms_ble:
— ble_client_id: client0
protocol_version: ${protocol_version}
throttle: 5s
id: bms0
binary_sensor:
— platform: jk_bms_ble
balancing:
name: "${name} balancing"
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
heating:
name: "${name} heating"
online_status:
name: "${name} online status"
button:
— platform: jk_bms_ble
retrieve_settings:
name: "${name} retrieve settings"
retrieve_device_info:
name: "${name} retrieve device info"
number:
— platform: jk_bms_ble
jk_bms_ble_id: bms0
balance_trigger_voltage:
name: "${name} balance trigger voltage"
cell_count:
name: "${name} cell count"
total_battery_capacity:
name: "${name} total battery capacity"
cell_voltage_overvoltage_protection:
name: "${name} cell voltage overvoltage protection"
cell_voltage_overvoltage_recovery:
name: "${name} cell voltage overvoltage recovery"
cell_voltage_undervoltage_protection:
name: "${name} cell voltage undervoltage protection"
cell_voltage_undervoltage_recovery:
name: "${name} cell voltage undervoltage recovery"
balance_starting_voltage:
name: "${name} balance starting voltage"
voltage_calibration:
name: "${name} voltage calibration"
current_calibration:
name: "${name} current calibration"
power_off_voltage:
name: "${name} power off voltage"
max_balance_current:
name: "${name} max balance current"
max_charge_current:
name: "${name} max charge current"
max_discharge_current:
name: "${name} max discharge current"
charge_overcurrent_protection_delay:
name: "${name} charge overcurrent protection delay"
charge_overcurrent_protection_recovery_time:
name: "${name} charge overcurrent protection recovery time"
discharge_overcurrent_protection_delay:
name: "${name} discharge overcurrent protection delay"
discharge_overcurrent_protection_recovery_time:
name: "${name} discharge overcurrent protection recovery time"
short_circuit_protection_delay:
name: "${name} short circuit protection delay"
short_circuit_protection_recovery_time:
name: "${name} short circuit protection recovery time"
charge_overtemperature_protection:
name: "${name} charge overtemperature protection"
charge_overtemperature_protection_recovery:
name: "${name} charge overtemperature protection recovery"
discharge_overtemperature_protection:
name: "${name} discharge overtemperature protection"
discharge_overtemperature_protection_recovery:
name: "${name} discharge overtemperature protection recovery"
charge_undertemperature_protection:
name: "${name} charge undertemperature protection"
charge_undertemperature_protection_recovery:
name: "${name} charge undertemperature protection recovery"
power_tube_overtemperature_protection:
name: "${name} power tube overtemperature protection"
power_tube_overtemperature_protection_recovery:
name: "${name} power tube overtemperature protection recovery"
sensor:
— platform: jk_bms_ble
jk_bms_ble_id: bms0
min_cell_voltage:
name: "${name} min cell voltage"
max_cell_voltage:
name: "${name} max cell voltage"
min_voltage_cell:
name: "${name} min voltage cell"
max_voltage_cell:
name: "${name} max voltage cell"
delta_cell_voltage:
name: "${name} delta cell voltage"
average_cell_voltage:
name: "${name} average cell voltage"
cell_voltage_1:
name: "${name} cell voltage 1"
cell_voltage_2:
name: "${name} cell voltage 2"
cell_voltage_3:
name: "${name} cell voltage 3"
cell_voltage_4:
name: "${name} cell voltage 4"
cell_resistance_1:
name: "${name} cell resistance 1"
cell_resistance_2:
name: "${name} cell resistance 2"
cell_resistance_3:
name: "${name} cell resistance 3"
cell_resistance_4:
name: "${name} cell resistance 4"
total_voltage:
name: "${name} total voltage"
current:
name: "${name} current"
heating_current:
name: "${name} heating current"
power:
name: "${name} power"
charging_power:
name: "${name} charging power"
discharging_power:
name: "${name} discharging power"
temperature_sensor_1:
name: "${name} temperature sensor 1"
temperature_sensor_2:
name: "${name} temperature sensor 2"
power_tube_temperature:
name: "${name} power tube temperature"
balancing:
name: "${name} balancing"
state_of_charge:
name: "${name} state of charge"
capacity_remaining:
name: "${name} capacity remaining"
total_battery_capacity_setting:
name: "${name} total battery capacity setting"
charging_cycles:
name: "${name} charging cycles"
total_charging_cycle_capacity:
name: "${name} total charging cycle capacity"
total_runtime:
name: "${name} total runtime"
balancing_current:
name: "${name} balancing current"
errors_bitmask:
name: "${name} errors bitmask"
switch:
— platform: jk_bms_ble
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
balancer:
name: "${name} balancer"
— platform: ble_client
ble_client_id: client0
name: "${name} enable bluetooth connection"
id: ble_client_switch0
text_sensor:
— platform: jk_bms_ble
errors:
name: "${name} errors"
total_runtime_formatted:
name: "${name} total runtime formatted"
software_version:
name: "${name} software version"
hardware_version:
name: "${name} hardware version"
После загрузки кода, ESPHome сразу подхватывает ESP.
Такие метрики и пункты управления доступны:



Как видите, практически полная замена приложения. Настроив в приложении один раз, можно смело дальше делать подстройку уже в самом Home Assistant.
А что по визуальному удобству?
В вышеуказанном виде, безусловно, удобство отображения уступает приложению. Но есть решение — интеграция jk-bms-card в HACS.

После добавления интеграции, у нас появляется карточка для дэшборда, которая почти в точности повторяет страницу в приложении:

Даже с анимацией балансировки. Видно, из какой ячейки в какую перекачивает, между ними бежит полоска, а так же цветом отображается. Всё, как в приложении. Здесь же можно включить зарядку, разрядку, балансировку.
Добавление в Home Assistant, позволит задействовать автоматизации, которые ограничены лишь вашей фантазией.
Опыт использования:
Я столкнулся с интересным явлением. Полагая, что напряжение на всём цикле почти статичное, я ошибочно думал, что активная балансировка аккумулятору не нужна. Это было огромное заблуждение. Аккумулятор я использую во время отключений электроэнергии. Прошлой зимой было всё ок. Летом я заподозрил, что аккумулятор как-то быстрее садиться. А этой зимой что-то вообще он начал очень быстро садиться. Один цикл работы с данной BMS показал причину — ужасная разбалансировка ячеек. Для такой ёмкости, видимо, пассивная балансировка — как мёртвому припарка. Ёмкость получилась 16.67Ah, при номинальной 30Ah, это в 2 раза меньше. Одна ячейка опустилась до 2.5v, в то время, как 3 остальные были на номинальном уровне 3.3v. Как раз выпало несколько дней без отключений. Я зарядил на максимум поставил напряжение балансировки 3 вольта с дельтой 0.003 и оставил так на 2 дня. Затем полностью дозарядил и во время отключения посадил его в 0.

Совсем другое дело. Аккумулятор проработал значительно дольше. Как результат — обновлённая ёмкость — 28.66Ah, что как раз почти соответствует номинальной (30Ah). Думаю ещё немного добалансирует в процессе эксплуатации. Я поднял напряжение балансировки до 3.4v и дельту — 0.01v. В таком режиме, плата будет поддерживать баланс между ячейками и не допустит разбалансировки в будущем.
Выводы и мнение:
Однозначно жалею, что не приобрёл нормальную BMS сразу после покупки аккумулятора, и в очередной раз убедился, что поговорки «скупой платит дважды» и «я не настолько богат, чтобы покупать дешёвые вещи» — основаны на жизненном опыте. Данная плата в бокс с моим аккумулятором не влезла и мне пришлось, в качестве временного варианта, вынести её за его пределы.
Благодаря данной BMS, мой аккумулятор прослужит мне дольше и будет работать намного эффективней, за счёт ручных настроек. Если вы тоже собирали для себя аккумуляторные сборки, особенно LiFePo4, на обычных BMS, однозначно рекомендую присмотреться к данному варианту! Нормальная BMS — залог долговечности ваших аккумуляторов, особенно LiFePo4, у которых очень большой срок службы, при правильной эксплуатации.
Если обзор понравился и оказался полезным или интересным — поставьте лайк, мне будет приятно :) Если остались вопросы — пишите, постараюсь ответить. Конструктивная критика так же приветствуется.
Всем хорошего настроения, позитива, добра и мира!
| +90 |
4287
207
|
| +41 |
1527
70
|
В любом случае обзору +… и в закладки.
Но согласно схеме:
JK BMS BD4A20S4P 8S-20S 40A Литий-ионные LiFePo4 LTO аккумуляторы Смарт-активный баланс Ток 0,4 А Встроенный Bluetooth Поддержка приложения
https://www.ozon.ru/product/jk-bms-bd4a20s4p-8s-20s-40a-litiy-ionnye-lifepo4-lto-akkumulyatory-smart-aktivnyy-balans-tok-0-4-a-2469464059
Жду когда приедет, буду использовать для АКБ электровелика.
<душнила моде>
Может не интеграции, а автоматизации?
</душнила моде>
Спасибо! Действительно, сейчас поправлю)
отсчет таймаута сна от какого момента происходит? последнее подключение или какие-то еще действия?
Стоят 4 АКБ по 200Ah на весь дом, балансир есть, но не умный, пришлось камеру поставить для наблюдения.
Может кто посоветует что можно купить?
Для таких нужен VESC
Это ж софт для контроллеров электродвигателей, а речь была про интеграцию в умный дом.
Сам уже купил три штуки BMSок от JK, активно использовал две.
Доволен практически всем, встроенный активный балансир творит чудеса. Можно даже до 100% аккумулятор не заряжать, а он всё равно останется сбалансированным (в отличие от пассивных балансиров в более простых BMSках).
Единственный минус, который заметил — нестабильное соединение по Bluetooth. Антенна находится между двумя «экранами», соответственно связь теряется при любом удобном случае. Со стоковой антенной у меня не всегда выходило подключиться к BMS с расстояния более 5м, и даже на меньших расстояниях периодически разрывалась связь.
Во втором аккумуляторе эту проблему решил тем образом, что просто перерезал дорожку антенны на плате и вместо неё припаял антенну от роутера на 2.4GHz 5dBi (не забыв припаять экран коаксиала, конечно же).
Теперь связь стабильная, бьёт на 30м+ и не теряется :)
Без этой модификации было той ещё проблемой следить за телеметрией аккумулятора на ходу во время его тестовой обкатки.
Я как-то на светофоре одному персонажу самокат со смарт БМС погасил, а кто вреднее и пароль сменил-бы, наверное)
На VESC то же самое — контроллеры привязаны к одному конкретному телефону, от греха подальше. Вероятность того, что кто-то напакостит мала, но не равна нулю :D
Круто! Это действительно годный лайфхак. Я так усиливал свою ESPшку (Nodemcu ESP 8266), то это реально работает и очень хорошо!
Но в тех специфических задачах, где это нужно, BT в стоке работает отвратительно(