拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

二阶有源低通滤波器设计实战:从Sallen-Key到LTspice仿真验证

二阶有源低通滤波器设计实战:从Sallen-Key到LTspice仿真验证 最近在搞一块音频板子DAC输出端需要加一级抗混叠滤波于是把二阶有源低通滤波器的整个设计流程从头到尾重做了一遍。从指标拆解、传递函数推导、元件参数计算到LTspice仿真、实物焊接和扫频验证每个环节都有不少值得记录的东西尤其是一些教科书上不会明说的工程细节。这篇就按实际项目的推进顺序把二阶有源低通滤波器的设计和仿真验证过程完整记录下来给准备做硬件设计、电源滤波或者信号调理的同行一个可以参考的完整案例。1. 项目概述这个滤波器到底用来干什么1.1 二阶有源低通滤波器的典型应用场景低通滤波器在硬件电路里实在太常见了。DAC输出后面的重建滤波、ADC输入前面的抗混叠滤波、音频功放通道里的低频整形、传感器信号进入MCU之前的带限处理都会用到。之所以强调“有源”是因为RC无源滤波虽然简单但输出阻抗高后面一接负载截止频率就变了而且没法提供增益。有源滤波器用运放做隔离和增益放大可以让滤波特性不受负载影响设计起来更加可控。二阶相比一阶最大的优势是滚降速度。一阶只有-20dB/dec很多场景下阻带压不住。比如ADC抗混叠如果只靠一阶RC滤波对带外噪声的抑制远远不够换到二阶之后能到-40dB/dec效果立竿见影。更高的阶数当然更好但电路复杂度和调试成本同步上升对大多数应用来说二阶是性价比最高的选择。1.2 我的设计指标和测试目标这次项目的目标是设计一个截止频率10kHz、通带增益0dB的二阶有源低通滤波器响应类型选Butterworth响应也就是最大平坦幅度响应带内没有纹波在截止频率附近也没有明显峰值。输入信号幅度大约在±0.5V范围内供电用±12V双电源负载阻抗不低于10kΩ。整体指标整理成表格看得更清楚参数目标值备注滤波器类型二阶低通Sallen-Key拓扑响应类型ButterworthQ0.707无带内纹波截止频率-3dB10kHz实际误差控制在±2%以内通带增益0dB1倍单位增益缓冲结构滚降斜率-40dB/dec二阶固有特性供电电压±12V实测用±5V也能工作输出负载≥10kΩ运放直接驱动验证环节分两条线走一条是仿真用LTspice做AC分析和瞬态分析另一条是实物用信号发生器和示波器逐点扫频实测最后把两条线的数据放在一起对比看理论、仿真和实测之间的差距到底有多大差在哪。2. 理论拆解与参数计算先算明白再做板子2.1 为什么选Sallen-Key拓扑二阶有源滤波器的主流拓扑有两种Sallen-Key和多重反馈MFB。我这次选Sallen-Key理由很直接元件少一个运放加四个阻容就能成而且单位增益时结构极其简洁比MFB少一组反馈电阻。MFB的优势是反相结构、增益可以做高、高Q值场景表现更稳但输入阻抗偏低对前级驱动能力有要求而且增益由电阻比决定精度控制更麻烦。Sallen-Key本质是一个由RC网络和运放组成的电压控制电压源滤波器。运放工作在单位增益缓冲状态时C1上端直接接输出把输出信号反馈到RC网络里形成一个有源阻尼路径。通俗讲RC网络负责确定谐振频率运放负责“泵”能量维持滤波特性两者配合得到标准的二阶响应。2.2 Butterworth、Chebyshev、Bessel怎么选设计滤波器第一步不是算电阻电容而是确定响应类型。三者的区别在带内平坦度、滚降陡峭度和相位线性度之间权衡类型带内纹波滚降速度阶跃响应过冲典型应用Butterworth无最大平坦适中约4.3%通用信号处理Chebyshev有纹波更快较大需要陡峭截止的窄带场景Bessel无但幅频下降早较慢几乎无过冲对波形保真要求高的脉冲信号音频抗混叠场景我选了Butterworth理由很朴素带内幅度最平坦阻带衰减够用相位失真虽然存在但听感上不明显。如果用Chebyshev带内纹波会直接叠加在信号上造成可感知的增益起伏不划算。2.3 传递函数和Q值的实际意义二阶低通滤波器的标准传递函数是H(s) ω0² / (s² (ω0/Q)·s ω0²)其中ω02πfc是特征角频率Q是品质因数。Q值决定了频率在fc附近的幅频响应形状Q0.707时是Butterworth响应幅频曲线在fc附近最平坦没有过冲Q增大到1以上会出现明显的谐振峰对固定频率成分有放大作用Q小于0.707则过渡带更平缓但截止特性变差。用生活化的比喻理解Q值Q值就像阻尼器的阻尼系数。阻尼太大系统反应迟钝信号通过时被过度压制阻尼太小系统会在某个频率附近“兴奋”起来产生过冲甚至自激。0.707是一个刚刚好压住谐振的临界值这也是为什么大多数低通滤波设计都锚定这个值。2.4 参数计算实例从公式到元件值这次我用的是单位增益Sallen-Key结构取R1R2RC12C2这时候有个很巧妙的结果Q值自动等于0.707正好是Butterworth响应不用额外调增益电阻。推导过程不展开直接给结论ω0 1 / (R·√(C1·C2)) 1 / (√2 · R · C2)设计目标fc10kHz选C210nFC1就是20nF。20nF的C0G电容不太好买我用两个10nF并联实现。然后算RR 1 / (2π · fc · √2 · C2) 1 / (2π · 10×10³ · 1.414 · 10×10⁻⁹) ≈ 1125Ω取E96系列标准值1.13kΩ代入之后实际截止频率fc 1 / (2π · 1.13×10³ · 1.414 · 10×10⁻⁹) ≈ 9961Hz和10kHz的目标偏差不到0.4%完全在可接受范围。这个方案的优点是电阻只有两个等值电阻电容两个运放一个整个电路干净利落非常适合快速复制。如果想把增益做上去比如需要6dB增益就要改用R1R2但增益K1.586的配置也就是把运放接成同相放大反馈电阻比Rf/Rg0.586此时Q值仍然是0.707。但增益一变Q值会跟着变需要重新算反馈网络不如单位增益方案省心。3. 运放与物料选型元件的坑比理论多3.1 运放的GBW至少要够用运放选型是很多人容易忽略的环节总觉得随便拿一颗就行。实际上Sallen-Key结构对运放带宽非常敏感原因是反馈电容C1直接把输出引到反相输入运放在高频段的开环增益不足时反馈精度会下降导致截止频率偏移和Q值增强。经验法则运放的增益带宽积GBW至少是滤波器截止频率的50到100倍。10kHz截止频率对应GBW至少1MHz用LM358这种1MBW运放只能算“勉强能用”实际在10kHz附近就会出现可观测的响应抬升。我最终选了TL0723MHz GBW、JFET输入、低噪声价格也便宜做10kHz低通足够。如果用NE553210MHz GBW更稳但电流噪声稍大在这些低阻抗电路里差距不大。对比一下常用运放的关键参数运放型号GBW压摆率输入偏置电流电压噪声适合场景LM3581.2MHz0.5V/µs50nA40nV/√Hz低频传感器不适合10kHz滤波TL0723MHz13V/µs65pA18nV/√Hz音频、通用有源滤波性价比高NE553210MHz9V/µs200nA5nV/√Hz低阻抗音频、高性能滤波OPA21348MHz20V/µs5pA8nV/√Hz高端音频价格稍高这次项目最终在实物板上用的是TL072仿真对比里也加了LM358作为反面案例。3.2 电阻电容的材质坑电阻选1%精度的金属膜电阻温度系数最好在50ppm/℃以内。这个项目里电阻误差直接决定实际截止频率5%精度的碳膜电阻会让截止点偏移1%以上虽然不一定致命但做验证实验时数据和理论对不上会非常困扰不值当。电容的坑更大。很多人随手拿X7R瓷片电容去做滤波实际效果一塌糊涂。X7R电容有强烈的直流偏压效应施加几伏直流电压之后容量可能掉20%到50%而且温度系数大还会产生谐波失真。滤波器的RC网络对容量精度要求高必须选C0G/NP0材质或者薄膜电容。C0G电容在几十nF以内都很容易买到。我这次C1用两个10nF的C0G电容并联得到20nFC2用一个10nF的C0G整个滤波网络完全不担心偏压问题。3.3 电源和偏置单电源供电要特别注意我用的±12V双电源运放直接工作在双电源下信号从0V为中心摆动不需要额外偏置。但如果换到单电源场景比如5V供电情况就复杂了。此时运放的同相输入端必须偏置到VCC/2而且C1的接地点要接到偏置电压上不能直接接地否则运放共模输入范围不对输出波形会被削顶。输入输出还需要加隔直电容整个偏置网络会引入额外的相移和噪声设计起来比双电源麻烦不少。无论单双电源每个运放电源引脚旁边都要放0.1µF陶瓷去耦电容尽量靠近引脚。这个细节很多人不重视实际上一旦自激振荡第一个要检查的就是去耦。3.4 完整BOM和PCB布局提醒最终BOM清单编号型号/值数量备注R1, R21.13kΩ1%金属膜2可以用1.5kΩ/1.1kΩ近似C210nFC0G1精度5%即可C120nF两个10nF并联2必须C0G不能用X7RU1TL0721或NE5532C3, C40.1µF陶瓷2电源去耦J1, J2输入输出端子2测试方便PCB布局上注意几个点R1、R2、C1、C2尽量靠近运放输入引脚反馈路径要短C1的回地走线直接回到运放电源地去不要绕远输入输出走线不要平行重叠避免耦合。我们这里阻值都在kΩ级别走线电容影响有限但布局习惯还是要养成。4. 仿真验证让电路先跑起来再动手焊4.1 LTspice中搭电路我习惯用LTspice做这种模拟电路的验证免费、轻量、自带大量元件模型。Sallen-Key的仿真电路很简单一个交流信号源V1串联RS50Ω信号源内阻接R1到U1同相输入端同相端对地接R2和C1反相端直接接输出C2从同相端接到输出形成标准单位增益Sallen-Key。运放先用理想行为源vcvs方便对照理论值再看真实模型。AC分析指令.ac dec 200 100 1Meg扫频范围从100Hz到1MHz每十倍频程采样200个点。4.2 理想模型下的幅频特性仿真结果和理论计算非常吻合。-3dB点大约在9.94kHz和手算的9961Hz基本一致。通带内增益平坦10kHz之前几乎是一条0dB直线过了截止点以-40dB/dec斜率滚降到100kHz时衰减约-38dB100kHz以上继续滚降曲线没有任何异常凸起。把光标放在20kHz处读数值增益大约-12dB这和二阶理论的预期完全对得上fc两倍频处衰减约-12dB四倍频处约-24dB符合-40dB/dec的规律。这一步的意义在于确认电路参数算对了后面所有调试都以此为基础。4.3 参数扫描看元器件容差影响理想值算得再准实际元件都有公差。用LTspice的.step指令做电阻容差扫描把R1、R2设为1.13kΩ±1%观察截止频率的偏移范围.step param Rv list 1.118k 1.13k 1.142k扫描结果显示电阻值向上偏移1%时截止频率从9.94kHz降低到约9.82kHz向下偏移1%时升到10.06kHz。单独电阻公差对截止频率的影响是±1.2%左右再加上电容的±5%公差最坏情况下总偏移可能到±7%。也就是说实际板上测出的-3dB点落在9.3k~10.7kHz之间都算正常不必大惊小怪。这个仿真做一次就明白为什么选1%电阻和C0G电容了元件精度直接决定滤波器指标能不能落在设计范围内省这点成本会让调试变得很痛苦。4.4 真实运放模型打回原形理想运放模型看不到实际芯片的行为我把运放换成TL072的宏模型再看AC响应。TL072模型在10kHz附近的幅频特性与理想模型几乎重合差别在0.1dB以内说明在当前GBW下运放非理想性对滤波器的影响可以忽略。同一个电路把运放换成LM358情况就完全不一样了。LM358的GBW只有1MHz左右在10kHz处的开环增益只有约100倍40dB已经明显拉低反馈深度。仿真曲线上看到截止频率附近出现了大约0.8dB的鼓包-3dB点右移了几百赫兹高频段滚降也提前变缓。这就是典型的GBW不足导致的Q值增强现象。用一个比喻来解释Sallen-Key拓扑里运放相当于把输出信号的一部分抽回来“拉”住RC网络运放带宽不够反馈力度失真网络就会在某些频率上“多振了一下”于是出现了不该有的峰值。4.5 阶跃响应和稳定性AC分析看的是频域还得看时域。给滤波器输入一个10kHz方波观察输出波形。理论上Butterworth响应对应Q0.707阶跃响应的过冲大约是4.3%这是设计特性不是缺陷。仿真中看到输出波形在上升沿有一个轻微的超调然后迅速收敛没有持续振铃说明滤波器工作在稳定状态。如果出现过冲超过10%或者波形尾部振荡不停那就是Q值过高需要查电阻比例和运放带宽。瞬态仿真还可以帮我们检查运放是否饱和。输入信号加到±1V输出峰值应该在±1V附近如果波形顶部被削平说明供电电压不够或者输入信号幅度过大需要降低输入幅度或者提高供电。5. 实物调试与实测数据对比5.1 测试平台搭建仿真通过之后我把原理图转成PCB手工焊接了一块测试板。测试设备很常规一个函数信号发生器可以扫频输出正弦波一台双通道示波器一台±12V的双路直流电源。测量方法上有个提高精度的技巧信号发生器的输出幅度在不同频率上会有起伏如果只测Vout的绝对值会把信号源自身的频率特性也测进去。正确的做法是示波器两个通道分别测Vin和Vout用示波器的Math功能做通道A/B运算直接读出增益这样信号源的输出波动就被抵消掉了。5.2 逐点扫频实测实测时信号源输出100mVpp正弦波从1kHz开始按1、2、5的步进往上扫。每个频点等待示波器读数稳定后记录增益重点测1k、5k、8k、10k、12k、15k、20k、30k、50k、100k这几个点。测量到截止频率附近时步进加密因为曲线斜率最大需要更密的数据才能拟合出准确的-3dB点。5.3 实测数据与理论值对比整理一组典型的实测数据频率理论增益dB实测增益dB偏差1kHz0005kHz0008kHz-0.25-0.30.0510kHz-3.01-3.20.1912kHz-5.3-5.50.215kHz-7.9-8.20.320kHz-12.0-12.40.450kHz-27.2-28.10.9100kHz-39.1-40.51.4从数据看实测曲线和理论曲线整体趋势一致误差随频率升高逐渐增大主要来源有三个元件容差尤其电容5%公差、示波器探头在100kHz附近的轻微增益误差、以及TL072在100kHz处的开环增益已降到约30倍反馈深度下降导致滚降略微加快。整体误差在100kHz以内不超过1.5dB对工程应用完全够用。5.4 调试中遇到的实际问题焊完第一块板子时测出的10kHz增益只有-3.8dB比理论值偏低了接近0.8dB。排查发现是C2焊成了15nF的电容手边元件盒里10nF不够顺手拿了一个“看起来差不多”的替代品结果容量差了一半。换回10nF C0G之后实测数据立刻回到正常偏差范围内。还有一个现象测量到几十kHz时数据开始跳动幅度不稳定。这是信号发生器输出幅度在高频段起落和示波器垂直档位切换耦合在一起造成的测量误差不是滤波器本身的问题。把信号发生器输出幅度恒定在100mVpp示波器固定用50mV/div档位只调整时基数据就稳定了。6. 常见问题速查与经验总结6.1 问题速查表做完整个项目把过程中遇到和预判到的问题整理成一张速查表复制给项目组其他人用症状可能原因排查方法截止频率明显偏低电容容量偏大、电阻偏大检查元件值确认电容材质X7R偏压效应截止频率处有鼓包/过冲Q值偏高电阻比例不对、运放GBW不足检查反馈比例换成高GBW运放高频衰减不够C1/C2值不对、运放带宽不足、PCB耦合扫频看曲线检查高频段波形输出自激振荡无信号也有波形电源去耦不足、布局寄生电容、运放稳定性差检查去耦电容缩短反馈走线换低噪声运放10kHz以下就有纹波电源纹波通过偏置网络进入加强电源滤波检查偏置参考噪声输出直流偏移大运放输入偏置电流大、偏置电阻不平衡选JFET输入运放TL072减小偏置电阻6.2 几条实操心得做这个项目最大的感触是仿真和理论算得再漂亮实物一焊上去就会冒出各种“合理的意外”。电容实物标称10nF实测可能只有9.3nF信号发生器在10kHz输出100mVpp到了100kHz可能只剩92mVpp示波器探头没校准10x档的实际衰减比可能不是严格的10倍。这些误差单独看不致命叠加起来就会让实测数据和仿真对不上。建议动手前先把测试链路的误差来源梳理一遍比如信号源的频率响应数据、探头校准状态、示波器Math功能的精度这会省掉大量“是不是电路坏了”的无谓排查时间。另外PCB布局对滤波器的影响在kΩ级别的阻值下其实没有想象中大但良好的布局习惯能避免很多潜在问题。反馈路径尽量短、地回路尽量清晰、去耦电容尽量靠近电源引脚这三条做好了滤波器就成功了一大半。6.3 这个电路还能怎么扩展这个电路稍微改动就能适配更多场景。把R1、R2按比例增大截止频率会降低比如要把截止频率降到3.3kHzR换成3.4kΩ左右即可元件值和PCB都通用。把两级同样的滤波器串联就能得到一个四阶低通滚降斜率变成-80dB/dec用于ADC抗混叠会更扎实。如果想做成可调截止频率把R1、R2换成电位器或者用数字电位器就能实现在线调谐。最后分享一个调试小技巧实测幅频响应时调整信号发生器频率的同时盯住示波器的Lissajous图形可以很直观地看到相位变化。在截止频率附近输入输出波形从同相逐渐过渡到90°相位差再继续升高到180°反相这个变化过程比读数值更直观也可以用来判断滤波器是否工作在预期状态。
返回列表