2026/9/28 13:58:24

基于Sallen-Key的1kHz巴特沃斯二阶有源低通滤波器设计

基于Sallen-Key的1kHz巴特沃斯二阶有源低通滤波器设计 做音频前端或者传感器信号调理的朋友应该都遇到过这种场景信号里混着一堆高频噪声随手拉一个一阶RC低通结果发现带外衰减“软绵绵”的过了截止频率之后噪声还是漏过去大半。我之前调一块ADC前级板子时就被这个-20dB/dec的滚降速度折磨得够呛——想把高频多压一点就只能把截止频率越压越低最后连有效信号都被削掉。后来换成二阶有源低通滤波器带外衰减直接到-40dB/dec整个频率规划才松绑。这篇文章就把我从公式推导、Sallen-Key拓扑选择、元件取值到LTspice仿真和实物测试的完整过程记录下来给正在做滤波、抗混叠或噪声抑制的朋友一个可以直接抄作业的1kHz巴特沃斯方案。1. 为什么一阶不够用滚降速率与二阶的意义1.1 一阶RC低通的固有短板一阶RC低通是最常见的入门电路一个电阻串在信号路径上一个电容对地泄放高频传递函数是[ H(s)\frac{1}{1sRC} ]截止频率 ( f_c\frac{1}{2\pi RC} )超过截止频率后增益以每十倍频程20dB的速率衰减。听起来没什么问题但实际用起来就会发现很尴尬如果我把截止频率设计在1kHz那10kHz处的衰减只有大约-20dB100kHz处才到-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) 值就是二阶滤波器比一阶复杂、也更好玩的地方。(Q0.707) 是巴特沃斯响应通带内最平坦在截止频率处正好是-3dB这是绝大多数通用滤波场景的默认选择。(Q0.5) 时两个极点都在实轴上响应像两个一阶低通串联滚降虽然也是-40dB/dec但过渡带比较软。(Q0.707) 之后频率响应在截止频率附近会出现上冲峰值(Q) 越大峰值越高意味着对某个窄带频率有“放大”效果但也会带来振铃和相位突变。我整理了一个不同Q值下的关键表现Q值截止频率处增益响应特点典型应用0.5-6dB两个实极点无过冲滚降平缓需要无过冲的低通0.707-3dB最大平坦巴特沃斯响应通用滤波、抗混叠1.00dB有约1-2dB峰值过冲较明显需要提升截止频率附近增益2.06dB峰值明显振铃大不常用易自激初学的时候容易踩一个坑以为“把Q调大一点过渡带会更陡”。其实二阶滤波器的滚降斜率永远是-40dB/decQ只影响转折点附近的形态不影响远端斜率。所以做频率规划时要先决定是巴特沃斯还是贝塞尔还是切比雪夫而不是盲目调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)) 的项K1时这项消失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的运放也勉强够用。但如果你把截止频率放到100kHzGBW只有1.2MHz的运放就会明显拖后腿至少需要10MHz以上的型号。我这次对比过几款常用运放运放GBW输入类型噪声特性适不适合这个电路LM3581.2MHz双极性噪声偏高低频凑合用TL0723MHzJFET中低噪声很适合偏置电流极小NE553210MHz双极性低噪声很好但输入偏流较大OPA21348MHzFET低噪声低失真音频优选我最后用TL072主要看中它输入偏置电流极小这样电路里10k级别的电阻上几乎不会产生直流偏置误差。如果你手头只有NE55321kHz截止频率下也完全没问题只是要注意给反向输入端的偏置电流留出直流通路。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接到运放同相端BC1从B点直接落地C2从运放输出端反馈回节点A。因为运放接成跟随器同相端电压等于输出电压所以实际上 (R_2) 和 (C_2) 是并联形式接在A点和输出之间。这个连接方式看起来有点绕但正是C2构成的反馈让传递函数变成真正的二阶。在理想运放假设下这个电路的传递函数为[ H(s)\frac{1}{1s(R_1R_2)C_1s^2R_1R_2C_1C_2} ]和标准二阶形式对比可以求出[ \omega_0\frac{1}{\sqrt{R_1R_2C_1C_2}} ][ Q\frac{\sqrt{R_1R_2C_1C_2}}{(R_1R_2)C_1} ]为了让设计简单我令 (R_1R_2R)这样Q值公式变成[ Q\frac{1}{2}\sqrt{\frac{C_2}{C_1}} ]要得到 (Q0.707)只需要让 (C_22C_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_110nF)(C_220nF)代入公式[ 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标称实际fcA推荐10nF20nF11.25kΩ11.3kΩ约997HzB22nF47nF4.95kΩ4.99kΩ约1013HzC100nF200nF1.125kΩ1.13kΩ约997Hz方案C的电阻小、电容大电路抗噪性能更好但前级信号源要能驱动更大的电容负载方案A的电容值居中对大多数运放和前级都很友好是我的首选。电容选型上强烈建议用C0G/NP0或薄膜电容不要用X7R。X7R的容量会随直流偏压改变而且不同批次的偏差可能超过-30%实测出来的截止频率会严重偏离设计值。电阻用1%精度金属膜电阻整体误差就能控制在±5%以内。4. 仿真验证LTspice从搭电路到读指标4.1 电路搭建与仿真设置我习惯用LTspice做这个电路的仿真免费、跨平台而且网表格式方便分享。原理图连接按上面说的来输入接R1R1另一端接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 22nC2从18nF变到22nF时Q值会从大约0.66变到0.75同时截止频率也会轻微偏移。这个仿真结果提醒我电容配对的一致性比绝对容值更重要。尤其是C1和C2不能用两种不同介质否则温度漂移方向不同Q值会随温度乱飘。4.4 瞬态响应方波过冲和阶跃振铃频域指标满足要求后还要看时域表现。滤波器的频率响应和瞬态响应是同一个东西的两面Q值越高频域越“尖”时域越容易有过冲和振铃。我在输入加一个1kHz方波幅度1V看输出波形。Q0.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左右的衰减不够的话不要硬压截止频率而是考虑把两级二阶级联成四阶或者提高采样率否则有效信号会先被压坏。另外一个偷懒技巧想把滤波器改成贝塞尔响应也没问题。巴特沃斯的Q0.707贝塞尔通常用Q≈0.577只要把C2和C1的比值从2改成大约1.33电阻公式再重新算一遍就行。同一块PCB上留好C2的位置焊不同容值就能切换响应类型做实验对比特别方便。设计滤波器最怕的就是只算完公式就收工实际焊接测试一遍很多书本上不讲的坑自然就明白了。