4、电流采样技术:霍尔传感器与分流器原理、电流采样精度与量程设计、双向电流检测与积分方法

电流采样,是BMS的「眼睛」。

你想想看,SOC估算不准、SOP限功率出错、甚至过流保护误动作——十有八九,根子都在电流没测准。我做了这么多年BMS,踩过最深的坑,就是电流采样。

这一章,咱们把电流采样这件事彻底聊透。

4.1 霍尔传感器 vs 分流器:选型背后的工程逻辑

先说结论:没有绝对的好坏,只有合不合适的场景。

4.1.1 分流器——简单粗暴,但要注意「热」

分流器的原理,说白了就是欧姆定律:U = I × R。在电流回路里串一个精密电阻,测它两端的压降,电流就出来了。

优点很明显:线性度好、温漂可控、成本低。我早期做48V低速车BMS时,用的就是锰铜分流器,精度能做到±0.5%以内。

但坑也在这里——功耗。举个例子:

假设分流器阻值 R = 0.5 mΩ
持续电流 I = 200 A
功耗 P = I² × R = 200² × 0.0005 = 20 W

20W的发热量,在电池包里就是个「小电炉」。散热不好,温漂上来,精度就崩了。

⚠ 避坑指南
我曾经在一个项目中,分流器紧贴着电芯排布。大电流持续几分钟后,分流器温度飙到85°C,锰铜的温漂系数虽然只有几十ppm/°C,但算下来误差已经超过1%。后来我强制要求:分流器必须远离热源,且PCB走线要采用开尔文接法。

4.1.2 霍尔传感器——隔离好,但别被「零漂」骗了

霍尔传感器利用的是霍尔效应:电流流过导体产生磁场,霍尔元件感应磁场强度,输出对应电压。

最大的好处是电气隔离。高压BMS(比如400V/800V系统)里,我几乎只用霍尔。为什么?安全第一。分流器直接串在主回路里,一旦绝缘失效,低压采样电路就跟着遭殃。

但霍尔有个老毛病——零漂。温度变化、应力变化、甚至地磁干扰,都会让零点偏移。我见过最夸张的一次,某国产霍尔在60°C时零漂达到了满量程的2%。

💡 我的习惯
用霍尔传感器时,我每次上电都会做一次「零点校准」:在确认回路无电流时,记录当前输出作为偏移量,后续采样值减去这个偏移。如果系统允许,我还会在运行中定期做「短时零点刷新」。

4.2 电流采样精度与量程设计

精度和量程,是一对天生的矛盾体。

4.2.1 量程怎么定?

我一般遵循「1.2倍峰值原则」。比如电池最大持续放电电流是200A,峰值短时(10s)可能到300A,那量程就选300A × 1.2 = 360A,取整选400A档。

为什么留余量?两个原因:

  • 传感器在满量程附近线性度往往变差
  • 留出故障电流的检测空间(比如短路保护)

4.2.2 精度到底够不够?

很多工程师只看「精度±1%」这个参数,但实际用起来根本不是那么回事。

我列个表,把影响精度的因素拆开看:

误差来源 典型值 对总精度的影响
传感器本身精度 ±0.5% ~ ±1% 主要误差
温度漂移 ±0.1% ~ ±0.5% 随温度变化
ADC量化误差 ±0.1% (12bit) 量程越大越明显
PCB走线压降 ±0.05% ~ ±0.2% 大电流时显著
零点偏移 ±0.2% ~ ±1% 小电流时致命

你看,标称±1%的传感器,实际系统总误差可能到±3%。所以我在设计时,会要求全温度范围、全量程内总误差不超过±2%。达不到?那就上校准。

🔑 核心经验
小电流精度比大电流精度更难做。因为零点偏移和噪声在低电流时占比太大。我建议:如果系统需要精确测量10A以下的电流(比如休眠漏电流),单独配一个小量程采样通道,别指望大量程传感器能测准。

4.3 双向电流检测与积分方法

BMS里电流是双向的——充电为正,放电为负。检测不难,难的是怎么把电流积分成容量。

4.3.1 双向检测的硬件实现

