
1. 先别急着套公式想想你手里的信号长什么样一阶低通滤波大概是嵌入式、电子设计里最常见、最不起眼但坑最多的小环节。RC滤波、运放低通、软件一阶惯性环节本质都是同一个数学模型而选截止频率这个动作几乎决定了整个系统是“干净”还是“假干净”。很多朋友上来就百度公式 fc 1 / (2πRC)然后挑个电阻电容怼上去滤波效果却总是不对劲——要么信号变迟钝要么噪声纹丝不动。问题多半不在公式而在你根本没说清楚你究竟想滤掉什么又必须保留什么。我做过几年传感器采集和电机控制相关的项目在这件事上交过不少学费。这篇就专门聊聊一阶低通截止频率的选法从最基本的物理意义讲到具体怎么算、怎么测、怎么根据场景调。内容偏实操文末也会给一个可以直接参考的经验区间表希望能帮你少走点弯路。先说个最直观的例子。你要测一个缓慢变化的温度信号比如室温大概每几秒才波动一次但采集到的原始数据里混着50Hz工频干扰和一堆高频毛刺。这时候你把截止频率设在100Hz行不行大部分情况是不行。因为50Hz工频干扰还没被滤干净而信号本身又是低频你完全可以、也应该把截止频率压低到5Hz甚至更低。反过来如果你在做音频采集要保留20kHz以内的声音截止频率设在100Hz那声音就全闷掉了。这个道理听着简单但实际里很多人把截止频率设得太接近信号频率导致幅值衰减、相位滞后系统表现反而更差——这是最常见的坑之一。那截止频率到底“截止”的是什么得先把这句话掰扯清楚。一阶低通滤波器的幅频响应是频率越低信号越能原样通过频率越高衰减越大。截止频率 fc 的定义是增益下降到 -3dB也就是幅值衰减到约0.707倍的那个频点。注意这绝不意味着高于 fc 的信号就瞬间没了而是一阶滤波器只有20dB/十倍频程的滚降速度。也就是说如果 fc 是100Hz那么到了1000Hz幅值衰减到原来的1/10到了10kHz再衰减到1/10。所以如果噪声刚好在 fc 附近它只会被衰减3dB仍然实实在在留在信号里。理解这一点你就知道“选截止频率”的本质是在噪声抑制和信号保真之间找平衡。2. 公式谁都会背但物理意义和“10倍频”法则你得吃透2.1 RC滤波的截止频率到底怎么算一阶RC低通滤波器就是把电阻和电容串起来从电容两端取输出。它的截止频率公式是fc 1 / (2π × R × C)这个公式的推导可以从RC电路的阻抗分压来理解。电容的容抗是 1/(2πfC)当容抗恰好等于电阻值时输出电压的幅值就是输入的 1/√2约0.707对应-3dB这时的频率就是fc。所以本质上截止频率是电阻和电容的分界点而不是某种硬性切割。实际选型时要注意单位。R用欧姆C用法拉。如果电阻10kΩ电容100nF那 fc 1 / (2π × 10000 × 100 × 10⁻⁹) ≈ 159Hz。这个是硬件RC滤波。如果是软件滤波常见的一阶惯性环节写法是 y[n] y[n-1] α × (x[n] - y[n-1])这里的 α 和截止频率的关系不是线性的它和采样周期 Ts 有关。近似关系是 α ≈ 2π × fc × Ts前提是 fc × Ts 远小于0.5。假设采样率1kHz想要20Hz的截止频率Ts0.001s算下来 α ≈ 0.1257。当然这是近似值更严谨的做法是用双线性变换或直接做Z变换推导但对多数应用这个近似足够用。2.2 为什么大家都说“截止频率要离信号频率10倍远”这算是经验法则但也有理论依据。一阶滤波器在截止频率处就有3dB的幅值损耗——也就是信号已经衰减了约30%。如果你的信号频率正好卡在 fc 附近你可能连信号的真实幅值都测不准。而截止频率低于信号频率10倍时衰减已经降到很小相位滞后也不明显信号保真度基本能满足大部分工程要求。相位滞后这件事经常被忽略却往往是最致命的。一阶低通在 fc 处的相位滞后是45度在10倍 fc 处大约是5.7度在0.1倍 fc 处不到0.6度。如果你做的是实时控制比如电机电流环、PLL锁相环几度的相位滞后可能就导致系统不稳定。我做过一个电流采样滤波用了截止频率1kHz的低通去滤开关噪声采样频率20kHz结果电流环相位裕度大幅下降波形开始振荡。后来把截止频率提到5kHz噪声虽然多一点但系统稳定了总比高速振荡强得多。所以控制环路的滤波器截止频率不是越低越好要考虑环路相位预算。另一个常见的误区是“截止频率越高滤波效果越好”——这句话只对了一半。截止频率越高越多的噪声会被放进来但截止频率太低信号本身也会被衰减。信号和噪声的频谱如果隔得近一阶滤波是救不了的因为这玩意儿滚降速度太慢。这个时候你该考虑二阶、巴特沃斯甚至自适应滤波。3. 选截止频率前先分析你的信号和噪声频谱3.1 信号最高频率怎么定别凭感觉去看频谱选截止频率的第一步不是找公式而是搞清楚信号本身的频率成分。从我实际操作的经验来看最直接的办法是先抓一段数据做FFT频谱分析。不管用MATLAB、Python的numpy还是单片机上移植个简易FFT都行。你让系统实际跑起来采一段有代表性的信号看看频谱里哪些峰是真实信号哪些峰是噪声然后再决定把 fc 放在哪个频段。有一次我做振动监测传感器输出里有一个大约30Hz的振动峰这是真正的信号同时电源引入了120Hz的纹波分量。这个时候如果你把 fc 设在50Hz看似不错但120Hz的噪声被衰减得不够干净因为一阶滤波在120Hz处相对30Hz只多了不到12dB的衰减。后来我把 fc 设为15Hz30Hz信号衰减了约3dB但120Hz噪声被压得更狠再用软件做幅值补偿整体效果才算能接受。如果你的信号本身是方波或PWM那情况又不一样了。方波的有效信息其实由基波和谐波组成要保留方波的“方”不但基频要留直到5到10次谐波都得留那截止频率就得比基频高一个量级。反过来如果只是测幅值、看趋势那就没必要管谐波按基波频率的1/10到1/3去选就够了。3.2 噪声来源不同截止频率命运完全不同分析完信号再分析噪声。噪声不是只有一种不同来源的噪声频谱差异很大你的 fc 要针对“最顽固”的那部分噪声去打。白噪声/宽频噪声这类噪声均匀分布在整个频段唯一能靠低通压制的方法就是把 fc 尽量压低。但是压低 fc 会拖慢响应速度所以这是典型的分母博弈。特定频点噪声50Hz工频、开关频率及其谐波先用陷波器或者同步采样会更合适单纯靠低通会误伤有效信号。但如果你就是不想加陷波器那一阶低通只能在高于这个频点一定距离处设置 fc利用滚降来衰减。比如50Hz工频你把 fc 设在10Hz那50Hz处能衰减约14dB但对于大多数场景并不够干净。高频尖峰/毛刺这类噪声能量集中在很高的频段比如开关电源的dV/dt尖峰这时候 fc 不用特别低只需避开信号频率和尖峰频率之间的空间即可。比如信号10Hz噪声100kHz那把 fc 设在100Hz到1kHz之间都能把100kHz衰减得非常彻底一阶滤波滚降虽然只有20dB/十倍频但十倍频程多来几个衰减就非常可观了。记住一句话你把 fc 放在噪声比较集中的频段以下但又不能低于信号频率的3到10倍这个区间才是你的可选范围。区间大小取决于信号与噪声之间的频谱间距。4. 实战流程从计算到验证手把手走一遍4.1 一套可复用的截止频率选型步骤下面这套流程是我自己摸索出来的基本能覆盖大多数一阶低通滤波的选型需求不管硬件还是软件都能套用。采集一段最恶劣工况下的原始信号就是噪声最大、信号最真实的那个状态。采样率要足够最好至少是信号频率的20倍以上采样点数要多做过零分析或FFT才靠谱。做频谱分析。看两个东西信号能量集中在哪个频段噪声能量集中在哪个频段。把两者的交叠区域标记出来。如果交叠严重一阶低通可能根本不够用劝你早点换方案。估算你能接受的信号衰减上限。比如应用要求信号幅值误差不超过5%那对应的一阶低通衰减频率不能超过约0.1倍fc因为一阶低通在0.1倍fc处衰减不到1%。如果只要求趋势误差不超过20%那频率可以放到0.5倍fc左右。估算相位滞后上限。如果是控制环路参考相位裕度分配如果是普通数据采集暂时可以忽略但仍建议控制在10度以内。选定 fc。范围是 max(信号频率×3, 噪声最低频率的0.1到0.3倍) 再兼顾相位预算做微调。实在没有明确的噪声频谱边界就选信号频率的10倍再向下试探看噪声能否被压下去。实测验证看滤波后的信号形状有没有明显失真、幅值有没有明显减小、噪声是否降到可接受的程度必要时用阶跃响应看响应时间是否满足要求。如果不行就反复调整直到找到平衡点。4.2 硬件RC和软件滤波的参数计算示例举一个完整的例子。假设你做一个电池电压采集信号本身是一个大约10Hz以内的缓变电压噪声是开关频率100kHz的纹波。硬件上用RC低通要求纹波衰减至少到原来的1%同时10Hz信号幅值损失不超过1%。10Hz信号幅值损失不超过1%也就是在10Hz处增益要大于0.99。一阶低通幅频响应是 1 / √(1 (f/fc)²)要让 f10Hz时增益为0.99解得 fc ≥ 10 / √(1/0.99² - 1) ≈ 70Hz。取整选75Hz。100kHz纹波衰减到1%也就是增益0.01则 1 / √(1 (100000/fc)²) 0.01解得 fc ≈ 1000Hz。也就是说 fc 要低于1000Hz才能满足100kHz衰减到1/100。两个条件要同时满足取 75Hz fc 1000Hz通常选一个几何中心比如300Hz左右这样10Hz信号只衰减0.05%100kHz纹波衰减约1/333远好于1%。然后根据 fc300Hz 去选RC值R10kΩC1/(2π×10k×300) ≈ 53nF取标准值47nF实际 fc ≈ 338Hz也还在范围内。这种取法非常实用先算电阻再确定电容电阻取值尽量在kΩ级别电流驱动能力、热噪声都还能接受。如果是软件实现那就简单了。采样率Fs1kHz想选 fc10Hz用近似公式 α ≈ 2π × 10 / 1000 ≈ 0.0628。用这个α做一阶IIR滤波即可。但要提醒一下如果你用的采样率变了α必须重新算这个近似公式的前提是 fc Fs如果 fc/Fs 超过0.1建议直接用双线性变换或查表。4.3 阶跃响应和调整技巧如何判断“滤波变迟钝”到底可不可接受这个在工程里比频谱分析更直观。你把输入接一个阶跃信号比如从0跳到满量程然后在输出端看波形爬升到63.2%的时间——也就是时间常数 τ 1/(2πfc)。fc越低τ越大响应越慢。如果你的系统要求阶跃后100ms内稳定到95%以内那可以算一下-ln(0.05)/(2πfc) 0.1s解得 fc 4.8Hz。再结合噪声抑制要求便能压缩出一个可接受的范围。这里说一个我踩过的坑以前做IMU姿态解算为了滤掉高频振动我把截止频率一路降到2Hz结果实际飞行时姿态响应整整慢了接近200ms飞控调整特别迟钝一度以为是PID参数问题。后来检查发现滤波器时间常数已经远远超过了系统的控制周期和运动带宽等系统反应过来误差已经积累到离谱了。后来我把截止频率提高到15Hz姿态响应快得多高频振动靠后续的互补滤波来补。滤波器不是放到系统里就不管了它本身也是系统动力学的一部分一定要跟整个闭环的带宽做匹配。5. 不同应用场景的截止频率选择经验区间不同应用里信号和噪声差异太大了我给一个基于实际工程的经验参考表但只做起点不要当万能公式。尤其是传感器类型、线路阻抗、采样率变化时对应区间的偏移可能非常大。应用场景典型信号频率常见噪声源一阶低通截止频率参考区间备注室温/环境温度采集0.01~1 Hz50Hz工频、电源噪声0.1~5 Hz响应要求极低可以放心压低电池电压监测0.1~10 Hz开关纹波几十kHz~MHz10~500 Hz根据纹波衰减目标选fc电机相电流采样1~1000 Hz基波PWM开关噪声10~20kHz1~5 kHz控制器带宽要高于电流环需求音频信号采集20 Hz~20 kHz电磁干扰、电源噪声20~30 kHz一般不滤高频成分按奈奎斯特设IMU/加速度计0.1~50 Hz姿态振动可达几百Hz机械振动、电磁干扰10~100 Hz根据运动带宽和振动频谱取舍血压/呼吸等医学信号0.05~10 Hz工频、肌电干扰5~30 Hz需要权衡脉搏波细节保留表格里的数字是参考起点不是终点。我见过测量电池电压用0.1Hz滤波的也见过电流采样用100kHz RC滤波的主要滤射频噪声关键还是回到信号分析和响应速度需求这两个核心约束上。再说说传感器输出阻抗这一个隐蔽问题。有些传感器输出阻抗很高比如pH电极、压电传感器如果你直接接RC滤波电阻和传感器内阻会分压不仅影响截止频率精度还可能导致信号直流偏置异常。这种情况建议先去缓冲器电压跟随器再做滤波。同理RC滤波后接ADC时ADC的采样电容会在采样瞬间抽取电荷也相当于一个并联阻抗会改变实际截止频率。最好在RC后面加一个运放跟随或者把ADC采样率提高再软件平均。6. 常见错误、坑点与排查技巧6.1 一个表格看清你容易踩哪些雷问题现象根本原因解决方向截止频率设太高噪声还是很多波形毛刺fc 离噪声太近衰减不够看频谱把 fc 往噪声左侧压低截止频率设太低信号严重滞后、幅值变小fc 低于或接近信号频率提高 fc或改用更高阶但延迟可控的滤波器信号频率刚好等于 fc幅值掉到0.7相位滞后45°违背3~10倍频法则把 fc 至少提到信号频率3倍以上RC值选错导致 fc 严重漂移实测和理论对不上传感器内阻、ADC采样电容并联加缓冲器用高精度阻容软件滤波 α 没随采样率调整换了采样率后曲线异常α 和 Ts 强相关每次改采样率都重算 α只滤了一个环节后续依然脏滤波后还有周期噪声噪声是多来源叠加逐段查噪声来源区分传导和辐射一阶滤波压不住宽带噪声怎么调都两难滚降不够陡信号和噪声频带重叠上二阶低通或Notch滤波器或锁相采样6.2 用“先看频谱再调截止频率”代替瞎蒙如果只给你一个建议那就是不要跳过频谱分析这一步。我见过太多人在没有看频谱的情况下盲目选fc最后全靠运气调。现在的工具链已经很便宜了几百块钱的逻辑分析仪或者示波器带FFT或者直接用Python读串口数据做fft都行。你不需要分析出所有细节只要能分辨出信号峰和噪声峰的大致位置就行。有了这个基础选fc最多花十分钟而且每个改动都有依据出问题也容易排查。另外有个小技巧我经常用把原始信号和滤波后的信号画在同一个图里肉眼观察。如果滤波后信号在幅值上明显变小大概率fc压太低如果噪声减少但波形形状依然扭曲可能是相位失真导致考虑增大fc或用零相位滤波离线处理时来解决。这个方法虽然简单但在工位上调试的时候省了很多时间。6.3 关于“升级为多阶滤波”的一点个人看法一阶滤波结构简单、计算量小但它最大的短板就是滚降只有20dB/十倍频程。如果噪声源离信号源只有2到3个倍频程的距离一阶滤波基本无法两全。这种情况下我的个人选择是能用一阶的优先用一阶因为稳定、直观、好调试实在不够再上二阶。二阶巴特沃斯低通在截止频率附近更平直滚降是40dB/十倍频程可以更狠地压噪声。但代价是相位滞后变成90度二阶在fc处对控制环路压力更大而且Q值选择不对会产生共振峰。软件实现二阶IIRBiquad也很简单但系数计算需要一点信号处理基础。如果只是类似ADC数据平滑这种对相位不敏感的应用一阶绝对够用如果是闭环控制我用过多次之后还是觉得优先尝试调高fc而不是直接换高阶滤波——因为高阶滤波器把相位预算吃掉后系统稳定性往往更难搞。7. 从“会算截止频率”到“会定截止频率”算 fc 是小学数学定 fc 是工程学。前面写了这么多核心观点就一句话截止频率不是一个孤立的电子参数它是信号保真、噪声抑制、系统响应速度和相位稳定性四个维度交叉妥协出来的结果。每次选型前强制自己回答四个问题信号最高频率是多少噪声主要分布在哪个频段这个应用允许多大的信号幅值误差系统允许多大的相位延迟这四个问题回答完fc 的合理区间基本就锁定了。最后分享一个我自己一直在用的调参套路。第一次选 fc 时故意选得偏高一点然后逐步往下压每压一次就做一次阶跃响应测试和频谱对比。这样你能直观地看到“噪声变干净”和“信号变迟钝”之间是怎么此消彼长的。很多人喜欢一次到位直接选个很低的值结果信号像拖了条尾巴还得回头排查。耐心一点从高到低压下来你对自己系统的脾气会摸得特别准。