☰
二阶有源低通滤波器设计:Sallen-Key拓扑从计算到实测
2026/9/28 1:38:30 网站建设 项目流程

从“为什么二阶有源低通这么经典”聊起。每次带课程设计或者帮朋友调板子,只要碰到信号调理、音频处理、传感器去噪,最后几乎都会绕回到这个电路上。模电里滤波器拓扑很多,但二阶有源低通几乎是绕不开的坎——它既是理解高阶系统的基础,又是实战中最容易调出问题的电路之一。这篇文章把Sallen-Key拓扑的二阶有源低通滤波器的设计、计算、实测和优化一次说透,适合正在学模电的学生、刚入门硬件设计的工程师,以及所有被滤波器“毛刺”“峰包”“自激”折磨过的人。

1. 先从一阶说起:为什么非得上二阶

1.1 一阶滤波器的衰减斜率与相位滞后

一阶RC低通大家都会算,截止频率(f_c = 1/(2\pi RC)),超过截止频率之后幅频特性以-20dB/dec的斜率滚降。但在实际项目里,这个斜率远远不够用。举个例子:你做一个麦克风前级,信号频率大概是1kHz,但环境里有个20kHz的开关电源噪声,一阶低通在20kHz处只衰减了大约26dB。要是噪声幅度本身就大,这个衰减量根本压不下去,后级ADC的采样结果还是会乱跳。

更麻烦的是相位滞后。一阶低通在截止频率处引入45度的相位滞后,到了10倍频程处就已经接近90度。如果系统里有闭环控制,这个相位滞后会直接影响稳定性裕度,经常出现“滤波加了,系统反而自激振荡”的怪现象。所以很多时候,一阶滤波器只能用在“粗滤”或者“去直流偏置”的场合,要真正把某个频带外的干扰压下去,必须上二阶。

1.2 无源RC的负载效应,把“有源”逼上台面

有人会说,那一阶不够就多堆几级RC呗。但无源RC滤波器有个绕不开的痛点——负载效应。每一级RC的输出阻抗都不是零,后一级RC的输入阻抗也不是无穷大,两级级联之后,实际截止频率和理论计算值经常偏差很大。更麻烦的是,如果你想让滤波器带一个负载,比如直接接ADC的输入端或者后级放大器的输入端,负载阻抗会进一步“拉偏”滤波器的特性。

我当年第一次搭无源二阶RC滤波,计算截止频率是10kHz,结果接上后级电路实测变成了8kHz出头,幅频曲线的形状也变得不对称。后来才意识到问题就出在“负载效应”这四个字上。有源滤波器的核心思路,就是用一个运放做隔离缓冲,把滤波网络和负载彻底分开。只要运放不进入饱和、不超出共模输入范围,它的输出端就是一个近理想的电压源,你想带多少负载都行,滤波特性基本不受影响。

1.3 二阶的真实价值:斜率、Q值、以及“逼近理想”的自由度

二阶相比于一级的飞跃,除了从-20dB/dec变到-40dB/dec的斜率翻倍之外,更关键的是多了一个“品质因数Q”的概念。一阶RC电路的响应形状是固定的:-3dB处就是-3dB,没有别的选择。但二阶电路有两个独立的储能元件(通常是两个电容或两个电感),它们的能量交换关系允许你“塑造”频率响应曲线的形状。

Q值决定了截止频率附近的幅频特性形态:Q=0.5时是最平坦过阻尼;Q=0.707时是巴特沃斯响应,通带最平坦且没有峰起;Q=1时会产生一个明显的谐振峰;Q继续增大,峰越尖,甚至可能接近振荡。换句话说,二阶滤波器给了你三件事:更快的衰减、可调的响应形状、以及在“平坦度”和“陡峭度”之间的取舍自由。这种自由度是一阶电路永远给不了的,也是后续高阶滤波器的基本构成单元。

2. Sallen-Key拓扑:最经典的二阶实现方式

