第四节:安时积分法(Ah Counting)——最朴素的SOC估算方法
安时积分法,说白了就是“数着电量过日子”。
它的原理简单到让人怀疑:你充进去多少电,放出来多少电,做个减法,剩下的不就是SOC吗?嗯,理论上确实如此。我刚开始做BMS那会儿,觉得这方法太“笨”了,后来才发现——简单的东西往往最可靠,也最坑人。
基本原理:一个水桶的故事
想象你有一个水桶,里面装了半桶水(SOC=50%)。
现在你往里面倒水(充电),每分钟倒1升,倒了10分钟。同时桶底有个小洞在漏水(自放电),每分钟漏0.1升。那么10分钟后,桶里实际多了多少水?
很简单:
增加的水量 = 倒入的水 - 漏掉的水
增加的水量 = (1L/min × 10min) - (0.1L/min × 10min) = 9升
安时积分法就是干这个活的。它的数学表达式是这样的:
SOC(t) = SOC(0) - (1 / Q_max) × ∫[0→t] I(t) × η(t) dt
其中:
- SOC(0):初始电量(你得知道一开始有多少水)
- Q_max:电池总容量(水桶能装多少水)
- I(t):电流(正数放电,负数充电)
- η(t):库仑效率(充进去的电不一定全存得住)
核心要点:安时积分法本质上是一个“累加器”。它不关心电池内部发生了什么化学反应,只关心“流过了多少电荷”。
累积误差问题——越算越不准的噩梦
这里我要说一个扎心的事实:安时积分法最大的敌人,就是它自己。
为什么?因为误差会像滚雪球一样越滚越大。
我举个例子你就明白了:
假设你的电流采样精度是±1%,电池总容量是100Ah。你以10A的电流放电了1小时,理论上放掉了10Ah。但实际测量到的电流可能是9.9A或10.1A,这就产生了0.1Ah的误差。
一次充放电误差0.1Ah,看起来不大对吧?
但问题是——这个误差不会消失。它会一直留在SOC的计算结果里。你充放电100次,误差就累积到了10Ah。也就是说,你的SOC可能显示还有50%,实际上电池已经快没电了。
⚠️ 我曾经踩过的坑:有一次做储能项目,系统运行了三个月后,SOC显示还有30%,结果电池直接触发了欠压保护。查了半天,发现就是安时积分累积了将近15%的误差。从那以后,我养成了一个习惯——定期用开路电压法校准SOC。
累积误差的来源主要有三个:
- 电流采样误差:ADC的量化误差、温漂、零漂
- 时间积分误差:采样频率不够高,漏掉了电流尖峰
- 库仑效率误差:η不是常数,它随温度、电流倍率变化
电流采样精度影响——差之毫厘,谬以千里
电流采样是安时积分法的“眼睛”。眼睛不好使,算出来的SOC肯定不准。
我习惯把电流采样精度分成三个等级:
| 精度等级 | 典型误差 | 适用场景 | 月累积误差(估算) |
|---|---|---|---|
| 低精度 | ±5% | 铅酸电池、低端BMS | 15%~25% |
| 中精度 | ±1% | 普通锂电池、家用储能 | 3%~8% |
| 高精度 | ±0.1% | 动力电池、大型储能站 | 0.3%~1% |
你看,低精度的电流传感器,一个月下来SOC误差能到25%。这意味着你满电状态下,系统可能显示还有75%,实际上电池已经快空了。这在储能系统里是非常危险的。
💡 我的建议:如果条件允许,尽量用高精度的霍尔传感器或分流器。分流器的精度更高,但会有功耗;霍尔传感器没有插入损耗,但受温度影响大。我个人偏向在储能系统中用分流器,因为功耗问题可以通过设计来弥补,但精度问题很难后期补救。
如何减少安时积分的误差?
既然安时积分法有这么多问题,为什么还在用?
原因很简单:它实时性好,计算量小,而且配合其他方法(比如开路电压法、卡尔曼滤波)可以做到不错的精度。
我总结了几条实战经验:
- 定期校准:利用电池静置时的开路电压,重新设定SOC初始值。我一般设定每7天或每50次充放电循环校准一次。
- 提高采样频率:至少1Hz,最好10Hz以上。你想想看,如果电流突然从10A跳到100A,而你1秒才采一次样,中间漏掉的数据就全变成误差了。
- 补偿库仑效率:η不是固定值。低温时η会下降,大电流充电时η也会下降。我习惯建一个二维查找表,根据温度和电流倍率动态调整η。
- 使用高精度ADC:16位以上的ADC,配合低噪声的参考电压源。别在这上面省钱,省下来的钱都会变成售后问题。
一句话总结:安时积分法就像跑步时的计步器——它能告诉你大概跑了多远,但每隔一段时间,你得用GPS(开路电压法)校准一下位置,否则迟早会跑偏。
嗯,安时积分法就讲到这里。下一节我们会聊聊开路电压法,看看怎么用电池的“休息时间”来校准SOC。到时候我会分享一个我调试了整整两周才搞定的校准算法,保证让你少走弯路。