2. 硬件滤波设计:RC低通滤波器截止频率计算与实战选型

采样噪声这东西,说白了就是高频毛刺叠加在电流信号上。你想想看,电机 PWM 开关频率动辄 10kHz 甚至更高,每次开关都会产生尖峰干扰。如果这些噪声直接进 ADC,那电流环算出来的结果肯定不准。

硬件滤波是最直接的手段。我个人的习惯是:能用电阻电容解决的,绝不动软件。为啥?因为硬件滤波不占 CPU 时间,响应也快。今天我们就聊聊 RC 低通滤波器的截止频率怎么算,以及实战中怎么选型。

2.1 RC 低通滤波器的基本原理

一个电阻加一个电容,就是最简单的低通滤波器。它的传递函数是:

H(s) = 1 / (1 + sRC)

截止频率(-3dB 点)的计算公式:

f_c = 1 / (2πRC)

这个频率以上的信号会被衰减。衰减斜率是 -20dB/十倍频,也就是频率每升高 10 倍,幅度降为原来的 1/10。

核心要点:截止频率 f_c 是信号幅度下降到 0.707 倍(-3dB)时的频率。设计时,我们通常把 f_c 设置在 PWM 开关频率的 1/10 到 1/100 之间。

2.2 截止频率计算:一个实战例子

假设你的 PWM 开关频率是 20kHz。那么噪声主要集中在 20kHz 及其谐波上。我们希望把这些高频成分滤掉,同时保留电流信号的有效带宽(通常几百 Hz 到几 kHz)。

我一般这样选:

  • 第一步:确定目标截止频率
    取 PWM 频率的 1/20,即 20kHz / 20 = 1kHz。这样 20kHz 的噪声会被衰减约 26dB(20 * log10(20kHz/1kHz) ≈ 26dB)。
  • 第二步:选择电阻 R
    电阻值不能太大,否则会引入热噪声和压降。我常用 1kΩ ~ 10kΩ。这里选 R = 1kΩ。
  • 第三步:计算电容 C
    C = 1 / (2π × f_c × R) = 1 / (2 × 3.14 × 1000 × 1000) ≈ 159nF。取标称值 150nF 或 220nF。

我的经验:实际选型时,电容值取标称值即可。150nF 和 220nF 差别不大,但要注意电容的耐压和温度系数。X7R 或 C0G 材质比较稳。

2.3 实战选型:电阻和电容怎么挑?

选型不是随便拿个电阻电容就往上焊。我踩过不少坑,这里列几个关键点:

参数 推荐值 注意事项
电阻 R 1kΩ ~ 10kΩ 太大增加热噪声,太小增加功耗
电容 C 100pF ~ 1μF 根据 f_c 计算,优先用标称值
电容材质 X7R 或 C0G 避免 Y5V,温度漂移大
耐压 ≥ 2 倍信号电压 留余量,防止击穿
封装 0603 或 0805 太小不好焊接,太大占空间

我曾经犯过的错:有一次为了省成本,用了 Y5V 材质的电容。结果温度一变化,截止频率漂了将近 30%,电流环直接震荡。后来全部换成 X7R,问题解决。

2.4 多级 RC 滤波:什么时候用?

单级 RC 滤波的衰减斜率只有 -20dB/十倍频。如果噪声很强,或者你要求更高的衰减量,可以考虑多级 RC 串联。

比如两级 RC 滤波,衰减斜率是 -40dB/十倍频。但要注意:两级之间必须有缓冲,否则后级会拉低前级的截止频率。我一般会在两级之间加一个运放跟随器。

下面是一个两级 RC 滤波的示意图:

两级 RC 低通滤波器结构图 Vin R1 C1 GND 缓冲 R2 C2 GND Vout 两级 RC 之间必须加缓冲(运放跟随器),否则后级会拉低前级截止频率。 两级总衰减斜率:-40dB/十倍频。

2.5 布局布线:容易被忽略的坑

硬件滤波不只是选对元件值,布局布线同样重要。我见过太多人把 RC 滤波画得乱七八糟,结果效果大打折扣。

  • 电容尽量靠近 ADC 引脚:减少走线电感,提高滤波效果。
  • 电阻放在电容前面:先限流再滤波,顺序别搞反。
  • 地线要短而粗:电容的接地端直接打过孔到地平面,不要绕路。
  • 远离高频开关节点:别把滤波电路放在 MOSFET 或电感旁边,否则会耦合更多噪声。

我的习惯:画 PCB 时,我会在 ADC 输入引脚旁边预留一个 0603 的电阻和电容位置。就算第一次计算不准,也能现场换元件调试。

2.6 实战总结:一个完整的选型流程

好了,说了这么多,咱们总结一下实战步骤:

  1. 确定 PWM 开关频率:比如 20kHz。
  2. 选择截止频率:取 PWM 频率的 1/10 ~ 1/100,比如 1kHz。
  3. 计算 RC 值:用公式 f_c = 1/(2πRC),选 R=1kΩ,C≈159nF,取标称值 150nF。
  4. 选择元件材质:电阻用 1% 精度,电容用 X7R 或 C0G。
  5. 布局布线:电容靠近 ADC,地线短粗,远离噪声源。
  6. 实测验证:用示波器看 ADC 输入端的波形,确认噪声幅度是否在可接受范围内。

嗯,这套流程我用了好多年,基本没出过问题。你试试看,肯定比纯软件滤波省心得多。