ARTICLE DETAIL

资讯详情

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

手把手教你用运放搭文氏桥振荡器:输出50Hz纯净正弦波

手把手教你用运放搭文氏桥振荡器:输出50Hz纯净正弦波 先聊个现象很多人一提到自制信号源脑子里第一反应就是555。这很正常555做方波、PWM确实顺手搭个呼吸灯、蜂鸣器、电机调速都没毛病。但你要是想弄一个干净的正弦波555就开始露怯了——不是不能用而是用起来憋屈。方波滤波变正弦谐波压不干净相位还乱飘调个频率更是牵一发动全身。所以这次咱们换条路用一颗普通运放加上几个电阻电容搭一个文氏桥振荡器直接输出50Hz正弦波。这个方案不需要单片机、不需要DDS芯片成本就几块钱而且频率纯度高、波形漂亮。我会把原理和Multisim仿真操作一起讲透照着搭就能出波形。仿真文件我用的Multisim 14.3保存拿到的同学记得先解压再打开别直接在压缩软件里点。这个项目适合电子爱好者、刚学模电的学生以及需要低频正弦基准信号的嵌入式开发者。你不需要很高的基础我会把RC选频、运放增益、稳幅原理这些都拆开揉碎讲清楚。哪怕你之前只知道555的输出脚是几号看完这篇也能把电路搭出来。1. 为什么要扔掉555改用运放和RC做正弦波1.1 555做正弦波的三个坑先说结论555不是不能做正弦波而是它做出来的“正弦波”不那么纯。555本质是定时器输出天然是方波这就意味着如果你想要正弦波必须先让方波通过滤波器把基频以外的谐波干掉。听起来好像不难但真正做起来你会发现方波里含有大量奇次谐波基频是50Hz的话3次谐波150Hz、5次谐波250Hz、7次谐波350Hz都在。要把这些压到可接受的程度低通滤波器的阶数至少要3到4阶也就是至少三级RC网络。每加一级RC电路元件翻倍信号幅度还会掉相位也会偏。到头来你得到的波形可能是“带着肚子”的正弦波——谐波没压干净波形边缘还有毛刺。第二个坑是频率调整麻烦。555的振荡频率由R和C决定原理简单但如果你想让频率连续可调尤其是想在调频时保持正弦波质量就得同时改好几个元件的参数否则滤波特性和振荡频率不匹配波形立刻劣化。做实验的时候你会非常抓狂。第三个坑是输出幅度和失真之间的平衡。555输出摆幅接近电源轨直接滤波出来的正弦波幅度很难精确控制后面还得加衰减网络。而且555的方波上升沿非常陡高频分量极其丰富即使滤波之后残余噪声也容易被后级放大。1.2 文氏桥振荡器为什么能直接出正弦波文氏桥和555的思路完全不同。它不产生方波而是利用RC选频网络的正反馈让运放只对某一个特定频率放大其他频率自动被压制。这个特定频率就是你想输出的正弦波频率。打个比方你去公园荡秋千只有在你每次到达最低点的时候以合适的节奏推它秋千才会越荡越高。推的节奏不对秋千就荡不起来。文氏桥就是保证“推的节奏永远对”——RC选频网络只让一个频率满足相位平衡条件这个频率的反馈信号和输入信号同相位形成正反馈其他频率相位不对被自然衰减。这就是RC电路在这里的真正价值。RC电路在这里不是简单滤波而是参与振荡的选频核心。通过改变R和C的取值就能准确锁定输出频率不需要额外滤波网络输出的天然就是正弦波。这个思路对很多做信号处理的人并不陌生但真正自己上手搭过的人可能还不多。2. 电路核心原理从RC选频网络到运放增益2.1 用虚短虚断理解文氏桥的选频网络先摆出整个电路的核心结构。文氏桥的正反馈网络由两个RC支路构成一个串联支路一个并联支路。串联支路是输出端接一个电阻R1经过R1后接到运放同相输入端再通过电容C1接地并联支路是从运放同相输入端到地直接并联一个电阻R2和一个电容C2。这里用到的第一个运放牛刀小试的知识点是虚短和虚断。运放工作在负反馈状态时同相输入端和反相输入端电压近似相等这就是虚短两个输入端的输入电流近似为零这就是虚断。有了这两个概念你不需要复杂的运放内部结构分析只需要把外面电阻网络的电压关系算清楚。同相放大器的增益公式A 1 Rf / Rg就是从虚短虚断推导出来的。反馈电阻是Rf从反相输入端到地的电阻是Rg输出等于同相端电压乘以这个放大倍数。这个公式下面会用到。回到选频网络。设R1R2RC1C2C那么在角频率ω处串联支路阻抗Zs是电阻加电容容抗并联支路阻抗Zp是电阻和电容的并联组合。经过相量运算可以发现只有当ω 1/(RC)的时候整个网络的反馈系数β V/Vout达到最大数值是1/3而且此时输出和输入的相位差恰好是零。其他频率呢要么容抗太大导致分压比变化要么容抗太小导致信号被旁路反正相位和幅度都达不到正反馈的条件。这就是文氏桥的“选频”本质。频率公式也很简单f0 1 / (2πRC)这个式子直接决定你最终的振荡频率。我记得当年我第一次看到这个式子的时候以为是某个复杂推导的简化结果后来发现其实就是令ωRC 1也就是电阻的阻值和电容的容抗相等的那一点自然而然就得出来了。2.2 为什么必须让放大倍数大于3有了正反馈网络还必须配合运放的负反馈才能稳定振荡。如果只有正反馈信号会有多大大起来多大最后直接顶到电源轨上输出是方块波而不是正弦波。文氏桥的负反馈网络就是同相放大器的反馈电阻网络。运放输出经过反馈电阻Rf接到反相输入端反相输入端再经过电阻Rg接地。这里Rf和Rg构成同相放大器增益前面说了A 1 Rf/Rg。整个环路增益是放大倍数A乘以反馈网络的反馈系数β。由于在f0处β 1/3环路增益变成A/3。要让振荡器起振环路增益必须大于1也就是A必须大于3。用式子表达就是1 Rf/Rg 3也就是 Rf 2Rg如果Rf恰好等于2Rg环路增益等于1这是临界状态。实际上电路一有扰动稍微有点衰减就会停振所以设计上会让Rf稍微大于2Rg也就是初始增益比3多一点保证可靠起振。但也不能大太多否则起振后输出幅度快速增大容易冲到电源轨导致波形严重削波。那么问题来了起振的时候增益要大于3波形幅度大了以后增益必须降下来否则没有稳定点。这就是稳幅电路要解决的事情。2.3 二极管稳幅电路为什么这样接最常见的低成本稳幅方案是在反馈电阻Rf两端并联两个反向并联的二极管。注意方向一个二极管的阳极接输出端阴极接反相输入端另一个反过来接。这样无论是输出正半周还是负半周都必然有一个二极管处于正向偏置方向。具体到参数上我不建议让二极管直接并联在Rf两端因为完全导通之后增益会掉得太多波形容易削波。我的做法是把Rf拆成两个电阻串联Rf1 8.2kΩRf2 2.2kΩ两个反向并联的1N4148跨接在Rf2两端而不是跨接整个Rf。反相输入端到地的电阻Rg取4.7kΩ。这样设计的好处是信号幅度很小的时候二极管不导通Rf Rf1 Rf2 10.4kΩ增益A 1 10.4/4.7 ≈ 3.21刚好比3大一点环路增益略大于1起振迅速。信号幅度增大的过程中Rf2两端压降逐渐超过二极管导通电压二极管开始导通Rf2的等效电阻下降于是总Rf下降增益随之下降。即使二极管完全导通把Rf2短路掉增益也有1 8.2/4.7 ≈ 2.74小于3这说明存在一个中间平衡点。如果初始增益和最小增益都大于3理论上就稳不住会一直冲到削波如果最小增益大于3又会停振。所以拆电阻这个细节不是画蛇添足而是保证稳幅点存在。这个稳幅机制虽然简单但有一个固有缺点二极管在导通点附近是非线性的这个非线性会通过负反馈网络反映到输出上带来一些谐波失真。对要求不高的低频信号源完全够用但如果你追求极低的THD可以考虑用JFET做自动增益控制或者用乘法器做AGC环那是后话。2.4 运放选型与GBW、压摆率的关系50Hz在运放眼里属于“龟速”信号理论上随便一颗运放都能胜任。但搜索运放资料时经常看到GBW这个词也就是增益带宽积很多新手不理解它和振荡器有什么关系。GBW的定义是运放开环增益降到1时对应的频率或者更直观地说运放能提供的增益和带宽的乘积是一个常数。比如uA741的GBW约1MHz如果闭环增益是10那它能处理的最高频率大约就是100kHz。文氏桥需要的闭环增益只有3左右在50Hz下需要的GBW极小0.5MHz的运放都绰绰有余。但如果你把RC参数改小让振荡频率变成50kHz甚至500kHz就要开始关注GBW了。粗略估算方法是振荡频率乘以实际闭环增益得到理论最小GBW再留出5到10倍余量。比如50kHz振荡频率闭环增益3理论需要150kHz的GBW留10倍余量就是1.5MHzuA741刚好压线用起来会比较吃力建议换NE5532或者TL072这种10MHz级别运放。压摆率也要注意。压摆率描述的是运放输出电压的最大变化速率单位是V/μs。输出正弦波的峰值电压如果设为Vp频率为f那么最大变化率出现在过零处数值是2πfVp。以Vp 1V、f 50Hz来算只需要约0.31V/μsuA741的0.5V/μs刚好满足。如果是50kHz、峰值5V需要约1.57V/μs老运放就比较吃力了。我的Multisim仿真里直接用uA741因为元件库自带、参数保守、出问题好排查。实际焊板子时你换NE5532或者OP07都行外围电路不用改。3. 手把手搭一个50Hz正弦波信号源Multisim实操3.1 完整元件清单和参数计算先说清楚最终电路参数后面每一步都会围绕这个表展开。元件清单位号元件参数说明U1运放uA741也可以用NE5532/TL072/OP07R1电阻32kΩ串联支路电阻R2电阻32kΩ并联支路电阻C1电容0.1μF串联支路电容C2电容0.1μF并联支路电容Rf1反馈电阻8.2kΩ反馈网络上半部分Rf2反馈电阻2.2kΩ二极管稳幅电阻Rg电阻4.7kΩ反相端接地电阻D1/D2二极管1N4148反向并联在Rf2上VCC正电源12V运放8脚VEE负电源-12V运放4脚频率是怎么算出来的用前面那个公式f0 1/(2πRC)。R 32kΩC 0.1μF那么f0 1 / (2 × 3.1416 × 32000 × 0.0000001) ≈ 49.7Hz为什么用32k而不是标准的31.8k因为Multisim元件库里没有精确的31.8k电阻32k是常用值算出来49.7Hz离50Hz只差0.6%完全可以接受。如果你在实物零件盒里只有33k那算出来是48.2Hz也能用。这种差异对大多数实验场景没有影响。如果你想换个频率直接替换R和C就行。想输出100Hz可以把R改成16kC保持0.1μF想输出1kHzR改成1.6k或者C改成0.01μF。RC配平是关键R1和R2必须相等C1和C2必须相等否则相位平衡点会偏移振荡频率会偏离理论值甚至会因为选频特性畸变而起振困难。3.2 连线顺序和几个容易看错的节点我把Multisim里的连接顺序写一遍你只需要按顺序连就不会乱。第一步放置运放uA741。在Multisim的元件库里找到它双击确认。这个运放是8脚双列直插3脚是同相输入2脚是反相输入6脚是输出7脚接正电源4脚接负电源。第二步搭正反馈选频网络。从运放6脚输出节点出发接R132kΩR1另一端接到运放3脚同相输入端这个节点记为A点。从A点接C10.1μF到地。再从A点接R232kΩ到地以及C20.1μF到地。注意A点是整个电路中最重要的节点三根线在这里交汇接到同相输入端。第三步搭负反馈网络。从运放6脚输出节点出发接Rf18.2kΩRf1另一端接Rf22.2kΩRf2另一端接到运放2脚反相输入端。反相输入端再接Rg4.7kΩ到地。然后放置两个1N4148反向并联跨接在Rf2两端也就是说二极管D1的阳极接Rf1/Rf2的中间点阴极接反相输入端D2的方向完全相反。第四步接电源。运放7脚接12V4脚接-12V就近在电源引脚对地各接一个100nF退耦电容。仿真时就算不接退耦电容也能跑但实际焊板子时这个电容必须有后面会说。最后在输出端接示波器。示波器的A通道接6脚输出地线接公共地。3.3 仿真实战示波器看到的波形应该长什么样打开Multisim按下仿真按钮如果一切正常示波器上应该出现一条正弦波。不过刚开始你可能看到的是这样的场景波形慢慢从小变大起初是一条几乎看不见的微弱正弦经过几百毫秒之后幅度稳定下来最终输出稳定的正弦波。示波器参数设置也是有讲究的。50Hz的周期是20ms一格显示多少时间合适我的经验是时基Timebase设为10ms/Div这样能看到差不多两个完整周期。通道A的电压档位设为500mV/Div或者1V/Div具体看输出幅度。如果波形顶天立地甚至削顶肯定是不正常的。输出幅度大致是多少由于二极管稳幅的非线性特性输出峰值电压通常在0.8V到1.2V之间具体取决于二极管的导通特性和负反馈网络参数。这个幅度对后级放大来说完全够用你可以再接一个同相放大器把信号放大到需要的电平。用示波器测量功能看频率Multisim的示波器有测量光标可以直接读出周期。如果周期显示大约20.1ms对应的频率就是49.75Hz说明选频网络参数计算正确整个振荡器工作状态正常。如果想量化失真度Multisim里有失真分析仪用FFT看一下谐波含量。我这里实测THD大约在1%上下对二极管稳幅的方案来说算正常水平。如果你看到谐波分量特别大多半是输出削波了需要调小增益或者调整二极管配置。3.4 仿真不起振怎么办初始条件这个隐藏大招这是文氏桥Multisim仿真最容易踩的坑也是很多教程故意不说的关键点。理论上满足起振条件的文氏桥电路应该自己振起来但Multisim的仿真引擎有一个问题它默认在仿真开始前计算直流工作点如果电路处于完全对称的静止状态所有节点电压都是零没有任何扰动信号那振荡器就永远不会自启动。现实中因为有元件噪声、电源上电顺序的不一致性总会有点扰动但仿真环境太“干净”了反而不会自己振。解决办法有三种。第一种用瞬态分析而不是交互仿真。打开“仿真”菜单选择“分析”选“瞬态分析”在“初始条件”下拉框里选“用户自定义”然后手动指定某个节点有一个微小初始电压。最简单的做法是给A节点设置一个0.1V初始电压。这样一来仿真一开始A节点就有0.1V的残余电压经过放大器放大和正反馈累积波形会自己“长”起来。第二种在Multisim的“交互仿真”设置里找“初始条件”改成“设置为零”或者“用户自定义”。我这里更推荐瞬态分析因为可以精确控制初始条件而且能设置仿真时间方便看完整的起振过程。第三种加一个很小的冲击源。比如在A节点和地之间临时放一个脉冲电压源幅值0.1V、脉宽1ms让它给电路一个初始冲击冲击消失后电路继续振荡。这个方法直观但会让电路图上多一个临时元件我一般不用。我的仿真文件里直接在瞬态分析里设置了初始条件确保任何人打开都能看到稳定的正弦波不用再去手动调。4. 从仿真到实物信号源怎么用、怎么扩展4.1 输出能力和后级缓冲电路文氏桥振荡器直接输出的带载能力很弱因为输出端的电流是靠运放提供的虽然uA741的输出能力不算差但如果你直接接一个低阻负载负载电流会影响反馈网络的分压关系导致振荡频率偏移、幅度下降严重时甚至停振。所以我的建议是在文氏桥的输出端后面再加一个电压跟随器。运放接成单位增益缓冲输入接文氏桥输出输出直接接负载。电压跟随器的输入阻抗极高基本不向前级索取电流前级振荡器就能保持理想的空载状态。后级运放输出阻抗极低驱动能力一下子就好起来了。这个缓冲级在Multisim里只是一颗运放的事实际搭建时需要再焊一片运放如果你用的NE5532这种双运放一片芯片就能同时做振荡器和缓冲器资源不浪费。4.2 频率连续可调和幅度调节很多场景下你需要的不是一个固定50Hz频率而是需要在一定范围内连续调节。这时候前面说的R1/R2这个固定电阻可以换成双联同轴电位器。双联同轴电位器就是两个电位器装在同一个轴上旋转时两个阻值同步变化。这样才能保证R1和R2始终相等选频网络的中心频率才能准确跟随。如果你用一个单联电位器只改变R1R1和R2失配振荡频率会偏移而且选频特性会变差。幅度调节更简单在输出缓冲级后面接一个电位器分压就行。电位器一端接缓冲输出中间抽头接负载另一端接地。这样就不会影响振荡器本身的稳定点调起来也比较顺手。4.3 实物焊板必须要处理好的几个电源细节仿真里电源就是一个理想电压源但实物上电源没有这么干净上电瞬间有冲击运行时还有纹波。运放的电源引脚对地一定要加退耦电容正负电源引脚各一个100nF陶瓷电容位置离运放越近越好。如果条件允许再并联一个10μF电解电容滤低频纹波。另一个容易翻车的点是电源的上电顺序。正负电源如果不对称或者一边先上电一边后上电运放内部电路可能进入闩锁状态输出直接锁死在某个电压上。用实验室稳压电源时最好同时打开正负两路输出或者先设置好电压再上电。元件选型上电阻推荐金属膜电阻温度系数小电容推荐CBB电容也就是聚丙烯电容它的容值随电压和温度变化都很小用来做选频网络比瓷片电容靠谱得多。瓷片电容的容值会随直流偏压变化可能让实际振荡频率和你算出来的理论值差不少。二极管就用1N4148这种开关管别换成1N4007。1N4007是工频整流管结电容大、恢复速度慢在高频条件下会有额外的相移影响振荡器的相位平衡。50Hz虽然是低频但传导到二极管上的谐波分量频率并不低没必要给电路添乱。5. 常见问题与排查技巧实录5.1 Multisim主数据库无法访问怎么办这个搜索热度一直很高标题里虽然没写但实在太常见了我单独拿出来说。Multisim打开时报“MSC_Errors”说主数据库无法访问或者数据库操作失败原因是多方面的。最常见的是安装过程不完整。很多人下载的是精简版或者汉化不完全的版本安装时被杀毒软件拦截了部分文件导致数据库索引文件缺失。解决方法是彻底卸载关闭杀毒软件后重装。如果用的是汉化包汉化补丁可能覆盖了原本的数据库路径配置文件优先尝试恢复原版文件。如果重装还是不行可以尝试手动删除用户配置目录。在资源管理器地址栏输入%APPDATA%/National Instruments找到Circuit Design Suite目录把里面的.ini或者.db文件备份后删除再重新打开Multisim让它重建数据库。这个操作相当于重置用户配置很多莫名其妙的数据库报错都能解决。另外注意Multisim项目文件不要放在中文路径下工程路径里尽量不要出现中文和特殊符号。Multisim对中文路径的支持一直不算友好有时候工程打不开或者元件库加载失败就是因为路径里带有中文。5.2 实物振荡器波形异常的排查思路实物搭好之后如果输出不是正弦波或者干脆没有输出按照下面的顺序排查。第一步检测电源。用万用表量运放7脚和4脚正负电压是否正常差多少。如果只有正电没有负电运放是不会正常工作的。第二步测静态工作点。断开振荡输出直接测运放3脚和2脚电压正常应该都是0V上下如果差得很大说明虚短没有建立问题多半在负反馈网络检查Rf和Rg是否焊错脚位。第三步看二极管方向。两个1N4148反向并联在Rf2两端方向如果反了或者两个二极管同向并在一起稳幅电路就失去了作用输出会削波。第四步检查C1和C2的容值。瓷片电容标注10nF和100nF容易看错装上之后频率差出好几倍这时候不要怀疑电路原理先用万用表电容档量一下再说。波形上下不对称也是常见问题。二极管导通压降有离散性两个二极管特性不完全一致导致正半周和负半周的稳幅点略有不同。解决办法是选用配对管或者接受这一点点失真。如果你对对称度要求很高可以考虑改用JFET稳幅方案。5.3 我做过的几个操作习惯建议每次调完参数之后我习惯在Multisim里先把文件另存为带版本号的副本再继续改。这样万一新参数导致完全失控还能退回上一个能出波形的版本。这个习惯在调试复杂电路时作用特别大。仿真时间设置也有讲究。文氏桥起振需要一个过程你如果只仿真10ms可能波形还没起来就结束了。50Hz振荡器至少仿真300ms也就是约15个周期才能看到幅度稳定下来的完整过程。Multisim瞬态分析的结束时间尽量设置足够长宁可多跑一点也别截断在起振过程中。最后输出一个稳定正弦波之后别急着关仿真。用Multisim的FFT分析看一下谐波分布你会发现二次、三次谐波分量依然存在这是非线性稳幅的代价。如果你想把THD降到很低可以参考模拟乘法器AGC或者光敏电阻稳幅方案但那些电路复杂度会高一个数量级不是初学者的第一课。最后一个实用技巧如果你手头暂时没有32k电阻用33k替换也能出波形就是频率会掉到48Hz左右。这时候别急着改电容把C1和C2换成0.082μF准标值频率就能拉回50Hz附近。很多元件商的电容不是按你需求造的而是按标称值造的所以选RC参数时先定一个方便找到的电容容值再反推电阻值比死磕理论值要省事得多。上述这个思路在我后面做1kHz版本时也沿用了组合得很舒服。
返回列表