新闻详情

新闻详情

首页 / 资讯中心 / 详情

负反馈如何消除放大器失真:原理、THD实验与电路实践

发布时间:2026/9/1 12:41:03来源:尧图网络
负反馈如何消除放大器失真:原理、THD实验与电路实践
负反馈是放大器设计里最容易被误解的概念之一。很多初学者知道“负反馈是把输出的一部分送回输入端和输入相减”但一旦被问到它到底如何消除失真就只剩下一句“反馈会让增益降低所以更稳定”的模糊记忆。这个说法没有错但它没有解释最关键的问题增益降低和失真降低之间的数量关系是什么反馈环路内部到底发生了什么。这篇文章用一个尽量简洁的非线性模型把开环放大器和带负反馈的闭环放大器放在一起做对比实验。你会看到一个具体的正弦波输入、一个会饱和的非线性放大环节以及 THD 指标的差异。做完这个实验后再回头去看教科书里的增益公式会更容易理解“反馈深度”“环路增益”这些参数的意义。1. 先把负反馈消除失真的原理说清楚1.1 负反馈不是在“压低输出”而是在“纠正误差”先把一个典型的反馈系统拆开看。输入信号记为x输出信号记为y。反馈网络从输出取出一部分信号记为β * y其中β是反馈系数。把反馈信号和输入信号相减得到误差信号e x - β * y这个误差信号再经过放大倍数A的前级放大器放大得到输出y A * e这里最值得注意的变化在于开环时放大器输入端看到的信号就是x闭环时放大器输入端看到的信号是x - β*y。也就是说负反馈不是简单地把输出限制住而是让放大器去放大“实际需要的差值”。如果输出太大反馈量β*y就会变大误差e会变小输出就被拉回来。如果输出太小反馈量变小误差变大输出又会升上去。这个动态过程一直在实时进行不是靠一次性的衰减完成的。1.2 从增益公式看失真项为什么被压低把y A * e和e x - β * y联立可以得到闭环增益Af y / x A / (1 A * β)令环路增益T A * β则Af A / (1 T)现在假设放大器的内部存在一个等效失真源d它混在输出里。这个失真源如果出现在输出端输出方程会变成y A * e d代入e x - β*y后y A*(x - β*y) d整理得到y A*x / (1 A*β) d / (1 A*β)这个结果非常关键。信号分量和失真分量同时被除以1 T所以从相对比例来看失真占输出的比重被压缩了。环路增益T越大失真改善越明显。如果T 9失真降到原来的 1/10如果T 99失真降到原来的 1/100。这里必须说明真实电路里的非线性失真并不是一个固定的“输出端叠加电压源”这个模型只是从控制论角度解释负反馈的态度任何不该出现在输出里的成分都会被反馈回路送回到输入端参与抵消。理解了这个方向再去做实验才不容易被表面的波形现象带偏。2. 用一个可运行的 Python 实验观察失真2.1 用非线性传输函数模拟放大器饱和真实放大器在小信号下接近线性在大信号下会出现增益压缩、饱和甚至削顶。为了不引入太多电路细节这里用一个常见的非线性函数y A * tanh(v)当v很小时tanh(v)近似等于v所以放大器接近线性当v变大时输出逐渐饱和波形顶部被压平于是产生谐波失真。实验参数设计如下开环放大倍数A 5反馈系数β 0.1输入信号是 1kHz 正弦波峰值幅度为 1.0采样率 48kHz采样时长 0.02 秒这个参数组合不是某个真实元件的型号而是为了让“软饱和”失真在开环状态下足够明显。你可以把nonlinear_block替换成晶体管模型、运放饱和模型或者实测得到的输入输出曲线。2.2 Python 脚本开环、闭环和 THD 测量下面代码依赖 NumPy运行前先安装pip install numpy完整脚本如下import numpy as np A 5.0 BETA 0.1 FS 48000 F 1000.0 DURATION 0.02 N int(FS * DURATION) t np.arange(N) / FS x np.sin(2 * np.pi * F * t) def nonlinear_block(v): return A * np.tanh(v) def open_loop(x): return nonlinear_block(x) def closed_loop(x): y np.zeros_like(x) for i, xi in enumerate(x): y_prev 0.0 for _ in range(200): y_next nonlinear_block(xi - BETA * y_prev) if abs(y_next - y_prev) 1e-10: break y_prev y_next y[i] y_prev return y def thd(y): spec np.fft.rfft(y) mag np.abs(spec) # 采样时长为 0.02sFFT 频率分辨率为 50Hz # 1kHz 正弦对应的 FFT 索引是 20 fund_idx int(round(F / (FS / N))) fundamental mag[fund_idx] harmonics np.sqrt(np.sum(mag[2 * fund_idx:] ** 2)) return harmonics / fundamental y_ol open_loop(x) y_cl closed_loop(x) print(fopen-loop peak {np.max(np.abs(y_ol)):.3f}) print(fclosed-loop peak {np.max(np.abs(y_cl)):.3f}) print(fopen-loop THD {thd(y_ol) * 100:.2f}%) print(fclosed-loop THD {thd(y_cl) * 100:.2f}%)运行后输出类似open-loop peak 3.762 closed-loop peak 3.024 open-loop THD 8.xx% closed-loop THD 2.xx%具体小数点和量化方式有关重点看量级。开环输出幅度更大但 THD 明显偏高闭环输出幅度变小同时 THD 大幅下降。2.3 运行结果和波形特征怎么理解在alpha tanh这种模型里失真的典型表现是正弦波的峰值被“压平”波形看起来像圆角削顶。开环时输入峰值 1.0 直接驱动非线性块。tanh(1.0)已经明显偏离线性所以输出波形的顶部和底部被压缩。由于tanh是奇函数正半周和负半周仍然对称但谐波已经出现。闭环时每个时刻真正进入非线性块的信号是e x - β*y输入峰值 1.0 减去输出的一部分反馈后e的峰值明显小于 1.0。换句话说非线性块的工作范围被压缩到了更接近线性的区域于是输出波形更接近正弦。这里要特别注意一个容易踩的坑不要只看“输出变小”就认为负反馈是通过缩小信号换来了低失真。如果你想让闭环输出和开环输出幅度一致则需要提高闭环输入幅度。在不超过前级驱动能力和放大器饱和极限的前提下同等输出幅度下负反馈版本依然有更小的失真。实验里用同一个输入幅度只是为了更直观地观察失真改善方向。3. 把实验搬到真实电路共射放大器里的发射极电阻3.1 为什么共射放大器的非线性会产生失真在 NPN 双极型晶体管共射放大器中集电极电流和基极-发射极电压之间的关系接近指数关系Ic ≈ Is * exp(Vbe / VT)其中VT是温度电压当量常温下约为 26mV。这意味着Vbe稍微变化Ic的变化并不是线性的。当输入信号幅度比较小时整个工作点附近的小区间还可以近似看成直线一旦输入信号幅度变大输出波形就会偏离正弦产生谐波。如果没有发射极电阻大信号下的输出失真会比较明显。常见的现象是输入增大后输出波形的正半周和负半周变化不对称或者顶部变胖、底部变瘦。3.2 发射极电阻是负反馈在晶体管发射极串入一个电阻Re后情况会发生变化。设基极输入电压为Vb发射极电压为Ve Ie * Re则Vbe Vb - Ie * Re当Ie增大时Re上的压降增大Vbe会自动减小。而Vbe减小又会限制Ie继续增大。这个机制就是负反馈电路用“电流变大”这件事去反过来削弱驱动电压使电流变化更平稳。从反馈分类上看这是串联电流负反馈。发射极电阻采样的是发射极电流反馈电压和输入电压串联叠加最终作用于Vbe。电压增益也会随之改变。小信号下无反馈时电压增益大约为-Rc / re有发射极电阻时电压增益大约为-Rc / (Re re)其中re ≈ 26mV / Ie当Re远大于re时增益主要由Rc和Re的比值决定而不是由晶体管参数决定这是负反馈带来的最大工程价值增益更稳定失真也更低。3.3 用示波器或仿真软件做真实实验如果你要在真实电路板或者仿真软件里做这个实验可以按下面的思路搭一个共射放大电路电源电压 12V集电极电阻Rc 3.3kΩ发射极电阻Re 330Ω基极偏置电阻使用分压网络保证静态工作点落在线性区输入使用 1kHz 正弦波先从小幅值开始测量步骤如下先把输入幅度设到很小的值例如 5mV记录输出波形和增益。逐步增大输入信号直到输出波形出现肉眼可见的失真。记录此时的开环输出波形和 THD。如果需要对比可以通过调整电路开关切换是否接入发射极电阻。接入反馈电阻后保持输出幅度接近原先水平再次测量 THD。在真实电路里验证结果不会像 Python 模型那么干净因为示波器探头、信号源自身失真、电源纹波都会进入测量结果。所以测量前先确认信号源的失真比被测放大器低不要一上来就用一个本身已经明显失真的信号源去测 THD。这里有一个很典型的反面案例有人在反馈电阻Re上并联了一个大电容想提高交流增益结果发现失真不但没有改善反而和没有反馈时几乎一样。原因是电容对交流信号相当于短路把反馈电阻的作用绕过了交流负反馈被消除。所以音频放大电路里如果设计目标就是低失真通常不会把发射极电阻完全旁路。4. 关键参数反馈深度、环路增益和稳定性4.1
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

