☰
基于Sallen-Key的1kHz巴特沃斯二阶有源低通滤波器设计
2026/9/28 13:58:23 网站建设 项目流程

做音频前端或者传感器信号调理的朋友,应该都遇到过这种场景:信号里混着一堆高频噪声,随手拉一个一阶RC低通,结果发现带外衰减“软绵绵”的,过了截止频率之后噪声还是漏过去大半。我之前调一块ADC前级板子时,就被这个-20dB/dec的滚降速度折磨得够呛——想把高频多压一点,就只能把截止频率越压越低,最后连有效信号都被削掉。后来换成二阶有源低通滤波器,带外衰减直接到-40dB/dec,整个频率规划才松绑。这篇文章就把我从公式推导、Sallen-Key拓扑选择、元件取值,到LTspice仿真和实物测试的完整过程记录下来,给正在做滤波、抗混叠或噪声抑制的朋友一个可以直接抄作业的1kHz巴特沃斯方案。

1. 为什么一阶不够用:滚降速率与二阶的意义

1.1 一阶RC低通的固有短板

一阶RC低通是最常见的入门电路,一个电阻串在信号路径上,一个电容对地泄放高频,传递函数是:

[ H(s)=\frac{1}{1+sRC} ]

截止频率 ( f_c=\frac{1}{2\pi RC} ),超过截止频率后,增益以每十倍频程20dB的速率衰减。听起来没什么问题,但实际用起来就会发现很尴尬:如果我把截止频率设计在1kHz,那10kHz处的衰减只有大约-20dB,100kHz处才到-40dB。换句话说,一个1mV的白噪声信号,在10kHz处还能剩下0.1mV,对于很多高精度采样系统来说,这个残余噪声依然是不可接受的。

做ADC抗混叠的时候这个短板更明显。假设采样率是48kHz,那奈奎斯特频率是24kHz,我通常希望在进入ADC之前,24kHz以上的噪声至少被压掉50dB。用一阶低通要实现这个目标,截止频率必须压到100Hz左右,这会把大量有效信号也同时干掉,完全不可用。所以一阶RC只适合做“把高频毛刺稍微压一压”的辅助网络,真正要让频率带外干净,必须上二阶甚至更高阶。

1.2 二阶低通引入的Q值是个新玩法

二阶低通滤波器的标准传递函数可以写成:

[ H(s)=\frac{\omega_0^2}{s^2+\frac{\omega_0}{Q}s+\omega_0^2} ]

(\omega_0) 是固有角频率,对应我们常说的截止频率附近的特征位置;(Q) 是品质因数,它直接决定极点是一对实极点还是一对复共轭极点。这个 (Q) 值就是二阶滤波器比一阶复杂、也更好玩的地方。

(Q=0.707) 是巴特沃斯响应,通带内最平坦,在截止频率处正好是-3dB,这是绝大多数通用滤波场景的默认选择。(Q=0.5) 时两个极点都在实轴上,响应像两个一阶低通串联,滚降虽然也是-40dB/dec,但过渡带比较软。(Q>0.707) 之后,频率响应在截止频率附近会出现上冲峰值,(Q) 越大峰值越高,意味着对某个窄带频率有“放大”效果,但也会带来振铃和相位突变。

我整理了一个不同Q值下的关键表现:

Q值截止频率处增益响应特点典型应用
0.5-6dB两个实极点,无过冲,滚降平缓需要无过冲的低通
0.707-3dB最大平坦,巴特沃斯响应通用滤波、抗混叠
1.00dB有约1-2dB峰值,过冲较明显需要提升截止频率附近增益
2.0+6dB峰值明显,振铃大不常用,易自激

初学的时候容易踩一个坑:以为“把Q调大一点,过渡带会更陡”。其实二阶滤波器的滚降斜率永远是-40dB/dec,Q只影响转折点附近的形态,不影响远端斜率。所以做频率规划时要先决定是巴特沃斯还是贝塞尔还是切比雪夫,而不是盲目调Q。

1.3 有源化的本质是解决加载问题和增益问题

