4、安时积分法(Ah Counting):电流采样精度、积分漂移问题、初始SOC设定与复位策略
安时积分法,圈里人常叫它Ah Counting。这名字听着挺学术,说白了就是「往电池里充了多少电,放了多少电,一加一减就算出还剩多少」。原理简单得像个账本,但真要在BMS里用起来,坑可不少。
我最早接触Ah Counting是在一个储能项目上。当时觉得这算法太容易了,不就是个累加器嘛。结果样机一跑,SOC从100%掉到0%只用了半天,客户差点以为电池坏了。嗯,从那以后我再也不敢小看这个「简单算法」了。
核心公式:
SOC(t) = SOC(0) - (1 / Q_n) * ∫ η * I(t) dt
其中:
- SOC(0):初始SOC值
- Q_n:电池额定容量(Ah)
- η:库仑效率(充电通常取0.98~0.995,放电取1.0)
- I(t):实时电流(A),放电为正,充电为负
4.1 电流采样精度——误差的源头
Ah Counting的精度,七成取决于电流采样。你想想看,一个0.5%的采样误差,在10A电流下跑一个小时,SOC就偏了0.05Ah。要是跑一整天呢?误差就累积到1.2Ah了。对于50Ah的电池包,这就是2.4%的偏差。
我在项目中遇到过最头疼的事,是霍尔传感器的零点漂移。传感器标称零电流输出2.5V,但实际焊到板子上,温度一变化,零点就跑了。有一次在-20℃环境下测试,零点漂了15mV,换算成电流就是0.3A的偏置。电池静置时系统以为一直在放电,SOC蹭蹭往下掉。
实战建议:
- 硬件层面:采样电阻选低温漂的(< 25ppm/℃),霍尔传感器做温度补偿
- 软件层面:定期做零点校准——系统休眠时采集一次零电流值,存下来做偏置扣除
- 滤波处理:滑动平均滤波(窗口长度建议8~16个点),别用一阶低通,相位滞后太严重
还有一个容易被忽略的点:ADC的参考电压精度。我见过有人用LDO的输出直接当ADC参考源,结果LDO温漂0.5%,ADC读数也跟着漂。老老实实用外部基准源,比如REF3033,温漂才20ppm/℃。
4.2 积分漂移——时间的朋友,也是敌人
积分漂移是Ah Counting的「慢性病」。每次采样都有那么一丁点误差,日积月累,SOC就不知道偏到哪儿去了。
为什么会这样?我给你算笔账:假设电流采样精度是±0.5%,采样周期100ms。一天86400秒,总共采样864000次。每次误差虽然小,但积分操作本质上是个开环累加,误差只增不减。一个月下来,SOC偏差可能达到10%~15%。
注意:积分漂移不是线性增长的。它跟电流大小、方向、温度都有关系。大电流时采样误差比例可能变小,但绝对值大;小电流时误差比例大,但绝对值小。最怕的是「小电流长时间」工况,比如BMS休眠时的自耗电监测。
我踩过的一个坑:在电动自行车项目上,客户反映电池用一个月后,电量显示还有30%就突然没电了。查了半天,发现是积分漂移导致SOC虚高。用户以为还有电,实际电池早就空了。后来加了两个措施:一是每10分钟做一次小电流归零判断(电流<50mA时强制积分暂停),二是每周做一次OCV校准。
积分漂移抑制三板斧:
- 死区处理:电流绝对值小于阈值(比如20mA)时,认为电流为0,积分暂停
- 定期校准:利用电池静置时的OCV(开路电压)修正SOC
- 双向限幅:SOC变化率不能超过物理极限(比如1C倍率下每秒变化不超过0.028%)
4.3 初始SOC设定——第一步错了,后面全白搭
Ah Counting是个递推算法,初始值错了,后面再怎么积分也是错的。初始SOC怎么定?最常用的方法是OCV查表法。
电池静置足够长时间(通常2小时以上),端电压会趋近于开路电压。然后查OCV-SOC曲线,就能得到初始SOC。但这里有个问题:OCV-SOC曲线不是线性的,磷酸铁锂在中段(20%~80%)几乎是一条平线,电压变化才几十毫伏。这时候查表,误差可能达到10%以上。
| 电池类型 | OCV-SOC线性区 | 查表精度 | 建议静置时间 |
|---|---|---|---|
| 三元锂 | 15%~85% | ±3% | ≥1小时 |
| 磷酸铁锂 | 20%~80%(平坦) | ±8%~12% | ≥2小时 |
| 钛酸锂 | 10%~90% | ±2% | ≥30分钟 |
我个人习惯的做法是:对于磷酸铁锂电池,不单独依赖OCV查表。我会结合「电压变化率」来判断——如果静置时电压还在缓慢上升,说明电池还没稳定,这时候查表不靠谱。等电压变化率小于0.5mV/min时,再开始查表。
4.4 复位策略——让SOC「归零」的艺术
复位策略是Ah Counting的「救命稻草」。既然积分会漂,那就找个机会把SOC强行拉回来。常见的复位点有两个:满充和满放。
- 满充复位:当电池充电到截止电压,且充电电流降到0.05C以下时,强制SOC=100%。这是最可靠的复位点。
- 满放复位:当电池放电到截止电压,且负载断开后电压回升到某个阈值时,强制SOC=0%。注意,磷酸铁锂的放电末端电压下降很快,复位点要留余量。
我曾经在一个48V储能系统上,满充复位点设得太苛刻——非要等到充电电流降到0.02C才复位。结果电池老化后内阻增大,充电末端电流降不下去,SOC一直卡在98%复位不了。后来改成0.05C + 电压判断双重条件,问题就解决了。
复位策略设计要点:
- 满充复位优先级最高,但别太频繁(建议每10次满充复位1次,防止老化影响)
- 满放复位要加电压回弹判断(断开负载后电压回升>200mV才算真正放空)
- 中间复位点:利用OCV-SOC曲线上的「拐点」做部分复位(比如三元锂在3.7V附近)
嗯,这里要注意:复位不是万能的。如果电池长期处于浅充浅放状态(比如电动车每天只充到80%,用到30%就充电),复位点永远触发不了。这时候就得靠「虚拟复位」——根据累计Ah吞吐量,结合电池老化系数,做软复位。
说白了,安时积分法就是个「硬件打底、软件修补、复位兜底」的组合拳。电流采样精度决定了误差的下限,积分漂移决定了误差的累积速度,初始SOC和复位策略决定了误差能不能被消除。这三样东西,缺一个都不行。
本章核心要点:
- 电流采样精度是Ah Counting的根基,零点漂移是头号敌人
- 积分漂移无法避免,但可以通过死区处理、定期校准、限幅来抑制
- 初始SOC设定要区分电池类型,磷酸铁锂尤其要小心
- 复位策略是最后的保险,满充/满放复位要加双重条件
公众号:蓝海资料掘金营,微信deep3321