2.1 传递函数与f0、Q的对应关系

Sallen-Key拓扑最早由R.P. Sallen和E.L.Key在1955年提出,中文资料里也翻译成“萨伦-基”或“SK”型。它的优点很直白:用一个运放(通常是单位增益缓冲配置)、两个电阻、两个电容就能搭出一个完整的二阶低通。相比其他拓扑(如多重反馈MFB、双二阶Tow-Thomas),Sallen-Key用运放数量最少,元件精度要求相对宽松,所以在信号频率不是特别高的中低频段,它是首选。

先给出二阶低通的一般传递函数形式:

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

其中(\omega_0 = 2\pi f_0)是特征角频率,(Q)是品质因数,(K)是通带增益。对于单位增益Sallen-Key拓扑(也就是把运放接成电压跟随器),电路形式是两个电阻R1、R2和两个电容C1、C2组成的梯形网络,运放同相输入端接在R2和C2的交点,运放输出直接反馈回另一个电容C1和运放同相输入端之间的节点。

推完传递函数可以得到:

[ f_0 = \frac{1}{2\pi \sqrt{R_1 R_2 C_1 C_2}} ]

[ Q = \frac{\sqrt{R_1 R_2 C_1 C_2}}{R_1 C_1 + R_2 C_1 + R_1 C_2 \cdot (1-K)} ]

当K=1(单位增益)时,Q简化为:

[ Q = \frac{\sqrt{R_1 R_2 C_1 C_2}}{R_1 C_1 + R_2 C_1} ]

注意这几个公式里,f0和Q是互相关联的,改动任意一个电阻或电容,两个参数都会跟着变。这也是很多新手第一次设计Sallen-Key滤波器时最困惑的地方:调了半天电容,频率对了,Q值又跑偏了。

2.2 等值元件法的快速起步(以及它的Q值陷阱)

很多教材和课程设计题目会直接推荐“等值元件法”:取(R_1 = R_2 = R),(C_1 = C_2 = C)。代入上面的公式,会得到:

[ f_0 = \frac{1}{2\pi RC} ]

[ Q = \frac{\sqrt{R^2 C^2}}{R C + R C} = \frac{RC}{2RC} = 0.5 ]

Q等于0.5意味着什么?二阶系统处于临界阻尼,阶跃响应没有过冲,幅频响应在截止频率附近已经开始提前滚降。换句话说,用等值元件法做出来的滤波器,通带边缘并不平坦,-3dB频率其实比计算的(f_0)低不少。实测下来大概在0.64倍f0附近就已经掉了3dB,这跟很多教材里“等值法最简单”的表述之间,其实暗藏了一个坑。

等值法并不是不能用,它的优点是计算极其简单,适合在条件受限或者指标要求不高的时候快速搭一个能工作的滤波器。但如果你要做一个“通带平坦”的巴特沃斯响应,Q值必须等于0.707,等值元件法的Q=0.5就远远不够了。

2.3 不让Q值当甩手掌柜:设计前先定响应类型

“Q值到底取多少”不是拍脑袋决定的,它对应着不同的滤波器响应类型。实际工程里最常用的有三种:

巴特沃斯响应(最大平坦),Q=0.707。优点是通带内最平坦,没有纹波;缺点是滚降过程相对温和,相位非线性比较明显。适合大多数通用滤波场景。

贝塞尔响应(最大平坦群延迟),Q≈0.577。阶跃响应几乎没有过冲,相位线性度最好,方波通过之后能够保持形状。缺点是幅频滚降更慢,通带边缘牺牲更多。适合对波形保真度要求高的脉冲信号、数字音频时钟电路。

切比雪夫响应(等纹波),Q>0.707。通带内有固定的纹波量,但滚降极其陡峭。比如0.5dB纹波的切比雪夫二阶,Q值大约在0.96左右。适合对阻带衰减要求严格、可以接受通带纹波的信号分离场景。