OSError排查指南:模型文件缺失、DLL初始化失败与磁盘空间不足的解决方案 2026/9/1 13:23:37

OSError排查指南:模型文件缺失、DLL初始化失败与磁盘空间不足的解决方案

简介:针对 ComfyUI-Easy-Use 背景移除节点运行时报 OSError 模型文件缺失的问题,这份可运行源码包提供了一套完整且可直接落地的排错方案。源码定位清晰:面向使用 ComfyUI 生态进行图像编辑的开发者,帮助快速定位并替换为正确版本…

阅读更多 →
2026实测报告:毕业论文AI论文工具横向测评,千笔AI凭三大硬指标登顶 2026/9/1 13:23:37

2026实测报告:毕业论文AI论文工具横向测评,千笔AI凭三大硬指标登顶

坦白说,2026年毕业论文写作的焦虑比往年更甚——知网查重标准再度收紧,各高校AIGC检测全面铺开,无数毕业生在"写不出来"和"查重过不了"之间反复拉扯。我们团队花了三周时间,以一篇真实的硕士论文选题为测试样…

阅读更多 →
用友秋招前端笔试全复盘:考点分布与避坑指南 2026/9/1 13:23:37

用友秋招前端笔试全复盘:考点分布与避坑指南

2023年秋招我投了用友集团的前端岗,笔试考完出来最大的感受是:范围广,但深度不算变态,重点考的是“有没有认真做过项目、有没有啃过基础”,而不是背多少偏题怪题。这篇文章就把我那次笔试的完整复盘整理出来&#xff0…