无源二阶低通也可以做,用两个RC级联,或者用LC谐振结构。但RC级联有个致命问题:第二级RC会反过来给第一级加载,直接改变截止频率,设计公式变得很难算;LC结构在低频频段需要很大的电感,体积和成本都不现实,所以有源滤波器几乎是低频低通唯一实用的方案。

有源化的本质是,用运放把前后级隔离开,让两个储能元件的相互作用只由电路本身决定,不再随负载变化。而且运放还能顺便提供增益,比如MFB结构可以精确设定直流增益,我的这个Sallen-Key方案也可以把增益做到1倍、2倍或者更高。代价是运放本身有带宽限制、有噪声、需要供电,这些在后面选型时都要纳入考虑。

2. 拓扑选型:Sallen-Key还是MFB,我的选择逻辑

2.1 两种常用拓扑的对比

做二阶有源低通,绕不开Sallen-Key和MFB两个结构。Sallen-Key是同相拓扑,信号从运放同相端进,输入阻抗很高,电路结构是“两个电阻加两个电容加一个运放”;MFB是反相拓扑,输入信号经电阻进入运放反相端,增益和频率参数都可以通过电阻比例精准控制。

对比项Sallen-KeyMFB
输入信号相位同相,不反转反相,输出相位反转180度
直流增益由运放反馈网络决定,单位增益时最简洁由R2/R1比例精确决定
对元件敏感性元件比例影响Q,需要用精度高的配对元件电容接在虚地点,对寄生电容不太敏感
运放要求单位增益时对运放GBW要求不高需要运放有足够开环增益和带宽
调整便利性调R或C比值即可改Q,比较直接增益调整和频率/Q调整互相关联
适用场景通用低通、音频、抗混叠需要精确增益或高Q场合

从表格可以看出,没有绝对谁好谁坏,取决于你更需要什么。MFB在需要精确增益或者对布板寄生敏感的高频场合有优势,Sallen-Key则在元件少、输入阻抗高、结构简单方面占优。

2.2 为什么这次用单位增益Sallen-Key

这个设计目标是做一个1kHz巴特沃斯低通,直流增益1倍就够用。我最终选了单位增益Sallen-Key,核心原因有两点。

第一,电路极简。运放接成电压跟随器,不需要额外的增益电阻,反相端直接连输出,整个滤波器只需要两个电阻和两个电容。对DIY和课程设计来说,少两个元件就少两个误差来源。

第二,设计公式在单位增益下会大幅简化。Sallen-Key的传递函数里,Q值公式中含有 ((1-K)) 的项,K=1时这项消失,Q只和R、C的比例有关,计算起来清楚很多。如果做2倍或3倍增益,还需要去凑K和RC比值,元件选择上反而别扭。

有一点必须提醒:单位增益Sallen-Key默认只能输出1倍直流增益,如果你需要放大信号,要么改成非单位增益Sallen-Key,要么在滤波后面再加一级放大。我自己做ADC前端时,通常把滤波放在放大之后,所以这个限制对我没有影响。

2.3 运放怎么挑:GBW、噪声和电源一个都不能少

很多人仿真时喜欢用理想运放,仿真通过后一到实物就发现响应变形,最常见的原因是运放带宽不够。运放不是理想的,它的开环增益会随频率滚降,在滤波器高频段,运放的实际增益不足,就会让幅频特性比理论值来得更早、更陡,看起来像截止频率偏移或Q值被拉低。

工程上有个经验值:运放的增益带宽积GBW最好是滤波器截止频率的50到100倍以上。我这个滤波器截止频率只有1kHz,所以即使LM358这种GBW只有1.2MHz的运放也勉强够用。但如果你把截止频率放到100kHz,GBW只有1.2MHz的运放就会明显拖后腿,至少需要10MHz以上的型号。

我这次对比过几款常用运放:

运放GBW输入类型噪声特性适不适合这个电路
LM3581.2MHz双极性噪声偏高低频凑合用
TL0723MHzJFET中低噪声很适合,偏置电流极小
NE553210MHz双极性低噪声很好,但输入偏流较大
OPA21348MHzFET低噪声低失真音频优选

我最后用TL072,主要看中它输入偏置电流极小,这样电路里10k级别的电阻上几乎不会产生直流偏置误差。如果你手头只有NE5532,1kHz截止频率下也完全没问题,只是要注意给反向输入端的偏置电流留出直流通路。

