ARTICLE DETAIL

资讯详情

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

电赛复合信号发生器设计:LM324与74LS74实现方波三角波正弦波

电赛复合信号发生器设计:LM324与74LS74实现方波三角波正弦波 1. 为什么这道电赛老题值得反复做如果你翻过历年全国大学生电子设计竞赛的赛题集会发现有一类题目几乎每隔几年就换个马甲重新出现——复合信号发生器。它的核心要求听起来不复杂输出一路方波、一路三角波、一路正弦波频率之间还要满足整数倍关系比如方波是三角波的四倍频。但真正动手搭过的人都知道从理论波形到示波器上干净稳定的输出中间隔着一堆让人抓狂的细节。我前后用不同方案做过三次这个题最早用单片机DDS方案后来改用纯模拟加数字分频的方案最后发现LM324加74LS74这套组合反而是最适合练手的。原因很简单它逼着你去理解运放振荡电路的工作点、施密特触发器的阈值计算、D触发器分频的时序逻辑而不是把一切交给一行代码。对于正在准备电赛的同学或者想补一补模电数电基础的工程师来说这道题是一个非常好的综合练习载体。这篇文章我会把整个设计过程拆开讲清楚。从系统框图怎么定到每一级电路的参数怎么算再到实际焊接调试时那些课本上不会写的坑都会覆盖到。你不需要有很深的模拟电路功底只要能看懂基本的运放电路和逻辑门符号跟着走就能把板子调出来。文中给出的所有参数都是我实际验证过的示波器实测波形也符合题目要求。提示这篇文章假设你手头有基本的焊接工具和一台示波器。如果没有示波器至少需要一个频率计或者带频率测量功能的万用表否则调试分频级会非常痛苦。2. 系统架构先想清楚信号从哪来到哪去2.1 复合信号发生器的核心需求拆解电赛题目对复合信号发生器的要求通常包含几个硬指标。第一输出波形种类要覆盖方波、三角波和正弦波第二各波形之间的频率必须满足特定的倍数关系常见的是方波频率为三角波的四倍第三输出幅度要可调一般要求峰峰值在几伏到十几伏之间第四波形质量要过关方波的上升沿要陡三角波的线性度要好正弦波的失真度要低。把这些要求翻译成电路语言其实就是三件事产生一个基础振荡信号、对基础信号进行分频得到不同频率、对信号进行波形变换和幅度调理。基础振荡信号通常选方波因为方波最容易用施密特触发器或者比较器产生频率稳定性也最好控制。分频用D触发器或者计数器实现74LS74是双D触发器一片就能完成四分频。波形变换则是把方波积分成三角波再把三角波滤波成正弦波。这里有一个关键决策点先分频再变换波形还是先变换波形再分频。我的建议是先分频。原因在于方波经过D触发器分频后频率减半但波形质量几乎不变边沿依然陡峭。如果先把方波积分成三角波再分频三角波的斜率会变得很缓过零点检测容易受噪声干扰分频出来的信号抖动会明显增大。所以正确的信号链是方波振荡器 → 四分频 → 分别输出方波和三角波 → 三角波滤波成正弦波。2.2 整体框图与信号流向整个系统可以分成四个功能模块。第一个模块是方波振荡级用LM324中的一个运放搭施密特触发器配合RC充放电网络产生基础方波。第二个模块是四分频级用74LS74的两个D触发器级联把方波频率除以四。第三个模块是波形变换级用LM324中的另一个运放搭积分器把方波积分成三角波再用一个运放搭二阶低通滤波器把三角波滤成正弦波。第四个模块是幅度调理级用运放搭同相放大器通过电位器调节输出幅度。信号流向是这样的方波振荡器输出频率为f的基础方波一路直接送到输出选择开关另一路送到74LS74进行四分频。分频后的方波频率为f/4送到积分器变成三角波三角波再送到低通滤波器变成正弦波。最终三路信号都送到输出调理级通过开关选择输出哪一种波形再经过电位器调节幅度后输出。这个架构的好处是每一级的功能非常清晰调试的时候可以逐级验证。你先调方波振荡器用示波器看第一脚有没有方波输出然后调分频级看74LS74的输出脚频率是不是变成了四分之一再调积分器看三角波有没有出来最后调滤波器看正弦波干不干净。哪一级出问题就查哪一级不会互相干扰。2.3 元器件选型的几个考量LM324是一颗四运放单电源供电价格便宜到处都能买到。它的带宽只有1.2MHz压摆率0.5V/μs对于几十千赫兹的信号来说够用了。但要注意LM324的输出摆幅在单电源供电时无法达到电源轨输出高电平大概比电源正极低1.5V左右输出低电平大概比地高几毫伏。这意味着如果你用12V供电方波的高电平大概在10.5V左右低电平接近0V。这个特性在计算施密特触发器的阈值时必须考虑进去。74LS74是TTL逻辑的双D触发器上升沿触发带置位和复位端。它的输入高电平阈值是2V低电平阈值是0.8V输出高电平典型值3.4V低电平0.2V。用5V供电时LM324输出的方波高电平10.5V直接接到74LS74的时钟输入端会烧掉芯片。所以中间必须加限幅电路把方波幅度压到5V以内。最简单的做法是用一个电阻分压再加一个钳位二极管或者用一颗74LS14施密特触发器做电平转换。我实际用的是电阻分压加分压后接74LS74的输入分压比大概3:1把10.5V压到3.5V左右刚好在TTL的高电平阈值之上。注意74LS74的时钟输入端对边沿要求比较严格如果输入信号的上升沿太缓触发器可能会产生多次翻转。LM324输出的方波边沿本身就不算陡经过电阻分压后边沿会更缓。如果发现分频输出不稳定可以在分压后加一级74LS14施密特触发器整形。3. 方波振荡级施密特触发器加RC充放电3.1 施密特触发器的工作原理方波振荡级的核心是一个施密特触发器它的特点是具有滞回特性——输入电压上升时输出在某个高阈值处翻转输入电压下降时输出在某个低阈值处翻转。这两个阈值之间的差值叫回差电压。利用这个特性把输出通过RC网络反馈到输入端电容反复充放电输出就在高电平和低电平之间来回翻转形成方波。用LM324搭施密特触发器的经典电路是这样的运放的同相输入端接一个电阻分压网络设定参考电压输出端通过反馈电阻接到同相输入端形成正反馈反相输入端接RC充放电网络。当电容电压低于同相端电压时输出高电平通过反馈电阻抬高同相端电压当电容电压充到高于同相端电压时输出翻转为低电平反馈电阻又把同相端电压拉低。如此反复输出就是方波。具体参数计算如下。设电源电压为Vcc输出高电平为Voh输出低电平为Vol。同相端的阈值电压由两个电阻R1和R2分压决定同时受反馈电阻Rf的影响。当输出为高电平时同相端电压为Vth_high (Voh × R2 Vcc × Rf) / (R1 R2 Rf)当输出为低电平时同相端电压为Vth_low (Vol × R2 Vcc × Rf) / (R1 R2 Rf)回差电压就是这两个阈值之差。实际设计中我取R110kΩR210kΩRf100kΩVcc12VVoh≈10.5VVol≈0V。代入计算Vth_high (10.5×10 12×100) / (1010100) (1051200)/120 10.875VVth_low (0×10 12×100) / 120 1200/120 10V回差电压只有0.875V这个值偏小抗干扰能力弱。实际调试时我把Rf减小到47kΩ重新计算Vth_high (10.5×10 12×47) / (101047) (105564)/67 9.99VVth_low (0×10 12×47) / 67 564/67 8.42V回差电压变成1.57V好多了。但这里有个问题阈值电压都在8V以上而电容充放电的电压范围是0到Vcc意味着电容要充到8V以上才能触发翻转充电时间会很长频率会很低。要得到几十千赫兹的频率RC时间常数必须很小。3.2 RC充放电频率的计算与实测修正方波频率的估算公式是f 1 / (2 × R × C × ln((Vcc - Vth_low) / (Vcc - Vth_high)))这个公式看起来复杂实际调试时不用精确计算先用一个大概的RC值让电路起振然后用示波器测频率再调整RC。我一开始取R1kΩC10nF理论频率大概在几十千赫兹。实际焊好电路后测出来只有8kHz左右比理论值低不少。原因是LM324的输入偏置电流和输入失调电压影响了充放电的精度而且电容的实际容值也有偏差。调整过程是这样的先把R换成可调电阻范围1kΩ到10kΩ然后一边调一边用示波器看频率。当R调到2.2kΩ时频率到了25kHz左右。再微调电容换成4.7nF频率升到50kHz附近。最终我定在R2.2kΩC4.7nF实测频率为48.7kHz。这个频率作为基础方波频率四分频后得到12.175kHz的三角波和正弦波频率完全满足题目要求。提示电容一定要选CBB或者涤纶电容不要用瓷片电容。瓷片电容的容值随温度和电压变化很大会导致频率漂移。我一开始用瓷片电容手一碰频率就变换成CBB电容后稳定多了。3.3 输出限幅与电平转换LM324输出的方波高电平是10.5V直接接74LS74会烧芯片。我用两个电阻分压上电阻10kΩ下电阻3.3kΩ分压比是3.3/(103.3)0.24810.5V分压后是2.6V。这个电压刚好在74LS74的高电平阈值2V之上但余量不大。为了保险我在分压点加了一个1N4148二极管钳位到5V电源防止电压超过5.5V。同时在下电阻两端并联一个0.1μF电容滤掉高频毛刺。实测分压后的波形上升沿大概有200ns对于74LS74来说足够了。74LS74的时钟输入要求上升沿小于100ns才能保证可靠触发但实际测试中200ns也能正常工作只是偶尔会有误触发。如果你发现分频输出有毛刺可以在分压后加一级74LS14施密特触发器把边沿整形到10ns以内。4. 四分频级74LS74的级联与时序验证4.1 D触发器分频的基本原理D触发器有一个特性当时钟输入端出现上升沿时输出端Q的状态等于输入端D的状态。如果把D端接到Q非端那么每个时钟上升沿到来时Q都会翻转一次。这就实现了二分频——输出频率是输入频率的一半。把两个D触发器级联第一个的输出接到第二个的时钟输入第二个的D端接自己的Q非端就实现了四分频。74LS74内部有两个独立的D触发器每个都有D、CLK、SET、RESET、Q、Q非六个引脚。SET和RESET是异步置位和复位端低电平有效。正常工作时这两个脚都要接高电平。我实际接线时把两个触发器的SET和RESET都接到5V电源D端接自己的Q非端第一个触发器的CLK接分压后的方波信号第一个触发器的Q输出接第二个触发器的CLK第二个触发器的Q输出就是四分频后的方波。这里有一个容易忽略的细节74LS74的Q非端不能直接接D端中间要加一个上拉电阻。因为74LS74的Q非端是图腾柱输出高电平只有3.4V左右直接接D端虽然能识别为高电平但余量不大。我在Q非端和D端之间串了一个1kΩ电阻同时在D端对地接了一个10kΩ电阻确保D端在Q非输出高电平时能稳定在3V以上。4.2 时序验证与常见问题排查焊好分频级后我用示波器双通道同时看输入时钟和输出波形。输入是48.7kHz的方波输出应该是12.175kHz。实测输出频率是12.18kHz非常接近。但波形上有一个问题输出的上升沿有大约50ns的延迟这是74LS74的传输延迟导致的属于正常现象。如果你发现输出频率不对比如是输入频率的一半而不是四分之一说明第二个触发器没有正常工作。检查步骤是这样的先看第一个触发器的Q输出有没有二分频信号如果没有检查第一个触发器的接线如果有再看第二个触发器的时钟输入有没有接到第一个的Q输出以及第二个触发器的D端有没有接自己的Q非端。我遇到过一次第二个触发器不翻转的情况查了半天发现是SET脚虚焊了补焊后正常。还有一种情况是输出波形上有毛刺频率计测出来的频率跳动。这通常是输入时钟的边沿太缓导致的。解决办法是在分频前加一级施密特触发器整形或者把分压后的电容减小到100pF让边沿更陡。我最后把分压电容从0.1μF改成100pF毛刺就消失了。注意74LS74是TTL芯片输入悬空时会被视为高电平。所以不用的输入脚不要悬空要么接Vcc要么接地。我习惯把所有不用的输入脚都接地避免引入干扰。4.3 分频输出的驱动能力74LS74的输出驱动能力有限高电平输出电流最大0.4mA低电平灌电流最大8mA。如果直接驱动后面的积分器积分器的输入阻抗必须足够高否则会把74LS74的输出拉低。LM324的输入阻抗很高输入偏置电流只有几十纳安所以直接接没问题。但如果你要在分频输出和积分器之间加电位器调节幅度电位器的阻值不能太小至少100kΩ以上否则会加载74LS74的输出。我实际的做法是在74LS74的输出和积分器之间加了一级射极跟随器用2N3904三极管做缓冲。这样即使后面接低阻抗负载也不会影响分频级的正常工作。射极跟随器的基极接74LS74的输出集电极接5V发射极通过10kΩ电阻接地发射极输出就是缓冲后的方波幅度大概4.3V。5. 波形变换级从方波到三角波再到正弦波5.1 积分器将方波转换为三角波积分器的经典电路是运放反相输入端通过电阻接输入信号反馈回路用一个电容。方波经过积分器后输出就是三角波。因为方波的高电平和低电平持续时间相等积分器的输出就是对称的三角波。积分器的输出幅度计算公式是Vpp (Vin × T) / (2 × R × C)其中Vin是输入方波的幅度T是方波周期R是输入电阻C是反馈电容。我用的参数是Vin4.3VT1/12175≈82μsR10kΩC1nF。代入计算Vpp (4.3 × 82×10^-6) / (2 × 10^4 × 10^-9) 3.526×10^-4 / 2×10^-5 17.6V这个幅度超过了电源电压说明积分器会饱和。实际调试时我把R增大到22kΩ重新计算Vpp (4.3 × 82×10^-6) / (2 × 22×10^3 × 10^-9) 3.526×10^-4 / 4.4×10^-5 8.0V8V的峰峰值在12V电源下是合理的。实测三角波的峰峰值是7.8V频率12.18kHz线性度很好。这里要注意积分器的反馈电容必须并联一个大的电阻比如1MΩ防止直流漂移导致输出饱和。因为方波不是理想的高电平和低电平的占空比可能不是精确的50%积分器会累积直流分量。并联1MΩ电阻后直流增益被限制在1MΩ/22kΩ≈45倍输出不会漂到电源轨。5.2 低通滤波器把三角波变正弦波三角波包含基波和奇次谐波谐波幅度按1/n²衰减。要得到正弦波需要滤掉三次以上的谐波。三角波的三次谐波幅度是基波的1/9五次谐波是1/25。用二阶低通滤波器截止频率设在基波频率的1.5倍左右可以把三次谐波衰减到原来的1/3以下五次谐波衰减到1/10以下输出就接近正弦波了。我用的是Sallen-Key二阶低通滤波器运放同相端接RC网络反相端接反馈电阻。参数计算如下截止频率fc1.5×12.175kHz≈18.3kHz。取C1C21nF则R1/(2π×fc×C)1/(2π×18.3×10^3×10^-9)8.7kΩ。实际取R8.2kΩC1nF实测截止频率约19.4kHz。品质因数Q取0.707反馈电阻Rf0.586×R4.8kΩ实际取4.7kΩ。焊好滤波器后用示波器看输出波形。三角波的尖顶被磨圆了波形接近正弦波。但仔细看还是能看出一点三角波的痕迹特别是波峰和波谷处有点平。这是三次谐波没有被完全滤掉的表现。我把C1增大到2.2nF截止频率降到12kHz左右波形更圆滑了但幅度也衰减了一些。最终我取C11.5nFC21nF截止频率约15kHz波形质量和幅度都比较满意。提示Sallen-Key滤波器的电阻电容值不要取太分散否则Q值会偏离设计值。我建议用1%精度的金属膜电阻和5%精度的CBB电容这样滤波器的频率响应比较稳定。5.3 三路波形的同步与相位关系方波、三角波和正弦波三路信号必须严格同步否则在示波器上观察时会发现波形之间有相位漂移。同步的关键在于分频级和波形变换级共用同一个时钟源。我的做法是方波振荡器输出一路直接作为方波输出另一路经过74LS74分频后作为三角波和正弦波的源头。这样三路信号的频率比严格是4:1:1相位关系也固定。实测中我发现三角波和正弦波之间有大约5度的相位差这是滤波器引入的相移。对于这个题目来说相位差不是考核指标所以不用管。但如果你做的题目要求三路信号同相那就需要在滤波器后面再加一级相位补偿电路或者用全通滤波器调整相位。6. 幅度调理与输出选择6.1 同相放大器的增益计算三路信号从各自的变换级出来后幅度不一样。方波幅度是4.3V经过射极跟随器后三角波是7.8V正弦波是5.2V。题目要求输出幅度可调所以需要一级同相放大器增益从1到3可调。同相放大器的增益公式是Av 1 Rf / R1我用一个10kΩ的电位器做RfR1取10kΩ增益范围是1到2。如果要更大的增益范围R1取4.7kΩ增益范围就是1到3.1。实际调试时我把电位器调到中间位置增益约1.5倍方波输出幅度6.5V三角波输出幅度11.7V接近电源轨有点削顶正弦波输出幅度7.8V。三角波削顶是因为幅度太大了我把积分器的输入电阻从22kΩ增大到33kΩ三角波幅度降到5.3V再经过1.5倍放大后是8V没有削顶。6.2 输出选择开关的接线方式输出选择开关用的是一个单刀三掷开关或者用三个独立的按钮开关。我用的是一片CD4053模拟开关通过逻辑电平控制选择哪一路信号输出。CD4053的导通电阻大概100Ω对于后级高阻抗负载来说影响很小。控制端接一个三位拨码开关拨到不同位置选择不同的通道。如果你不想用模拟开关直接用机械开关也行。机械开关的接触电阻更小但切换时会有咔嗒声而且寿命有限。我建议用模拟开关电路更干净也方便后续用单片机控制。6.3 输出缓冲与负载驱动同相放大器的输出直接接负载时如果负载阻抗较低输出幅度会下降。LM324的输出电流最大40mA驱动1kΩ负载时输出幅度会降到8V左右。为了增强驱动能力我在输出端加了一级射极跟随器用2N3906和2N3904组成推挽输出。这样即使接50Ω负载输出幅度也不会明显下降。推挽输出级的偏置电阻取1kΩ两个三极管的基极分别接同相放大器的输出和地。实际调试时发现交越失真比较明显在输出波形过零点处有平顶。我在两个三极管的基极之间加了一个1kΩ电阻和一个1N4148二极管串联提供约0.7V的偏置电压交越失真就消失了。7. 焊接调试中那些课本不会写的事7.1 电源去耦与地线布局模电实验做多了就会发现很多莫名其妙的振荡和噪声都是电源和地线引起的。LM324和74LS74共用一组12V和5V电源如果去耦没做好数字电路的开关噪声会串到模拟电路里方波上会出现毛刺正弦波上会叠加高频干扰。我的做法是在每片芯片的电源脚旁边都放一个0.1μF的瓷片电容和一个10μF的电解电容。0.1μF滤高频10μF滤低频。地线采用单点接地模拟地和数字地分开走线最后在电源入口处汇合。这样处理后示波器上看不到明显的开关噪声。注意74LS74的电源是5VLM324的电源是12V两个电源要分别去耦。不要图省事把74LS74也接到12V上会烧芯片。7.2 运放自激振荡的排查与消除调试过程中我遇到过一次运放自激振荡现象是三角波上叠加了大约200kHz的高频正弦波。排查过程是这样的先用示波器看运放输出确认振荡频率然后在运放的反相输入端和输出端之间并联一个小电容看振荡是否消失。如果消失说明是反馈回路引入了相位滞后导致的振荡。我在积分器的反馈电容上并联了一个100pF的小电容振荡就消失了。原因是积分器的反馈电容在高频时阻抗很低运放的输出通过电容反馈到输入端形成了额外的极点。并联小电容后高频反馈被旁路到地相位裕度增加振荡消除。7.3 频率漂移与温度稳定性电路刚上电时频率是48.7kHz过了十分钟后变成48.2kHz漂移了1%。这个漂移主要来自电容的温漂和运放的失调电压漂移。CBB电容的温度系数大概是±200ppm/°C温度升高10°C容值变化0.2%频率变化0.2%。运放的失调电压漂移也会影响施密特触发器的阈值进而影响频率。要减小漂移可以选用温度系数更小的电容比如聚苯乙烯电容温度系数只有±50ppm/°C。另外把运放换成失调电压更小的型号比如TL084也能改善。但LM324的漂移在1%以内对于这个题目来说已经足够了不需要额外处理。7.4 示波器探头对波形的影响用示波器测波形时探头本身有输入电容大概10pF到15pF。这个电容并联在测量点上会影响高频响应。测方波时探头的电容会让上升沿变缓测出来的上升时间比实际值大。测正弦波时探头电容会影响滤波器的截止频率导致测出来的幅度比实际值小。我的做法是测方波时用10:1探头输入电容小一些测正弦波时用1:1探头但要注意探头电容的影响。如果发现测出来的波形和理论值偏差较大可以先校准探头或者用短地线弹簧代替长地线减小测量回路面积。8. 完整电路图与参数汇总8.1 各功能模块的元件清单模块元件参数数量方波振荡LM324四运放1片方波振荡电阻10kΩ, 10kΩ, 47kΩ, 2.2kΩ各1只方波振荡电容4.7nF CBB1只分频74LS74双D触发器1片分频电阻10kΩ, 3.3kΩ, 1kΩ各1只分频电容100pF1只分频二极管1N41481只积分器LM324四运放共用积分器电阻33kΩ, 1MΩ各1只积分器电容1nF CBB1只滤波器LM324四运放共用滤波器电阻8.2kΩ, 4.7kΩ各2只滤波器电容1.5nF, 1nF CBB各1只输出调理LM324四运放共用输出调理电位器10kΩ1只输出调理电阻10kΩ1只电源稳压7812, 7805各1片电源电容0.1μF, 10μF若干8.2 关键测试点与预期波形在调试时我建议按以下顺序逐级测量测试点TP1LM324第一脚输出预期是48.7kHz方波幅度0到10.5V。测试点TP274LS74第二脚输出预期是12.18kHz方波幅度0到3.4V。测试点TP3LM324第七脚输出预期是12.18kHz三角波幅度0到7.8V。测试点TP4LM324第八脚输出预期是12.18kHz正弦波幅度0到5.2V。测试点TP5输出端预期是经过幅度调理后的波形幅度可调。如果某一级波形不对就往前一级查。比如TP3没有三角波先看TP2有没有方波TP2没有方波先看TP1有没有方波。这样逐级排查很快就能定位问题。8.3 常见故障与解决方案故障现象可能原因解决方案方波不起振RC值太大或太小调整RC值用示波器看输出方波频率不稳电容温漂大换CBB或聚苯乙烯电容分频输出频率不对74LS74接线错误检查D端和Q非端的连接分频输出有毛刺时钟边沿太缓加施密特触发器整形三角波削顶积分器增益太大增大输入电阻或减小反馈电容正弦波失真大滤波器截止频率太高增大滤波电容降低截止频率输出幅度不可调电位器接线错误检查电位器三个脚的连接运放发热电源接反或短路立即断电检查电源极性9. 从这道题延伸出去还能学什么把这道题做完之后你会发现很多电赛题目都是类似的套路信号产生、信号变换、信号调理。方波振荡器可以换成文氏桥振荡器产生正弦波分频器可以换成锁相环实现任意倍数分频滤波器可以换成高阶椭圆滤波器获得更陡的截止特性。掌握了这个基本框架再遇到类似的题目就能快速搭出方案。如果你想进一步挑战可以试试把输出波形改成扫频信号用压控振荡器实现频率扫描或者加上单片机做频率显示和幅度自动校准。这些扩展在电赛题目中经常出现提前练手对比赛很有帮助。我在实际调试中最大的体会是不要迷信仿真。Multisim里跑出来的波形完美无缺实际焊出来总会有各种偏差。仿真可以帮助理解原理但最终还是要靠示波器和万用表一点一点调。每次调试遇到问题先别急着换芯片用示波器逐级看波形十有八九是某个电阻电容值不对或者某个脚虚焊了。耐心一点这道题一定能做出来。
返回列表