4. 电流采样与调理:采样电阻、霍尔电流传感器、隔离放大器、信号调理电路

电流采样,是电机控制的「眼睛」。你想想看,FOC 要算转矩,得知道 Iq;要算弱磁,得知道 Id。电流都测不准,后面算法再漂亮也是白搭。这一章,咱们就把电流从「物理世界」搬到「数字世界」的这条路,彻底捋清楚。

4.1 采样电阻:最朴素,也最考验细节

采样电阻,说白了就是欧姆定律。电流流过已知阻值的电阻,测它两端的电压,I = U / R。简单吧?但实际用起来,坑不少。

4.1.1 电阻选型三要素

  • 阻值:不能太大,否则发热严重,压降也影响电机供电。通常选毫欧级,1mΩ ~ 10mΩ 常见。
  • 功率:P = I²R。比如 10A 电流过 5mΩ 电阻,功率是 0.5W。得留 2 倍余量,选 1W 或以上。
  • 温漂:电阻会随温度变化。我见过一个项目,常温下标定好好的,跑半小时电机热了,电流读数漂了 5%。后来换了 50ppm/°C 的合金电阻,问题解决。
我的习惯:采样电阻尽量用四端开尔文接法。把电流路径和电压检测路径分开,能有效避免焊盘和走线电阻引入的误差。尤其是大电流场合,这一点特别重要。

4.1.2 布局与走线

采样电阻的 PCB 布局,我吃过亏。有一次,我把采样电阻放在大功率管旁边,结果开关噪声直接耦合到采样信号上,波形惨不忍睹。后来我总结了几条规则:

  • 采样电阻尽量靠近电机相线输出端。
  • 差分走线,等长、等距,远离高频开关节点。
  • 在电阻正下方铺地,但不要形成地环路。

4.2 霍尔电流传感器:隔离与精度的平衡

当电流大到几十安甚至上百安,采样电阻的发热和损耗就扛不住了。这时候,霍尔电流传感器是更好的选择。

霍尔传感器利用霍尔效应:电流流过导体产生的磁场,被霍尔元件检测,输出与电流成比例的电压。它天生带隔离,不用考虑共模电压问题。

4.2.1 开环 vs 闭环

类型 精度 带宽 成本 典型应用
开环 ±1% ~ ±5% ~50 kHz 低 通用变频器、家电
闭环(补偿型) ±0.5% 以内 ~200 kHz 高 伺服驱动器、精密控制

我个人做伺服驱动时,偏爱闭环霍尔。虽然贵一点,但精度和带宽都让人放心。尤其是做高速弱磁控制时,电流环带宽要求高,开环霍尔往往跟不上。

注意:霍尔传感器输出端通常需要加一个 RC 低通滤波,截止频率设在 1MHz 左右,滤除高频开关噪声。但滤波电容不能太大,否则会引入相位延迟,影响电流环响应。

4.3 隔离放大器:安全第一

在高压电机驱动中(比如母线电压 600V 以上),采样电路必须与控制器隔离。隔离放大器就是干这个的。

常用的隔离方式有两种:

  • 磁隔离:比如 ADuM 系列,通过片上变压器传递信号。速度快,但抗共模干扰能力稍弱。
  • 电容隔离:比如 ISO 系列,通过 SiO₂ 电容耦合。共模瞬态抑制能力很强,适合高噪声环境。

我记得有一次做 690V 变频器项目,用了某品牌的磁隔离放大器。结果在 IGBT 开关瞬间,共模电压跳变太快,隔离输出直接饱和了。后来换成电容隔离的型号,问题消失。所以,高压场合我建议优先考虑电容隔离。

4.4 信号调理电路:把信号「洗」干净

无论是采样电阻的差分电压,还是霍尔传感器的输出电压,都不能直接进 ADC。你得先调理。

4.4.1 差分转单端

采样电阻的信号是差分的,而大多数 MCU 的 ADC 是单端输入。所以需要差分放大器把信号转成对地的单端信号。我常用的是 INA 系列仪表放大器,共模抑制比高,噪声低。

// 伪代码:差分转单端后的 ADC 采样
// 假设差分放大器增益为 50,采样电阻 5mΩ
// ADC 参考电压 3.3V,12 位分辨率

