ARTICLE DETAIL

资讯详情

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

LM324三合一信号发生器:方波、三角波、正弦波原理与制作

LM324三合一信号发生器:方波、三角波、正弦波原理与制作 开篇先说我自己的经历大概四五年前我刚接触电子DIY那会儿手里没有一台正经信号发生器想测试个滤波电路或者功放频响只能拿手机APP放音频源接到电阻分压上凑合。结果噪声大、幅度不稳做出来的示波器波形图根本没法看更谈不上测量数据可信。后来终于按经典电路搭了一套能同时输出方波、三角波、正弦波的三合一信号发生器成本也就十几块钱前前后后折腾了一个周末从此做实验才真正顺手了。这篇就把这套电路完完整整拆开讲一遍。整套设计出自上世纪模拟电路教科书里的经典组合施密特触发器产生方波积分器把方波变成三角波二极管整形网络再把三角波“削”成近似正弦波。核心就一颗LM324四运放加上几个电阻电容和几只1N4148开关二极管。没有单片机、没有DDS模块、没有专用信号发生芯片全部原理看得见摸得着非常适合学生、电子爱好者、实验室刚入门的同事拿来练手。文章里我会把参数计算、仿真过程、焊接调试踩过的坑以及后续如何往STM32数字方案迁移一次性讲透。1. 整体设计思路为什么经典运放方案最合适1.1 三种可行方案我是怎么取舍的做信号发生器摆在面前的无非三条路买/搭专用IC方案、用DDS数字方案、用普通运放搭分立方案。这里说的“专用IC”主要指ICL8038、XR2206这类经典函数发生器芯片它们内部集成了振荡器、电平转换、波形整形外围电路搭好就能出三种波形成品也多某宝上一搜一大堆。“DDS数字方案”则是用AD9833、AD9850这类直接数字频率合成芯片或者直接用STM32内置DAC做查表输出频率精度高、波形干净还能任意调频调相。既然有这么多现成路子为什么我还推荐新手先折腾运放分立方案直接看这么一张对比表方案成本频率范围调试难度学习价值专用ICICL8038等中等几十Hz~几百kHz低外围简单一般内部黑盒单片机DAC/DDS较高取决于时钟可到MHz级中等要写代码高但偏数字方向运放分立本文方案很低20Hz~几十kHz中等能看原理极高完全透明我最终坚持把运放方案写成一篇文章是因为它把三个重要知识点串在了一起比较器正反馈可以产生方波积分器可以让方波变成三角波非线性网络可以改变波形形状——这三步恰好是模拟电子技术课里最核心的内容。你把这个电路搭通一次再去回顾教材里的“振荡条件”“负反馈”“波形变换”理解深度完全不一样。相反ICL8038虽然一插就能用但内部机理对初学者基本是黑盒出了问题根本无从下手DDS方案则把问题转移到了查表、时钟、SPI通信这些数字领域和“波形本身怎么生成”又隔了一层。所以我的建议很明确如果你想快速有个仪器用买成品或者搭DDS模块都行但如果你是想搞懂“三种波形之间到底怎么互相转化”那这套LM324电路是你最该动手的东西。1.2 元件清单与替换思路既然定了运放分立方案就要先把手头料凑齐。我实际用到的物料很少大部分元件在基础元件盒里就能翻到主芯片LM324N四运放一块就够电阻10kΩ×3、1kΩ×1、4.7kΩ×1、100kΩ电位器×1、10kΩ电位器×1电容10nF薄膜电容×2、100nF×1、1μF×1另加电源退耦电容47μF电解×2二极管1N4148开关二极管至少6只连接件IC座、面包板或洞洞板、XH2.54端子、BNC输出座电源±9V双电源两节9V电池串联取中点也行或者实验室直流电源测试工具示波器一台万用表一块这里要强调一下芯片替换。LM324是四运放单电源和双电源都能工作价格一块钱上下带宽增益积约1.2MHz压摆率虽然只有0.5V/μs对付20kHz以内的方波边沿完全够用。手里如果只有LM358它是双运放那需要用两颗才能完成整个三合一电路要是有TL072、NE5532这类JFET输入运放更好输入阻抗高、噪声低只是注意它们多半不能单电源低压工作必须在双电源下运行。总之别小看LM324这种“老黄牛”芯片在低速信号发生器里反而是优势。二极管不能用整流1N4007代替1N4148因为1N4007结电容大、开关速度慢在整形网络里会影响高频波形手头没有1N4148的话用1N914或者BAV99这类小信号开关管都行。2. 三部分电路逐级拆解原理2.1 方波是怎么来的带正反馈的比较器整个电路的第一级是一个工作在非线性状态的运放常叫做施密特触发器。它的连接方式有点特别运放的反相输入端直接接地同相输入端同时通过电阻R1接到自己输出端又通过电阻R3接到下一级积分器的输出端。这里R1是正反馈电阻R2是同相输入端的接地电阻R3是积分器输出反馈进来的耦合电阻。很多人第一眼看到这个结构会懵运放不是应该接成负反馈放大电路吗怎么把输出接到同相输入端去了别急这正是施密特触发器的精髓。运放工作在开环状态时只要两个输入端的电压有一丁点差输出就会冲向正饱和或者负饱和。接上正反馈之后由于输出端会反过来影响同相输入端的电压这个饱和状态会被“锁住”形成一个稳定的输出电平。只有当积分器送过来的电压把同相输入端推到过零点运放才会瞬间翻转跳到另一个饱和状态。用一句大白话说这一级就是一个“土豆豆荚式的开关”它的输出要么接近正电源电压要么接近负电源电压中间不存在线性放大区。这个二值输出就是方波。方波的幅度由运放的正负饱和电压决定以LM324在±9V供电为例实测正饱和大约7.5V负饱和大约-6.8V因为LM324输出级不是轨到轨离电源轨大约有1.5V的余量。方波频率则由阈值和积分器斜率共同决定这一点后面算频率公式时会细讲。2.2 积分器把方波“磨”成三角波第二级电路一眼就能认出是反相积分器运放反相输入端通过电阻R4接第一级的方波输出反馈电容C从输出端跨接到反相输入端同相输入端接地。积分器输出电压的变化率等于输入电压除以RC时间常数方向相反。假设此刻第一级输出的方波是正饱和电压也就是一个正的固定电压那么积分器输出端就会以恒定速度往下走形成一条直线斜线当三角波电压降到低阈值第一级翻转方波变成负饱和电压积分器又开始以同样的速度往上爬。如此循环积分器输出就是一条来回摆动的斜坡——三角波。整个过程很像一个人在一个正方形的墙壁之间来回弹跳轨迹被“磨”成了三角形的折线。为什么不能直接把方波积分成标准的正弦波很多新手问过。答案是积分器只能把恒定电压变成线性斜坡方波的正半周是常数积分一次得到一次函数也就是直线只有再积分一次才能得到抛物线再结合更高阶微分才能逼近正弦。所以我们不追求用积分器积分出正弦波而是把三角波送入整形网络让非线性元件去“弯折”它的峰顶和峰谷。2.3 二极管整形网络把三角波“修”成正弦波这是整套电路里最需要耐心的一级。三角波本身是线性变化的正弦波在过零附近近似线性、在峰顶附近变化变慢、曲线变平缓因此只要把三角波的峰顶“压扁”一些就能得到近似正弦波。实现这个“压扁”动作的就是电阻和二极管组成的非线性分压网络。常见做法是在比较器的3个阈值点处接入6个二极管第1、2只二极管分别在1V和-1V处导通第3、4只分别在2.5V和-2.5V处导通第5、6只分别在4V和-4V处导通。当三角波电压低于这些阈值时二极管全部截止信号直接通过分压电阻输出一旦电压超过阈值对应的二极管导通相当于在输出端多并联了一条对地支路让信号幅值衰减得更厉害。这样一来三角波的峰顶被逐级压缩折线逐渐变成平滑的弧线看起来就很接近正弦波了。用到的基准电压可以由电阻分压从电源中获取也可以用两个稳压管搭简易参考。实际调试时这些阈值电压不是越精确越好而是要靠示波器观察波形反复微调分压电阻让正半周和负半周对称、峰顶圆弧自然。我第一次做的时候懒得调直接拿固定电阻按计算值接上结果波形顶部明显偏平谐波失真大到耳朵都能听出来后来才知道整形网络这三级阈值必须自己边看波形边调没有捷径。最终我在整形输出之后还接了一级运放做缓冲和增益调整这样做的好处是整形网络自身的等效阻抗变化不会影响下一级负载而且输出幅度可以单独用电位器调节不污染前面的频率参数。2.4 方波、三角波、正弦波之间的频率关系这里要专门提一个很多新人疑惑的点为什么“把方波/三角波整成正弦波”这件事是可行的这得从波形在频域里的成分说起。一个理想方波可以分解成基波正弦加上无数个奇次谐波数学表达式大约是[ v(t) A(\sin\omega_0 t \frac{1}{3}\sin 3\omega_0 t \frac{1}{5}\sin 5\omega_0 t \cdots) ]。也就是说方波不是“另一种神秘波形”它本质上是一个基波正弦和一系列幅值按1/n衰减的奇次谐波叠加出来的结果。三角波也有类似的性质但衰减更快奇次谐波幅值按1/n²衰减频率越高的成分占比越小。所以三角波本身就比方波更接近正弦。正因如此我们不需要做复杂的滤波或傅里叶重构只需要用整形网络把高阶谐波进一步压制就能从三角波得到不错的正弦波。这个思路在音频合成器里也被广泛使用所谓“减法合成”就是先造方波或三角波再用滤波器去掉谐波、留下正弦般的基频。顺带说一句经常有人问“STM32ADC采集正弦波到底采的是什么”——其实ADC采集到的就是正弦波每个时刻的瞬时电压只要采样率够高、保持时间够短数字端重现的波形就越好。这个道理和我们在示波器上看波形完全一样。3. 参数计算、面包板搭建与仿真验证3.1 频率公式的计算与选择这套三合一电路的振荡频率完全由第一、二级共同决定。经过推导可以得出频率公式[ f\frac{R_1}{4 R_3 R_4 C} ]。其中R1是第一级施密特触发器的正反馈电阻R3是积分器输出到第一级同相输入端的电阻R4是第二级积分器的输入电阻C是积分电容。为了方便后面我统一用R4代表积分输入电阻、C代表积分电容。推导过程并不复杂第一级输出饱和电压±Vsat通过R3反馈到同相输入端因此翻转阈值约为±Vsat×R3/R1积分器输出的斜率是±Vsat/(R4C)从阈值下限走到阈值上限需要的时间等于2倍阈值除以斜率得到半周期为2×R3×R4×C/R1再乘2就是完整周期取倒数就得到上面的频率公式。有了公式参数选起来就痛快了。我实际采用的一组参数是R1R310kΩR410kΩ电位器串联一个1kΩ保护电阻C10nF。按公式计算当R4旋到1kΩ时频率为25kHz旋到100kΩ时频率为250Hz所以一个电位器就能覆盖约100倍的连续频率范围。如果想把频率下限再拉低到20Hz附近把C换成100nF即可频率范围整体往下移10倍变成25Hz~2.5kHz。我习惯用开关切换三个电容挡1nF、10nF、100nF这样频率范围从几百Hz覆盖到上百kHz日常音频和小信号测试基本够用了。这里要提醒R1和大电容C的取值不能盲目放大否则运放的偏置电流和电容漏电会让积分器产生不可忽略的漂移低频段波形会慢慢朝一个方向偏。我试过用10μF电解电容做积分电容结果三角波在低频时明显不对称换用1μF薄膜电容以后才恢复正常。所以积分电容尽量使用聚酯薄膜电容或者CBB电容不要用普通电解电容。3.2 LTspice仿真搭建要点正式焊板之前强烈建议先在仿真软件里跑一遍。我用的是LTspice免费小巧真实运放模型丰富。搭建流程如下先从元件库中调出LM324模型放置两个运放单元一个做比较器一个做积分器电源设置成双电源V接9VV-接-9V并给两个电源脚都并联一个100nF电容作为退耦按电路图把R1R310kΩ、R410kΩ、C10nF接好二极管整形部分用六个1N4148仿真正弦整形。瞬态仿真设置很关键。运行菜单里把仿真停止时间设为20ms最大步长设为1μs这样能得到平滑的波形曲线不会因为步长太大而丢失细节。仿真时优先观察三个节点第一级输出端Out_Square、积分器输出端Out_Triangle、整形网络输出端Out_Sine。正常情况应当看到方波、三角波和正弦波同时存在频率一致、相位关系协调。方波的上升沿应该很陡但又不是瞬时突变这是因为LM324的压摆率限制。仿真里还能顺手做一件事把R4设置成参数扫描比如步进从1kΩ到100kΩ观察频率变化是否符合公式计算值。我试过用.step param temp 1k 100k 1k这种命令输出波形频率会随之变化和理论值的误差主要来自LM324饱和电压不是理想±Vsat总体误差能控制在5%以内对普通调试完全够用。3.3 观察仿真结果的三个要点仿真结果怎么判断好坏我一般看三点。第一看方波占空比是否接近50%如果方波正负宽度明显不一致说明比较器阈值不对称要检查R1、R2、R3之间是否接法有误或者供电电压正负不对称。第二看三角波峰峰值是否稳定如果三角波幅度漂移或出现阶梯状痕迹多半是积分电容太小、充放电速率太快或运放输出到达了电源轨饱和。第三看正弦波的峰顶是否平滑过度如果看到明显的折线拐点说明二极管整形阈值分得太开需要增加整形级数或者减小阈值间隔。仿真能发现很多理论公式里看不出来的问题。比如我第一次搭建电路时没有在LM324电源脚加退耦电容仿真结果方波边沿出现明显振铃一度以为电路接错后来查资料才知道是电源内阻和芯片内部的寄生振荡造成的。把100nF退耦电容一加上去波形立刻干净了。这个经验在实际搭板时也适用所以仿真不仅仅是“模拟一下验证理论”更是提前熟悉实物的行为特性。4. 实物的焊接与调试记录4.1 先把电源和IC搞明白实物的第一步永远是供电这一步错了后边全白搭。LM324在双电源下工作最舒服用两个9V电池串起来中间抽头当地就能得到±9V。如果是线性电源建议输出端并联一颗47μF电解电容和一颗100nF瓷片电容做组合退耦电解电容负责滤低频纹波瓷片电容负责滤高频噪声两者配合效果最好。接下来是IC的方向。LM324是DIP14封装缺口朝上时左上角是4脚接正电源右下角是11脚接负电源。很多新手第一次焊反电源芯片当场冒烟我尽量建议大家先用IC座焊上去等确认所有连线没问题再插入芯片。IC座还有个好处换芯片调试方便芯片发热异常时也能及时拔下来检查。运放各单元的分配我习惯这样安排U1A做施密特比较器输出方波U1B做积分器输出三角波U1C做整形缓冲U1D做正弦波增益调节。四组运放如果不用输入端不能悬空必须接到地或者接入反馈网络否则容易引入噪声和自激。这步很多人忽略导致整个电路在不该振荡的时候振荡在该振荡的时候反而不振荡。4.2 调试顺序焊接完成、上电之前先用万用表确认电源脚之间电压正确芯片没有异常发热。然后按下面的顺序逐级调试。第一步看方波输出。示波器探头接地夹夹到公共地探头点U1A的输出脚应该看到一根漂亮的方波。如果示波器是数字存储型的建议触发源选在方波通道同步一下波形。方波正常后才能继续往下查。第二步看三角波输出。探头移到U1B的输出脚正常应当看到对称三角波频率和方波相同。如果看到三角波但幅度很小可能是R3阻值选得偏大导致阈值太低如果看到的是直线或者饱和电压十有八九是积分器输入端的连接或者运放电源出了问题。第三步接二极管整形网络。把信号从U1B输出引到整形网络输入端再从整形网络输出端接回U1C缓冲级观察正弦波。此时可能需要调整几个阈值电阻让正负半周对称。我调的时候喜欢先关掉示波器的“自动设置”功能手动设好电压档位因为自动设置常常把信号缩放到看不清拐点细节。第四步调正弦波输出幅度。U1D接成反相放大器电位器调整增益。注意不要让输出幅度超过运放线性范围否则会削顶失真看起来是正弦波顶部被刀切过一样平。幅度调到峰峰值在±3V以内失真通常很小。4.3 调试中常见的典型问题速查调试过程中我收集了一张问题排查表直接对着排查能省不少时间现象可能原因处理方法完全没有输出电源接反/供电缺失/IC插反损坏检查电源电压与芯片温度只有直流高电平或低电平运放没接成反馈/正反馈电阻脱焊/R3未接检查施密特触发器引线是否虚焊方波正常但三角波缺失积分电容开路或R4虚焊用万用表量R4两端通断换电容试三角波不对称积分电容漏电或电源正负不对称换薄膜电容校准电源正弦波峰顶有平顶整形阈值太低或缓冲级削顶提高阈值电阻降低缓冲放大器增益波形边沿有振铃芯片电源退耦不足在LM324电源脚并联100nF瓷片电容频率漂移不稳电位器磨损或积分电容温度系数大换多圈电位器用CBB聚丙烯电容方波占空比不正、三角波爬升比下降慢这类问题很多时候不是电路本身错而是供电不对称引起的。把正负电源电压调到一致波形自然就对称了。如果手头示波器带宽不够高频方波边沿显得圆钝这不一定是电路问题可能是示波器带宽限制导致把探头拨到“带宽限制”关闭状态再看。5. 扩展从模拟走向数字信号发生器5.1 STM32生成正弦波、方波、三角波的思路模拟电路玩熟了迟早有一天你会想要更灵活的波形任意频率、任意相位差、多路同步输出、实时调频调幅这时候就该考虑数字方案了。用STM32做信号发生器最典型的做法是“DAC查表DMA”。先在内存里放一张正弦波查找表比如360个点的正弦采样值配置定时器触发DACDMA自动把表里的数据搬进DAC寄存器就能在输出脚得到平滑的正弦波。方波更简单GPIO翻转就能输出三角波则是写一段线性递增递减的数据同样用查表法输出。这就是DDS直接数字频率合成的基本思路。通过控制定时器频率和查表步长就能精确控制输出频率通过改表值就能在波形之间切换。STM32F103这类白菜价芯片只有一个12位DAC但如果你需要同时输出两路正弦波有的型号带双通道DAC或者用PWM加外部低通滤波也能凑出一路“伪DAC”输出。常见的“STM32信号发生两路正弦波DDS”需求就是在一个定时器中断里同时更新两个DAC通道或者使用两路DMA驱动同一个DAC配合片外采样保持电路工程上都能实现。5.2 ADC采集、无感方波、三角波测距的关系既然提到了STM32ADC采集正弦波就把它和模拟方案的联系说清楚。ADC采集正弦波本质上和示波器显示正弦波是同一件事按固定时间间隔采样瞬时电压把连续信号离散化成数字序列。采样频率至少要是信号最高频率的两倍以上否则会频谱混叠波形完全变形。我自己调试时遇到过采集正弦峰值偏小的问题后来发现是采样触发时机没有对准波峰解决办法是提高采样率后做均值滤波或者在软件里搜索最大值。“无感方波”这个词最近在电机控制圈很火它其实是方波驱动无刷直流电机的别名。控制算法里为了换相需要知道转子位置但很多低成本方案不装霍尔传感器靠检测反电动势过零点来推断位置这就是所谓“无感方波”。注意这里的方波说的是电机线圈驱动电压波形是方波和我们信号发生器里的方波原理不完全相同但如果你已经理解了方波本质是奇次谐波的叠加再去学电机驱动里的PWM调制会快很多。至于“三角波线性调频信号测距MATLAB”这又是一个三角波的实际用例雷达或激光测距时发射频率随时间按三角波规律变化接收回波与发射信号混频后得到差频差频和距离成正比用MATLAB读入ADC数据做快速傅里叶变换就能算出差频频率从而反演出距离。三角波在这里不是目的而是一种让频率随时间“扫”起来的调制方式。这一整套东西需要扎实的采样和信号处理基础但源头还是在理解三角波斜率与频率变化之间的关系上。信号发生器里的三角波在此刻就变成了实际工程中的“调制载波”。5.3 数字方案更值还是模拟方案更值最后回答一个很多新手纠结的问题既然数字方案这么灵活是不是可以完全跳过模拟板我的建议是不要急着跳过。数字方案虽然功能强大但如果你不清楚一个正弦波在电路里到底是怎么被生成、被塑形的遇到DAC毛刺、低通滤波拐点、采样率不足这类问题时你仍然要回头补模拟知识。反过来说把模拟三合一板子玩明白了再去看STM32查表输出你就能理解为什么DDS输出要加低通滤波器滤掉镜频分量为什么方波数字化后要注意边沿过冲因为那些问题本质上还是模拟问题。数字和模拟方案并不是非此即彼在实际项目里经常混着用。比如用STM32产生一个任意波形作为基准然后送进模拟放大电路做功率放大又或者用模拟比较器检测方波边沿触发单片机中断去做精确测频。两种基础都在手你才真正敢拍着胸脯说自己懂信号发生器。我自己的体会是对于纯学习来说先花一个周末把这套LM324三合一电路搭通比直接买一块DDS开发板获得的收获大得多。等你理解了波形是怎么来的再花一个下午看STM32查表法和DMA驱动数字方案也就是一通百通的事。真正难的不是器件本身而是你在看到示波器上那个稳定漂亮波形时心里已经知道了它背后的每一段原理。
返回列表