阅读更多 →
SQLite可靠性实战:从WAL机制到崩溃恢复与数据保护 2026/9/1 13:23:37

SQLite可靠性实战:从WAL机制到崩溃恢复与数据保护

做后端开发的这些年,我见过太多数据可靠性翻车现场:设备断电后 SQLite 数据库损坏、多进程写入报database is locked、程序崩溃后发现数据丢了一半。数据库本身不复杂,但可靠性问题一旦出现,排查成本常常远高于业务代码本身。Rich…

阅读更多 →
游戏商业化SDK集成全攻略:从入门到精通 2026/9/1 13:23:37

游戏商业化SDK集成全攻略:从入门到精通

引言:为什么SDK集成是游戏变现的"任督二脉" 想象一下,你辛辛苦苦开发了一款画面精美、玩法有趣的游戏,就像酿造了一坛好酒。但"酒香也怕巷子深"——如果没有完善的商业化体系,这坛好酒就无法转化为实实在在的收入。 商业化SDK(Software Development…

阅读更多 →
Predis一共有哪些方法可以调用? 2026/9/1 13:20:36

Predis一共有哪些方法可以调用?

Predis提供了很多方法来与Redis进行交互,涵盖了Redis的大部分功能。由于Redis的命令众多,Predis为这些命令提供了相应的方法。以下是一些常用的Predis方法示例:set($key, $value): 设置一个键值对。get($key): 获取指定键的值。del($key): 删…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