在电池失效之前,
先看见异常。
用两块 STM32、真实 CAN 通信链路和端侧 AI,搭建一套可复现、可解释、可降级的锂电池微短路预警系统。这里既是项目说明,也是从信号到模型再到部署的交互课堂。
故障源可模拟,链路必须真实
F407 固件模拟 BMS 数据源,H743 接收真实 CAN 帧并完成预警。验证算法时不需要让真实电池进入危险状态。
自定义 CAN 数据协议
BMS_PROTOCOL.H| 帧 ID | 数据定义 | 解码规则 |
|---|---|---|
| 0x123 | 单体电压组(需拆帧) | 经典 CAN:每帧最多 8 字节;2B/路时最多 4 路 |
| 0x124 | 总电流 | 2 字节 × 1 mA |
| 0x125 | 温度 | 2 字节 × 0.1 °C |
| 0x126 | 电量 SOC | 1 字节,0–100% |
时钟树不同,Prescaler / Seg 参数须重新计算。
桌面实训台:从两块板到端侧预警
用交互模拟串起实物搭建、数据采集、PC 训练和 H743 部署。可按步骤操作,也可直接播放完整流程。
F407 采集端 → CAN 总线 → H743 预警端 → PC 训练工作站
F407
PA12 · TX
GND
3V3
BOOT
两板共地;不要将 MCU 引脚直接当作 CANH/CANL。
H743
FDCAN TX
GND
BUZZER
LED × 3
采集台 · 记录正常与故障波形
CAN → CSV先采覆盖不同 SOC 与正常工况的数据来训练;故障注入数据留作评估。采集时同时保存时间戳、原始帧、工况和注入命令。
PC 端数据预处理
LOG → WINDOW → FEATURES0x123 · 0x124…
V · mA · °C · %
去重 / 缺帧检查
连续时序片段
训练输入 X
PC 训练台 · 训练一个“正常模式重建器”
TEACHING SIMULATION训练数据使用覆盖低、中、高 SOC 的正常窗口。这里用一个可视化的教学训练过程演示“损失逐步下降”,数值不代表真实训练结果。
训练前检查清单
AVOID DATA LEAKAGELoss = mean((X_normal − X̂_normal)²)
模型打包与移植 · PC → H743
FLOAT → INT8 → C这些步骤分别做了什么?
术语拆解H743 实时监视器 · 看见一次端侧预警
LOCAL INFERENCE等待接收特征窗口—现场排查:先查链路,再查模型
DEBUG ORDER让异常可控、可重复、可对照
故障注入发生在 F407 固件数据层,预警器仍走完整的 CAN 收帧与推理路径。无需真实电池短路即可验证算法。
微短路早期 · 缓慢自放电
单体电压按设定速率缓慢下降。文档示例:2 mV/min,持续 10 min,用于观察长期趋势。
接触劣化 · 小幅周期波动
单体电压约 ±5 mV 周期波动。帮助比较方差、斜率与样本熵对不同异常形态的响应。
突变故障 · 瞬时掉压
单体瞬间下降 50 mV,作为明显故障对照,检验突变检测与紧急报警通路。
模型从数据走到芯片,要经过七步
课堂演示重点放在第 2–5 步:数据如何变成特征、正常模型如何学到边界、INT8 如何压缩、以及量化前后如何验证。板端推理必须保留规则式保护回退。
端侧 AI 小白入门课
先看完整的数据旅程,再一步步学会:AI 为什么能预警、它看什么、怎么放进芯片,以及怎样验证它真的有用。
先认识这条“从电池到提醒”的旅程
想象电池是一排水杯。每只杯子的水位就是单体电压。正常时水位变化很接近;如果一只杯子悄悄漏水,它可能很久以后才明显变低。我们的工作是在它低到危险之前,发现那一点点持续变化。
先把“电池状态”翻译成设备能传的话
电池管理板 F407 像一位记录员,每 100 毫秒把几类数据写进 CAN 报文。预警板 H743 像收件人,按报文 ID 找到数据,再换算回电压、电流和温度。
点选一个报文,看看它装了什么
每 100 ms 发送一次一帧是一个瞬间;一段时间才是“趋势”
微短路早期很慢,单看某一帧几乎看不出来。我们把连续数据放进一个滑动窗口,再算出摘要特征。就像不只看今天体温,而是看最近一段时间的变化。
拖动时间窗口,观察“缓慢掉压”变明显
示意数据 · 每点代表一段时间先教会 AI“正常”,再观察它哪里看不懂
微短路早期样本难收集,形态也可能没见过。这个方案用自编码器做无监督异常检测:它只学习正常窗口的输入输出关系。遇到陌生模式,如果重建得很差,误差会变大。
选一个窗口,观察输入经过模型后的“重建差距”
示意分数 · 非实测分数不是结论;阈值把分数变成行动
系统会综合单体压差变化、总压下降、SOC 变化和突变信号得到风险评分。教学示例用 60 分作为预警线、85 分作为报警线。真实阈值必须通过正常与注入故障实验校准。
切换场景,看系统为什么分级提醒
评分逻辑教学演示让模型变小、跑得动,还要确认没变笨
PC 上训练出的模型通常使用浮点数。STM32 资源有限,项目计划把模型转成 INT8,再生成 C 代码放进 H743。压缩成功不等于部署成功:必须做数值对比、指标评估和目标板测试。
点击播放部署流水线
PC → H743① 采集覆盖充分的正常窗口
步骤 1 / 5进阶交互实验:SOC 归一化、特征、重构误差和评分器
实验 A · SOC 改变时,电压也会改变
NORMALIZATION读懂结果 · 为什么按 SOC 分桶?
CONTEXT → SIGNAL实验 B · 不同故障,留下不同的时间指纹
FEATURE ENGINEERING五维输入向量
WINDOW → FEATURES实验 C · 自编码器学会“正常长什么样”
UNSUPERVISED滑动异常样本,看重构误差
TEACHING SIMULATION实验 D · 调权重,观察融合分数
RULE SCORE · 0—100实时分数与系统状态
FALLBACK READYPC 训练,到 STM32 推理
MODEL LIFECYCLE上线前要交代清楚的边界
VALIDATION CHECKLIST检查理解 · 先想,再点选
01 / 04让“有效”有清楚的统计口径
演示系统的价值在于可复现地比较。正式结论必须依赖记录完整的测试集、工况和指标定义。