电流采样原理:霍尔传感器与采样电阻的选型、电流信号调理电路设计、ADC采样与同步机制

电流采样是过流保护的第一道防线。采样不准,后面所有的保护逻辑都是空中楼阁。我见过不少工程师把精力全放在软件算法上,结果硬件采样本身就差了10%,那保护阈值设得再精确也没用。

这一章我们就把电流采样这条路走通。从传感器选型,到信号调理,再到ADC怎么采、什么时候采,一条线讲清楚。

2.1 霍尔传感器 vs 采样电阻:怎么选?

先解决一个根本问题:用霍尔还是用电阻?这两种方案各有各的脾气,选错了后面全是坑。

对比项 霍尔电流传感器 采样电阻(分流器)
原理 霍尔效应,磁电隔离 欧姆定律,直接串联
隔离 天生隔离,无需光耦 无隔离,需额外隔离电路
功耗 低(主回路不发热) 高(I²R发热明显)
带宽 一般 50~200 kHz 可做到 DC~MHz 级
温漂 较大(0.5~2%/℃) 低(锰铜/康铜 < 50 ppm/℃)
成本 较高 低
典型场景 大功率、高压、需隔离 低压、低成本、高精度

我个人习惯这样判断:如果母线电压超过 60V,或者电机功率在 1kW 以上,直接上霍尔。低压小功率(比如 48V 以下、几百瓦)用采样电阻,性价比高得多。

一个小技巧: 采样电阻的阻值不要贪大。我见过有人为了放大信号用 10mΩ,结果 20A 电流下功耗 4W,电阻烫得能煎鸡蛋。一般取 1~5mΩ,让满量程压降在 50~100mV 之间就够了。

2.2 电流信号调理电路设计

传感器出来的信号,不管是霍尔输出的电压,还是电阻两端的差分电压,都不能直接进 ADC。为什么?因为信号太弱、噪声太大、共模电压太高。调理电路就是干这个的。

2.2.1 差分放大与电平抬升

采样电阻两端的信号是双极性的——电流正反流动时电压有正有负。但大多数 ADC 只能采 0~3.3V 或 0~5V 的单极性信号。所以需要两步:

  1. 差分放大: 用仪表放大器(如 INA240、AD8418)把 mV 级信号放大到 ADC 量程内。
  2. 电平抬升: 把双极性信号平移成单极性。比如 -1.65V~+1.65V 抬升到 0~3.3V。

举个例子,一个典型的调理电路设计:

// 假设采样电阻 2mΩ,最大电流 ±50A
// 电阻压降 = ±100mV
// 仪表放大器增益 = 16.5 倍
// 输出 = ±1.65V
// 经加法器抬升 1.65V 后 → 0~3.3V 进入 ADC
注意: 我曾经在一个项目里直接用运放搭差分电路,结果共模抑制比不够,电机一启动信号就漂。后来换成专用仪表放大器,问题立刻解决。电流采样这里,别省那几块钱的仪表放大器钱。

2.2.2 抗混叠滤波器

ADC 采样前必须加一级低通滤波器。这不是可选项,是必选项。原因有两个:

  • 滤除 PWM 开关带来的高频噪声(通常 10~20 kHz 以上)
  • 防止高频信号混叠到低频段,造成采样失真

我一般用二阶巴特沃斯低通滤波器,截止频率设在采样频率的 1/5 到 1/10。比如 PWM 频率 10 kHz,采样频率 20 kHz,那滤波器截止频率设在 2~4 kHz 比较合适。

关键参数: 滤波器的时间常数不能太大。太大会让电流信号产生相位延迟,影响电流环的响应速度。我习惯把滤波器延迟控制在 1~2 个 PWM 周期以内。

2.3 ADC 采样与同步机制

信号调理好了,接下来就是 ADC 怎么采的问题。这里有个很多新手会踩的坑:ADC 采样时刻不对,采到的电流值根本不能用。

2.3.1 采样时刻为什么重要?

伺服驱动器的电流是 PWM 斩波出来的。MOSFET 开关瞬间会产生巨大的尖峰噪声。如果你在开关沿附近采样,采到的很可能是噪声而不是真实电流。

正确的做法是:在 PWM 载波的波峰或波谷处采样。这时候开关已经稳定,电流纹波也处于相对平稳的区域。

2.3.2 双采样 vs 单采样

根据控制策略不同,采样方式也有区别:

采样方式 触发时刻 适用场景 优点 缺点
单采样 PWM 载波波峰或波谷 单电阻/双电阻采样 简单,计算量小 无法获取电流变化趋势
双采样 波峰和波谷各一次 三电阻采样、高动态响应 可计算电流变化率 需要更快的 ADC

我个人习惯在 FOC 控制中用双采样。波峰采一次,波谷采一次,取平均后作为当前周期的电流值。这样能有效抑制纹波噪声,而且还能算出电流的变化趋势,对前馈补偿很有帮助。

2.3.3 硬件同步实现

ADC 采样必须和 PWM 定时器同步。不能靠软件延时去等,那样精度太差。正确的做法是用 MCU 的定时器触发 ADC:

// 以 STM32 为例的配置思路
// 1. 配置 TIM1 为 PWM 中心对齐模式
// 2. 设置 TIM1 的 TRGO 事件在更新事件时触发
// 3. 配置 ADC 的触发源为 TIM1 TRGO
// 4. 在 ADC 转换完成中断中读取结果

// 关键代码片段(伪代码):
TIM1->CR2 |= TIM_CR2_MMS_1;  // 选择更新事件作为 TRGO
ADC1->CR2 |= ADC_CR2_EXTTRIG; // 使能外部触发
ADC1->CR2 |= ADC_CR2_EXTSEL;  // 选择 TIM1 TRGO 作为触发源
避坑指南: 我曾经在一个项目里发现 ADC 采到的电流值忽大忽小,查了两天才发现是触发源配置错了,ADC 在 PWM 开关沿附近触发。改成在载波波谷触发后,数据立刻稳定下来。所以,一定要用示波器确认采样时刻,别光看代码。

2.4 本章知识体系总览

下面这张图把电流采样的完整链路画出来了。从传感器到 ADC 数据,每一步都有讲究。

电流采样链路总览 霍尔传感器 隔离、大功率、高成本 采样电阻 非隔离、低成本、高精度 选型决策 电压/功率/精度/成本 信号调理电路 差分放大 电平抬升 抗混叠滤波 ESD保护 阻抗匹配 ADC 采样与同步 PWM同步触发 波峰/波谷采样 双采样平均 DMA传输 过采样 电流数字量 → 过流保护判断 阈值比较 / 积分计算 / 故障触发 关键:每个环节的误差都会累积到最终保护阈值上,硬件设计时就要留好余量

从这张图可以看得很清楚:电流采样不是单一环节,而是一条完整的信号链。传感器选型决定了信号质量的上限,调理电路决定了信噪比,ADC 同步决定了采样精度。任何一个环节出问题,最终的保护阈值都会跑偏。