3. 设计实例:1kHz巴特沃斯滤波器的理论计算

3.1 指标分解

首先明确设计指标:

  • 截止频率 ( f_c = 1kHz )
  • 响应类型:巴特沃斯,( Q = 0.707 )
  • 直流增益:1倍(0dB)
  • 带外衰减:理论斜率 -40dB/dec
  • 运放:TL072或性能相近的通用运放

这组指标用在音频带外噪声抑制、传感器信号平滑、ADC抗混叠都够用。如果后续需要更陡的衰减,可以把这个二阶节级联成四阶,每节都用同样的计算方法。

3.2 从传递函数到元件公式

单位增益Sallen-Key低通的电路连接是这样的:输入信号经 (R_1) 接到节点A,(R_2) 从节点A接到运放同相端B;C1从B点直接落地,C2从运放输出端反馈回节点A。因为运放接成跟随器,同相端电压等于输出电压,所以实际上 (R_2) 和 (C_2) 是并联形式接在A点和输出之间。这个连接方式看起来有点绕,但正是C2构成的反馈让传递函数变成真正的二阶。

在理想运放假设下,这个电路的传递函数为:

[ H(s)=\frac{1}{1+s(R_1+R_2)C_1+s^2R_1R_2C_1C_2} ]

和标准二阶形式对比,可以求出:

[ \omega_0=\frac{1}{\sqrt{R_1R_2C_1C_2}} ]

[ Q=\frac{\sqrt{R_1R_2C_1C_2}}{(R_1+R_2)C_1} ]

为了让设计简单,我令 (R_1=R_2=R),这样Q值公式变成:

[ Q=\frac{1}{2}\sqrt{\frac{C_2}{C_1}} ]

要得到 (Q=0.707),只需要让 (C_2=2C_1)。这个结果非常直观,Q值只取决于两个电容的比值,和电阻的绝对值无关。电阻的作用只是整体平移截止频率。

此时截止频率:

[ f_c=\frac{1}{2\pi R\sqrt{C_1C_2}}=\frac{1}{2\pi \sqrt{2} R C_1} ]

3.3 实际取值计算与标称值选择

取 (C_1=10nF),(C_2=20nF),代入公式:

[ R=\frac{1}{2\pi \sqrt{2} \times 1k \times 10nF} \approx 11254\Omega ]

最接近的E96系列标称值是11.3kΩ,用这个值反推截止频率:

[ f_c\approx\frac{1}{2\pi \sqrt{2} \times 11.3k \times 10nF}\approx997Hz ]

和1kHz只差0.3%,完全可以接受。

我再列几个不同容值的搭配方案,方便手头有料的人直接换:

方案C1C2R(理论)R(标称)实际fc
A(推荐)10nF20nF11.25kΩ11.3kΩ约997Hz
B22nF47nF4.95kΩ4.99kΩ约1013Hz
C100nF200nF1.125kΩ1.13kΩ约997Hz

方案C的电阻小、电容大,电路抗噪性能更好,但前级信号源要能驱动更大的电容负载;方案A的电容值居中,对大多数运放和前级都很友好,是我的首选。

电容选型上,强烈建议用C0G/NP0或薄膜电容,不要用X7R。X7R的容量会随直流偏压改变,而且不同批次的偏差可能超过-30%,实测出来的截止频率会严重偏离设计值。电阻用1%精度金属膜电阻,整体误差就能控制在±5%以内。

4. 仿真验证:LTspice从搭电路到读指标

4.1 电路搭建与仿真设置

我习惯用LTspice做这个电路的仿真,免费、跨平台,而且网表格式方便分享。原理图连接按上面说的来:输入接R1,R1另一端接A点,R2从A点接到运放同相端B点,C1从B点落地,C2从输出端接回A点,运放反相端直接接输出。

为了让仿真尽量接近真实,我不会用理想运放,而是用LTspice里的UniversalOpamp2模型,把GBW设成10MHz,这样能看出运放带宽对高频响应的潜在影响。核心节点关系大致是这样:

