ARTICLE DETAIL

资讯详情

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

LM324四运放打造信号发生器:方波、正弦波、三角波原理与实测

LM324四运放打造信号发生器:方波、正弦波、三角波原理与实测 手里正好有一片LM324想做个能输出方波、正弦波、三角波的信号源很多人第一反应是上DDS芯片或者STM32DAC其实这片几毛钱的四运放就能把三种波形一次全搞定。今天这篇文章就从原理推导、参数计算到面包板实测完整拆一遍这个经典电路。无论你是做课程设计、调音频电路还是想给STM32的ADC找一路模拟信号源这套方案都够用而且成本压到五块钱以内。LM324是四路运放单颗芯片里集成了四个独立的运算放大器。用两路做方波和三角波发生器再拿一路做三角波到正弦波的整形最后一路做输出缓冲或幅度放大四路刚好全部利用。这个设计不花哨但逻辑很顺方波和三角波本来就是一体的正弦波通过整形网络从三角波变换过来电路简单、参数可算、调试也直观。1. 整体设计思路与选型理由1.1 LM324这个芯片到底适合干什么先说说为什么选LM324。这颗芯片是四运放里最“皮实”的那种供电电压范围从3V到32V支持单电源或者双电源供电静态功耗低价格便宜到可以忽略不计。它的增益带宽积大概在1.2MHz左右压摆率约0.5V/μs这些参数在今天看着不算亮眼但做几百赫兹到几十千赫兹的波形发生器完全够用。LM324的输出能力也要心里有数。它的输出不是轨到轨正电源下高电平一般到VCC-1.5V左右负电源下低电平到VEE1.5V左右。也就是说用±5V供电时输出最高约3.5V、最低约-3.5V。这个摆幅对驱动ADC、后级放大器或耳机监听都够但如果你想要真正的满幅输出就得额外加一级轨到轨缓冲或者提高供电电压。用LM324做波形发生器的另一个好处是温度稳定性和可靠性。我手里这块是几年前的TI产LM324N实测下来在20℃到35℃的室温范围内输出频率漂移很小不会因为手摸了一下电阻电容就跳频。这一点对长期运行的测试环境很重要。1.2 波形怎么排先方波三角波再整形成正弦三种波形的产生顺序是有讲究的。最常见的做法是先让电路自己振荡出方波和三角波这俩天生是“搭档”一个迟滞比较器输出方波一个积分器把方波积分成三角波两个运放形成闭环振荡。正弦波不直接振荡而是从三角波通过整形网络转换过来。为什么正弦波不直接做因为直接做正弦波振荡比如文氏桥需要稳幅电路要么用热敏电阻要么用灯泡要么用JFET做自动增益控制这些在LM324这种通用运放下都比较麻烦频率调节也不方便。而方波-三角波发生器只靠电阻电容就能稳定振荡频率由RC参数决定调起来非常顺手。三角波再经过二极管折线整形就能得到失真度在百分之几级别的正弦波对大多数演示、测试和ADC信号源场景已经足够。这套方案的额外好处是四个运放的分工非常清晰U1A做迟滞比较器出方波U1B做积分器出三角波U1C做三角波缓冲U1D做整形后信号的幅度调节或输出级。没有闲置运放也没有额外芯片整块电路就靠一片LM324加几个电阻电容二极管。1.3 供电方案双电源优先单电源也能用供电方式直接影响波形形态和调试难度。我最推荐用对称双电源供电比如±5V或者±9V。双电源下运放输出天然围绕0V对称方波高电平正、低电平负三角波在正负之间线性变化后级接示波器或者经过隔直电容给ADC都很方便。如果手头只有单电源比如5V或12V也能工作但需要把参考电压抬到VCC/2。具体做法是用两个等值电阻分压得到一个2.5V中点把这个中点接到比较器的同相端参考端和积分器的同相端所有输出波形就会围绕2.5V上下摆动。这样相当于把0V参考点平移到了2.5V单电源下依然能输出完整的方波、三角波和正弦波只是幅度会受输出摆幅限制比双电源方案小一些。对刚开始做这个电路的朋友我的建议是直接用±5V或±9V。双电源适配器或者两节锂电池串联都能供上波形对称性好公式计算也简单少踩很多偏置方面的坑。2. 方波和三角波同时产生迟滞比较器积分器2.1 两个运放各干一件事互相较劲儿方波和三角波发生器的核心由两个运放组成。第一个运放U1A接成同相迟滞比较器输出方波第二个运放U1B接成积分器把方波积分成三角波。比较器的反相输入端接积分器的输出积分器的输入接比较器的输出两个运放首尾相连形成一个完整的闭环。我把工作过程讲得具体一点。假设刚上电时U1A输出为高电平这个高电平经过电阻R加在U1B的反相输入端U1B就会以恒定的电流给反馈电容C充电输出端电压线性下降。电压下降的斜率由R×C决定电阻越小、电容越小下降越快。U1B的输出同时接在U1A的反相输入端当三角波电压下降到某个负阈值时U1A翻转输出变为低电平。U1A输出变为低电平后U1B反相输入端的信号从正变成负积分方向反转输出端电压改为线性上升。当三角波上升到正阈值时U1A再次翻转输出回到高电平。如此反复U1A输出就是方波U1B输出就是三角波。两个波形频率一样方波用来做逻辑信号或者经过转换做PWM三角波用来做扫描信号或者后续正弦整形。这里要特别提醒一句比较器必须有正反馈也就是从U1A输出端到同相输入端要接一颗反馈电阻Rf同相输入端再通过另一颗电阻Rg接到参考地。没有正反馈比较器会处于线性放大状态而不是不断翻转的迟滞状态电路根本不起振。2.2 频率和幅度怎么算这个电路的频率公式看起来复杂实际推导逻辑很直白。迟滞比较器的翻转阈值由反馈电阻Rf和接地电阻Rg决定阈值系数βRg/(RfRg)。当比较器输出高电平VOH时三角波要线性上升到β×VOH才会触发翻转下降时同理要跌到β×VOL。积分器输出从负阈值到正阈值的时间就是半个周期。推导出来的振荡频率是f (Rf Rg) / (4 × Rg × R × C)注意公式里的R和C是积分器的电阻和电容Rf和Rg是比较器正反馈网络的两个电阻。三角波的峰峰值近似为Vpp 2 × VOUT × Rg / (Rf Rg)VOUT是比较器的高电平幅度或者低电平幅度双电源对称供电时高低幅度相等。频率公式里没有VOUT说明电源电压波动不影响频率稳定性这一点比很多文氏桥振荡器好很多也是这个拓扑的一大优势。举个例子我实际用的参数是Rf20kΩ、Rg10kΩ、R10kΩ、C100nF±5V供电。代入频率公式(2010)/(4×10×10×0.1)kHz750Hz。这里计算时把kΩ和μF单位直接带入得到kHz不影响结果。三角波峰峰值按输出电压约3.5V算大约是2×3.5×10/302.33Vpp波形以0V为中心上下摆动直接接示波器看非常清晰。77002.3 抄作业一组实测参数和扩展档位给直接想搭电路的朋友一组可以抄的参数。比较器部分的反馈电阻Rf取20kΩ接地电阻Rg取10kΩ积分电阻R取10kΩ积分电容C决定频率档位。下面是几个常用档位C取值理论频率实际用途1μF75Hz慢速扫描、电机控制粗调100nF750Hz音频范围初测、ADC采样调试10nF7.5kHz音频信号、滤波器扫频1nF75kHz高频测试注意LM324压摆率限制实际搭建时C建议用CBB电容或者C0G瓷片电容漏电小、温漂低三角波线性度会好很多。电解电容不是不能用但漏电大会导致积分电容上的电压自己偏移三角波上下不对称频率也有可能飘。电阻精度也不用追求太高普通1%金属膜电阻就够。频率误差主要由RC精度决定如果你需要频率很准可以用多圈电位器代替积分电阻R边测边调到目标频率。这个设计本身不是精密频率源但做演示和常规测试足够了。3. 三角波变正弦波二极管折线整形方法3.1 为什么不能靠一阶低通硬滤看到“三角波转正弦波”有人会想三角波的高次谐波按1/n²衰减直接用一个低通滤波器滤一遍不就行了理论上是能出正弦波但实际效果很差。三角波的谐波集中在奇次谐波上三次谐波幅度大约是基波的11%五次要再低一截。一阶低通即使把截止频率调得很低也没法同时保留足够强的基波又完全消除三次谐波出来的波形要么幅度太小要么还带着明显的“毛刺”感。更好的办法是二极管折线整形本质上是一个多段逼近器。三角波的上升边和正弦波的上升边形状不一样正弦波在峰值附近明显更平缓。整形网络通过在三角波的不同电压段切换增益把峰值附近“压扁”把过零点附近“拉直”多次折线叠加后就能逼近正弦曲线。这个思想和现在数字信号处理里的查表法很像只不过用模拟方式实现。段数越多逼近效果越好但电路复杂度也越高。用两个到三个阈值点做两段折线THD能到百分之五到八左右用四个阈值点做四段折线失真可以进一步降低。对演示和给ADC当信号源这个精度完全够。3.2 折线逼近整形的原理和接法搭建整形网络不需要复杂芯片就用LM324剩下的运放加上1N4148二极管和几颗电阻。基本思路是三角波经过一颗电阻R0送入整形节点节点通过几路二极管连接到不同参考电压。当输入电压超过某一档的参考电压时对应二极管导通节点上等于并联进去一颗电阻改变了分压比例从而降低这一段的增益。具体接法是这样的。三角波先经过U1C运放缓冲保证阻抗匹配和带载能力。缓冲后的信号经R010kΩ接到整形节点。正常范围内节点电压跟输入呈线性关系。第一级阈值设在三角波峰值的30%左右第二级设在70%左右。正弦波的形状决定了峰值附近要压、中段要缓所以二级折线就是先以较高增益通过零点区域再降低增益通过峰值区域。阈值电压用电阻分压从±5V电源获得每路串一个多圈电位器进行微调。二级管方向要注意正半周的阈值支路用可控硅式的方向负半周完全镜像。调试的时候先用示波器同时观察三角波输入和整形输出看输出波形峰值附近是不是出现了明显的圆弧过渡。如果峰值被削成近乎平顶说明阈值设低了或者导通电阻太小如果峰值还是尖的说明压缩不够需要把阈值电压往峰值方向移动。我个人最常用的做法是三个阈值点40%、70%、90%。三点四段逼近THD已经比较理想。再多加一级电路复杂度提升明显但对LM324这个级别的整形方案来说边际收益不大。3.3 调出低失真正弦波的经验这部分多写一点因为实际调试的时候理论参数只能保证“能出波形”距离“波形漂亮”还有很长的路。我最开始搭的时候输出总是一头圆一头尖示波器上看特别明显排查了很久才发现是正半周二极管装错了一颗。第一个经验是阈值电压一定要独立可调。四个阈值分别用四个多圈电位器先全部调在50%位置然后只调正半周的第一级观察波形正半周根部到峰值的过渡是否圆润调完正半周再调负半周。两边独立调比两边共用一组参数好调得多。第二个经验是整形节点的负载电阻不能太小。R0选10kΩ后面的接地电阻至少也要10kΩ否则输入信号会被分压掉太多输出幅度变得很小。LM324输出电流有限负载阻抗太低也会增加失真。第三个经验是最后一级运放做幅度恢复。整形网络本质上是一个衰减网络输出幅度可能只有原三角波的百分之三四十。我用U1D接成同相放大器放大倍数设定在2到3倍输出端再接一个10kΩ电位器做幅度微调。这样正弦波的实际输出幅度可以自由调整适配后续ADC输入范围或者音频后级。如果你不想做二极管整形还有一个备选方案是文氏桥正弦振荡器加比较器转方波、积分器转三角波。这个方案的优点是正弦波直接来自振荡器失真更低缺点是频率调整不如方波三角波发生器方便而且额外占用运放资源。对标题这个场景用折线整形更合理。4. 完整搭建流程与实测记录4.1 面包板/洞洞板的搭建顺序与去耦搭建顺序决定调试难度。我建议先把U1A和U1B组成的方法三角波振荡器搭好不接后面任何整形部分先调出干净漂亮的方波和三角波。这两路没问题了再接U1C缓冲和二极管整形网络最后接U1D输出级。分步搭建每步都能验证出了问题也容易定位。电源去耦是模拟电路的老问题。LM324每个电源引脚对地接一颗0.1μF陶瓷电容尽量靠近芯片引脚。如果电源是开关电源或者USB供电建议再加一颗10μF电解电容储能。见过好多次波形毛刺严重最后发现就是电源去耦没做100kHz级别的高频噪声全串进波形里了。面包板搭建时积分电容的位置要特别小心。面包板寄生电容比较大积分电容引脚应尽量短反馈电容不要跨在面包板长条区域的远端否则寄生电容会影响实际积分时间频率计算值会和实测值差出一截。LM324的输入偏置电流很小面包板漏电影响有限但清洁干燥的面包板仍然会让波形更稳定。4.2 实测波形记录与数据我实际搭出来的电路电源用±6V两节18650锂电池模拟的对称电源参数是Rf20kΩ、Rg10kΩ、R10kΩ、C100nF。示波器测出来的方波频率稳定在738Hz左右和理论的750Hz有一点偏差主要是电阻电容的实际精度和面包板寄生参数造成的。这个偏差在正常范围内不用纠结。方波的高电平大约4.5V低电平大约-4.5V上升沿在示波器1μs/div时看起来几乎是垂直的实际测拐角处有轻微圆化这是LM324压摆率限制的必然结果不影响逻辑使用。三角波的峰峰值大约2.4V波形线性度很漂亮从示波器网格上看整个斜坡没有任何肉眼可见的折点。接上二极管整形网络后正弦波输出经过U1D放大最终幅度大约3Vpp。用FFT功能看频谱基波在738Hz三次谐波大概比基波低30dB五次要更低一些。这个底噪水平拿来当音频振荡器完全够用给STM32 ADC做信号源也没问题。正弦波的失真主要来自折线段数有限如果你对THD要求更高可以增加阈值点数或者在整形后再串一个窄带滤波器。4.3 和STM32联动ADC采集与信号调理这个电路的输出和STM32配合使用是很自然的应用。STM32的ADC输入范围一般是0到3.3V而LM324双电源下输出是围绕0V正负摆动直接接数字地会切掉负半周。解决办法是用电容隔直再叠加一个1.65V直流偏置把正弦波整体抬到ADC的安全范围内。操作上先从LM324输出端串联一个1μF到10μF的电容电容后面接两个10kΩ电阻分压3.3V得到1.65V偏置信号在偏置点上叠加后送ADC引脚。这样正弦波就从-1.5V到1.5V变成了0.15V到3.15V能完整落入ADC量程。采样率建议设为信号频率的20倍以上再配合过采样效果更好。反过来如果你在用STM32的DAC输出DDS正弦波LM324可以做模拟输出端的缓冲跟低通滤波。DAC输出带负载能力弱直接接示波器都会有幅度跌落接一级LM324跟随器后输出阻抗降到几十欧姆后面再接滤波器或者放大器都从容得多。这也算两个方向的场景打通了。5. 常见问题排查与避坑清单5.1 不振荡、幅度小、波形畸变排查表这个电路故障率最高的几个点基本都在比较器反馈和积分电容上。我把常见现象、可能原因和排查方向整理成一张表调试的时候对着看就行。现象可能原因排查方法完全没波形输出一直高或一直低正反馈电阻Rf没接或断路运放进入线性放大状态检查Rf和Rg是否按图接入用万用表测通断有方波但三角波几乎是一条直线积分电容C断焊或没有插紧替换C或用示波器表笔触碰积分器反相端看有无反应方波和三角波都有了但频率和计算值差很远积分电容用了电解电容漏电大换CBB电容或C0G瓷片电容三角波上下不对称双电源不对称或运放输出摆幅限制检查电源电压实际测/-电源对地电压正弦整形输出一头平一头尖二极管极性装错或阈值电位器没调分别调正负半周阈值检查二极管方向波形上有明显毛刺电源去耦不充分检查0.1μF去耦电容是否靠近电源引脚5.2 三处容易翻车的细节第一处是积分电容的极性。如果图省事用了有极性的钽电容或者电解电容装反之后电容漏电会特别大三角波会慢慢漂移甚至直接饱和到电源轨。我一开始就是吃了这个亏换了无数参数才想到是电容的问题。第二处是整形网络二极管的选择。1N4148是比较理想的选择开关速度快、压降低、温度稳定性好。千万别用整流二极管比如1N4007那玩意恢复时间太长在高频下会严重影响整形后的波形形态本来该圆润的峰值反而会出现明显的折角。第三处是幅度太小时不要马上怀疑电路。LM324的输出摆幅不是轨到轨±5V供电下方波高电平只能到3.5V左右三角波峰峰值因此打得折扣。想要更大输出把供电升到±9V或者±12V波形幅度立刻上去。电源电压高低不影响频率只影响幅度这一点在设计的时候就要留好余量。5.3 参数速查与后续扩展最后给一个速查思路。想要改变输出频率优先改积分电容CC不变时改积分电阻R。频率和RC乘积成反比换一个档位就把电容整体换掉细调电位器串在R的位置。比较器的Rf和Rg决定三角波幅度想增加三角波峰峰值增大Rg、减小Rf但幅度太大会让三角波接近运放输出极限反而失真要留一点余量。如果后续想把这个电路做成产品或者实验模块可以加一个输出开关切换三种波形加一个电位器调频率再加一个末级运放做幅度调节。整个系统还是只用一颗LM324加外围元件成本低、调试简单能覆盖从几十赫兹到几十千赫兹的常用测试信号范围。想要的三角波扫描功能也可以把积分电阻换成双极性三极管构成的压控恒流源就能实现电压控制频率这个扩展后面再单独聊。我实际做完这个电路的最大感受是模拟电路相比数字方案虽然费一点手工但你能清晰看到每个参数和波形形态之间是怎么互相影响的。数字DDS几分钟就能调出一路正弦波却很难让你真正理解“频率由什么决定、幅度为什么会下降、失真从哪里来”。这颗LM324算是用最小成本把这些问题都讲明白了。
返回列表