第2章:BMS基础架构
大家好,我是你们的老朋友。今天咱们聊聊BMS的基础架构。说实话,我刚入行那会儿,觉得BMS就是个“电池保姆”,无非是看看电压、测测温度。后来踩了不少坑才明白——BMS是储能系统的“大脑”和“神经系统”,搞不懂它,后面做异常检测就是空中楼阁。
2.1 BMS的硬件架构
先看硬件。BMS硬件说白了就是一套“感知-决策-执行”的闭环系统。我习惯把它分成三层:
- 采集层:负责感知电池状态。包括电压采样芯片(比如TI的BQ79616、ADI的LTC6811)、温度传感器(NTC或数字温度芯片)、电流传感器(霍尔传感器或分流器)。
- 控制层:核心是MCU或DSP。跑算法、做逻辑判断、发指令。我见过有人用STM32,也有人用英飞凌的TC2xx系列,看项目规模。
- 执行层:包括均衡电路(被动均衡电阻、主动均衡DC/DC)、继电器驱动、风扇控制等。
这里我画了一张架构图,帮你快速建立整体认知:
嗯,这里要注意一个细节:隔离。高压侧和低压侧必须隔离。我见过一个项目,因为光耦选型不对,高压窜到低压侧,直接把MCU烧了。所以隔离通信(SPI隔离、CAN隔离)这块,千万别省钱。
2.2 BMS的软件架构
软件架构,我习惯按功能模块来划分。说白了就是“采集→处理→决策→执行→通信”这条流水线。
| 软件模块 | 功能描述 | 典型实现 |
|---|---|---|
| 数据采集层 | 定时读取AFE寄存器,获取电压、温度、电流 | SPI/I2C驱动,DMA传输 |
| 状态估算层 | SOC、SOH、SOP计算 | 卡尔曼滤波、安时积分 |
| 故障诊断层 | 过压、欠压、过温、过流、绝缘故障检测 | 阈值比较、变化率检测 |
| 均衡管理层 | 被动/主动均衡策略 | 电压差触发、SOC触发 |
| 通信协议层 | 与PCS、EMS、上位机交互 | CANopen、Modbus、私有协议 |
我个人习惯把软件分成“前台”和“后台”。前台是中断服务,处理紧急故障(比如过压立即切断继电器);后台是主循环,跑SOC估算、均衡逻辑这些不着急的任务。你想想看,如果所有事情都在中断里处理,系统迟早崩掉。
核心要点:BMS软件最怕“死等”。我曾经遇到一个项目,因为均衡逻辑里用了阻塞延时,导致电压采样周期被拉长,过压保护没及时触发——后果就是电芯过充,鼓包了。所以,所有耗时操作必须用状态机或RTOS任务来管理。
2.3 BMS的核心功能
核心功能就三个:采样、均衡、保护。咱们一个一个说。
2.3.1 采样
采样是BMS的“眼睛”。电压采样精度直接决定SOC准不准。我建议用16位以上的ADC,采样周期控制在100ms以内。
这里给个简单的电压采样代码片段(伪代码):
// 读取AFE芯片的电压数据
uint16_t read_cell_voltage(uint8_t cell_index) {
uint16_t raw_value;
// 发送SPI命令,读取指定电芯的电压寄存器
spi_write(CMD_READ_VOLTAGE | cell_index);
delay_us(10); // 等待AFE转换完成
raw_value = spi_read();
// 转换为实际电压值(假设参考电压2.5V,12位ADC)
float voltage = (raw_value * 2.5) / 4096.0 * 4.0; // 分压比4:1
return voltage;
}
注意:采样不是“读一次就完事”。我习惯做中值滤波——连续采5次,去掉最大最小值,取平均。这样能滤掉尖峰噪声。
2.3.2 均衡
均衡解决的是“木桶效应”。串联电芯中,容量最小的那颗决定了整个电池包的可用容量。
- 被动均衡:通过电阻放电,把高电压电芯的能量消耗掉。简单便宜,但效率低,还发热。我做过一个项目,被动均衡电阻选了10Ω,均衡电流才100mA,均衡一个10Ah的电芯要100小时——太慢了。
- 主动均衡:用电感或电容把高电压电芯的能量转移到低电压电芯。效率高,但电路复杂、成本高。
我的经验:小容量电池(<50Ah)用被动均衡就够了。大容量储能(>100Ah)建议上主动均衡。别问我怎么知道的——我踩过被动均衡散热不够的坑,电阻烫到能煎鸡蛋。
2.3.3 保护
保护是BMS的“底线”。常见的保护类型:
| 保护类型 | 触发条件 | 动作 |
|---|---|---|
| 过压保护 | 单电芯电压 > 3.65V(磷酸铁锂) | 停止充电,断开继电器 |
| 欠压保护 | 单电芯电压 < 2.5V | 停止放电,告警 |
| 过温保护 | 电芯温度 > 60°C | 降功率运行或停机 |
| 过流保护 | 电流 > 1.2C(持续)或 > 2C(瞬时) | 立即断开继电器 |
| 绝缘故障 | 绝缘阻抗 < 100Ω/V | 告警,禁止高压操作 |
警告:保护动作一定要有“去抖”逻辑。我曾经遇到过,因为继电器触点抖动,导致保护误动作,系统频繁启停。正确的做法是:连续检测到故障状态3次(每次间隔10ms),才确认触发保护。
好了,BMS基础架构就聊到这儿。采样是眼睛,均衡是手,保护是底线——这三样搞明白了,后面做异常检测就有底气了。
公众号:蓝海资料掘金营,微信deep3321