ARTICLE DETAIL

资讯详情

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

运放+RC搭建可调占空比方波发生器:原理、仿真与实测

运放+RC搭建可调占空比方波发生器:原理、仿真与实测 这阵子总有人问我想给学生党或者刚入门的朋友准备一个“看得见摸得着”的模拟电路实验做什么最合适我每次都推荐这个方案——用一片通用运放、两只电阻、一只电容搭出一个频率和占空比都可调的方波信号发生器再配合Multisim把仿真跑通。别小看这个电路它几乎把运放最核心的“虚短虚断”“正反馈”“比较器”概念全串起来了而且从仿真到面包板搭建一晚上就能出波形。这篇文章就把它的原理、参数计算、仿真细节和实际调试过程完整拆开讲清楚。既是纯粹的学习项目也能当实验台上的临时信号源用。它不像555那样开箱即用也没有单片机PWM那么灵活但它让你真正理解振荡器是怎么回事——为什么一个没有外部触发的电路能自己抖起来为什么RC电路能决定频率为什么正反馈会让输出电压在两个电源轨之间跳来跳去。下面我从最开始的思路讲起。1. 为什么偏偏用运放RC而不是555或单片机PWM很多人看到“方波发生器”的第一反应是555定时器。确实555只要外围加两个电阻一个电容就能稳定输出方波电路简单成本也低。但作为学习项目555是个黑盒内部那两个比较器、RS触发器、放电管初学者很难直观感受到“阈值”“充放电”“滞回”这些概念。而单片机PWM就更远了一个寄存器设好占空比和频率波形就出来了原理全被封装在硬件里。用运放和RC自己搭才能把手伸进振荡器内部。这个电路的另一个价值是“改起来太方便了”。想调频率改电阻电容就行想调占空比加个电位器或换一个充放电拓扑想看波形变化示波器探头随便接在哪里都有信号。整个系统里每一个元件都能直观地影响输出这对建立电路直觉非常重要。更重要的是这个电路恰好覆盖了运放应用的几个经典场景开环比较、正反馈、滞回阈值以及RC电路作为定时环路的数学推导。你把这套东西吃透之后再去读各种运放经典电路图会有一种“原来都是同一套思路”的感觉。比如滞回比较器可以拿来整定迟滞电压RC积分器可以放在PWM调制前端这些都能从这个小方波发生器延伸出去。我自己的理解是这个电路适合三类人。第一类是刚学完运放基础、想动手验证的学生第二类是要给学生准备实验演示的教师或爱好者第三类是想快速获得一个低频信号源、又希望顺手掌握模拟振荡原理的电子工程师。无论你是哪一类接下来这套从原理到实操的流程都值得走一遍。2. 一眼看穿振荡原理一个“自己触发自己”的环路先看拓扑别急着连面包板。核心只有两部分一个用运放搭的滞回比较器一个由电阻R和电容C构成的定时网络。两者首尾相接就形成一个自动翻转的环路。2.1 滞回比较器为什么是振荡的前提运放开环使用时同相输入端和反相输入端只要有一点点电压差输出就会冲到正饱和或负饱和。问题是如果没有正反馈输出只会停在某一个饱和电平上永远不会翻转。要让电路自动翻转必须把输出端的饱和电平引回同相输入端形成正反馈。这就是为什么叫做滞回比较器或施密特触发器结构。在这个电路里我取运放同相输入端通过电阻R2接到输出端同时通过电阻R1接地。输出高电平VOH和低电平VOL经过这两个电阻分压后在同相输入端形成两个阈值电压VH和VL。计算公式很直白VH β × VOHVL β × VOL其中β R1 / (R1 R2)。反相输入端接着RC网络。电容上的电压就是被比较的“被监视对象”。当输出为高电平时电容通过R充电电压一路向上爬等电容电压爬到超过VH比较器立刻翻转输出跳到低电平。然后电容开始放电电压往下掉一旦掉到低于VL比较器再次翻转输出跳回高电平。如此循环方波就出来了。这个过程特别像水塔的浮球阀水面低了就打开进水阀水面高了就关闭进水阀水塔里的水位始终在上下两个阈值之间波动。电容电压就是水位运放输出就是那个能开能关的阀门。2.2 RC充放电时间怎么算关键在计算电容从VL爬到VH、从VH掉到VL各需要多长时间。以充电段为例电容初始电压为VL最终目标是VOH因为它在通过R向输出高电平“看齐”。一阶RC充电曲线写成v_c(t) VOH - (VOH - VL) × e^(-t / (RC))当v_c(t) VH时充电时间t1为t1 RC × ln[(VOH - VL) / (VOH - VH)]放电段类似从VH向VOL回落到达VL所需时间t2为t2 RC × ln[(VL - VOH) / (VL - VH)]如果输出高电平和低电平对称即VOH - VOL再看阈值也对称那么t1约等于t2总周期T就是T t1 t2 2RC × ln[(1 β) / (1 - β)]频率就是f 1 / T。注意这个公式里没有电源电压只取决于β和RC。这也是这个振荡器最漂亮的地方——电源电压在一定范围内波动时频率几乎不动。2.3 一个萝卜一个坑为什么运放输入端的两个电阻是“门槛”很多人第一次搭这电路想不明白R1和R2到底起什么作用。我换个说法如果R1R210kβ就是0.5两个阈值恰好都在输出饱和电压的一半。输出高电平约8V阈值就是4V输出低电平约-8V阈值就是-4V。电容电压在±4V之间来回跑于是输出方波的高电平持续时间和低电平持续时间相等占空比就是50%。如果把R1增大β变大阈值靠近电源轨电容需要更多时间才能爬够这么多电压频率就变慢。反之R1减小阈值更低翻转变快。所以R1和R2不仅决定门槛还直接影响频率。知道这个后面做占空比调节就顺理成章了。3. 可调占空比的三种实现路线以及它们的取舍标题里写了“可调占空比”那就绕不开具体办法。实际做起来至少有三条路线调同相端参考电压、用二极管把充放电路径分开、以及更正统的三角波加比较器方案。每条都有各自的效果和代价。3.1 路线一改变同相输入端的直流参考电压基本原理是让运放同相输入端不只是通过R1接地而是再加一只电位器把一部分电源电压引进来。这会让VH和VL这两个阈值同时整体偏离零点但不改变两者的间隔。举例子如果参考电压被抬高到2V那电容充电时需要爬一个更高、更高的阈值才能触发翻转高电平持续时间变长放电压差反而变小低电平持续时间缩短。结果就是占空比偏向高电平超过50%。这种方案实现起来最简单一个电位器就能搞定。但它有个明显毛病调节占空比的同时频率也会跟着变。原因是充放电压差不再对称t1和t2一个变长一个变短总周期并不是恒定值。如果你只想要一盏能调亮度的LED这完全无所谓但如果你需要固定1kHz的PWM信号这就很尴尬了。另外参考电压从哪里取也很讲究直接在电源正负极上分压会混入电源纹波最好加一级RC滤波或用水用电位器再接一个小电容到地。3.2 路线二二极管加双电阻把充放电回路分开第二种做法更直观在运放输出端到电容之间充电走一只二极管和一个电阻放电走另一只二极管和另一个电阻方向相反。这样充电时间常数和放电时间常数独立可调占空比就能在很宽的范围内变化。充电电阻调大充电变慢高电平变长占空比变大放电电阻调大低电平变长占空比变小。好处是直观、好理解低频下非常稳定很多调光、调温电路都用这种结构。要注意的是二极管的导通压降会进入充放电回路导致电容最终“看到”的输出电平不再是精确的VOH和VOL数值计算时要留出0.5V到0.7V的余量。而且当占空比调到很小或很大时二极管压降对频率的影响会被放大波形会有一点不对称。做实验时优先选1N4148这类开关二极管别用1N4007后者的反向恢复时间太慢高频率下会有问题。3.3 路线三三角波发生器加比较器输出PWM如果占空比和频率都要独立调节前面的电路都很难两全。真正规范的做法是两步走先用本电路产生方波然后让方波经过一个积分器变成三角波再把三角波送进另一级比较器与一个直流参考电压比较。直流参考电压改变比较器输出方波的占空比就线性变化三角波的频率由第一级振荡电路决定完全不受参考电压影响。这个方案其实就从“用运放和RC做振荡器”自然延伸到了“用运放做PWM调制”。成本是运算放大器从一片变成两三片但对于想学PWM控制、电机调速、LED调光的读者来说这一片运放的学费非常值。我自己在做实验时经常把三级运放放在同一块面包板上第一级产生方波第二级积分成三角波第三级比较器出PWM一个晚上就能把模拟PWM的原理打通。三种路线没有绝对的谁优谁劣。教学演示选第一种够直观实际小功率调光选第二种够可靠想为后续控制项目打基础选第三种够正规。接下来我先讲Multisim仿真因为这些方案在仿真里切换也就几分钟的事。4. Multisim里从零搭出仿真工程仪器配置和常见坑标题既然写了“附Multisim仿真文件”我就把工程文件的搭建过程完整还原一遍。你拿到附件打开后应该看到的是一个LM358为核心的电路包含正负9V电源、两个10k电阻、一个0.047µF电容另外还有一台虚拟示波器。但我更建议你跟着下面的步骤亲手搭一次不然仿真文件对你只是一张会动的电路图。4.1 操作顺序与元件参数在Multisim中新建工程设计依次做这几步放置运放Place → Component → Group选AnalogFamily选OPAMP在器件列表里选LM358AD。如果库文件不全找不到LM358就用虚拟运放Virtual OpAmp替代并把它的Open-Loop Gain改成1e6左右Output Voltage Swing限制到比电源轨略小这样仿真结果仍然可信。放置正负电源放两个DC Power一个设为9V一个设为-9V负电源的“-”端接系统地。放置电阻电容R1和R2各10k充电电阻可以用一只100k电位器模拟电容0.047µF。连线运放反相输入接电容正端电容另一端接地电容正端再通过R接到运放输出端。同相输入端接R1到地同时接R2到输出端。放置示波器点击右侧仪器工具栏里的Oscilloscope把通道A接运放输出端通道B接电容正端。示波器的设置也要说一句通道A垂直档位设为5V/Div通道B设为2V/Div时基先给1ms/Div运行仿真后如果波形太密或太稀再调整。触发方式选Auto触发源选A通道这样波形会稳定停在屏幕上。4.2 仿真总出不来波形先检查这几处我最常被问到的问题就是“明明照着连了仿真跑起来输出却是直线”。这类问题九成出在以下三处。第一是电源接法。很多人放了一个正电源却忘了给运放放负电源甚至把负电源的正端接到了地上。运放的V和V-引脚必须分别接到9V和-9V否则输出根本没机会翻到负电平整个正反馈环路就停在高电平上。第二是示波器没选对通道。双击示波器后如果什么波形都没有先看A通道和B通道是否都勾选为Enabled再看Time Base有没有设置得离谱。比如电容取的太大频率只有几赫兹时基放在1ms/Div档位屏幕上自然是平的。第三是电容初始条件。电容没有初始电荷时仿真开始的一瞬间可能会有一段很长的“等待期”频率越高越不明显但低频时很吓人。解决办法是双击电容把Initial Conditions设为0V或者把Transient分析的初始条件设为Set to Zero。这不是电路问题是仿真器懒它不想替你算充放电起始过程。4.3 几个热门的Multisim问题顺手解决如果你在搭这个电路时还遇到过其他Multisim怪现象大概率在这几个坑里。先说“访问数据库发生错误”和“主数据库无法访问”。这多半是安装目录权限不足或者杀毒软件把数据库文件隔离了。优先用管理员身份运行Multisim再打开Options → Global Options → Paths确认Database路径指向真实存在的文件夹。如果数据库路径被改动或隔离过恢复文件后重启软件基本能解决。再说“仪器不全”。Multisim的虚拟仪器在右侧工具栏和常用元件工具栏是两回事。如果你看不到示波器、频谱仪、逻辑分析仪去View → Toolbars里把Instruments和Virtual Instrument工具条勾选出来。有些功能在菜单栏Simulate → Instruments里也有一份注意确认是不是用了精简版。仿真速度太慢的问题多半是时基太细或者仿真步长太小。在Simulate → Interactive Simulation Settings里把Maximum Time Step适当放大或者用Transient分析时把Minimum Number of Time Points调低。这个电路本身节点少大部分卡顿其实是示波器在实时刷新大量数据导致的关掉不用的通道就好。5. 具体参数计算频率公式、元件选型和运放性能边界仿真能跑只是第一步还得知道怎么按目标频率去选R和C。这一节把公式落回计算器再聊聊哪些运放指标会限制你往上做高频。5.1 一个完整的设计例子我以做一个约1kHz方波为例。取R1R210k那么β0.5系数ln[(1β)/(1-β)]≈1.099。频率公式改写为RC 1 / (2 × 1.099 × f)目标是f1000Hz所以RC≈0.455ms。如果固定R10k需要的C约0.0455µF标准值取0.047µF算出来频率约968Hz误差完全可以接受。如果希望频率可调就把R改成“4.7k固定电阻10k多圈电位器”用旋钮从低到高覆盖几百赫兹到两千赫兹。需要注意这个公式里默认运放输出电压幅度对称。而实际运放离电源轨还有一点压差比如LM358在±9V供电时输出高电平可能只有±7.5V左右高低幅值还不一定完全对称。严谨的做法是在Multisim里实测VOH和VOL再代入前面精确版的t1、t2公式重新验算一遍。实测和理论差个百分之几很正常不影响实验结论。5.2 运放选型表同是通用运放差别其实不小这块电路对运放要求不高但不同运放的可用频率上限、压摆率、输出驱动能力还是有明显差距。下面是我常用的几颗对比型号GBW典型压摆率适合方波频率上限特点LM3581MHz0.6V/µs约10kHz以下单双电源都能用低功耗便宜TL0813MHz13V/µs约100kHz左右FET输入输入偏置电流极小NE553210MHz9V/µs几十到上百kHz低噪声和运放经典电路搭配多μA7411MHz0.5V/µs约几kHz以下老古董适合课堂演示不建议新设计如果你想要更高频率比如几百kHz的方波就要留意压摆率限制了。方波的上升沿需要足够快的电压变化速度运放的压摆率SR必须满足SR ≥ 2π × f × Vpp。以输出摆幅为16V峰值之间计算100kHz方波就需要SR ≥ 10V/µs左右。LM358在这里明显不够用TL081和NE5532还勉强能跑再高就得考虑高速比较器或专门的高速运放。5.3 单电源怎么改虚地才是关键很多人工作台上只有一个正电源能不能做这个电路当然能前提是把“地”抬高到电源电压的一半。我常用的办法是拿两个10k电阻从VCC到GND分压中间点接一个10µF电解电容对地滤波形成虚地。运放的正电源接VCC负电源接真的GND信号地全部以虚地作为参考。改完之后要注意两点一是运放输出高电平和低电平时参考点不再是0V而是VCC/2这会导致阈值计算跟着平移二是虚地的稳定性直接影响占空比分压电阻上的电流如果太大虚地会被拉偏。所以我建议分压电阻用10k以上并在虚地到真地之间加强滤波电容。6. 面包板实测装配、调试和几个“看起来像坏了”的问题仿真跑通之后该上真家伙了。面包板搭建和Multisim里连线是两套完全不同的体验主要区别在接触电阻、寄生电容和电源噪声上。我把从装配到调试中真正踩过的坑都写在这里。6.1 元件清单与装配顺序我手里常备的一套材料LM358一片10k电阻两只0.047µF无极性电容一只10k多圈电位器一个两条9V电池或一台±9V直流电源面包板一块几根短跳线。如果做LED指示再加一个1k限流电阻和一个普通LED。装配顺序我建议从运放电源脚开始先接VCC和VEE确保电源轨道正确再接RC定时网络最后接同相输入端的分压反馈网络。每一步都用万用表确认一次通断。面包板最大的坑就是接线看起来插进去了实际上只搭在导电条边缘尤其是长腿元件在面包板中间位置特别容易虚接。养成“每根线都要看到金属部分完全没入插孔”的习惯能省下一半的排查时间。6.2 波形出不来按这套逻辑排查如果上电后输出没有任何振荡不要乱拆。先把万用表打到直流电压档量运放输出脚看它停在哪个电平。如果停在某个饱和电平一动不动说明阈值翻转条件没有满足大概率是电容根本没有充放电路径。这是最常见的一种故障症状是电源正常、运放正常、输出就是一条直线。这时量一下电容正极的电压如果也是恒定值就沿RC路径逐个节点查十有八九是某个电阻插错孔了。如果输出在跳变但方波频率和仿真差太多很多时候不是电路坏而是容差问题。电容0.047µF的陶瓷电容实际容量可能偏出±10%如果是电解电容甚至能差到-20%以上。换一颗电容试试或者用万用表电容档实测之后再代入公式别一上来就怀疑线路。如果波形边沿有很多毛刺或者振铃这不是电路震荡不稳定而是示波器探头或者面包板寄生参数造成的。试着把探头接地线夹换成短弹簧接地端输出端串一个100Ω的小电阻波形立刻干净很多。同时检查运放电源引脚上有没有0.1µF陶瓷退耦电容电源轨两端再并一个大电解这一步对高频尤其重要。6.3 带载之后频率变了是怎么回事用这电路驱动后级时很多人会突然发现频率飘了。原因在于输出负载直接拉低了运放的输出饱和电平VOH变小了阈值也跟着变RC充放电的时间常数虽然没有变但充电的“终点电压”变了。解决方法是让方波输出先经过一级电压跟随器再带负载或者干脆把负载电阻选大些至少大于10k。如果还想进一步扩展用途可以在输出端后面加一个RC低通滤波把方波变成近似正弦波但要注意滤波电容会额外增加负载电容影响电路频率。更稳妥的做法仍然是加一级缓冲再滤波。我经常用这个电路当作一个简单的模拟波形源前面放一个由NE5532组成的电压跟随器后面接不同的滤波网络就能同时给方波、三角波、正弦波三种波形。最后再分享一个我自己的实操习惯在Multisim里搭好电路后先把R1或R2改成电位器用快捷键在仿真中反复拨动找到最想看到的一组波形再照着它去焊接面包板。这样焊完之后电位器还能顺手当频率微调用比抱着计算器先算完所有值再动手舒服得多。这个项目最迷人的地方不是那一声清脆的方波而是你终于能看着示波器上的波形说出它的每一个拐点都是由哪颗电容、哪只电阻决定的。
返回列表