3、电流采样与调理:采样电阻与霍尔电流传感器、运放调理电路设计、ADC采样与滤波、电流重构技术(单电阻/双电阻)

电流采样,是电机控制的「眼睛」。

我做了这么多年电机驱动,见过太多因为电流采不准导致的翻车现场。有的电机嗡嗡响,有的干脆转不动,查到最后,都是采样环节出了问题。说白了,你算法写得再漂亮,电流反馈是脏数据,那一切都是白搭。

3.1 采样电阻 vs 霍尔电流传感器

先聊聊采样元件。目前主流就两种:采样电阻和霍尔传感器。

采样电阻,也叫分流器。原理就是欧姆定律,I = V / R。便宜、线性度好、响应快。我习惯在低成本方案里用它,比如家用风扇、水泵这类。

但有个坑——功耗。电流大了,电阻发热严重。我曾经在一个48V/10A的项目里,用了5毫欧的采样电阻,结果满载时电阻上功耗接近0.5W,温度飙到80多度,阻值漂了,采样也跟着漂。所以大电流场合,我建议用霍尔。

霍尔电流传感器,比如ACS712、Allegro系列。隔离性好,功耗低,适合大电流。但缺点也明显:带宽有限,温漂比电阻大,而且贵。

怎么选?我一般这样判断:

  • 电流 < 20A,成本敏感 → 采样电阻
  • 电流 > 20A,或者需要隔离 → 霍尔传感器
  • 对精度要求极高(比如伺服驱动)→ 采样电阻 + 精密运放

关键参数对比

参数采样电阻霍尔传感器
成本中高
精度高(低温漂型)中等
隔离
带宽中等(通常几十kHz)
功耗

3.2 运放调理电路设计

采样电阻出来的信号,通常是毫伏级的。ADC直接采?不行。你需要运放把它放大到ADC的满量程范围,比如0-3.3V。

这里我踩过一个大坑。有一次设计,我用了单电源运放,输入是双极性的(电流有正有负)。结果负半周直接被削掉了,电机反转时电流完全读不到。嗯,这里要注意:单电源运放不能处理负信号

解决方案有两种:

  • 加偏置电压:把信号整体抬升到1.65V(以3.3V ADC为例)。这样正负电流都能采到。
  • 用双电源运放:比如±5V供电,但成本高,不常用。

我个人习惯用加法器电路。把采样信号加上一个1.65V的偏置,再放大。公式很简单:

Vout = (Vshunt * Rf/Rin) + Vref

其中Vref就是偏置电压,通常由精密基准源提供。

小技巧:运放选型时,注意共模输入范围。有些运放输入不能到地,比如LM358,在0V附近会非线性。我一般用轨到轨运放,比如MCP6002、OPA333,省心很多。

3.3 ADC采样与滤波

ADC采样,看似简单,其实门道不少。

首先是采样时刻。电机控制里,电流采样通常和PWM同步。我习惯在PWM的中间点采样,因为那时开关噪声最小。你想想看,MOS管开关瞬间,电流尖峰特别大,如果正好在那个点采样,数据肯定不准。

其次是滤波。硬件上,我通常在ADC输入端加一个RC低通滤波器。截止频率怎么设?我一般取PWM频率的1/10左右。比如PWM是20kHz,RC截止频率就设在2kHz。这样既能滤掉开关噪声,又不至于把电流信号滤没了。

软件上,我还会做均值滤波中值滤波。均值滤波适合稳态,中值滤波适合剔除异常点。我在一个项目中,发现偶尔会有毛刺,用中值滤波后,波形干净多了。

注意:ADC的采样保持时间要足够。有些MCU的ADC,采样电容很小,如果信号源阻抗太大,采样值会偏小。我一般加一个运放做缓冲,或者把RC时间常数控制在采样周期的1/10以内。

3.4 电流重构技术:单电阻与双电阻

这部分是很多工程师的痛点。为什么需要重构?因为有些方案里,你没法直接采到三相电流。

单电阻采样:只在直流母线上放一个采样电阻。通过PWM状态,重构出三相电流。优点是成本低,一个电阻搞定。缺点是低速时重构困难,而且对PWM占空比有限制。

我做过一个单电阻方案,在电机启动时,电流重构总是失败。后来发现,是因为占空比太接近0%或100%,采样窗口不够。解决办法是移相PWM,或者插入额外的采样脉冲。

双电阻采样:在下桥臂放两个采样电阻,通常放在U相和V相。这样可以直接采到两相电流,第三相通过基尔霍夫定律算出来:Iw = -(Iu + Iv)。

双电阻比单电阻稳定得多,低速性能也好。我现在的项目,只要成本允许,我都用双电阻。省心。

单电阻 vs 双电阻 对比

项目单电阻双电阻
成本最低中等
低速性能
重构算法复杂度
适用场景低成本、高速运行通用场合

最后说一句,电流重构的精度,很大程度上取决于采样时刻的准确性。我见过有人用中断里延时等待,结果延时不准,重构出来的电流波形乱七八糟。我的建议是:用硬件触发采样,比如PWM的定时器事件直接触发ADC,这样时序最准。

好了,电流采样这块就聊到这儿。下一节我们讲保护电路设计,那又是另一片天地了。