V1 in 0 AC 1 R1 in A 11.3k R2 A B 11.3k C1 B 0 10n C2 A out 20n XU1 B out VCC VEE out UniversalOpamp2 VCC VCC 0 5 VEE VEE 0 -5 .ac dec 100 10 50k .end

仿真前把AC振幅设成1,也就是0dB基准。扫描范围我通常从10Hz扫到50kHz,覆盖100倍截止频率,足够看清过渡带和前几倍频程的衰减速度。

4.2 AC扫描:-3dB点和Q值怎么读

运行AC分析后,幅频曲线低频段是一条平直的0dB线,过了几百Hz开始弯曲,接近1kHz时明显转折,之后以很陡的斜率下滑。用LTspice的游标读取-3dB点,应该在1kHz附近。如果用的是11.3k电阻,实际读数约997Hz。

这个电路有两个特征要重点看。

第一,看通带平不平。巴特沃斯响应在1kHz以内应该非常平坦,如果曲线上出现凸起,说明Q值明显大于0.707,可能是C2相对C1太大了,或者是运放建模不理想造成的峰化。

第二,看带外斜率。在10kHz附近测一下,增益应该在-40dB左右;到100kHz附近,应该接近-80dB。如果斜率明显不足,比如只有-20dB/dec,那很可能是某个电容或电阻没有接对位置,C2并没有真正参与反馈。

相位响应也可以顺带看一眼。一阶低通在截止频率处相移是-45度,二阶则是-90度,频率足够高时趋向-180度。如果相位曲线在1kHz处不是-90度左右,说明实际极点和设计值有偏差。

4.3 参数步进扫描:元件容差对响应的影响

仿真阶段最能体现实战价值的操作是参数步进扫描。我通常会做两个扫描。

第一个是扫描电阻,模拟电阻容差:

.step param R list 10k 11.3k 12.7k

电阻从10k变到12.7k时,整条幅频曲线左右平移,截止频率跟着变,但Q值几乎不变。这说明电阻绝对值只影响频率定位,不影响响应形态,如果你的阻值差一点,只需要微调到目标频率,不需要重新设计。

第二个是扫描C2,模拟电容容差:

.step param C2 list 18n 20n 22n

C2从18nF变到22nF时,Q值会从大约0.66变到0.75,同时截止频率也会轻微偏移。这个仿真结果提醒我,电容配对的一致性比绝对容值更重要。尤其是C1和C2不能用两种不同介质,否则温度漂移方向不同,Q值会随温度乱飘。

4.4 瞬态响应:方波过冲和阶跃振铃

频域指标满足要求后,还要看时域表现。滤波器的频率响应和瞬态响应是同一个东西的两面,Q值越高,频域越“尖”,时域越容易有过冲和振铃。

我在输入加一个1kHz方波,幅度1V,看输出波形。Q=0.707的巴特沃斯响应,方波边沿处会有大约4.3%的过冲,这是正常现象,不是电路出错。如果把C2加大让Q变成1,过冲会明显增大到10%以上,波形尾部还能看到衰减振荡,这就是频率响应出现峰值在时域上的体现。

对ADC前端来说,过冲问题必须关注。如果ADC的满量程是3V,而滤波器输出有10%过冲,信号幅度就需要保守设置,否则会提前削波。这也是为什么我不会盲目追求高Q的原因。

5. 从仿真到实物:PCB布局与实测踩坑

5.1 供电、偏置与去耦

实物调试前先解决供电问题。这个电路用双电源最省事,我直接用±5V给TL072供电,同相端电压就是0V,输入输出都不用加隔直电容。如果你手上只有单电源5V,那必须在同相输入端加一个Vcc/2的偏置电压,输入和输出都串联隔直电容,这个偏置网络会和滤波器本身的输入阻抗形成高通效应,实际低频截止点要单独计算。

电源去耦不能省。每个运放电源脚对地放一个0.1uF的C0G电容,电容要尽量贴近电源引脚;板子电源入口处再放一个10uF电解电容。如果去耦不到位,高频段会出现莫名其妙的毛刺或自激,尤其是TL072这类结型场效应管输入运放的电源抑制比在高频并不算好。

