简介:这份文档面向电子工程、通信与自动化等专业的学生及电路设计初学者,系统讲解二阶有源带通滤波器的设计方法与参数计算,帮助读者理解如何从性能指标出发完成电路选型与元件取值。内容涵盖无源与有源滤波器的区别、低通高通带通带阻的功能划分,以及压控电压源和无限增益多路负反馈两种典型拓扑,并结合通带增益、中心频率、带宽与选择性等指标给出传输函数推导和完整设计算例。资源包共1个doc文件,约70KB,以文字与公式推导为主,适合作为课程设计、实验报告或自学参考。目前已有1918人学习,读者可从中获得指标确定、参数计算与稳定性考量的完整思路,便于对照实际项目快速上手。
1. 拿到一份滤波器设计文档,先看它能不能把参数算对
做小信号调理的同行大概都遇到过这种局面:前端传感器出来的信号里混着工频干扰和开关噪声,想留的那段频率其实不宽,用低通或高通都切不干净,最后只能上带通。带通滤波器(BPF)的价值就在这儿——只放行一段频带,带外该衰减就衰减,信噪比和选频一次到位。无源 LC 方案在低频段电感体积大、Q 值上不去,有源方案用运放加 RC 网络,体积小、输入阻抗高、输出还能带缓冲,小信号处理里更常见。
这份《二阶有源带通滤波器设计及参数计算.doc》讲的正是后者:压控电压源(VCVS)二阶带通和无限增益多路负反馈(MFB)二阶带通的拓扑、传输函数、中心频率、带宽、品质因数与通带增益的推导,以及一个给定指标的设计算例。它适合两类人:一类是课程设计或项目里要真把电路搭出来、参数算准的工程师;另一类是手上有仿真工具但不确定公式该怎么落地的人。下面按“拓扑怎么选、参数怎么算、仿真怎么验、坑在哪”的顺序拆开讲。
2. 两种二阶拓扑怎么选:VCVS 与无限增益多路负反馈的取舍
2.1 压控电压源结构的参数关系
文档里图 1 给的是压控电压源二阶带通:一级二阶低通串一级高通,运放接成同相放大,反馈网络由 RC 构成。它的好处是同相输入阻抗高、增益调整方便,改变 Rf 与 R4 的比例就能改频宽而不动中心频率,这一点在需要现场微调带宽的场合很实用。核心参数关系是:
- 中心频率 f0 = 1 / (2π√(R1R2C1C2)),等值元件时退化为 1/(2πRC)
- 品质因数 Q = f0 / BW,直接决定选择性
- 通带增益 AVP 由同相放大器的反馈电阻比决定
选这个拓扑的前提是:你接受它的 Q 值上限受元件容差限制,且同相结构对运放共模抑制有一定要求。做音频选频、传感器窄带提取这类场景,VCVS 是稳妥选择。
2.2 无限增益多路负反馈结构的适用边界
文档后半段图 2 给的是无限增益多路负反馈(MFB)二阶带通,反相输入,信号经多路 RC 反馈到运放反相端。它的传输函数、品质因数、中心角频率和中心频率处增益都有明确表达式,算例就是按这套公式走的。MFB 的特点是反相结构、Q 值可以做得比 VCVS 高一些、元件少,但输入阻抗偏低,对前级驱动能力有要求。
选型上我一般这么分:前级是运放缓冲输出、要较高 Q 和较少元件,走 MFB;前级信号源内阻大、需要高输入阻抗,走 VCVS。文档把两种都列出来,正是让你按指标反推拓扑,而不是背一个公式套到底。
2.3 从指标反推元件:算例的完整走法
文档算例给的指标是:通带中心频率 f0、中心频率处电压放大倍数 AVP、带宽 BW 三项。设计步骤是先用传输函数定 Q = f0/BW,再由中心角频率表达式定 RC 乘积,最后由增益表达式定电阻比。落地时我习惯固定电容、反算电阻,因为电容标称值档位少、精度难凑,电阻可以用 E96 系列凑得很准。下面是一段按这套关系做参数扫描的脚本,用来在给定 f0、BW、AVP 下找可实现的元件组合:
import math def mfb_bpf_design(f0, bw, avp, c=10e-9): """ 无限增益多路负反馈二阶带通参数估算 f0: 中心频率 Hz bw: 带宽 Hz avp: 中心频率处增益(反相, 取绝对值) c: 统一电容值 F, 常用 1nF~100nF """ q = f0 / bw w0 = 2 * math.pi * f0 # 等值电容下, 由 w0 与 Q 关系反推电阻量级 r_common = 1 / (w0 * c) # 增益与 Q 共同约束电阻比, 这里给出量级起点供 E96 凑值 r1 = r_common / (2 * q * avp) r2 = r_common * 2 * q / avp r3 = r_common / (2 * q) return { "Q": round(q, 3), "R1_ohm": round(r1, 1), "R2_ohm": round(r2, 1), "R3_ohm": round(r3, 1), "C_F": c, } if __name__ == "__main__": # 示例: 中心频率 1kHz, 带宽 100Hz, 增益 10 print(mfb_bpf_design(1000, 100, 10))这段脚本的作用不是替代文档公式,而是把“先定 Q、再定 RC、最后定电阻比”的顺序变成可迭代的数值起点。参数说明:c选统一电容值,是因为 MFB 结构里两枚电容取等值能简化中心频率表达式;r_common是 RC 乘积的量级基准;三个电阻分别对应增益约束和 Q 约束。跑出来的值不会正好落在标称系列上,下一步要拿 E96 表凑,凑完回代公式验算 f0 和 BW 偏差,偏差超过 5% 就换电容档位重来。这一步是血泪经验:很多人公式算完直接焊,结果中心频率偏了一两百赫兹,回头查才发现电容用了 20% 容差的瓷片。
3. 把公式落到电路:元件取值、运放选型与稳定性检查
3.1 电容优先、电阻凑值的实操顺序
上一节说了固定电容反算电阻,这里把顺序讲透。第一步按 f0 和可用电容档位估 RC 乘积量级,低频段(几十赫兹到几百赫兹)电容取 100nF 到 1μF,中频段(几千赫兹)取 10nF 到 100nF,高频段(几十千赫兹以上)取 1nF 左右。第二步按 Q 和增益约束分配三个电阻的比例。第三步用 E96 系列凑最接近的组合,回代验算。第四步才是画板。
为什么电容优先?因为电阻 E96 系列从 10Ω 到 1MΩ 有近百个档位,凑两个电阻比凑两个电容容易得多;而且薄膜电容和 C0G 瓷片电容的温度系数远好于高容值瓷片,选对电容等于把温漂大头摁住了。文档算例里取等值电容正是这个思路的体现。
3.2 运放选型:增益带宽积和压摆率别踩线
有源滤波器的运放不是随便抓一个就行。中心频率 f0 处运放的开环增益要足够高,经验上增益带宽积 GBW 至少取 10 倍到 50 倍 f0 乘以 Q,否则高频段相位滞后会把中心频率和 Q 一起带偏。压摆率 SR 要满足 SR ≥ 2π·f0·Vout_peak,输出幅度大的时候这一条比 GBW 更容易翻车。另外 MFB 是反相结构,运放输入偏置电流会在反馈电阻上产生直流失调,阻值上兆欧时要选低偏置电流的 CMOS 或 JFET 输入运放。
文档提到“增加反馈电阻、选择合适的运算放大器”来保证稳定性,这句话落地就是上面三条:GBW 余量、SR 余量、偏置电流匹配。我一般还会在运放电源脚各并 0.1μF 加 10μF,别小看这个,电源纹波串进高 Q 带通会在中心频率附近形成调制边带,示波器上看不出来,频谱仪上一眼就现形。
3.3 用 SPICE 做一次交流扫描验证
参数算完、板子画之前,至少跑一遍 AC 扫描。下面是一个 MFB 二阶带通的 ngspice 网表示例,用来验证 f0、BW 和增益是否落在指标内:
* MFB 二阶带通 AC 扫描验证 V1 in 0 AC 1 R1 in n1 15.9k C1 n1 n2 10n R2 n1 out 1.59k C2 n2 0 10n R3 n2 out 15.9k X1 0 n2 out opamp_model .subckt opamp_model inp inn out E1 out 0 inp inn 1e5 Rout out 0 75 .ends .ac dec 200 10 100k .print ac vdb(out) vp(out) .end网表里R1/R2/R3/C1/C2对应上一节算出的元件值,X1用一个理想压控源加输出电阻近似运放,先看拓扑本身的频响形状对不对。逻辑说明:.ac dec 200 10 100k是十倍频程 200 点、从 10Hz 扫到 100kHz,点数给足才能看清 -3dB 点;vdb(out)看幅频,vp(out)看相频。跑完看三个数:峰值频率是不是 f0、峰值下降 3dB 的两个频点差是不是 BW、峰值增益是不是 AVP。三个都对,再换真实运放模型重跑一遍,重点看高频段有没有因 GBW 不足出现的额外衰减。这一步能挡掉大半“焊完才发现频偏”的返工。
4. 避坑与排查:五个让带通滤波器翻车的现场
4.1 中心频率偏了,先查电容容差不是公式
现象:实测 f0 比设计值低 10% 到 20%。原因:用了 X7R 或 Y5V 高容值瓷片,标称 100nF 实际可能只有 80nF,且随直流偏压和温度继续掉。解决:信号路径上的定时电容换 C0G 或薄膜,容差 5% 以内;换完重新回代公式,别拿旧电阻值硬凑。
4.2 Q 值做不上去,检查运放 GBW 和布局寄生
现象:带宽比设计值宽很多,选择性差。原因:运放 GBW 余量不够,高频相位滞后等效降低了 Q;或者反馈走线太长,寄生电容在反相端形成额外极点。解决:GBW 至少留 10 倍 f0·Q 的余量;反馈电阻紧贴运放引脚,走线短而直,反相端节点面积尽量小。
4.3 输出直流偏置跑飞,偏置电流在作怪
现象:输出端直流电平偏离中点,严重时削顶。原因:MFB 反相端反馈电阻阻值大,运放输入偏置电流在其上产生压降。解决:选低偏置电流运放;或在反馈路径串隔直电容,但注意这会改变低频响应,隔直电容和反馈电阻形成的转折频率要远低于 f0。
4.4 高频段出现莫名峰起,电源去耦没做够
现象:远高于 f0 的频段出现小峰或噪声抬升。原因:电源引脚去耦不足,运放输出级电流脉冲经电源阻抗耦合回输入。解决:每个电源脚 0.1μF 瓷片加 10μF 钽电容,地平面完整,输入输出地分开走再单点汇合。
4.5 仿真对、实测不对,先怀疑信号源内阻
现象:SPICE 里频响完美,实测增益偏低、f0 偏移。原因:信号源内阻和滤波器输入阻抗形成分压,VCVS 同相结构还好,MFB 反相输入阻抗低,前级驱动不够就掉增益。解决:前级加缓冲,或按实际源内阻在仿真里串一个电阻重跑,别拿理想源当基准。
5. 进阶:把参数计算做成可复用的设计表
单次设计靠手算没问题,但项目里经常要改指标重来,这时候把公式固化成一张设计表比反复按计算器靠谱。我的习惯是用表格工具建三块:输入区填 f0、BW、AVP 和电容档位;计算区按文档公式算 Q、RC 乘积和三个电阻理论值;校验区回代算实际 f0、BW 和增益偏差,偏差超阈值标红。这样改一个指标,整张表联动,五分钟出一版候选参数。
再进一步是把上一节的 Python 脚本和 SPICE 网表串起来:脚本输出元件值,直接填进网表模板跑 AC 扫描,扫描结果用脚本解析 -3dB 点回填校验区。这套流程跑顺之后,一个带通设计从指标到验证网表不超过半小时。下面是一个解析 SPICE 输出、提取 -3dB 带宽的片段,配合前面的设计脚本用:
import re def extract_bw_from_spice(log_text): """从 ngspice .print ac 输出里提取峰值与 -3dB 频点""" rows = [] for line in log_text.splitlines(): m = re.match(r"\s*([\d.eE+-]+)\s+([\d.eE+-]+)", line) if m: freq, gain_db = float(m.group(1)), float(m.group(2)) rows.append((freq, gain_db)) if not rows: return None peak_f, peak_g = max(rows, key=lambda r: r[1]) target = peak_g - 3.0 lower = upper = None for i in range(1, len(rows)): f0, g0 = rows[i - 1] f1, g1 = rows[i] if (g0 - target) * (g1 - target) <= 0: # 线性插值找 -3dB 交点 t = (target - g0) / (g1 - g0) f_cross = f0 + t * (f1 - f0) if f_cross < peak_f and lower is None: lower = f_cross elif f_cross > peak_f and upper is None: upper = f_cross return { "f0_measured": round(peak_f, 1), "gain_db": round(peak_g, 2), "bw_measured": round(upper - lower, 1) if lower and upper else None, }这段代码的关键在插值:AC 扫描是离散点,-3dB 交点很少正好落在采样点上,直接取最近点会带来几个百分点的带宽误差,线性插值能把误差压到 1% 以内。参数上要注意.ac dec的点数,200 点每十倍频程对 Q 小于 10 的带通够用,Q 再高就加到 500 点,否则峰值附近采样太稀,峰值增益都测不准。
从那以后我每次出带通参数,都强制走一遍“脚本出值、E96 凑值、SPICE 回代、偏差标红”四步,哪怕指标很宽松也不跳步——跳过的那次,往往就是焊完发现频偏、拆板重来的那次。希望帮到你。
本文还有配套的精品资源,点击获取