分流器天生支持双向:电压极性会随电流方向翻转。霍尔传感器也支持,但要注意输出偏置——通常霍尔输出是2.5V ± 某电压,2.5V对应0电流,高于2.5V是正向,低于2.5V是反向。

ADC采样时,我习惯用差分输入。为什么?共模抑制比更好,能滤掉地线上的噪声。单端采样在小电流时很容易被干扰带偏。

4.3.2 积分方法——别小看这个「累加」

安时积分法,公式很简单:

容量变化 = ∫ I(t) dt ≈ Σ (I_k × Δt)

但实际写代码时,坑一个接一个。

坑1:采样频率怎么定?

我见过有人用1Hz采样做积分,结果误差大到离谱。为什么?因为电流是动态的,1Hz根本捕捉不到瞬态变化。

我的建议:

  • 基础采样率:10Hz(100ms一次)
  • 动态工况(如车辆加减速):50Hz以上
  • 积分周期:1s累加一次,然后清零重算

坑2:积分漂移

这是安时积分法的「原罪」。零点偏移哪怕只有0.1%,积分1小时后,误差就累积到0.1% × 3600s = 3.6s的等效容量。一天下来,SOC能偏出10%。

⚠ 我曾经踩过的坑
有一款产品,客户反馈SOC越用越不准。查了三天,发现是霍尔传感器的零点在温度变化后漂了0.3%,积分误差每天累积超过8%。后来我加了「零电流检测」逻辑:当检测到电流绝对值小于阈值(比如0.5A)且持续超过10秒,就强制将积分值归零,同时刷新零点偏移。问题解决。

坑3:积分溢出

32位整型变量,如果电流单位是mA,时间单位是ms,积分值很容易溢出。我一般用64位整型,或者用浮点数但注意精度损失。

// 伪代码示例:安时积分
static int64_t capacity_integral = 0;  // 单位:mAs
static int64_t last_timestamp_ms = 0;

void current_integrate(int16_t current_mA) {
    int64_t now_ms = get_system_ms();
    int64_t delta_ms = now_ms - last_timestamp_ms;
    
    // 限幅:防止异常时间差
    if (delta_ms > 1000) delta_ms = 1000;
    if (delta_ms < 1) delta_ms = 1;
    
    // 积分:电流(mA) × 时间(ms) = mAs
    capacity_integral += (int64_t)current_mA * delta_ms;
    
    // 每秒输出一次累加结果
    if (capacity_integral >= 1000) {  // 超过1000 mAs = 1 As
        int32_t capacity_As = capacity_integral / 1000;
        capacity_integral %= 1000;
        update_soc_by_capacity(capacity_As);
    }
    
    last_timestamp_ms = now_ms;
}
💡 我的个人习惯
积分周期我固定为1秒。每秒把累加的mAs值转成As,然后清零重算。这样即使有溢出,也只损失最近1秒的数据,不会影响全局。另外,我会在每次充电满电或放电截止时,强制校准一次积分值——说白了,就是让「满充」和「放空」这两个物理锚点来修正积分漂移。

4.4 本章知识体系

下面这张图,是我梳理的电流采样技术核心逻辑。你可以把它当作一张「决策地图」:

电流采样技术核心逻辑 传感器选型 分流器 ✓ 精度高、成本低 ✗ 发热大、无隔离 霍尔传感器 ✓ 隔离、无插入损耗 ✗ 零漂、温漂明显 精度与量程设计 量程:1.2倍峰值原则 留余量应对瞬态与故障 小电流需独立通道 总误差控制 传感器+温漂+ADC+走线 目标:全范围≤±2% 双向检测与积分 双向检测 差分ADC采样 零点校准与刷新 安时积分 采样率≥10Hz 防漂移:零电流归零 核心原则:选型看场景,精度靠校准,积分防漂移

嗯,电流采样这部分,说难不难,说简单也不简单。关键是把每个环节的物理限制想清楚,别指望一个传感器解决所有问题。下一节我们会聊到电压采样——那个坑更多,到时候再细说。


公众号:蓝海资料掘金营,微信deep3321