所以,设计的第一步是问自己:我的信号对什么最敏感?如果是要“原原本本留住波形”,优先选贝塞尔;如果是“从噪声堆里捞信号”,切比雪夫更合适;多数普通通用场景,巴特沃斯是那个不出错的选择。

3. 完整设计实例:做一个80kHz的Butterworth低通

3.1 指标拆解与选择响应类型

直接给一个可以照着做的完整例子。假设我有一个传感器输出信号,有用信号带宽在80kHz以下,但电路板上有高频PWM噪声,需要把它滤掉。我定的指标是:截止频率(f_0 = 80\text{kHz}),采用单位增益巴特沃斯响应(Q=0.707),阻带-40dB/dec起步,尽量保证通带内最平坦。

为什么选巴特沃斯而不是切比雪夫?因为这个信号后续要进ADC做采样分析,通带内有纹波等于引入了幅度误差,后期校准非常麻烦。为什么不用贝塞尔?因为80kHz对相位线性度要求没那么极端,巴特沃斯的群延迟抖动虽然在截止附近稍高,但在我这个带宽内完全够用。

3.2 用等容法反推电阻,避免电容容差坑

Sallen-Key设计里,最常见的做法是先固定电容值,再反算电阻值。原因是电容的标准容值档位比电阻少得多(E12系列电容远不如E96电阻丰富),而且电容的误差、温漂、介质吸收特性都比电阻难搞。先定电容,意味着你被迫在“电容的标准档位”里做文章,避免最后算出一个买不到的非标电容值。

具体怎么选C?有一个经验法则:把滤波器特征频率(f_0)代入,选取电容阻抗与电阻阻抗尽量接近的范围内,也就是让(1/(2\pi f_0 C))落在几百欧到几十千欧之间。太大电阻的热噪声和偏置电流影响会上升,太小电容又可能被寄生电容干扰。

对于80kHz这个频率,我选了(C_1 = C_2 = 1\text{nF})(是E24系列里的标准值,常用而且精度容易买到)。然后根据巴特沃斯条件,查表或者计算可以得到单位增益Sallen-Key在这种“等容”约束下的两个电阻比例。为了篇幅不推一堆代数,直接给结论:

取(R_1 = R_2 = R)时Q值只有0.5,不够。要做巴特沃斯,需要让两个电阻不等。常见的设计表中,对于C1=C2=1nF、Q=0.707的情况,推荐:

[ R_1 \approx 1.414R_2 ]

但更严谨的做法是直接解方程组。由f0和Q的公式,固定C1=C2=C,可以得到:

[ R_1 = \frac{Q}{\pi f_0 C} \cdot \frac{1}{\sqrt{\frac{C_1}{C_2}}} = \frac{Q}{\pi f_0 C} ]

[ R_2 = \frac{1}{Q \cdot \pi f_0 C} \cdot \sqrt{\frac{C_1}{C_2}} = \frac{1}{Q \pi f_0 C} ]

把(Q=0.707)、(C=1\text{nF})、(f_0=80\text{kHz})代入:

[ R_1 = \frac{0.707}{\pi \times 80 \times 10^3 \times 10^{-9}} \approx 2810\Omega ]

[ R_2 = \frac{1}{0.707 \times \pi \times 80 \times 10^3 \times 10^{-9}} \approx 5630\Omega ]

就近取E96系列标准值:(R_1 = 2.8\text{k}\Omega),(R_2 = 5.6\text{k}\Omega)。因为电阻精度选1%的贴片,这个近取带来的偏差很小,实测影响可以忽略。

3.3 元件选型与噪声、误差预算

