3、电压测量技巧:电池电压与剩余电量(SOC)的非线性关系,如何校准
做电池供电设备,最头疼的问题是什么?
我猜很多人会说是「电量不准」。明明显示还有20%,设备突然就关机了。用户骂娘,你背锅。
这问题的根源,说白了就是电池电压和剩余电量(SOC)之间,压根不是线性关系。你拿万用表量一下3.7V的锂电池,3.6V的时候可能还有30%的电,3.5V的时候可能就只剩5%了。你想想看,这怎么搞?
3.1 为什么电压不能直接换算成电量?
锂离子电池的放电曲线,是一条典型的「S型」曲线。中间段比较平缓,两头陡峭。我在项目中遇到过好几次,客户拿着示波器跟我说:「你看,电压还有3.4V,怎么就没电了?」
嗯,这里要注意:电池的端电压受负载电流、温度、电池内阻、老化程度等多重因素影响。同一个电池,空载测3.7V,带上200mA负载可能瞬间掉到3.5V。你拿空载电压去算SOC,不翻车才怪。
核心结论:电压法测SOC,只能作为粗略估计。想要精度,必须做校准。
3.2 校准的核心思路:查表法 + 补偿
我个人习惯的做法,是建立一个「电压-SOC」对应表。但这个表不是随便从datasheet抄的,而是实测出来的。
3.2.1 建立基准放电曲线
怎么做?拿一批同型号的电池,在恒温环境下(25°C),用恒流放电。记录每个时间点的电压和放出的容量。我建议至少测3-5个样本取平均。
下面是一个典型的18650锂电池(标称3.7V,2600mAh)在0.2C放电下的实测数据:
| 电压 (V) | 剩余电量 SOC (%) | 备注 |
|---|---|---|
| 4.20 | 100% | 满电 |
| 4.00 | 85% | 快速下降区 |
| 3.80 | 60% | 平台区 |
| 3.70 | 40% | 平台区 |
| 3.60 | 20% | 开始陡降 |
| 3.50 | 8% | 警戒区 |
| 3.30 | 0% | 截止电压 |
你看,从3.8V到3.7V,只掉了0.1V,但电量从60%掉到了40%。这就是非线性。如果你用线性公式去算,误差能到20%以上。
3.2.2 加入温度补偿
温度对电池电压影响非常大。零下10°C的时候,电池内阻增大,电压会虚低。我曾经在北方做户外设备测试,零下15°C时,电池电压直接掉了0.3V,设备误报低电量关机。
我的做法是:在基准表的基础上,加入温度修正系数。比如:
// 温度补偿系数示例
// 基准温度 25°C
// 温度每降低 1°C,电压补偿 +3mV(因为低温下电压偏低)
// 温度每升高 1°C,电压补偿 -2mV
float temp_compensate(float voltage, float temperature) {
float delta_temp = 25.0 - temperature;
float comp_voltage = voltage + (delta_temp * 0.003);
return comp_voltage;
}
小技巧:补偿系数最好通过实测拟合。不同电芯、不同放电倍率,系数都不一样。别偷懒,拿数据说话。
3.3 动态校准:库仑计 + 电压修正
纯电压法精度有限,纯库仑计法又容易累积误差。我建议把两者结合起来。
具体做法:
- 平时用库仑计积分,实时跟踪充放电电量。
- 在特定电压点做「锚定」。比如电池充满时(4.2V),强制校准SOC为100%。电池接近放空时(3.3V),强制校准为0%。
- 在平台区,以库仑计为主,电压只做辅助参考。
这样做的好处是:既避免了库仑计的长期漂移,又弥补了电压法在平台区不灵敏的缺陷。
注意:千万不要在负载突变时做电压校准。比如设备从待机突然进入大功率发射,电压会瞬间跌落。这时候测电压,SOC会跳变,用户体验极差。我建议加一个「电压稳定检测」逻辑,连续3次采样电压变化小于5mV,才触发校准。
3.4 实战中的避坑指南
我曾经在一个智能穿戴项目上栽过跟头。电池容量只有150mAh,放电倍率变化很大。待机时电流只有10uA,蓝牙发射时瞬间冲到15mA。电压波动非常剧烈。
一开始我用简单的查表法,结果SOC跳来跳去,用户投诉说「电量像过山车」。后来我加了两个措施:
- 滑动平均滤波:对ADC采样的电压值做16次滑动平均,滤掉高频噪声。
- 负载补偿:实时监测负载电流,根据电流大小查表修正电压值。比如100mA负载下,电压补偿+20mV;500mA负载下,补偿+50mV。
改完之后,SOC的稳定性明显提升。虽然做不到库仑计那么准,但至少用户不再骂娘了。
总结一下我的经验:
- 别迷信datasheet的放电曲线,自己实测最靠谱。
- 温度补偿必须做,尤其是户外设备。
- 电压法只适合做「粗估」和「锚定」,精细跟踪还得靠库仑计。
- 滤波和负载补偿是提升用户体验的关键。
好了,这一章就聊到这儿。下一章我会讲讲电流测量的那些坑,尤其是怎么在uA级待机电流下做精确采样。到时候见。