3、电压采集精度测试:单体电压采集电路原理、精度测试方法(常温/高低温)、误差分析与校准

电压采集精度,说白了就是BMS的“眼睛”好不好使。眼睛要是花了,SOC估算、均衡策略全得跑偏。我见过不少项目,前期仿真数据漂漂亮亮,一上高低温箱就原形毕露。今天咱们就把这块掰开揉碎了讲清楚。

3.1 单体电压采集电路原理

目前主流方案有两种:分立电阻分压+运放,或者直接用专用AFE芯片。我个人更倾向于AFE方案,比如TI的BQ79616、ADI的LTC6811这些。为什么?因为集成度高,匹配性好,省心。

但不管用哪种方案,核心结构都差不多:

  • 前端分压网络:把电池电压降到ADC可接受的范围。比如4.2V的满电电压,分压后变成1V左右。
  • 滤波电路:RC低通滤波,滤掉高频噪声。我习惯用100Ω+100nF的组合,截止频率大概16kHz。
  • ADC采样:AFE内部集成了Σ-Δ ADC,分辨率通常16位或24位。
  • 参考电压:这个最关键。参考电压的温漂直接决定了精度上限。

关键点:电压采集的精度瓶颈,往往不在ADC本身,而在前端分压电阻的精度和温漂。1%精度的电阻,在-40℃到85℃范围内可能漂到2%以上。

嗯,这里要注意:AFE芯片虽然集成了很多功能,但外部电阻电容的选型依然不能马虎。我在一个项目中就吃过亏,用了便宜的0402电阻,结果低温下电压读数偏了10mV,后来全部换成0805的0.1%精度电阻才解决。

3.2 精度测试方法

3.2.1 常温测试

常温测试是最基础的,一般在25℃±2℃环境下进行。步骤很简单:

  1. 准备高精度可调电源(精度至少0.01%),或者用标准电池模拟器。
  2. 设定电压点:2.0V、2.5V、3.0V、3.5V、4.0V、4.2V。覆盖电池的整个工作范围。
  3. 记录AFE读数和万用表读数(万用表精度要高于0.01%)。
  4. 计算误差:误差 = AFE读数 - 万用表读数。

你想想看,如果常温下误差就超过±2mV,那高低温下肯定更惨。我一般要求常温误差在±1mV以内才算合格。

3.2.2 高低温测试

高低温测试才是真正的“照妖镜”。测试条件:

温度点 保持时间 测试电压点
-40℃ 2小时 2.0V, 3.0V, 4.2V
-20℃ 1小时 2.0V, 3.0V, 4.2V
0℃ 1小时 2.0V, 3.0V, 4.2V
25℃ 1小时 2.0V, 3.0V, 4.2V
60℃ 1小时 2.0V, 3.0V, 4.2V
85℃ 2小时 2.0V, 3.0V, 4.2V

为什么要保持2小时?因为电路板上的温度需要时间稳定。我曾经偷懒只保温30分钟,结果数据完全不能用,白白浪费了一整天。

注意:高低温测试时,一定要用热电偶贴在AFE芯片表面和分压电阻附近,监控实际温度。温箱显示的温度和板子实际温度可能差5-10℃。

3.3 误差分析与校准

误差来源主要有三个:

  • 增益误差:分压比例不准,或者ADC参考电压偏移。表现为斜率偏差。
  • 偏移误差:运放的输入偏置电压、ADC的零点偏移。表现为固定偏差。
  • 非线性误差:ADC本身的积分非线性(INL)。这个通常很小,可以忽略。

校准方法其实不复杂。我常用的两步校准法:

  1. 偏移校准:在0V输入时,记录ADC读数,作为偏移量。以后每次采样都减去这个值。
  2. 增益校准:在满量程点(比如4.2V)记录ADC读数,计算实际增益系数。

代码实现大概是这样:

// 偏移校准
int16_t offset = read_adc(0);  // 短接输入端,读偏移
// 增益校准
int16_t full_scale = read_adc(4200);  // 输入4.2V
float gain = 4200.0 / (full_scale - offset);

// 实际采样
int16_t raw = read_adc(channel);
float voltage = (raw - offset) * gain;

小技巧:如果AFE支持内部自校准,优先用硬件校准。比如LTC6811的“自校准”命令,可以自动补偿内部偏移和增益误差,省心很多。

但要注意,校准只能补偿系统性的误差。随机噪声、温度漂移这些,校准是搞不定的。所以硬件设计上还是要留足余量。

我记得有一次,客户反馈说低温下电压采集偏差大。我排查了半天,最后发现是分压电阻的温漂系数不一致导致的。两个电阻一个50ppm,一个100ppm,温度一变,分压比就变了。后来全部换成25ppm的电阻,问题解决。

所以我的建议是:

  • 分压电阻用0.1%精度、25ppm温漂的金属膜电阻。
  • 参考电压源用低温漂的(比如5ppm/℃)。
  • PCB布局时,AFE和分压电阻尽量靠近,走线要短。
  • 高低温测试至少做3个循环,看数据是否可重复。

最后说一句:电压采集精度测试,不是测一次就完事的。量产时每块板子都要做,而且数据要存档。万一出了问题,还能追溯。