电阻方面,建议选金属膜或厚膜贴片,精度1%起步。温度系数(TCR)最好控制在100ppm/℃以内,如果你要做的是精密测量前端,可以选25ppm的。这里有一个容易忽略的点:普通贴片厚膜电阻的电压噪声和电流噪声都比较低,在中低频段基本不用太担心,但它们的热噪声是物理极限,(v_n = \sqrt{4k_B T R B}),在滤波器这种带宽受限的环境里影响通常可以估算一下。比如5.6kΩ电阻在常温、80kHz带宽内产生的等效输入热噪声大约是2.7μVrms,对多数信号链完全无所谓,但如果你后面接了高增益放大器,就不该忽略这个底噪。

电容选择更有讲究。我建议用C0G(NP0)材质的陶瓷电容,或者聚丙烯薄膜电容。C0G的容值随温度和电压变化极小,非常适合做滤波器的定时电容。X7R和X5R虽然容量大、便宜,但在直流偏置下容值会显著下降,而且温度变化大,信号幅度不同时容值也不稳定。很多滤波器“温度一变特性就漂”,八成就是电容选错了材质。

3.4 运放的GBW怎么选才够用

这是Sallen-Key设计里一个经常被低估的问题。单位增益Sallen-Key的运放虽然是电压跟随器接法,增益只有1,但它在反馈回路里要处理的是整个滤波器的环路特性。运放不是理想器件,它的开环增益是有限的,随着频率升高而下降。如果运放的增益带宽积(GBW)不够高,实际滤波器的截止频率、峰起高度、甚至Q值都会偏离设计值。

一个工程经验是:运放的GBW至少要大于滤波器特征频率的10倍,保守一点做到50到100倍更好。80kHz的信号,我选了GBW为50MHz级别的运放,比如OPA2134或TL072这种FET输入片子。为什么要求这么高?因为在f0附近,滤波器反馈回路对运放寄生了额外相移,GBW不足会让实际Q值变大,巴特沃斯就变成了带着峰包的高Q响应,这在时域上会出现明显振铃。

运放选型还需要看输入类型。对于高阻信号源,选JFET或CMOS输入级,输入偏置电流在pA级别,不会给高阻滤波网络引入明显直流误差;双极型运放的输入偏置电流在nA甚至μA级别,在几百kΩ的电阻上会产生不可忽略的直流压降。

4. 实测与调试:从仿真到焊板子之间的“现实鸿沟”

4.1 幅频特性测量:信号源+示波器的实用测试法

仿真里一切完美,不代表焊出来就是这么回事。实测一个二阶有源低通,最直接的设备就是信号发生器加示波器。扫频测幅值虽然笨,但信息量足够。

操作步骤是:信号源输出正弦波,幅度定在100mV左右(别太大,防止运放输出接近压摆率限制或者削波);示波器同时看输入端和滤波器输出端;从1kHz开始,每倍频程取几个点,记录输出峰峰值。把记录的数据点画在半对数坐标上,你就能看到完整的幅频曲线。关键频点要重点测:0.1f0、f0、2f0、4f0、10f0。特别是f0附近,要加密点数,因为Q值导致的峰起或者凹陷都集中在这里。

如果你有带以太网口的示波器或者能导数的仪器,直接把数据导到电脑里用Python或Excel画更省事。没有的话,纸笔记录也行,关键是测试时输入幅度要保持恒定,否则幅频曲线会被无意“调制”。

4.2 为什么仿真里好好的,焊出来却有峰包/衰减

这是所有滤波器设计者都会遇到的灵异事件。仿真结果明明是平坦的巴特沃斯,实测却多了一个几dB的峰包,或者通带提前衰减。原因按出现概率排序,大概是这么几个:

第一,运放GBW不够。前面提到过,GBW不足会让滤波器实际Q值升高,峰包就会冒出来。

第二,电容实际值偏了。你焊上去的“1nF C0G”标称值是1nF,初始容差±5%,温度一变还会再漂。两个1nF的位置不一样,实际Q值的偏移就很明显。这里也解释了为什么Sallen-Key设计里,C1靠近输入、C2靠近运放输出的角色不能随便互换——它们在传递函数里的位置不对称。

