Skip to content

传感器信号进了放大电路,下一步就该处理噪声和干扰了——这就轮到滤波器。这篇讲最简单也最常用的一阶 RC 滤波:低通(滤高频噪声)和高通(滤直流偏置),以及核心公式截止频率 fc = 1/(2πRC)

文中的频率响应用 Python 数值仿真验证(7 项 PASS),不是纸面推导。

一、为什么需要滤波

上篇《运算放大器入门》讲到 ADC 前置 = 放大 + 缓冲。但真实世界还有两个麻烦:

  1. 高频噪声:电源纹波、电磁干扰、电机火花——叠加在信号上,ADC 采样后变成乱跳的数据
  2. 直流偏置:传感器输出可能带一个稳定的直流分量(比如 1.65V 中点电压),我们只关心交流变化部分

滤波器就是"频率的选择器":让想要的频率通过,把不想要的滤掉。最简单的实现,一个电阻 + 一个电容就够了。

二、RC 低通:滤高频噪声

RC 低通与高通电路

低通电路:R 串联、C 并联到地。电容的频率特性是关键——频率越高,容抗越小

  • 低频时:电容容抗很大(几乎开路),信号从 R 流过正常输出
  • 高频时:电容容抗很小(几乎短路),高频被旁路到地,输出几乎为零

三、RC 高通:滤直流偏置

高通电路:C 串联、R 并联到地。反过来:

  • 低频/直流时:电容容抗极大(断路),直流被挡住
  • 高频时:电容容抗极小(短路),信号从 C 流过正常输出

常用场景:音频信号隔直(去直流偏置)、心电/肌电信号去掉皮肤接触的直流漂移。

四、核心公式:截止频率

RC 滤波幅频响应

两个电路共用一个公式——截止频率

fc = 1 / (2πRC)
  • fc 处增益 = −3.01 dB(信号衰减到 0.707 倍)
  • 高于/低于 fc:按 −20 dB/十倍频程 滚降(一阶滤波器的特征)
  • 选 R、C 就是选 fc:R=1kΩ、C=100nF → fc ≈ 1591 Hz

直觉理解:fc 是"信号的转折点"。低通里,低于 fc 的信号基本无损通过,高于 fc 的按 -20dB/十倍频程衰减;高通相反。

五、仿真验证(Python 实跑)

用复数传递函数直接计算频率响应(低通 H = 1/(1+jωRC),高通 H = jωRC/(1+jωRC)):

python
import cmath, math

def rc_lowpass(f, R, C):
    w = 2 * math.pi * f
    return 1 / (1 + 1j * w * R * C)          # 低通传递函数

def rc_highpass(f, R, C):
    w = 2 * math.pi * f
    return (1j * w * R * C) / (1 + 1j * w * R * C)  # 高通传递函数

def db(h):
    return 20 * math.log10(abs(h))

R, C = 1e3, 100e-9
fc = 1 / (2 * math.pi * R * C)               # ≈ 1591.5 Hz

实跑结果(7 PASS 0 FAIL):

PASS  低通 @fc 增益:     -3.010 dB(理论 -3.010)
PASS  高通 @fc 增益:     -3.010 dB
PASS  低通 @0.1fc:       -0.043 dB(基本全通)
PASS  低通 @10fc:       -20.043 dB(十倍频程衰减)
PASS  高通 @0.1fc:      -20.043 dB
PASS  高通 @10fc:       -0.043 dB
PASS  低通 @DC:          0.000 dB(直流通过)
高通 @接近DC:          -144.0 dB(直流被阻断)

再看实际滤噪效果(R=1kΩ、C=100nF):

低通 @  50Hz(工频):   -0.00 dB   通过
低通 @1000Hz(信号):   -1.45 dB   基本通过
低通 @10000Hz(噪声): -16.07 dB   大幅衰减

一个 1k + 100nF 的低通,就能把 10kHz 噪声压掉 16dB,50Hz 工频完全不受影响——这就是 ADC 前置抗混叠滤波的雏形

六、ADC 前置:放大 + 滤波 + 缓冲

完整链路(衔接运放篇):

传感器(mV 级) → 同相放大(×10~×100) → RC 低通(滤噪声) → 电压跟随器(缓冲) → ADC
  • 同相放大器:把小信号放大到 ADC 满量程
  • RC 低通:截止频率选在"有用信号最高频"和"采样频率"之间(奈奎斯特:fc < fs/2),滤掉高频噪声和混叠成分
  • 电压跟随器:隔离 ADC 采样电容对 RC 滤波器的"拖累"(电容放电会拉低滤波输出)

小结

  • RC 一阶滤波:一个 R + 一个 C,就能低通或高通
  • fc = 1/(2πRC) 是选型的唯一公式:fc 处 -3dB,之后 -20dB/十倍频程
  • 低通滤高频噪声(ADC 前置抗混叠),高通滤直流偏置(音频隔直)
  • Python 仿真 7 PASS 验证:fc 处 -3.01dB、十倍频程滚降、高通阻断直流
  • 完整 ADC 前置 = 放大 → RC 低通 → 缓冲 → ADC

滤波器再往上:二阶/高阶(更陡的滚降)、有源滤波(运放 + RC)、带通/带阻——都是在这个基础上叠加。硬件链路往下走就是《数字电路》(滤波后干净的模拟信号,下一步要变成 0/1)和《嵌入式》(STM32 的 ADC 采样)。