4、电压检测技术:单体电压采样方案
电压检测,说白了就是BMS的「眼睛」。
你想想看,电池包里有几十甚至上百节电芯,哪一节过压了、哪一节欠压了,全靠电压检测来发现。我做过一个项目,客户反馈电池包老是报警,查来查去,最后发现是采样电路出了问题——电压值漂了0.1V,保护阈值就误触发了。
嗯,这一节咱们就把电压检测技术彻底讲透。
4.1 单体电压采样方案对比
单体电压采样,目前主流就两条路:分立电阻分压和专用AFE芯片。我两种方案都用过,各有各的脾气。
4.1.1 分立电阻分压方案
说白了,就是用精密电阻搭一个分压网络,把电池电压降到ADC能接受的范围(比如0~3.3V)。
优点很明显:成本低、设计灵活。你手头有什么ADC就用什么,不受芯片厂商限制。
但坑也不少。我在一个12串的BMS项目里用过这个方案,调试时发现一个问题——采样值跳得厉害。后来一查,是电阻的温漂在作怪。电池温度从25℃升到60℃,电阻值变了,分压比也跟着变。
另外,分立方案还有个硬伤:通道间隔离难做。多节电池串联时,每一节的参考地都不一样,你得用差分采样或者隔离放大器。电路复杂度蹭蹭往上涨。
4.1.2 专用AFE芯片方案
AFE芯片,就是专门为电池采样设计的模拟前端。像TI的BQ76952、ADI的LTC6811,都是经典款。
我个人习惯,只要项目预算允许,优先用AFE芯片。为什么?
- 内置高精度ADC:一般都有16位甚至24位的Σ-Δ ADC,分辨率够用
- 通道自动切换:内部集成了多路复用器,你只需要通过SPI/I2C读数据就行
- 内置保护功能:过压、欠压、过流检测都集成好了,省去外部比较器
- 隔离通信:很多AFE支持菊花链通信,串联电池组用一根线就能传数据
我记得有一次做48V电动工具BMS,用了BQ76940,从原理图到调通只花了两周。要是用分立方案,光解决共模电压问题就得折腾一个月。
4.2 高精度ADC选型与设计
ADC是电压检测的核心。选型时,我一般看这几个参数:
| 参数 | 说明 | 我的经验值 |
|---|---|---|
| 分辨率 | 位数越高,理论精度越高 | 至少16位,推荐24位 |
| 采样率 | 每秒能采多少次 | BMS一般10~100Hz足够 |
| INL(积分非线性) | 实际转换曲线与理想直线的偏差 | ≤±2LSB |
| 共模抑制比 | 抑制共模干扰的能力 | ≥80dB |
| 温漂 | 温度变化对精度的影响 | ≤5ppm/℃ |
我常用的ADC型号:
- ADS1256:24位、8通道、SPI接口,性价比高,适合多通道采样
- LTC2400:24位、单通道、内部基准,精度极高,适合做校准基准
- AD7793:24位、3通道、内置PGA,适合小信号采样
设计时要注意几点:
- 参考电压要稳:ADC的精度直接取决于参考电压。我习惯用外部精密基准源,比如REF5025,温漂低至3ppm/℃
- 模拟电源要干净:ADC的AVDD和DVDD要分开供电,中间加磁珠和电容滤波
- 布局要讲究:模拟信号走线要短,远离数字信号和开关管
关键点: 选ADC时,别只看位数。16位的ADC如果噪声大、温漂高,实际有效分辨率可能还不如12位的。一定要看有效位数(ENOB)这个参数。
4.3 采样误差分析与校准
误差是躲不掉的,但我们可以分析它、校准它。
4.3.1 误差来源
我总结了一下,误差主要来自三个方面:
- 电阻误差:分压电阻的精度和温漂
- ADC误差:偏移误差、增益误差、非线性误差
- 噪声干扰:电源噪声、地弹、电磁干扰
嗯,这里要注意,温度变化是最大的隐形杀手。我在一个户外储能项目里吃过亏——白天35℃时电压采样正常,晚上降到5℃,偏差直接飙到50mV。后来一查,是分压电阻的温漂和ADC的温漂叠加了。
4.3.2 校准方法
校准分两步走:出厂校准和在线校准。
出厂校准:
- 用高精度万用表(比如6位半的)测量实际电压
- 记录ADC的原始读数
- 计算偏移和增益系数,存入EEPROM
- 每次上电后,用这些系数修正采样值
代码示例(伪代码):
// 校准系数
float offset = 0.0012; // 偏移量,单位V
float gain = 1.0035; // 增益系数
// 原始采样值
float raw_voltage = adc_read(channel);
// 校准后的电压值
float calibrated_voltage = (raw_voltage - offset) * gain;
在线校准:
- 利用电池组中已知的参考电压(比如3.3V稳压输出)
- 定期自动校准,补偿温漂和老化
- 我习惯每100次采样做一次校准,开销不大,效果明显
4.3.3 滤波处理
采样值难免有噪声,滤波是必须的。
我常用的方法:
- 均值滤波:连续采10次取平均,简单有效
- 中值滤波:去掉最大值和最小值再平均,抗脉冲干扰
- 一阶低通滤波:适合实时性要求高的场景
代码示例:
// 一阶低通滤波
#define ALPHA 0.2 // 滤波系数
float low_pass_filter(float new_value, float last_value) {
return last_value + ALPHA * (new_value - last_value);
}
你想想看,滤波系数怎么选?系数太大,滤不掉噪声;系数太小,响应太慢。我一般根据采样率和噪声频率来调,经验值是0.1~0.3之间。
4.4 小结
电压检测技术,说难不难,说简单也不简单。核心就三点:
- 方案选型:串数多就用AFE芯片,串数少可以考虑分立方案
- ADC设计:关注有效位数、参考电压、布局布线
- 误差校准:出厂校准+在线校准+滤波处理,三管齐下
我做了这么多年BMS,最大的体会就是:采样精度不是靠硬件堆出来的,而是靠设计和校准一起保证的。再好的芯片,不校准也是白搭。
下一节,咱们聊聊电流检测技术。嗯,那个坑更多,到时候我慢慢讲。