第三,面包板或飞线寄生参数太大。面包板的每列节点之间平均有2到5pF的寄生电容,线一长还有寄生电感,80kHz这种频率虽然不算高,但寄生参数叠加在1nF的电容旁边,等效于给Q值增加了不确定性。所以测试高频一点的滤波电路,尽量用焊接的洞洞板或者在PCB上验证,面包板只适合粗略看个趋势。

第四,测量探头的输入电容。示波器探头通常有10pF到15pF的输入电容。如果你把探头直接点在滤波器的输出节点上,这个电容会和输出阻抗形成一个额外极点,高频响应被压低。普通1x探头甚至可能有50pF以上电容,对几百kΩ输出阻抗的滤波器来说完全是破坏性的。解决办法是探头打到10x档,或者用有源差分探头,同时确认探头补偿校准过。这算是一个特别基础但也特别容易被忽略的坑。

4.3 PCB布局的三条硬规矩

如果要正经做板子,滤波器的PCB布局有几条硬规矩。信号路径要短而直,反馈线(运放输出回到C1)不能绕远路,反馈线一旦长了,寄生电感会同反馈电容形成意外谐振,等于在电路里多塞了一个LC串联回路。

地平面要完整,不要在滤波器下方开槽、走电源线。C1、C2的地端尽量就近打孔接到地平面上,这样两个储能元件的回流路径最短,环路面积最小。

电源退耦不能省。运放的电源脚到地需要放0.1μF陶瓷电容,靠近引脚放置。有源滤波器的运放在处理高频信号时,电源电流里会携带信号成分,退耦不好就等于把信号通过电源网络又耦合回了输入端。

4.4 高压摆率限制导致的失真现象

滤波器处理的是“频域”任务,但输入信号最终还是要以“时域”波形呈现的。如果输入信号的上升沿特别陡,或者幅度特别大,运放的压摆率(SR)会限制输出电压变化的最大速度,输出波形会出现梯形失真,表现在频谱上就是谐波分量暴增。

压摆率和GBW是两个不同的底盘。GBW决定小信号带宽,压摆率决定大信号瞬态响应。设计时用公式粗略估算:

[ SR_{min} = 2\pi f_0 \cdot V_{pk} ]

比如输出峰值为2V、信号频率达到80kHz,需要的SR大约是1V/μs。许多通用运放(LM358、LM324)的SR只有0.5V/μs左右,一旦输出幅度超过这个电流限制,波形就开始“拉锯”。所以做有源滤波器时,如果信号幅度不太小,建议选SR在5V/μs甚至更高的运放,避免自找麻烦。

5. 优化方向:让滤波器从“能用”到“好用”

5.1 Q值补偿:用外部增益把Q拉准

前面这个等容设计里,Q值是固定的0.707吗?并不是——如果你把单位增益跟随器改成增益大于1的同相放大器(就是常见的“增益放大版Sallen-Key”),Q值会变大。通用公式是:

[ Q = \frac{\sqrt{R_1 R_2 C_1 C_2}}{R_1 C_1 + R_2 C_1 + R_1 C_2 \cdot (1-K)} ]

K大于1时,分母最后一项变大,Q值也跟着变大。利用这个特性,你可以用等值电阻电容先搭出Q=0.5的基础电路,然后通过调整增益电阻的比例把Q精确“顶”到目标值。这在工程上是一个实用的调优手段,因为电阻网络的比例控制比更换电容精度高得多。

但这个方法有局限性:增益越高,Q值对电阻比例越敏感,电阻微小的失配就会导致Q值大幅偏离。实际工程里一般把K控制在1到3之间,不要贪心。

5.2 从低通到带通的变换思路

很多场景需要的是带通滤波器,比如从一堆频带信号里挑出特定中心频率的窄带信号。二阶有源低通并不是不能改造成带通——只要把电路里的电阻和电容做一次配对替换就能实现。

