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 滤波的示意图:
2.5 布局布线:容易被忽略的坑
硬件滤波不只是选对元件值,布局布线同样重要。我见过太多人把 RC 滤波画得乱七八糟,结果效果大打折扣。
- 电容尽量靠近 ADC 引脚:减少走线电感,提高滤波效果。
- 电阻放在电容前面:先限流再滤波,顺序别搞反。
- 地线要短而粗:电容的接地端直接打过孔到地平面,不要绕路。
- 远离高频开关节点:别把滤波电路放在 MOSFET 或电感旁边,否则会耦合更多噪声。
我的习惯:画 PCB 时,我会在 ADC 输入引脚旁边预留一个 0603 的电阻和电容位置。就算第一次计算不准,也能现场换元件调试。
2.6 实战总结:一个完整的选型流程
好了,说了这么多,咱们总结一下实战步骤:
- 确定 PWM 开关频率:比如 20kHz。
- 选择截止频率:取 PWM 频率的 1/10 ~ 1/100,比如 1kHz。
- 计算 RC 值:用公式 f_c = 1/(2πRC),选 R=1kΩ,C≈159nF,取标称值 150nF。
- 选择元件材质:电阻用 1% 精度,电容用 X7R 或 C0G。
- 布局布线:电容靠近 ADC,地线短粗,远离噪声源。
- 实测验证:用示波器看 ADC 输入端的波形,确认噪声幅度是否在可接受范围内。
嗯,这套流程我用了好多年,基本没出过问题。你试试看,肯定比纯软件滤波省心得多。