简介:这份《二阶高通滤波器模电课程设计报告》面向电子信息、通信工程等专业的模电课程设计学习者,聚焦有源滤波器从理论推导到电路实现的全过程。报告围绕截止频率100Hz、增益2的设计指标,分别采用压控电压源与无限增益多路反馈两种方案,展开传输函数推导、品质因数与通带增益计算,并给出电路设计、参数计算、器件选型及实验结果分析。压缩包内为1个doc文档,约164KB,结构覆盖设计内容与要求、方案原理、电路参数、结论体会、附录与参考文献,篇幅紧凑但模块完整,便于直接参考撰写格式与推导思路。目前已有226人学习下载,适合需要完成同类二阶高通滤波器设计、对照两种电路方案并整理课程设计报告的学生使用。
1. 二阶高通滤波器在模电课程设计里到底要交什么
很多同学做模电课程设计,拿到“二阶高通滤波器”这个题目就翻开模电笔记抄传递函数,最后报告里公式很漂亮,实物连截止频率都对不上。真正拉开分数的地方就三件事:拓扑为什么选 Sallen-Key、元件值怎么算到能买到、实测的 -3dB 点为什么和仿真差一截。这里按一条完整链路来讲:先用二阶高通传递函数定出 R1、R2、C1、C2 和 Q 值,再用 LTspice 网表和 Python 扫频各跑一遍幅频特性互相印证,接着落到洞洞板焊接、单双电源偏置和示波器扫频的具体操作,最后说报告里该放哪些图、答辩会被追问什么。适合模电数电基础刚学完、正在写模电课程设计的同学,也适合想把数模电里“滤波器”这一节真正做通的人。
2. 从传递函数到元件取值:二阶高通滤波器的参数怎么算
2.1 为什么二阶高通优先用 Sallen-Key 有源拓扑
无源 RC 高通直接级联看起来最省事,两级 RC 串起来就有二阶,但实际做出来会出问题。第一级的输出电阻和第二级的输入阻抗构成分压,后级会把前级的截止频率往前拖,两级互相加载,理论算出来的 f0 和实际差 20% 以上很常见。更要紧的是无源网络里 Q 值上不去,二阶高通想做出巴特沃斯那种平坦通带,Q 必须达到 0.707,无源 RC 在加载条件下很难精确控制到这个值。再加上无源网络通带增益小于 1,输出幅度本来就不够,后面还得补一级放大。
Sallen-Key 结构正好补这三个短板。它只用一个运放、两个电容、两个电阻,运放接成单位增益跟随器,同相输入端阻抗极高,不会给前级造成负载;Q 值由 R2 与 R1 的比值决定,调 Q 的时候不用动电容,也不改变截止频率的量级,参数微调特别适合课程设计这种“算完还要在洞洞板上凑标准值”的场景。同相放大接法也能做,但增益一上去 Q 就跟着变,调试时多一个变量,除非题目明确要求通带增益大于 1,否则单位增益跟随是最稳的选择。
需要注意 Sallen-Key 的反馈路径是从输出经 R1 回到节点 A,再经 C2 到运放同相端,这个顺序不能颠倒。把 R1 和 R2 的位置接反,传递函数的 Q 值会变成原来的四分之一,幅频特性立刻变成过阻尼,通带边沿会明显变圆。
2.2 二阶高通传递函数、截止频率和 Q 值的对应关系
单位增益 Sallen-Key 高通的接法是:输入经 C1 到节点 A,节点 A 经 C2 到运放同相端,同相端经 R2 接地,节点 A 经 R1 接输出。对节点 A 和同相端各列一次 KCL,消去中间变量 V_A 后得到:
H(s) = s²R1R2C1C2 / [ s²R1R2C1C2 + sR1(C1+C2) + 1 ]
取 C1 = C2 = C,把分母整理成标准二阶形式,和 H(s) = (s/ω0)² / [ (s/ω0)² + (1/Q)(s/ω0) + 1 ] 逐项对比,可以直接读出三组关系:
ω0 = 1 / (C·√(R1R2)),f0 = 1 / (2πC·√(R1R2)),Q = 0.5·√(R2/R1)
想得到巴特沃斯响应,也就是通带最平坦、边沿没有隆起,需要 Q = 0.707,代入上式就是 R2 = 2R1。很多模电笔记里写“两个电阻两个电容取值相等”,那对应的其实是 Q = 0.5 的过阻尼情况,-3dB 点并不落在 1/(2πRC) 上,报告里如果直接这么写,和实测数据会对不上。
提示:C1 和 C2 不等值时,Q 还会受电容比值影响,通用表达式里 Q = √(C1/C2)·√(R2/R1)/2 这种形式在部分教材里出现,但课程设计用等值电容最省事,调 Q 只改电阻比就够了。
想调 Q 又不改截止频率,就同比例改 R1 和 R2 的比值;想调 f0 又不改 Q,就把 R1、R2 同时乘一个系数。这是后面实测修正的主要手段。
2.3 选定截止频率和元件值:从算出来的数到 E24 能买到的电阻
2.3.1 电容先定、电阻后配
电容可选的标准值比电阻稀疏得多,所以顺序是先定电容,再算电阻,最后往 E24 系列归一化。下面这段脚本按目标截止频率 1kHz、电容 10nF、巴特沃斯 Q = 0.707 反算两个电阻:
import numpy as np f0_target = 1000.0 # 目标截止频率,单位 Hz C = 10e-9 # 先定电容,10nF 的 C0G 电容容易买到 w0 = 2 * np.pi * f0_target # 巴特沃斯要求 R2 = 2*R1,此时 sqrt(R1*R2) = R1*sqrt(2) R1 = 1 / (w0 * C * np.sqrt(2)) R2 = 2 * R1 print("R1 = %.1f Ω, R2 = %.1f Ω" % (R1, R2)) # 往 E24 系列靠,取 11k / 22k 后回算实际参数 R1_std, R2_std = 11e3, 22e3 f0_real = 1 / (2 * np.pi * C * np.sqrt(R1_std * R2_std)) Q_real = 0.5 * np.sqrt(R2_std / R1_std) print("实际 f0 = %.1f Hz, Q = %.3f" % (f0_real, Q_real))这段脚本里w0是角频率,R1由 1/(ω0·C·√2) 得到,是因为 R2 = 2R1 时 √(R1R2) = R1√2。把 R1 改成 11k、R2 改成 22k 之后,实际 f0 回到 1.02kHz 附近,Q 仍然是 0.707,误差在电容容差范围内可以接受。如果题目要求 10kHz,同样保持 C = 10nF,把 R1、R2 同时缩小十倍左右即可,取 1.1k 和 2.2k。
2.3.2 一张可以直接抄进报告的元件表
| 元件 | 取值 | 建议精度 | 电路中的位置 |
|---|---|---|---|
| C1 | 10 nF | ±2% C0G/NP0 | 输入端到节点 A |
| C2 | 10 nF | ±2% C0G/NP0 | 节点 A 到运放同相端 |
| R1 | 11 kΩ | ±1% 金属膜 | 节点 A 到输出,构成反馈 |
| R2 | 22 kΩ | ±1% 金属膜 | 运放同相端到地 |
| 运放 | 通用双运放 | — | 单位增益跟随,单电源时需偏置 |
电容尽量别用 Y5V,容值随温度和直流偏压漂得厉害,10nF 标称可能实测只有 6~7nF,直接导致截止频率偏高。C0G 或 NP0 温度系数在 ±30ppm/℃ 以内,课程设计里贵不了多少,但省掉一轮返工。
3. 用 LTspice 和 Python 把二阶高通滤波器的幅频特性跑出来
3.1 单位增益 Sallen-Key 高通的 LTspice 最小网表
仿真先用理想压控电压源代替运放,把电路本征响应和器件非理想因素分开看。下面这个网表可以直接存成.cir文件跑交流扫描:
* Sallen-Key 二阶高通滤波器,理想跟随器 AC 扫描 V1 in 0 AC 1 C1 in n1 10n C2 n1 n2 10n R1 n1 out 11k R2 n2 0 22k E1 out 0 n2 0 1 ; 理想单位增益缓冲,增益=1 .ac dec 200 100 20k ; 100Hz~20kHz,每十倍频程 200 点 .meas AC f_3dB WHEN mag(V(out))=0.7071 .endV1的AC 1表示交流幅值 1V,后面测出来的mag(V(out))就是电压增益。E1是压控电压源,增益设 1,把同相端电压复制到输出,等价于理想运放跟随器。.ac dec 200 100 20k表示按对数频率扫描,起点 100Hz,终点 20kHz,每十倍频程 200 个点,这个密度足以把过渡带画平滑。.meas那句会在日志里直接给出 -3dB 频率,预期落在 1.0kHz 附近。
如果要把运放换成真实模型,把E1那一行删掉,换成对应运放的子电路调用,并补上正负电源。用 TL072、NE5532 这类课程设计常见型号时,增益带宽积和压摆率在 1kHz 量级完全够用,不会明显影响 -3dB 点,但电源脚一定要接,只放一级运放符号不接供电是仿真不收敛的常见原因。
注意:LTspice 里元件值写
10n是 10nF,写成10m是 10mF,单位差六个数量级,网表里大小写不敏感但单位符号必须写对。
3.2 用 Python 复现同一个传递函数,和仿真互相印证
LTspice 跑完之后,用 Python 把同一个传递函数再算一遍,两条曲线叠在一起看,如果完全重合,说明电路连接没接错,后面实测偏差就只剩器件容差和运放非理想因素。
import numpy as np import matplotlib.pyplot as plt R1, R2 = 11e3, 22e3 # 与网表保持一致 C1, C2 = 10e-9, 10e-9 f = np.logspace(1, 4.3, 800) # 10Hz ~ 20kHz s = 1j * 2 * np.pi * f # H(s) = s^2 R1 R2 C1 C2 / [ s^2 R1 R2 C1 C2 + s R1 (C1+C2) + 1 ] num = s**2 * R1 * R2 * C1 * C2 den = s**2 * R1 * R2 * C1 * C2 + s * R1 * (C1 + C2) + 1 H = num / den mag_db = 20 * np.log10(np.abs(H)) idx = np.argmin(np.abs(mag_db + 3)) # 定位 -3dB 点 print("理论 -3dB 频率 = %.1f Hz" % f[idx]) print("低频 100Hz 增益 = %.1f dB" % mag_db[np.argmin(np.abs(f - 100))]) plt.semilogx(f, mag_db) plt.axhline(-3, color='r', linestyle='--', label='-3 dB') plt.axvline(f[idx], color='g', linestyle=':', label='%.0f Hz' % f[idx]) plt.xlabel('Frequency / Hz') plt.ylabel('Gain / dB') plt.grid(which='both', alpha=0.4) plt.legend() plt.savefig('hpf_bode.png', dpi=150)num和den一一对应 2.2 节推导出的传递函数,np.logspace保证横轴是对数分布,画出来才是标准波特图。mag_db用 20log10 取分贝,idx那行是在所有频点里找离 -3dB 最近的一个,输出频率就是理论截止频率。低频段 100Hz 的增益应该是明显的负值,因为高通在截止频率以下每十倍频程衰减约 40dB,这也是判断滤波器阶数的直观依据。
3.3 仿真结果对不上时,按这个顺序排查
| 现象 | 常见原因 | 检查方法 |
|---|---|---|
| 低频增益不是负几十 dB | 电容接成了电阻,高通变低通 | 核对 C1、C2 是否在信号通路串联 |
| -3dB 点比理论高很多 | 电容实际容值偏小,或 R2/R1 接反 | 用万用表电容档实测,重算 Q |
| 曲线整体抬升不衰减 | 缓冲器接成了正反馈 | 检查 E 源控制端是否接到同相端 |
| 高频段翘起 | 没加电源去耦,或运放模型引脚接错 | 仿真加理想电源并在电源脚并 0.1µF |
先把理想电路跑通,再换运放模型,这一步能让调试麻烦少一半。
4. 从仿真到洞洞板:二阶高通滤波器的实测与调试
4.1 单电源和双电源的偏置差别
双电源供电最简单,正负对称给运放,输入和输出都能直接耦合,不需要额外偏置。单电源就必须在同相端叠一个 Vcc/2 的直流偏置,否则运放只能放大半个周期,输出会被削平。常见做法是用两个等值电阻分压得到 Vcc/2,经过一个 10µF 电解电容滤掉电源噪声,再接入 R2 的下端。
输入输出都要串隔直电容,否则前级和后级的直流工作点会互相干扰。隔直电容的取值不能让高通截止频率漂移太多,一般取 10 倍于 C1 的容值,保证它带来的附加高通转折点至少低于 f0 一个数量级。
| 供电方式 | 是否需要偏置 | 耦合方式 | 适用场景 |
|---|---|---|---|
| ±5V 双电源 | 不需要 | 直接耦合 | 实验室台式电源 |
| +5V 单电源 | 需要 Vcc/2 | 输入输出均隔直 | 单节电池或 USB 供电 |
| ±12V 双电源 | 不需要 | 直接耦合 | 通用运放展示最佳动态范围 |
4.2 用信号发生器和示波器扫出 -3dB 点
接线顺序是信号发生器输出接滤波器输入,示波器探头接输出,输入端的峰峰值也同时用第二通道监视。整个扫频过程按下面几步走:
- 信号发生器设 1kHz 正弦,幅度调到 1Vpp,先确认输出没有明显失真。
- 从 100Hz 开始往下扫到 10kHz,每个频点记录输出峰峰值,输入幅度保持 1Vpp 不变。
- 找到输出等于 0.707Vpp 的频率点,就是实测 -3dB 频率。
- 在 1kHz 附近加密取点,间隔 50Hz 到 100Hz,方便定位。
示波器探头用 10x 档,1x 档探头几十皮法的寄生电容会在高频段把输出拉低,看起来像是滤波器高频增益下降。如果实测曲线整个比仿真低几 dB,先查探头衰减比设置,再查信号发生器输出阻抗是不是 50Ω。
4.3 实测偏离理论值时的修正方法
先记一周数据,对照理论值找方向:
| 实测 f0 相对理论 | 判断 | 修正手段 |
|---|---|---|
| 偏高 10% 以上 | 电容实际容值偏小,或电阻偏小 | 找出偏差最大的那只电容,并联小电容凑 |
| 偏低 10% 以上 | 电容偏大,或运放输入电容不可忽略 | 换容值更准的 C0G,或缩小 R1、R2 |
| Q 明显偏小、通带发圆 | R2/R1 比值不足 2 | R2 换大一档,或 R1 换小一档 |
| 高频段掉落 | 运放带宽不够,或探头负载过重 | 换增益带宽积更高的运放,改用 10x 探头 |
调整时优先动电阻,电容一旦焊上洞洞板再拆容易把焊盘带下来。保持 C1 = C2 不变,只改 R1、R2 比值就能把 Q 拉回 0.707;R1、R2 同时缩小同一个比例就能把 f0 往上推。
5. 报告排版、图表规范和答辩追问的准备
报告里的图不是越多越好,但这四张缺一不可:标注全部元件值的电路原理图、仿真波特图和实测数据叠在同一坐标系里的对比图、实测数据表、实物照片。对比图横轴必须用对数坐标,纵轴每格 10dB,-3dB 点用虚线标出来并写字注明频率,老师一眼就能看出你有没有真做出高通特性。实测数据表至少覆盖 100Hz、300Hz、700Hz、1kHz、1.5kHz、3kHz、10kHz 七个点,每个点记录输入幅度和输出幅度,再换算成 dB。
答辩被问得最多的是三个问题。第一个是“Q 值为什么取 0.707”,回答要点是巴特沃斯响应在通带内最平坦、没有峰值隆起,对应 R2 = 2R1,如果取等值电阻就是 Q = 0.5,-3dB 点会偏到 f0 以上。第二个是“为什么不用无源 RC 级联”,回答要点是级间加载、Q 值做不上去、通带增益小于 1。第三个是“单电源怎么保证输出不削顶”,回答要点是同相端叠 Vcc/2 偏置、输入输出隔直、偏置点用电容滤波。
想临时微调截止频率又不想拆电容,可以用下面这段脚本快速试算:
import numpy as np C = 10e-9 for R1 in [8.2e3, 9.1e3, 10e3, 11e3, 12e3, 13e3]: R2 = 2 * R1 f0 = 1 / (2 * np.pi * C * np.sqrt(R1 * R2)) print("R1=%.1fk, R2=%.1fk -> f0=%.0f Hz" % (R1/1e3, R2/1e3, f0))改 R1 的同时 R2 保持两倍关系,Q 始终是 0.707,切换的只是截止频率。报告定稿前把这一组候选值列在附录里,老师看到你考虑过标准值归一化,比只给一个理论值更有说服力。
本文还有配套的精品资源,点击获取