float adc_value = get_adc();  // 0 ~ 4095
float voltage = adc_value * 3.3 / 4095.0;
float current = voltage / 50.0 / 0.005;  // 除以增益和电阻

4.4.2 偏置与电平移位

电机电流是双向的(正转和反转)。但单电源 ADC 只能测 0 ~ Vref。所以需要把双极性信号偏置到 Vref/2 处。

举个例子:如果电流范围是 ±10A,采样电阻 5mΩ,增益 50,那么输出电压范围是 ±2.5V。加上 1.65V 偏置后,变成 0 ~ 3.3V,完美匹配 ADC 输入范围。

关键点:偏置电压的精度直接影响零电流读数。我建议用精密参考源(比如 REF3033)来产生偏置,而不是直接从电源分压。电源纹波会直接耦合到采样信号里。

4.4.3 抗混叠滤波

ADC 采样前,必须加一个抗混叠滤波器。通常是一阶 RC 低通,截止频率设在采样频率的 1/2 以下。

比如电流环采样频率 10kHz,抗混叠滤波器截止频率可以设在 3kHz ~ 5kHz。R 取 1kΩ,C 取 33nF,算下来截止频率约 4.8kHz,够用。

我曾经踩过的坑:滤波电容用了 X7R 材质,结果发现电容值随电压变化,导致滤波器截止频率漂移。后来换成 C0G/NP0 材质,问题解决。高频场合,电容材质真的不能省。

4.5 整体架构:一张图说清楚

下面这张图,把电流采样到 ADC 的完整链路画出来了。你可以对照自己的板子,看看每一步都做对了没有。

电流采样与调理链路 电机 采样电阻 差分放大器 偏置+滤波 MCU ADC 差分信号 → 单端信号 → 偏置到 Vref/2 → 抗混叠滤波 → 进入 ADC 采样 霍尔传感器 注:霍尔传感器输出可直接进入偏置+滤波级

4.6 采样时序:别让 ADC 白忙活

电流采样有个关键问题:什么时候采?

PWM 开关会产生巨大的共模噪声。如果在开关瞬间采样,读到的全是噪声。正确的做法是:在 PWM 载波周期的中间点采样,此时上下管都处于导通或关断的稳定状态,噪声最小。

我习惯用 PWM 定时器的「中心对齐」模式,在计数器上溢或下溢时触发 ADC。这样采到的电流值最干净,也最接近相电流的真实平均值。

// 伪代码:PWM 中心对齐触发 ADC
// 假设 PWM 频率 10kHz,周期 100μs
// 在计数器 = 0 和计数器 = PERIOD 时触发

void pwm_timer_init() {
    // 配置中心对齐模式
    TIM->CR1 |= TIM_CR1_CMS;  // Center-aligned mode 1
    // 配置触发事件:更新事件(上溢/下溢)
    TIM->CR2 |= TIM_CR2_CCDS;  // Capture/compare DMA selection
    // ADC 触发源选择为 TIM 更新事件
    ADC->CR2 |= ADC_CR2_EXTSEL;  // 具体值参考芯片手册
}
小技巧:如果 MCU 支持多个 ADC 同时采样,可以把三相电流同时采。这样能避免因采样时刻不同带来的相位误差。我在做高速电机控制时,三相同时采样几乎是标配。

4.7 校准:最后的 1%

硬件总有误差。采样电阻有容差,运放有失调,偏置电压有偏差。所以,量产时必须做校准。

我的校准流程很简单:

  1. 零电流校准:电机不转,测 ADC 读数,记为 offset。以后每次采样都减去这个值。
  2. 增益校准:通一个已知电流(比如用精密电流源),测 ADC 读数,算出实际增益。与理论增益对比,得到修正系数。

校准参数存在 EEPROM 或 Flash 里,上电时加载。这样,即使换了一批电阻,电流精度也能保证在 1% 以内。

注意:零电流校准时,一定要确保电机确实没有电流。有时候 MOS 管的漏电流会引入微小的偏置,导致校准不准。我习惯在校准前把 PWM 输出强制拉到低电平,彻底关断所有功率管。

好了,电流采样与调理这部分,核心就是这些。从采样电阻到霍尔传感器,从隔离放大器到信号调理电路,每一步都有讲究。你设计板子的时候,对照着这张链路图,一个一个环节检查,基本不会出大问题。