第四节:安时积分法(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。

累积误差的来源主要有三个:

  1. 电流采样误差:ADC的量化误差、温漂、零漂
  2. 时间积分误差:采样频率不够高,漏掉了电流尖峰
  3. 库仑效率误差:η不是常数,它随温度、电流倍率变化

电流采样精度影响——差之毫厘,谬以千里

电流采样是安时积分法的“眼睛”。眼睛不好使,算出来的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。到时候我会分享一个我调试了整整两周才搞定的校准算法,保证让你少走弯路。