ARTICLE DETAIL

资讯详情

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

不用单片机:基于NE555与运放的多波形信号发生器设计

不用单片机:基于NE555与运放的多波形信号发生器设计 前一阵整理元件盒翻出两片压箱底的NE555N突然想到很多刚入门的朋友都在问同一个问题能不能不用单片机、不用DDS芯片就用最基础的模拟器件做一台能输出方波、三角波、正弦波的信号发生器这篇文章就把这个经典方案完整拆一遍——基于555定时器与集成运放的多波形信号发生器从方案取舍、电路原理、参数计算到Multisim仿真和洞洞板实测整个过程都会走一遍。这套电路适合这么几类人刚学完模电想做综合实验的学生想给实验台添一台低成本信号源但预算有限的朋友以及任何想把555从只会闪灯进阶到会造波形的人。先给个结论整个系统用到的芯片一片NE555加一片四运放TL084电阻电容全是常用值总成本不超过十块钱却能输出比较漂亮的三路波形。接下来按真实做项目的顺序说每一步为什么这么设计、参数怎么算、坑在哪里都会交代清楚。1. 为什么选555定时器多波形发生器的方案取舍很多人做信号发生器第一反应是用DDS或者专用函数发生器IC这些方案确实性能更好但在这个项目里未必是最优解。我做东西的习惯是先列出所有可行方案对比完再动手这个习惯帮我省了不少冤枉钱。DDS方案以AD9833、AD9850这类芯片为代表频率分辨率能做到0.1Hz级别输出正弦波失真也很低。缺点是需要单片机配合配置寄存器整个系统变成了数模混合项目对只想研究模拟电路的人来说有点跑偏。而且DDS输出的是阶梯状波形后面必须接重建滤波器否则高频时示波器上能明显看到台阶感。专用函数发生器IC看起来更对口ICL8038或者MAX038曾经是模拟信号源的标配外部元件少三种波形直接出。可问题是这两颗芯片停产太久市面上流通的多半是拆机件或者翻新货价格被炒得很高买回来还要担心参数是否达标。我见过有人花了五十多块钱买到一颗ICL8038结果正弦波失真比555方案还差得不偿失。单片机加DAC的路线也流行过一阵子STM32的DAC加上DMA可以输出任意波形胜在灵活。但它的输出本质上是一串离散电平信号质量取决于采样率想要平滑的波形就要提高刷新频率还得加运放做滤波和驱动。对纯粹想练模拟电路基本功的人来说这条路绕开了很多值得掌握的知识点。于是回到555定时器加集成运放的组合。555负责产生方波运放积分电路把方波变成三角波再用二极管整形网络把三角波近似成正弦波。这个方案的频率稳定度虽然比不上晶振级别的DDS但在几十赫兹到几十千赫兹范围内做教学实验、给音频电路当测试信号完全够用。更关键的是信号链路上每一个环节都能用模电知识独立解释做好了等于把振荡器、积分电路、非线性处理、缓冲输出这些知识点全部串了一遍。方案成本频率精度波形质量上手难度电路复杂程度DDS 单片机中高极高极好高高ICL8038/MAX038高芯片贵且难买中好低低单片机 DAC中高中高中555 集成运放极低中中上中中最终选型不是因为这方案先进而是它用最少的钱和最低的理解门槛把三种波形的产生逻辑讲明白了。下面按信号流动的顺序展开先让555发生方波再让积分器加工成三角波最后把三角波整形为正弦波。2. NE555产生方波多谐振荡器的充放电过程与参数计算很多朋友对555的印象停留在接两个电阻一个电容就能闪灯那其实是同一个电路——无稳态多谐振荡器。搞清楚它内部是怎么工作的后面所有频率计算都能顺手推导出来不用死背公式。2.1 555内部结构和工作环路NE555内部可以看作由两个电压比较器、一个RS触发器和一只放电三极管组成。三个5kΩ内部分压电阻把VCC分成1/3和2/3两个参考电平这两档电压分别送给触发比较器和阈值比较器。当初学者问555管脚怎么接时本质上就是在问怎么把这几个内部部件接成振荡环路。初始状态定时电容C上电压为零触发脚2低于1/3VCCRS触发器置位输出脚3为高电平同时放电管截止。此时VCC通过R1加R2给C充电电容电压按指数曲线上爬。当C电压爬到2/3VCC阈值脚6触发的比较器动作RS触发器复位输出脚3翻转为低电平放电管导通。随后C通过R2经过放电脚7向地放电电压下降降到1/3VCC时触发脚2再次生效RS触发器置位放电管截止又开始充电。如此循环往复输出脚3就得到了一串方波。2.2 频率与占空比两个公式加一组实例充电时间从1/3VCC到2/3VCC时间常数是(R1R2)C放电时间从2/3VCC到1/3VCC时间常数是R2C。利用RC充放电公式可以推出充电时间t1 0.693 × (R1R2) × C放电时间t2 0.693 × R2 × C振荡周期T t1 t2 0.693 × (R12×R2) × C频率f 1/T ≈ 1.44 / ((R12×R2) × C)这里有一个新手容易踩的点占空比不是50%而是(R1R2)/(R12R2)。只要R2大于0充电时间就比放电时间长占空比恒大于50%。如果项目对对称性要求不高比如只是测频率、驱动蜂鸣器这个问题不大但后面接积分器转三角波时方波不对称会导致三角波上升和下降斜率不一致所以最好在调频电位器后面加两个二极管把充放电通路分开。充电时电流经D1只走R1放电时经D2只走R2取R1R2就能接近50%占空比。注意二极管要用1N4148这种开关管压降约0.7V实测占空比能做到50%左右。我用一组具体参数做过计算和实测。假设VCC9VR11kΩR2用10kΩ电位器串联1kΩ电阻作为下限保护这样R2的可调范围是1kΩ到11kΩ定时电容C100nF。代入公式最低频率fmin 1.44 / ((1k 2×11k) × 100nF) ≈ 626Hz最高频率fmax 1.44 / ((1k 2×1k) × 100nF) ≈ 4800Hz这个范围覆盖了音频中频段对后续积分器参数设计也刚好合适。想要更宽频段切换定时电容是更实用的办法100nF对应中频10nF可以把频率抬高10倍1uF则往低频走。频率越高方波边沿的振铃越明显但这个频率范围内555本身的驱动能力问题不大。2.3 管脚功能梳理热搜词里没说完的细节很多人网上搜555定时器管脚搜到的表格基本就一句话。这里补充几个做项目时容易忽略的细节。NE555的8脚和1脚之间最好就近接一个100nF陶瓷电容做电源退耦如果电源线比较长再加一个10uF电解电容否则振荡波形上容易叠加电源噪声。4脚复位端不能悬空必须接VCC否则上电瞬间芯片可能锁在复位状态输出低电平。我测试时有一次方波始终出不来排查半天发现是4脚和面包板接触不良相当于悬空复位了。5脚控制电压端很多人直接空着这其实会引入干扰。5脚是内部分压网络2/3VCC参考端悬空时外部电磁干扰能通过寄生电容耦合进来表现为频率轻微抖动。正确做法是5脚对地接一个10nF到100nF的电容把参考点电压稳住。如果闲得无聊还可以往5脚注入音频信号输出方波就会变成简易FM调制信号这是个隐藏玩法。7脚放电端要直接接R2到定时电容不能和6脚共用一根很长的飞线否则走线电感会让波形边缘出现过冲。实际做洞洞板时7脚和6脚尽量靠近定时电容C放在距离R2最近的位置。NE555输出高电平不是VCC而是VCC减去约1.5V左右的饱和压降低电平约0.2V到0.3V。也就是说9V供电时输出高电平约7.5V。这个参数在下一级积分器计算时很重要因为积分器关心的是方波的实际摆幅不是理论上的9V。3. 方波转三角波积分电路的原理、计算与漂移处理555输出的方波是矩形波把它送到运放积分器电容的恒流充放电会把它改造成线性度很好的三角波。这一级是整个系统里最容易出问题的环节但原理并不复杂。3.1 积分电路的数学直觉理想运放反相输入端的虚短虚断特性决定了流经输入电阻R的电流等于流经反馈电容C的电流。设输入方波幅度为Vin输入电流就是Vin/R这个电流对电容恒流充电输出电压随时间线性变化变化率等于Vin/(R×C)。对正负对称的方波而言正半周电容被恒定电流充电输出线性下降负半周电容反向充电输出线性上升。一只电容用恒流充电电压本来就是线性变化这和RC充电曲线那种指数过程完全不同所以三角波的线性度天然很好。积分时间常数RC越大同样时间内容电容电压变化越小输出幅度越低RC越小输出摆幅越大但太小时运放可能饱和削顶。3.2 直流偏置问题积分器的第一杀手前面提到555输出的方波不是以0V为中心的它介于0.3V到7.5V之间平均直流电平大约3.9V。如果把这个信号直接送进积分器电容会把直流分量也积分进去结果输出会朝某一个方向不断爬升直到运放饱和三角波变成对齐到电源轨的平顶波形。解决办法是在555输出和积分器之间加一级隔直耦合。我用的方案是串联10uF电解电容再接一个10kΩ电阻对地构成高通滤波器直流分量被电容隔断交流分量通过偏置电阻建立约0V的参考电位。高通截止频率约1.6Hz远低于最低工作频率626Hz所以工作频段内信号不会明显衰减。3.3 积分时间常数和关键参数计算设计时需要根据输入方波幅度和期望输出三角波的幅度反推RC乘积。设输入对称方波的半幅为A频率为f则三角波峰峰值可以用这个关系估算Vpp A / (R × C × f)为什么是这个关系半周期T/2内输入恒定A电容电压变化量等于A×T/(2RC)峰峰值是正负方向变化量的总和所以是A×T/RC也就是A/(RC×f)。按实际参数算一下。555输出摆幅约0.3V到7.5V隔直之后变成±3.6V的对称方波所以A约3.6V。取R10kΩ、C100nFRC1ms。在f1kHz时Vpp 3.6 / (0.001 × 1000) 3.6V这个幅度直接送给整形网络够用。但要注意这种开环结构下输出幅度和频率成反比调到最高频率4.8kHz时三角波峰峰值只剩约0.75V最低频率626Hz时又冲到约5.75V。这是积分式波形发生器的固有特性不算故障。如果希望不同频率下幅度一致需要加手动放大补偿或者在后面加AGC电路。作为通用信号源我在增益级留了一个电位器换频段时顺手调一下就行。3.4 积分漂移的处理经验正常工作的积分器还存在一个隐患——运放输入失调电压和偏置电流会被电容持续积分即使输入信号为零输出也会缓慢漂移。JFET输入的TL084偏置电流只有几十皮安已经比双极性运放好很多但依然需要措施。最常用也最有效的方法是在积分电容两端并联一个大阻值电阻比如1MΩ。这个电阻给直流分量提供了一条负反馈路径限制了直流增益把输出拉回到零点附近。代价是低于某个频率的信号不再被真正积分三角波在极低频段会变成近似RC充放电的指数形状。这个转折频率大约1/(2π×1MΩ×0.1uF)≈1.6Hz远低于工作频率对正常使用没有影响。积分电容的介质选择也很关键。我踩过坑用铝电解电容做积分电容低频时三角波腿上能看到明显的弧度波形一点都不直。这是因为电解电容漏电流大、等效串联电阻偏高还会随频率变化。后来老老实实换成CBB聚丙烯电容波形瞬间变得笔直。这类电容薄膜介质损耗小、漏电小是积分电路的理想选择。最后给运放留足够的输出余量。TL084在±9V供电时实际输出摆幅大约±6V到±7V不是±9V。设计三角波最大幅度的时候别贪心留到±5V以内比较稳妥超过之后波形顶部会先出现圆角再往上直接削平。4. 三角波转正弦波二极管整形网络的折线逼近设计从三角波变正弦波最经典的模拟办法就是用二极管搭建非线性整形网络。它的思路不是把波形滤成正弦而是分段改变增益把线性上升的三角波一点点压弯直到轮廓逼近正弦。整形的目的是让曲线斜率随输出幅值逐步变化零点附近斜率最大越靠近峰值斜率越小这样三角波的尖顶被抹圆。4.1 非线性整形网络的本质把三角波和正弦波叠在一起比较最明显的差异在顶部。三角波从零点到峰值始终保持恒定斜率正弦波在零点附近陡峭过了45度之后开始放缓接近90度时斜率趋于零。要实现这种变化放大电路的增益必须随输出信号大小自动调节。我的设计里用的是反相放大器加反馈支路的拓扑。主放大器的输入电阻Ri固定反馈网络由若干条二极管串联电阻的支路并联组成。当输出幅度较小时所有二极管都不导通反馈阻抗只由基值电阻决定增益最大对应正弦波零点附近最陡峭的那一段。当信号摆幅增大到某个转折电压对应支路的二极管导通反馈阻抗变小电路增益下降输出波形斜率放缓。一条支路一个转折点多条支路叠加输出的折线就越来越接近正弦波。这个思路可以用一个直观的例子类比三角波就像一个均匀上升的斜坡正弦波是同一个斜坡上不同位置被不同力度压弯的结果每条二极管支路就是在特定高度上踩了一脚刹车。4.2 上下对称的支路布局正弦波一个完整周期有正半周和负半周所以反馈网络要两组支路。一组二极管方向接成只在输出为正时导通处理正半周另一组方向相反处理负半周。每一组里放3到4条串联不同电阻值的支路对应3到4个转折点。我实际用的是每组3条支路加上基值反馈电阻总共4段折线逼近。段数越多失真越低但调试工作量成倍增加。3条支路搭好后正弦波还隐约能看到一点折角但作为课程设计和一般测试信号完全没问题想做得更精细可以加到5条支路配合失真度测试仪的反馈微调能把THD压到2%左右。转折电压怎么定总原则是把转折点放在正弦波相位30度、50度、70度一类的位置。相位30度对应sin30°0.5说明当输出摆幅达到峰值的50%时第一条支路介入正弦波相位越往后斜率越平缓所以支路介入越频繁。电阻具体取值我建议先粗算再微调因为二极管的正向导通电压不是理想的0V1N4148大概0.6V到0.7V会显著改变转折点位置。理论算出来的电阻焊上去几乎不可能一次就出完美波形。4.3 手调转折电阻的经验顺序我调试整形网络时习惯按下面这个流程走效率很高。先把波形输出接到示波器让它稳定显示整形后的波形然后从第一段折线开始调。观察波形底部到第一个折角之间的距离如果折角出现得太早说明对应支路的反馈电阻太小提前导通了增大该电阻把转折点往外推如果折角太靠后说明电阻太大减小它。调完第一条支路再调第二条按照从零点往峰值的方向逐个推进。正半周调完后负半周一般不需要完全重复这个过程因为电路是对称的只要上下两组支路用相同阻值电阻和同批次二极管负半周波形会自动接近正半周。如果发现上下明显不对称优先检查二极管的极性是否接反、1N4148是否有一只是坏的而不是急着改电阻。还有一个提升效果的小技巧整形网络后面加一级低通滤波可以进一步削减折线的高频棱角在输出端串一只1kΩ电阻对地接10nF电容截止频率约16kHz对本项目工作频段影响很小但示波器上的波形肉眼可见变光滑。5. 整体参数串联计算与Multisim仿真验证单级电路参数会算之后把它们串成完整的系统还需要检查级间匹配。这一节我把整套参数列出来用仿真先验证一遍逻辑再拿去过实物。5.1 一套可以直接抄的参数我的设计指标是频率约600Hz到4.8kHz可调三路输出都能驱动常规负载电源用双电源±9V给运放NE555单独用9V供电。各级参数如下表所示。单元器件参数555振荡器R11kΩR21kΩ串联10kΩ电位器1kΩ~11kΩ可调C100nF CBB5脚退耦电容10nF陶瓷电容隔直耦合C010uF电解电容Rbias10kΩ对地积分器Rint / Cint10kΩ / 100nF CBBRf防漂移1MΩ幅度调节同相放大器反馈电位器10kΩ整形网络反相放大器两路二极管支路1N4148 × 4~6电阻2.2k~100k输出缓冲电压跟随器TL084剩余运放TL084一片内含四个运放正好分配如下运放A做积分器运放B做整形网络主放大器运放C做增益/幅度调节运放D做正弦波输出的跟随器。方波和三角波输出如果也要独立带载可以把幅度调节级和整形网络输出分别做成缓冲但为了接线简单我在方波输出口直接串联了100Ω电阻三角波输出从幅度调节运放输出端引出再串100Ω这样带1kΩ以上负载基本不衰减。5.2 仿真搭建顺序一级一级来用Multisim仿真这套电路我强烈建议不要一口气画完整图再运行而是按信号流分三步搭建。第一步只搭555振荡器和隔直网络用示波器接在隔直后的节点确认看到的是以0V为中心、幅度约±3.6V的对称方波。如果这一步波形不对后面都是在错误基础上叠错误。第二步加入积分器观测三角波幅度是否符合预期。用上面参数在1kHz理论值是3.6V峰峰值仿真结果如果偏离太大检查积分电容值是否输错、Rf是否忘接。第三步再接入整形网络逐条微调转折电阻。仿真有一个坑很容易被忽视Multisim的虚拟示波器要正确设置时间轴和通道触发电平否则波形一上电就满屏乱跑或者只有一条直线。时间轴先用1ms/格触发放A通道电平设置在0V附近比较稳妥。电源方面NE555的GND和TL084的VEE负电源端必须共地这是整个系统的参考地。Multisim里如果分别放置不同名字的电源符号互相之间没有电气连接就会出现输出波形完全不对的怪异现象。我自己遇到过仿真输出三角波漂移到满幅的问题最后发现是VEE的参考地没有和信号地连接运放实际工作在奇怪的共模状态下。5.3 仿真结果的判读方法整套电路跑通后示波器上三个波形应该是这样的。555输出方波在2ms周期附近高低电平比较陡直上升沿可能有微小振铃但不至于畸变。积分器输出三角波斜边笔直拐角锐利幅度在3.6V上下。整形网络输出正弦波用肉眼看已经很圆滑如果把示波器的光标放在波形最高点和最低点测峰峰值会略小于三角波因为整形过程本身会有一定衰减。想定量看失真Multisim的失真分析仪是个好帮手。实测下来3段折线的THD大概3%到5%5段折线能压进2%以内。仿真环境的器件模型比较理想实际焊板子会有二极管压降不一致、电阻误差等因素THD一般比仿真高1到2个百分点这一点心里有数就行。6. 洞洞板焊接与实测波形判读和故障排查仿真的逻辑验证通过后剩下的就是动手阶段。洞洞板焊接这套电路大概需要两三个小时布局和调试的经验会直接影响最终效果。6.1 布局布线的三条硬经验第一按功能分区。把板子在脑子里分成三块左侧放555和定时电容中间放积分器右侧放整形网络和缓冲板子边缘放电源输入和接线端子。信号从左到右单向流动不要绕回这样既方便检查也能减少输出级对前级的干扰。第二地线尽量采用星型接地。三个功能块的地先各自集中再在电源输入端的滤波电容位置汇成一点。如果地线随意串接积分器和整形网络的大信号电流会在地线上产生压降耦合到555的参考地造成波形抖动。第三每个芯片的电源脚旁边都要放100nF陶瓷电容做就近退耦。TL084的VCC和VEE脚各放一颗NE555的8脚也放一颗。这个操作成本几分钱但对稳定性的改善立竿见影。我在不加退耦电容时测过正弦波顶部能看到细微的毛刺加了电容之后立刻干净。6.2 三路波形的实测判读方法用示波器探头测量时优先使用10x衰减挡探头的地线夹越短越好。不要用那种长长的鳄鱼夹地线它会像天线一样接收环境噪声导致波形上叠加50Hz工频干扰。正常工作的方波输出周期和频率应该和计算值对得上。以我给的参数电位器调到中间位置时频率约1.5kHz到2kHz高电平约7V低电平接近0V。占空比如果没加充放电隔离二极管会稳定在60%以上这是正常的。三角波输出最需要注意对称性。理想三角波的上升段和下降段时间完全相等斜率绝对值一样峰顶和谷底尖锐。如果上升段比下降段陡说明积分器正负半周的输入幅度不对称多半是隔直后的直流偏置点不在0V如果顶部出现平头说明积分器饱和了调大积分电阻或者把电位器往低频方向拧。正弦波输出判断标准是光滑度和上下对称。肉眼看波形轮廓没有明显折角顶部圆润正负半周幅度相等。如果输出类似锯齿波或者梯形说明整形网络的转折电阻偏差较大重新按4.3节的顺序微调。6.3 典型故障的排查链路这里列出三个我遇到过而且最典型的故障以及完整的排查思路。第一个现象是方波频率和计算值差得离谱。先不急着怀疑555用万用表量8脚和1脚之间的实际电源电压很多时候面包板接触不良导致供电只有6V频率自然对不上。供电正常后检查5脚电容是否漏接悬空的5脚会让内部参考电压被干扰频率会轻微漂移。最后再用示波器看7脚放电波形如果放电曲线是斜坡状而不是指数衰减状说明定时电容用错了类型或者接反了极性。第二个现象是三角波输出带有缓慢的呼吸漂移中心电平上下浮动。这基本可以锁定是积分电容两端没有并联反馈电阻Rf或者Rf虚焊。直流漂移被电容无限积分输出就会缓慢爬到饱和。用镊子碰一下Rf两头如果波形马上恢复稳定说明是接触问题。第三个现象是正弦波在零点附近出现一个台阶看起来像两个半波形没接好。这个问题的根源通常是整形网络的基值反馈电阻配得太大导致输出幅度落到零点附近时增益不连续。处理办法是稍微减小基值反馈电阻把零点附近的第一段斜率加大台阶就会消失。如果遇到更诡异的情况建议按信号流倒着排查先断开整形网络输入测积分器输出是否正常再断开积分器输入测隔直后是否得到对称方波。一级一级断开、一级一级确认比自己对着电路图瞎猜快得多。最后再分享一个个人习惯调试时不要把三个输出同时接上负载先空载调好波形再接上负载看是否下降。如果接了1kΩ负载之后三角波幅度明显变小说明缓冲级没起作用检查跟随器运放是否供电正常、同相输入端和反相输入端是否接对。这种小细节看起来不起眼但在实际调试中非常磨人。这套电路属于越简单越考基本功的类型。前前后后我搭过好几遍每次都会在小地方翻车有一次是5脚忘接退耦电容导致频率周期乱跳还有一次积分电容随手拿了电解电容三角波低频段的波形简直没法看后来所有积分电容一律换CBB省掉很多麻烦。如果你也想做做看或者正在为课程设计选题目这套方案可以直接照着搭把一级一级的原理吃透遇到任何奇怪波形都能顺着信号链路找到原因。
返回列表