布线方面,R1、R2和C2组成的反馈网络要尽量靠近运放输入引脚,反馈节点不要拉得太长。C2属于正反馈路径,走线寄生电容会间接改变Q值,高速情况下可能让滤波器边缘出现峰化。

5.2 电容介质和电阻精度的影响

实物和仿真不一致,第一位元凶就是电容。我早期用过X7R电容做C1和C2,实测截止频率和仿真差了将近10%,还把原因怀疑到运放头上。后来换成C0G电容,偏差立刻回到2%以内。C0G电容在音频和低频滤波里没有明显的电压系数和频率系数,是做精密滤波器最稳妥的选择。

电阻精度上,1%金属膜电阻足够。如果你手头只有5%的碳膜电阻,注意四个元件都要测一下实际值,尤其是R1和R2的对称性。R1和R2不相等时,Q值公式会稍微偏离我的简化式,但只要阻值接近,影响并不大。

有一种情况容易忽略:信号发生器或者后级负载会改变滤波器响应。比如示波器探头本身有十几pF的输入电容,直接点在高阻抗节点上就会改变滤波特性。TL072同相输入端B点的阻抗不低,如果测试探头直接夹在运放同相端,B点对地寄生电容会并联到C1上,导致截止频率偏移。我实测时会用低电容探头,或者干脆在输出端测量,不要随便在内部节点上挂探头。

5.3 实测与仿真偏差的排查顺序

如果实测曲线和仿真对不上,别急着怀疑运放,按下面顺序排查:

现象大概率原因处理办法
截止频率整体偏低C1或C2容值偏大、X7R偏压效应、探头电容换C0G电容,测元件实际值
截止频率整体偏高容值偏小、信号源输出阻抗分压确认信号源阻抗,用高阻输入
截止频率处出现峰值Q偏大,C2相对C1太大减小C2或增大C1
高频段衰减不足或出现毛刺运放GBW不足、C2反馈断线换更高GBW运放,检查焊点
输出直流偏置异常运放偏置电流、偏置电阻开路用JFET输入运放,检查偏置网络

有一个比较隐蔽的坑是信号源输出阻抗。很多信号发生器的输出阻抗是50Ω,如果你的滤波器输入没有做阻抗匹配,直接接上去,50Ω会和R1组成一个分压网络,不仅降低输入幅度,还会稍微改变截止频率。我的做法是在信号源后面加一级缓冲器,或者至少把信号源幅度读准后再算衰减量。

5.4 没有网分也能测的土办法

很多人问,没有网络分析仪怎么测滤波器的幅频特性。其实用信号发生器和示波器就能完成基础验证。信号发生器从100Hz开始,以对数步进扫到50kHz,每步记录输出峰峰值,然后把数据描点连线,就能看到近似Bode图。

操作时注意几点:信号幅度不要太大,我习惯用100mV到500mV的正弦波,避免运放接近摆幅极限;每扫到一个频点要等波形稳定再读数,尤其是接近截止频率时,滤波器会有建立时间;输出读数用示波器的峰峰值或RMS测量功能,不要靠肉眼估。

如果用示波器的X-Y模式,X轴接信号源、Y轴接滤波器输出,还能直接看到李萨如图形,通过椭圆形状粗略判断相位变化。这个方法虽然精度不高,但用来验证“有没有正常工作”绰绰有余。

最后再分享两个小技巧

这个滤波器后来被我用到ADC前级做抗混叠,实测效果比一阶方案干净太多。一个心得是,如果后级ADC的采样率只有48kHz,巴特沃斯二阶在24kHz处只有大约-30dB左右的衰减,不够的话不要硬压截止频率,而是考虑把两级二阶级联成四阶,或者提高采样率,否则有效信号会先被压坏。

另外一个偷懒技巧:想把滤波器改成贝塞尔响应也没问题。巴特沃斯的Q=0.707,贝塞尔通常用Q≈0.577,只要把C2和C1的比值从2改成大约1.33,电阻公式再重新算一遍就行。同一块PCB上留好C2的位置,焊不同容值就能切换响应类型,做实验对比特别方便。设计滤波器最怕的就是只算完公式就收工,实际焊接测试一遍,很多书本上不讲的坑自然就明白了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询