用LM358制作三角波锯齿波信号发生器:滞回比较器与积分器原理实战

发布时间:2026/10/7 18:16:57
用LM358制作三角波锯齿波信号发生器:滞回比较器与积分器原理实战
想给自己加一个能随手出三角波、锯齿波的信号源又不想一开始就上DDS、FPGA那种大工程那我强烈建议你从一颗最不起眼的运放入手LM358。没错就是那种一块钱能买好几颗、在很多电源板里头当误差放大器的双运放。用LM358做三角波/锯齿波信号发生器属于模拟电路里非常经典的“滞回比较器加积分器”结构电路零件少、原理直观面包板上半小时就能搭起来。这篇文章会从方案选型一路讲到实测算波形把电路设计背后的门道、参数计算的来龙去脉、以及我实际调试中踩过的坑全部摊开给电子爱好者、课设学生和想补模拟电路基础的朋友一份可以直接抄作业的完整攻略。1. 方案选型为什么我用LM358而不是555或DDS很多人一提到“自己做信号发生器”第一反应就是555定时器或者干脆考虑AD9833这类DDS芯片。这两种方案本身没问题但如果只是要一个简单的三角波和锯齿波源我认为LM358反而是最合适的选择。原因不光是成本低更在于这个电路能让你把“比较器”和“积分器”这两个模拟电路里的核心概念实实在在玩明白而不是对着芯片手册调寄存器。拿到一块LM358引脚一看就懂把两个运放分别接成比较器和积分器一个自激振荡器就成立了这种“看得见摸得着”的反馈路径对建立电路直觉特别有帮助。1.1 LM358这颗运放到底够不够用先看几项关键参数LM358是双运放封装单电源供电范围3V到32V双电源可以做到±1.5V到±16V输出高电平大概比电源正端低1.5V输出低电平在轻负载下可以接近0V增益带宽积大约1.1MHz压摆率典型值0.3V/μs输入共模范围包含地电位。这些参数的组合意味着什么它做几赫兹到几十千赫兹的低频信号发生器是绰绰有余的但你别指望它在100kHz以上还输出漂亮三角波带宽和压摆率摆在那波形会明显变圆、变歪。实际制作中我喜欢用±5V或±9V双电源供电因为这样比较器输出正负摆幅相对对称三角波的中心电平正好落在0V附近后续接示波器、接音频电路都很自然。如果你手头只有单电源也能做但需要加一个虚拟地后面我会单独说这部分。LM358的输出电流能力不强带负载时如果接的是低阻负载波形幅度会被拉低甚至失真所以应用场景最好是接示波器、接高输入阻抗的电路或者后面再跟一级电压跟随器做缓冲。1.2 与555、DDS方案放在一起比一比很多初学者喜欢用555做信号发生器是因为手上的555芯片太多而且方波输出非常直接。但555天生出的是方波你要得到三角波还得在输出端加一级积分电路这样电路变成两级不说积分出来的线性度还取决于RC的匹配。555的充放电回路也会受到电源电压波动的影响做出来的三角波精度一般。DDS方案则是另外一个极端。以AD9833或AD9850为代表的DDS芯片确实能输出频率精准、波形灵活的正弦波、三角波和方波还支持扫频但它需要单片机控制涉及SPI通信、寄存器配置、DAC输出滤波对纯硬件学习者来说学习曲线一下子陡了很多。FPGA加DAC就更不用说了适合做课程设计或者比赛但作为入门项目明显工程量大得多。方案三角波输出频率调节方式元件成本上手难度附加条件555加积分电路需要额外积分线性度一般调电阻电容很低中电路两级电源影响较大LM358比较器加积分器直接输出线性度良好调积分电阻或分压电阻很低低适合低频到中频十几kHz内很稳DDSAD9833等可输出多种波形单片机写寄存器较高较高需要编程基础FPGA加DAC任意波形数字逻辑/软核很高很高适合进阶或课设如果你只是想在实验台上有个稳定的低频信号源同时想弄明白运放是怎么通过正反馈和负反馈“自己振荡起来”的LM358方案是性价比最高的一条路。DDS可以留到以后有明确扫频或者精密频率需求时再上那时候你已经理解了模拟振荡的基本逻辑再玩数字方案会顺手很多。1.3 这套方案能干什么不能干什么基于LM358的这个信号发生器我实测下来频率范围大概能做到1Hz到50kHz左右超过20kHz后波形质量开始下降。它适合用来给音频放大器做简易信号输入、测试比较器的翻转特性、做PWM控制信号的基础源或者作为锁相环和VCO电路的初始参考。它的优势是快速、直观、成本低不适合的场合是高精度计量、射频调试、以及需要扫频或者复杂调制的情况。如果你需要的是1Hz以下极低频波形把积分电容加大就行比如用1μF甚至10μF电容频率能压到零点几赫兹。但电容用到电解电容时要注意漏电问题漏电会让积分器的积分线性度严重恶化三角波变成指数波。我在做超低频测试时吃过这个亏后来老老实实换成CBB电容波形才正回来。2. 电路原理拆解两个运放是怎么“玩”出三角波的认清LM358足够用之后接下来才是核心电路到底是怎么工作的。很多人照着网上的电路图焊好了能出波形但一问为什么、频率怎么算就说不清楚。我建议你别急着焊先把比较器和积分器之间的反馈关系想明白因为这套电路的所有参数都从反馈里来想明白了调频率、改波形都会很有底。2.1 整体拓扑滞回比较器加积分器的振荡结构整个电路只用两个运放第一级U1A接成滞回比较器输出的是方波第二级U1B接成积分器把方波积分成三角波三角波再反馈回U1A的输入端用来控制比较器的翻转时机。这样一环扣一环形成了自激振荡。简单说比较器负责给积分器提供一个方波输入积分器把这个方波变成三角波三角波又反过来决定比较器什么时候翻转就像两个人互相推着对方往前走谁也停不下来。这种拓扑比“555方波加积分”的电路高级在一点积分器的输出直接参与比较器的门限判断所以振荡频率不是简单由单次RC充放电决定的而是由积分器的积分速度和比较器的滞回窗口共同决定。换句话说系统是一个真正的闭环三角波的幅值会被滞回比较器自动锁定在一个范围内不会因为积分器不断积累而饱和这是这个电路能稳定工作的关键。2.2 滞回比较器门限电压是怎么算出来的要理解滞回比较器先看U1A的连接方式。比较器的反相输入端接的是积分器输出的三角波同相输入端则通过两个电阻分压得到参考电压同时这个参考电压还受到比较器自身输出的影响这就是“正反馈”。具体来说U1A输出经过R1接到同相输入端同相输入端又通过R2到地形成一个分压器。当输出是高电平时同相输入端会被抬高当输出是低电平时同相输入端会被拉低。于是比较器的翻转门限有两个一个高门限、一个低门限而不是一个固定值这就是“滞回”的含义。假设双电源供电输出高电平为VOH输出低电平为VOL那么同相输入端的两个门限分别是 VH VOH × R2 / (R1 R2) VL VOL × R2 / (R1 R2)三角波送到反相输入端当它从低往高升到VH时比较器翻转输出变成低电平当它从高往低降到VL时比较器再次翻转输出变成高电平。所以三角波的峰峰值就被限制在VH减去VL这个窗口之内。这个窗口宽度由R1和R2的比值决定R1越大、R2越小窗口越宽反过来窗口越窄三角波幅度越小。实际电路中不要指望理想值因为LM358输出高电平和低电平不完全对称量出来有一点偏差很正常。2.3 积分器方波是怎么变成三角波的第二级U1B是标准的积分器电路。比较器输出通过积分电阻R4接到U1B的反相输入端U1B的同相输入端接地反馈电容C跨接在反相输入端和输出端之间。由于运放的虚短特性反相输入端电位始终接近同相输入端也就是0V所以流过R4的电流等于比较器输出电压除以R4。这个电流只能流过反馈电容C于是电容以恒定电流充电或放电输出电压随时间线性变化也就是线性斜升或斜降。当比较器输出高电平时积分器输出向下斜降当比较器输出低电平时积分器输出向上斜升。因为电流恒定所以斜率是直线这就是三角波线性度好的原因。斜率大小等于比较器输出电压除以R4和C的乘积也就是 斜率 V / (R4 × C)这里的V是比较器输出电压的幅值。斜率越陡电容从低门限到高门限走完一个来回的时间越短频率就越高。所以调频率最直接的办法就是改变R4或者改变C电阻变小或电容变小积分速度变快频率升高。2.4 从三角波到锯齿波二极管让充放电不对称三角波的本质是对称的上升时间和下降时间一样。如果我想让波形变得不对称一边很陡、一边很缓就成了锯齿波。实现方法很多最省零件的是在积分电阻R4这条路上并联一条二极管加电阻的串联支路。具体做法是从比较器输出到积分器反相输入端原本只有R4这一条通路。现在再并一条由二极管D1和电阻R5串联的支路D1的阳极朝比较器输出端阴极朝积分器反相输入端。当比较器输出高电平时D1正向导通积分电阻变成R4和R5并联的等效值如果R5远小于R4那么等效电阻近似等于R5积分速度变得很快三角波这一段的斜率会非常陡。当比较器输出低电平时D1反偏截止电流只能走R4积分速度慢斜坡就缓。这样一个波形里就出现了速度不对称的现象也就是锯齿波。把D1反过来接陡的方向也会反过来得到上陡下缓的锯齿波。这个二极管选1N4148就行开关速度快反向恢复时间对低频电路完全没影响。R5的阻值决定回扫有多快一般取R4的十分之一到五分之一。如果R5和R4差不多波形又趋于对称R5越小锯齿波回扫越陡看起来越像教科书上的理想锯齿波。3. 实战电路与参数计算照着焊就能出波形原理搞通之后参数就是水到渠成的事了。下面这套参数是我实打实验证过的稳定性不错频率覆盖范围也比较实用。我会把公式推导过程写清楚因为你以后调频率、改波形幅度都得靠这套计算方法。3.1 完整电路结构与元器件清单这套电路一共需要以下元件LM358一片电阻R1、R2各10kΩ积分电阻R4用一个100kΩ电位器也可以串一个固定电阻限制最小阻值反馈电容C用100nF的CBB电容二极管D1用1N4148R5用10kΩ。如果做锯齿波模式就焊上D1和R5只要三角波这两个元件先不装。另外电源端加一个100nF陶瓷电容和10μF电解电容做去耦放在LM358电源引脚附近这个习惯能避免很多莫名其妙的振荡问题。接线关系整理如下U1A的输出1脚接R1到U1A的同相输入3脚R2从3脚接地U1A的反相输入2脚接U1B的输出7脚U1A的输出1脚经R4接U1B的反相输入6脚U1B的反馈电容C接在6脚和7脚之间U1B的同相输入5脚接地U1B的输出7脚就是三角波/锯齿波输出端同时接到U1A的2脚形成闭环。有的LM358资料里引脚标注可能会有差异焊之前先对着数据手册确认一下1脚和7脚的位置别接反了。我在面包板阶段因为记错引脚浪费过不少时间。3.2 参数计算示例手把手把频率算出来对于三角波对称模式振荡周期的近似公式是 T 4 × R4 × C × R2 / (R1 R2)所以频率为 f (R1 R2) / (4 × R4 × C × R2)这个公式怎么来的积分器从低门限VL积分到高门限VH需要的时间是R4 × C × (VH - VL) / VOH从高门限回到低门限的时间是R4 × C × (VH - VL) / |VOL|如果比较器输出正负幅度近似相等两个时间相等一个完整周期就是四倍的单个积分时间段。其中VH - VL等于(VOH - VOL) × R2 / (R1 R2)。把这些代进去整理之后就是上面的公式。举个例子。取R1 R2 10kΩC 100nFR4 10kΩ时 f (10k 10k) / (4 × 10k × 100nF × 10k) 20k / (4 × 10k × 100nF × 10k) 5000Hz如果把R4换成100kΩ频率就是500Hz。这说明一个100kΩ的电位器可以从大概500Hz调到5kHz覆盖十倍频程。想覆盖更低的频率把C换成1μF频率范围降到50Hz到500Hz把C换成10nF频率范围到5kHz到50kHz。所以实际操作中我习惯给电容做一个简单的多档切换比如用单刀多掷开关切换10nF、100nF、1μF三档再配合一个100kΩ电位器细调就能覆盖从几十赫兹到几十千赫兹的实用范围。3.3 频率调节怎么设计更顺手调频率最好用的方案是“粗调档位加细调电位器”。档位换电容细调换R4。R4我建议用一个100kΩ的多圈电位器多圈的调节精度比单圈好得多低频段尤其明显。因为单圈电位器转一点点就是几百赫兹的变化低频对不准多圈电位器能让你从容地把频率停在想要的位置。如果手上只有单圈电位器也能凑合用就是调的时候手要稳一点。R4如果只用电位器最小阻值可能是0Ω这会让积分器增益过大波形容易失真甚至自激。稳妥的做法是电位器串联一个固定电阻比如串一个10kΩ电阻这样R4的变化范围就是10kΩ到110kΩ保证电路始终工作在合理区间。我做过一版为了方便直接让电位器串固定电阻实测下来稳定性明显比单纯电位器好。3.4 电源方案双电源和单电源分别怎么接我最推荐的是双电源供电。用两个9V电池串联中间抽头接地就能得到±9V供电足够LM358工作而且电池供电的纹波很小波形干净。用直流稳压电源更方便但要注意电源的纹波会直接出现在波形上最好在芯片电源引脚对地各加一个100nF陶瓷电容电源入口再加一个10μF电解电容。LM358对电源要求不算高这组去耦做好的话示波器上看到的三角波线条非常干净。如果只能单电源供电也有办法。比如用9V供电把LM358的第5脚U1B同相输入端不接地而是接一个VCC/2的虚拟地。虚拟地用两个10kΩ电阻分压得到再并联一个10μF电解电容稳定电压。这个虚拟地就是整个振荡电路的地参考点比较器的分压R2、积分器的同相端都接到虚拟地上而不是电源地。需要注意虚拟地的带负载能力很差不能直接拿来给外部电路供电输出波形时负载要接在U1B输出端和虚拟地之间测量时示波器探头地线也最好接到虚拟地附近。这样做比双电源麻烦一点适合手头确实没有负电源的情况。4. 仿真与实物调试验证全流程我的习惯是先在电脑上把电路跑通再动手焊实物。仿真能让你快速验证参数公式、观察波形形状还能放心反复尝试不同阻值不用担心烧零件。等到仿真波形正常了再上面包板这时候心里基本就有谱了。这一节我分别说一下仿真环境和实物调试的完整过程。4.1 先用LTspice把电路跑起来现在免费又好用的仿真软件我首推LTspice。在原理图里放置LM358、电阻、电容和电压源LM358在LTspice的运放库里有现成模型直接搜就可以。接线按照前面说的拓扑来然后在仿真指令里输入瞬态分析比如.tran 10m意思是仿真10毫秒。因为电路起始状态可能不太稳定还可以加一条.startup指令让电源从0开始上升更容易观察起振过程。仿真里的一个重要技巧是观察波形时不要只看积分器输出要把比较器输出和积分器输出同时拉出来看。比较器输出应该是方波积分器输出是三角波两者之间的相位关系非常明显方波高电平时三角波下降方波低电平时三角波上升。这个对应关系在实物调试时也同样适用用双通道示波器一看就确认电路是否正常工作。如果仿真里发现不起振检查两个地方一是积分器输出是不是接到了比较器的反相输入端二是同相端的正反馈电阻有没有接对。这两个地方接错是最常见的仿真不振荡原因。LTspice的波形测量功能也能验证频率公式。直接把鼠标放到波形窗口测量相邻两个三角波峰值的时间差再和公式算出来的理论值对比。有一点偏差是正常的模型里LM358的输出饱和电平不是严格对称的仿真结果更接近真实情况但趋势会和公式保持一致。这样做过一次之后你会对“公式是近似仿真是接近实物是真实”这三个层级有非常直观的感受。4.2 面包板搭焊要点和测量点位仿真没问题就上实物。面包板搭这个电路很快但有几个细节直接影响成功率。首先是把LM358跨在面包板中间槽上确认1脚在第几行然后所有跳线尽量短特别是反馈回路从U1B输出回到U1A反相输入的这根线尽量别绕大圈。高频容易受干扰这个电路虽然频率不高但长跳线容易引入噪声。上电之前先用万用表确认电源电压正负电源不要接反。上电之后如果输出端没有波形先量各点直流电压。U1B输出应该有一个静态电平双电源时接近0V如果偏到电源轨上说明积分器饱和了振荡没建立起来。这时候不要急着换芯片检查一下R4有没有断路电阻有没有插错位置电容有没有拿成电解电容装反极性。这些是我自己包括帮别人排查时遇到最多的几个问题。波形正常后用示波器看U1B的输出。探头用1x挡还是10x挡都行但建议先把探头补偿校准一下否则高频段的波形会看到很夸张的过冲。测量点有两个U1B输出看三角波或锯齿波U1A输出看方波。用双通道同时接这两个点调整时基到能看到几个完整周期幅度档根据输出摆幅调整。在双电源±9V下三角波的峰峰值大概在几伏量级具体跟R1、R2比值有关。4.3 实测波形对照与参数标定电路起振之后我习惯做一次简单的“频率标定”。用示波器测出当前频率对照电位器刻度记录几组数据。这个记录很有用因为LM358的输出摆幅不是理想对称的实际振荡频率和公式算出来的理论值经常有百分之二三十的偏差但偏差是线性的标定一次之后就能大致预估某个刻度大概是多少频率。以我实际搭的电路为例R1R210kΩC100nFR4电位器调到中位大概50kΩ理论频率约1000Hz实测大概接近900Hz。原因是LM358输出高电平和低电平幅度不相等导致积分上升和下降斜率有差别周期比理想情况略微变长。如果你也想让频率更准可以把比较器输出加一级由电阻分压构成的限幅网络把摆幅锁在一个更对称的范围但这会让电路多几个元件对入门项目来说完全没必要。锯齿波模式下把D1和R5焊上。这里最容易遇到的一个现象是波形看起来“反了”不是上陡下缓而是下陡上缓。这就是D1方向接反了把它反过来就好。另一个现象是回扫那一段不够陡看上去还是很缓那就是R5不够小。我一开始用R510kΩR4100kΩ结果回扫斜率只比正常斜坡快一点改成1kΩ后回扫变得非常陡波形才真正有了锯齿波的样子。5. 常见问题与排查技巧实录这块内容是我最想分享的。做电路设计顺利跑通是运气调试才是常态。我把自己做这个项目以及帮人排查时遇到的高频问题整理了一遍每个问题都附上原因和解决办法遇到类似情况可以直接对号入座。5.1 不起振、输出卡在直流电平怎么办最常见的问题是上电后输出端没有波形只有一个直流电平。这时候先不要怀疑芯片坏了按顺序排查用万用表量比较器输出U1A的电压看它是不是接近正电源或负电源。如果是基本说明比较器状态是正确的只是振荡环路没闭环。重点检查U1B输出到U1A反相输入端这根反馈线是不是断了或者R4、C有没有虚插。面包板接触不良是头号嫌疑犯用万用表蜂鸣档一根一根量通路。还有一个容易被忽视的原因比较器的同相端参考电压没建立好。如果R1或R2其中一个没有接地同相端的电位就会飘到离谱的位置比较器可能一直锁定在某个状态出不来。测量U1A同相端的电压正常时应该约等于R2分压出来的值在VOH、VOL之间来回跳变。如果量出来接近电源轨或接近0V说明R1、R2有问题。最后再检查LM358芯片本身把芯片拔下来换一片试排除买到劣质件或者引脚被插坏的可能。5.2 波形不对称、频率和计算值差太远三角波看起来明显不对称上升和下降斜率不一样最常见原因是LM358的输出高电平与低电平幅度差异。LM358不是轨到轨输出高电平比VCC低1.5V左右而低电平可以接近地在双电源下高低摆幅天然就不对称。这是芯片特性不是故障只要偏差不是特别夸张都可以接受。频率偏太多则要从两个方面看。首先是公式本身是理想近似实际频率和理论值差个20%都是正常的。其次就是电阻电容的实际容差普通碳膜电阻误差5%电容如果是陶瓷电容可能误差更大还随温度漂移。如果想让频率更接近计算值把R1、R2、R4都换成1%精度的金属膜电阻积分电容用CBB或聚苯乙烯电容精度会明显改善。可以接受低频电路有偏差的话原参数一点问题都没有。5.3 高频段波形变圆、带毛刺怎么办当频率调到几十千赫兹以上三角波的尖峰会变圆波形顶部不再锐利。这是因为LM358的压摆率限制了电压变化的最大速度输出来不及跟上积分器的理想斜率。压摆率0.3V/μs意味着每微秒最多变化0.3V频率高了、斜率大了波形自然被“削圆”。这个限制是芯片本身决定的想提升高频性能只能换运放比如TL072、OPA2134这类压摆率高的JFET输入运放电路结构不变输出波形在高频段会好很多。毛刺和噪声则多是布线问题。面包板的长跳线、电源去耦电容离芯片太远、示波器探头地线太长都会引入噪声。处理办法是把电源去耦电容尽量贴近LM358电源脚所有地回路缩短示波器探头用弹簧地或者把地线夹夹在靠近测量点的位置。还有一个容易忽略的点如果用了开关电源供电纹波会直接串进波形这时候可以换成电池供电试一下波形如果变干净那就确定是电源纹波的问题。5.4 锯齿波模式异常的几个典型表现锯齿波模式下波形不对多半是二极管网络的问题。二极管方向接反波形就变成反方向的锯齿二极管不导通波形又变回对称三角波回扫不够陡是R5阻值太大。检查时先用数字万用表的二极管挡确认1N4148的方向然后量一下R5两端是否和原理图一致。这里有个经验我后来做锯齿波模式都会焊一个电阻座方便快速换R5比如准备1kΩ、3.3kΩ、10kΩ三档现场对比回扫斜率很快就能找到合适的视觉比例。如果锯齿波模式下频率和三角波模式差别很大也正常。因为加入D1和R5后其中半周期的积分电阻明显变小振荡周期被拉短频率变高。这一点在设计时就要考虑到做锯齿波的时候频率粗调档位可能需要往低频挪一档。调频率电位器时你会发现波形形状和频率是耦合的R5越小回扫越陡整体频率越高这是这个简单拓扑的特性不算bug理解了就行。结尾的一点实际体会这套电路我前前后后搭过好几个版本从最早的面包板到后来焊在洞洞板上每次都会有新发现。最深的体会是模拟电路这种东西光看公式和原理图很容易觉得“都会了”但真正上手之后接错引脚、接触不良、输出不对称这些实际问题会一个个冒出来而解决这些问题的过程才是最有价值的部分。现在工作台上还留着那块用LM358做的信号发生器板子平时给音频电路送个信号、测个分频器响应非常趁手。如果你也想继续扩展可以试着把R4电位器换成数字电位器或者光耦隔离的压控电阻就能实现简易扫频更进阶的方向是换成AD9833做DDS但那就是另一套玩法了。先从这颗一块钱的LM358开始把振荡的底子打扎实后面怎么玩都会有底气。