4. 电量计算基础:开路电压法与库仑计数法

各位同学,今天我们来聊聊电量计算最核心的两个方法。说实话,我刚入行那会儿,觉得电量估算不就是看看电压吗?后来在项目里吃了不少亏,才明白这里面的门道有多深。

咱们扫地机电池的电量,说白了就是「还剩多少电」。但怎么算准它,一直是行业里的难题。今天我把两种最基础的方法掰开揉碎了讲给你听。

4.1 开路电压法(OCV)估算电量

开路电压法,英文叫 Open Circuit Voltage,简称 OCV。原理特别简单:电池静置的时候,电压和剩余电量之间存在一一对应的关系

你想想看,就像看油表一样。油箱里油多,浮子就高;电池电量足,开路电压就高。这个关系不是线性的,但可以通过实验标定出来。

核心公式:

SoC = f(Voc)

其中 Voc 是开路电压,f 是标定好的映射函数。

我在项目里做过一个实验:把一块18650电池从满电放到空电,每放5%电量就静置1小时,记录电压。最后画出来的曲线长这样:

SoC (%) 开路电压 (V) 备注
100 4.20 满电状态
80 3.95 平台区
50 3.70 中间点
20 3.50 开始陡降
0 3.00 截止电压

看到没?中间那段(20%-80%)电压变化很平缓,这就是所谓的「平台区」。在这个区间里,电压变化一点点,电量可能差很多。嗯,这里要注意,OCV法在平台区的精度其实不太行。

我的经验:OCV法最适合用在电池静置超过30分钟的场景。扫地机回充后、或者长时间待机时,用这个方法最准。我曾经在客户现场调试,发现刚停止工作的电池电压虚高,直接查表会多估20%的电量,后来强制加了静置延时才解决。

4.2 库仑计数法原理

库仑计数法,英文叫 Coulomb Counting。说白了就是数电荷。你想想看,电流乘以时间就是电荷量,对吧?

公式很简单:

SoC(t) = SoC(t₀) + (1/Qₙ) × ∫₀ᵗ I(τ) dτ

其中:

  • SoC(t₀) 是初始电量
  • Qₙ 是电池额定容量(单位:Ah)
  • I(τ) 是瞬时电流(充电为正,放电为负)

实际代码实现长这样:

class CoulombCounter:
    def __init__(self, initial_soc=50.0, capacity_ah=2.5):
        self.soc = initial_soc          # 初始电量百分比
        self.capacity = capacity_ah     # 电池容量,单位Ah
        self.accumulated_charge = 0.0   # 累积电荷,单位Ah
        
    def update(self, current_a, delta_t_hours):
        """
        更新电量
        current_a: 当前电流,单位A(正=充电,负=放电)
        delta_t_hours: 时间间隔,单位小时
        """
        delta_charge = current_a * delta_t_hours
        self.accumulated_charge += delta_charge
        self.soc = (self.accumulated_charge / self.capacity) * 100
        
        # 限幅处理
        self.soc = max(0.0, min(100.0, self.soc))
        return self.soc

这段代码看着简单,但实际用起来坑不少。我刚开始做的时候,以为只要累加电流就行,结果误差越跑越大。

避坑指南:我曾经在一个扫地机项目里,库仑计数跑了3天,电量显示从100%掉到了-15%。查了半天,发现是电流采样偏了2mA。2mA啊兄弟们,一天就是48mAh,三天就是144mAh,占电池容量的6%。所以定期校准是必须的。

4.3 两种方法的优缺点对比

好了,两种方法都讲完了。咱们来做个对比,我直接给你上表格:

对比项 开路电压法(OCV) 库仑计数法
原理 电压-电量映射 电流积分
精度 平台区差(±5%~10%) 短期准(±1%~3%)
长期稳定性 好,无累积误差 差,有累积误差
实时性 需要静置,不能实时 可以实时更新
硬件要求 只需电压采样 需要电流采样
温度影响 大,需温度补偿 小,主要影响容量
适用场景 待机、回充后校准 工作过程中实时估算

我个人习惯的做法是:两者结合。平时用库仑计数法实时跟踪,每次电池静置超过30分钟,就用OCV法校准一次初始值。这样既保证了实时性,又避免了累积误差。

核心结论:

  • OCV法像「路标」—— 告诉你现在大概在哪个位置,但不能实时跟踪
  • 库仑计数法像「计步器」—— 每一步都算得很准,但走久了会偏
  • 最好的方案是:用OCV做定期校准,用库仑计数做实时跟踪

最后说一句,这两种方法都是基础。实际产品里还会用到卡尔曼滤波、神经网络这些高级算法。但基础不牢,地动山摇。把OCV和库仑计数吃透了,后面的内容你学起来会轻松很多。

下一章我们讲温度对电池的影响,以及怎么补偿。到时候我会分享一个我在量产项目中踩过的坑,保证让你印象深刻。