Open Battery Information开源电池修复工具从接线到诊断的完整指南【免费下载链接】open-battery-information项目地址: https://gitcode.com/GitHub_Trending/op/open-battery-informationOpen Battery InformationOBI是一个开源电池修复与诊断项目用一块 Arduino Uno 加几只有源电阻接入电池 BMS 的通信脚就能读取电池的型号、单体电压、温度、循环次数与状态位帮助判断电动工具电池突然罢工到底是 BMS 软件锁死还是电池本体已经失效。当前仓库内的固件针对牧田MakitaLXT 系列电池的 OneWire 协议实现适合有基础动手能力、想自己动手排查电池问题的用户。有一点先说明早期的 Python/Tkinter 桌面应用已弃用并移出仓库旧版代码停留在v0.2.3标签。现在的工作流是「Arduino 固件 OBI-1 网页工具」网页端通过 Web Serial 连接开发板甚至可以直接在浏览器里烧录固件不再需要安装 Python。本仓库目前只托管 Arduino 固件见 ArduinoOBI/。它在电池修复链路里做什么电池厂商在 BMS 检测到故障时锁定整个电池组这个保护本身是合理的。问题在于保护可能被误触发或者导致故障的只是瞬时事件、甚至早已排除。这时候仅因 BMS 的软件记录就丢弃一块电池是没必要浪费的。OBI 解决的就是这个环节先把 BMS 状态读出来判断锁定是否属于误触发确认无误后把锁复位让电池组回到可用状态。两条使用前提值得先明确先读后复位。这个工具的价值首先是诊断。读出的单体电压、温度与状态位能告诉你电池是被冤枉的还是真的坏了。复位只作用于 BMS 的软件层面。如果单体本身已经损坏鼓包、漏液、内阻明显异常任何解锁操作都没有意义这类电池应当停止使用。协议与命令的实现集中在 ArduinoOBI/src/main.cpp其中 OneWire 实例直接命名为makita也印证了当前的适配对象。硬件怎么接原理与接线先看图这张原理图就是接线依据原理上并不复杂Arduino 不与电池电源直接相连只驱动两根信号线——Enable 使能脚和 OneWire 数据脚。网页工具通过 USB 串口9600 波特率见main.cpp中的Serial.begin(9600)向固件下发命令固件收到命令后把 Enable 拉高在 OneWire 上完成一次读写再把结果原路返回。物料清单以 docs/images/ 下的原理图为准物料数量说明Arduino Uno或 ESP32-C3 SuperMini1主控USB 供电4.7 kΩ 电阻3串阻与上拉阻值按原理图USB 数据线1兼供电与串口杜邦线或焊线若干连接电池插座Uno 侧的接线对应关系开发板侧电池侧作用D8Enable 脚通信期间置高开启数据通路D6经 4.7 kΩ 串阻OneWire 数据线单总线读写电池数据4.7 kΩ 上拉电阻接到 VBAT电池正极为信号线提供上拉VBAT-电池负极GND共地注意原理图中电池与开发板之间只有信号线没有电源直连。不要自行把电池电压接到 Uno 的供电引脚上。固件如何烧录两条路径路径一浏览器直接烧录推荐免装工具链用 Chrome 或 Edge 打开上游项目的 OBI-1 网页站中的固件上传页面firmware uploader开发板插好 USB直接在浏览器里完成烧录。上游项目的 Releases 页面也提供了现成的uno.hex/esp32.bin二进制文件同样可以通过这个入口刷入。路径二PlatformIO 编译烧录需要自己编译比如想改参数时走 PlatformIO获取代码git clone https://gitcode.com/GitHub_Trending/op/open-battery-information安装 VS Code 和 PlatformIO 扩展用 VS Code 打开仓库里的ArduinoOBI文件夹PlatformIO 会自动识别 ArduinoOBI/platformio.ini。在 PlatformIO 侧边栏的 Project Tasks 下拉框中选择unoGeneral 下先点 Build 编译成功后再点 Upload 上传。编译或上传报错时看输出终端的提示即可。platformio.ini里除了默认的uno还预置了nano、nano_new和esp32-c3-devkitm-1三个环境。用 ESP32-C3 的两条硬约束官方已在 ESP32-C3 SuperMini 上验证过该电路但有两点必须遵守上拉电阻必须接 3.3V 引脚不能接 5V——接错会烧掉 GPIO直接毁掉模组。引脚分配C3 SuperMini 上用 Pin 0 作 ENABLE、Pin 1 作 OneWire想换引脚改platformio.ini中的ESP_EN_PIN与ESP_OW_PIN即可。编译时选择esp32-c3-devkitm-1环境其余步骤与 Uno 相同。软件端操作OBI-1 网页工具固件跑起来后软件端就剩一个浏览器页面由上游项目单独托管无需安装任何软件用 Chrome 或 Edge 打开 OBI-1 页面选择开发板对应的串口端口并连接走 Web Serial电池插入接口点击Read battery。一次完整的读取会返回电池型号、各单体电压、温度、循环次数charge count与状态位。几个实用读法单体电压离散度健康电池组各单体电压差很小某一路明显偏低就是重点怀疑对象。温度两个测温点数值应接近并随工况变化若一路长期固定不变通信或传感器本身就有问题。循环次数 状态位结合判断当前锁定属于哪一类决定是否需要执行复位。命令层面的细节如 0x01 版本握手、0x31/0x32/0x33/0xCC 各对应什么读取都在 ArduinoOBI/src/main.cpp 里普通使用不需要关心。读不到电池数据时先查什么现象优先排查端口列表里找不到开发板USB 线是否为数据线而非仅充电线浏览器是否 Chrome/Edge重新插拔能连上端口但 Read battery 无有效数据电池是否已插入Enable 与 OneWire 是否分别接对 D8 / D6VBAT- 与 GND 是否共地Web Serial 报错误或频繁断开是否有其他软件串口助手、终端监视占用了同一端口ESP 板子烧录后无响应检查上拉电阻是否误接 5V应为 3.3V确认引脚定义与platformio.ini一致多数连不上或读不出最后都回到接线对照上面的原理图逐根线核对比反复重刷固件有效。安全须知按原理图连接电池正负极只进信号网络不额外给开发板供电。操作前确认电池外观正常。鼓包、漏液的电池直接停止使用不要用这个工具去救物理损坏的电池。复位 BMS 保护记录前先用读出的数据确认不存在真实故障例如某单体电压明显异常。清掉一个真实故障的锁等于让有问题的电池继续充放电比不解锁更糟。保持工作台干燥电池端子和接线点远离金属工具避免短路。写在最后这个仓库现在的定位很清晰只管固件网页工具在上游单独托管。烧录固件、打开网页、读第一组电池数据整个流程走完只需要几分钟。当前可验证的适配对象是牧田 LXT 系列想研究或扩展其他品牌的协议入口就是main.cpp里那几个cmd_and_read_*函数。找一块 Uno照原理图焊上几只电阻从读第一组单体电压开始——电池的数据比猜测可靠得多。【免费下载链接】open-battery-information项目地址: https://gitcode.com/GitHub_Trending/op/open-battery-information创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?