第2章 BMS核心硬件架构:主控板(BMU)设计、从控板(CMU)设计、高压采集板(HVU)设计
做BMS系统这么多年,我始终觉得硬件架构是整车的"骨架"。骨架搭不好,后面软件写得再漂亮也白搭。今天咱们就聊聊BMS里最核心的三块板子:BMU、CMU和HVU。这三兄弟各司其职,配合好了,电池系统才能稳稳当当。
核心观点:BMU是大脑,CMU是神经末梢,HVU是高压安全卫士。三者缺一不可。
2.1 主控板(BMU)设计——BMS的大脑
BMU,全称Battery Management Unit,是整个系统的决策中心。说白了,它负责"想"——想什么时候均衡、想什么时候报警、想怎么跟整车通信。
我个人习惯把BMU的设计分成三大块:主控芯片选型、电源管理、通信接口。这三块搞定了,BMU就稳了八成。
2.1.1 主控芯片选型
选芯片这事儿,我踩过不少坑。有一次项目赶进度,选了个性能刚够的MCU,结果后期加功能发现Flash不够用,那叫一个难受。所以我的建议是:留足余量。
| 参数 | 推荐规格 | 说明 |
|---|---|---|
| 主频 | ≥120MHz | 保证实时控制与通信处理 |
| Flash | ≥1MB | 存放Bootloader、应用层、参数配置 |
| RAM | ≥128KB | 数据缓存、堆栈、中间变量 |
| CAN接口 | ≥2路 | 一路接整车,一路接内部CMU |
| 工作温度 | -40℃ ~ 125℃ | 车规级要求,没得商量 |
我的小技巧:选型时多看看同行的BOM表。我一般会选市面上用量大的型号,比如NXP的MPC57xx系列或Infineon的TC2xx系列。量大意味着稳定,也意味着好买。
2.1.2 电源管理设计
BMU的电源设计,核心就一句话:宽压输入、低功耗、高可靠性。整车电源环境很恶劣,12V系统实际波动可能到9V~16V,甚至更高。
我曾经遇到过一台样车,BMU在冷启动时频繁复位。查了两天才发现,是电源芯片的欠压保护阈值设得太高了。后来换了一颗支持4.5V~36V输入的DCDC,问题就解决了。
// 电源监控伪代码示例
void PowerMonitor_Task(void)
{
uint16_t vBat = GetBatteryVoltage();
if (vBat < LOW_VOLTAGE_THRESHOLD) {
// 进入低功耗模式
EnterSleepMode();
// 保存关键数据到EEPROM
SaveCriticalData();
} else if (vBat > HIGH_VOLTAGE_THRESHOLD) {
// 过压保护,关闭非必要外设
DisableNonCriticalPeripherals();
SetAlarmFlag(ALARM_OVER_VOLTAGE);
}
}
2.2 从控板(CMU)设计——电池的神经末梢
CMU,Cell Monitoring Unit,负责采集每一节电芯的电压和温度。你想想看,一个电池包少则几十节,多则上百节电芯,CMU就是那个"摸脉搏"的角色。
CMU设计的难点在于:精度要高、速度要快、成本要低。这三者往往互相矛盾,怎么平衡就看功力了。
2.2.1 电压采集方案
目前主流方案有两种:分立式运放+ADC 和 专用AFE芯片。我个人更推荐AFE方案,比如TI的BQ79616或ADI的LTC6811。
- 分立方案:灵活性高,但PCB面积大,调试周期长。我记得第一次做12串采集板,光调运放就花了两周。
- AFE方案:集成度高,自带均衡功能和诊断功能。说白了,就是"开箱即用",省心很多。
关键指标:电压采集精度要求≤±5mV,温度采集精度要求≤±1℃。达不到这个标准,SOC估算就别想了。
2.2.2 均衡策略
均衡分两种:被动均衡和主动均衡。被动均衡就是给电压高的电芯并联一个电阻放电,简单粗暴。主动均衡则是把能量从高电压电芯转移到低电压电芯,效率高但电路复杂。
我在项目里一般这样选:
- 小容量电池包(≤50Ah):被动均衡就够了,成本低,控制简单。
- 大容量电池包(>50Ah):建议上主动均衡,否则均衡时间太长,用户等不起。
注意:被动均衡的散热设计一定要做好。我曾经见过一块CMU板,均衡电阻焊盘太小,大电流放电直接把板子烧了个洞。嗯,从那以后我设计均衡电阻时,焊盘面积至少留够3倍余量。
2.3 高压采集板(HVU)设计——安全最后一道防线
HVU,High Voltage Unit,负责检测电池包的总电压、绝缘电阻和高压互锁。这块板子直接跟高压回路打交道,安全要求最高。
说白了,HVU就是BMS的"安全卫士"。它不参与日常控制,但一旦检测到异常,必须第一时间切断高压。
2.3.1 绝缘检测原理
绝缘检测的常用方法是电桥法。在正极和负极之间分别接入已知电阻,然后测量对地电压,通过计算得出绝缘电阻值。
// 绝缘电阻计算简化公式
// R_iso = (R1 * R2 * (V_bat - V1 - V2)) / (R2 * V1 - R1 * V2)
// 其中 R1、R2 为已知电阻,V1、V2 为对地电压
float CalculateInsulationResistance(float vBat, float vPos, float vNeg)
{
float rIso;
// 标准要求:绝缘电阻 > 500Ω/V(国标)
rIso = (R_KNOWN * (vBat - vPos - vNeg)) / (vPos - vNeg + 0.001);
return rIso;
}
2.3.2 高压互锁(HVIL)设计
高压互锁,说白了就是一根检测线,贯穿所有高压连接器。只要有一个连接器没插好,这根线就断了,HVU立刻检测到并报警。
我建议HVIL电路采用双冗余设计:一路检测回路通断,一路检测回路电阻。这样即使其中一路失效,另一路还能工作。
| HVIL状态 | 回路电阻 | 系统动作 |
|---|---|---|
| 正常 | < 5Ω | 允许高压上电 |
| 异常 | > 10Ω | 立即断开高压继电器 |
| 开路 | 无穷大 | 禁止高压上电,报警 |
避坑指南:HVU的采样电路一定要做隔离。我曾经在实验室测试时,没注意隔离,结果高压窜到低压侧,烧了一块BMU板。从那以后,我所有HVU设计都强制要求光耦或数字隔离器。
2.4 三块板子的协同工作
BMU、CMU、HVU不是各自为战的。它们通过CAN总线或SPI总线连接,形成一个完整的系统。
- CMU → BMU:上报每节电芯的电压、温度数据
- HVU → BMU:上报总电压、绝缘电阻、HVIL状态
- BMU → CMU/HVU:下发均衡指令、休眠唤醒指令
通信协议的设计也很关键。我一般会定义好帧ID的优先级:故障帧优先级最高,数据帧次之,配置帧最低。这样即使总线负载高,关键信息也能第一时间传出去。
总结一下:BMU负责决策,CMU负责感知,HVU负责安全。三块板子各司其职,又紧密配合。设计时既要考虑单板的功能完整性,也要考虑系统级的通信可靠性和故障诊断能力。
好了,这一章的内容就到这里。硬件架构是BMS的根基,根基扎得深,后面的软件和算法才能站得稳。下一章咱们聊聊BMS的软件架构设计,到时候我会分享一些实际项目中的代码架构经验。
公众号:蓝海资料掘金营,微信deep3321