经典的低通到带通变换方法是:把低通电路中的每一个电容并联一个电感(用电阻替代电感的有源实现),或者直接采用多重反馈带通拓扑。更常见的设计路径是:先设计一个Q值更高的低通原型,然后利用频带变换公式确定中心频率和带宽。实操里,往往宁可重新设计一个专门的MFB带通或双T带通,也不硬改低通电路。

如果你只是想在现有低通基础上做一个“窄带提取”,最简单的方法是:设计一个高Q的切比雪夫低通,把中心频段放在通带内、干扰频段放在阻带边缘,用斜率和Q值“挤”出一个等效带通效果。这个方法不严谨,但在工程上经常够用。

5.3 级联与更高阶实现:两台二阶搭四阶

单个二阶的衰减只有-40dB/dec,很多工程场景不够用。比如某种混频器会产生非常接近有用信号的强干扰,你必须以每倍频程-80dB甚至更陡的斜率去压它。此时最标准的手段是多级级联。

但级联不是把两个二阶直接串起来就行。多级滤波器的总体频率响应是两个(或多个)二阶节响应相乘,如果每个节都是同样的Q=0.707的巴特沃斯,叠加后整体就不再是巴特沃斯了,频响会出现较大峰起。正确做法是查“级联设计表”,比如四阶巴特沃斯并不是“两个0.707节”的简单串联,而是Q1=0.541、Q2=1.306两个不同Q值节点的组合。低Q节处理低频段,高Q节负责在截止频率附近“提峰”,两个配合才得到整体最大平坦。

动手的时候,级联顺序也有讲究:通常低Q节放在前面,高Q节放在后面。原因是高Q节的瞬态响应振铃更大、对过载很敏感,把低Q节放前面可以先限制信号带宽,避免后级高Q节因为无用分量进入而过早饱和。

5.4 滤波器前级/后级的阻抗适配细节

有源滤波器虽然隔离了负载效应,但它的输入端仍然是有输入阻抗的,而且这个输入阻抗就是由R1决定的。

Sallen-Key的输入阻抗在中低频段近似等于R1,在频率接近和超过f0时,C1的“直通”路径会改变输入阻抗的复数特性。如果你的信号源输出阻抗比较高(比如无源传感器、高阻拾音器),R1就会被信号源内阻“分压”,导致信号幅度减小,甚至改变滤波器的Q值。

解决办法有两种。一是在滤波器前面加一级同相缓冲放大器(电压跟随器),把高阻信号源变成低阻输出。二是把R1适当减小,让信号源内阻相对于R1可以忽略。第一种办法通常更靠谱,因为缓冲放大器的输入阻抗很高(JFET输入可达兆欧级),对传感器几乎没有负载影响。后级负载虽然被运放隔离,但运放输出本身也有输出阻抗,高频下还不够低,如果后续需要驱动长线缆或者是电容性负载,建议在运放输出后再加一个低阻值串联电阻(比如几十欧姆),防止容性负载引发振荡。

最后,关于“优化”这件事的真正体会

滤波器这个东西,看着公式简单,但真正做深入之后会发现,每一个参数背后都牵涉着至少两三个现实约束。Q值提上来,响应是陡了,但瞬态过冲也大了;电容选好材质,容差是稳了,但体积和价格又上去了;运放选GBW大的,性能是没问题了,但功耗和成本又管不住。设计的过程本质上就是不断在指标之间做权衡和妥协。

我个人的习惯是:先明确信号里“什么东西绝对不能丢”,再谈“什么东西可以牺牲”。在这个前提下,二阶有源低通滤波器的价值才会真正体现出来——它既不像无源RC那样脆弱,又不像高阶DSP滤波器那样需要大量算力和编程,它能用最简单的模拟手段,把一个频域问题解决得干净利落。希望这篇内容能帮你少走一些弯路。

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

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

立即咨询