ARTICLE DETAIL

资讯详情

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

LM358运放呼吸灯电路设计:从原理到实操

LM358运放呼吸灯电路设计:从原理到实操 1. 为什么选择LM358来做呼吸灯1.1 呼吸灯的本质是什么呼吸灯说白了就是让LED的亮度按照一定的节奏慢慢变亮、再慢慢变暗像人在呼吸一样。它跟普通的闪烁灯有本质区别——闪烁灯只有“亮”和“灭”两个状态而呼吸灯要求亮度连续变化中间有无数个过渡状态。这就意味着驱动电路必须能够输出一个连续变化的模拟电压或电流而不是简单的开关信号。常见的呼吸灯实现方式有三种单片机PWM调光、专用LED驱动芯片、以及纯模拟电路。单片机PWM方案最灵活但需要写代码、烧录程序专用芯片方案最省事但成本偏高且可调性差纯模拟电路方案用运放加少量外围元件就能实现成本低、无需编程、现象直观特别适合练手和教学。LM358就是纯模拟方案里最经典的选择。它是双运放一个芯片里有两个独立的运算放大器单价几毛钱随便一个电子市场或者网购平台都能买到。更重要的是它的供电范围宽3V到32V单电源输出电流能力也够驱动一颗普通LED拿来搭呼吸灯再合适不过。1.2 LM358这颗芯片到底能干什么LM358属于通用型双运算放大器内部两个运放共用电源引脚。它的关键参数如下参数典型值说明供电电压3V~32V单电源宽电压范围电池供电也OK输入失调电压2mV~7mV精度一般但呼吸灯不需要高精度增益带宽积约1MHz低频应用完全够用输出电流约20mA~40mA直接驱动LED没问题输入偏置电流约20nA对高阻电路有影响需注意很多人第一次接触运放会觉得“虚短虚断”很抽象其实放到呼吸灯这个场景里理解就简单了运放会拼命调整自己的输出电压让正输入端和负输入端的电压尽量相等虚短同时因为输入阻抗极高几乎不吸收电流虚断。呼吸灯电路正是利用这个特性让运放工作在放大区输出一个受控的缓变电压。1.3 呼吸灯电路的整体方案选型用LM358搭呼吸灯核心思路是构建一个“弛张振荡器积分器”的组合。第一个运放产生方波第二个运放对方波进行积分把方波变成三角波。三角波的上升沿对应LED逐渐变亮下降沿对应逐渐变暗一个完整的三角波周期就是一次呼吸。为什么不用正弦波因为正弦波振荡电路如文氏电桥需要更复杂的稳幅机制元件精度要求高调试麻烦。方波转三角波的方式元件少、起振可靠、频率和幅度独立可调对新手友好得多。注意LM358的输出摆幅不是轨到轨的。在单电源5V供电时输出高电平大约只能到3.5V左右低电平大约0.1V。设计积分器时要考虑这个摆幅损失否则三角波幅度会比你预期的小。2. 呼吸灯电路的完整设计与元件计算2.1 电路整体架构拆解整个电路分三级第一级方波发生器。用LM358的第一个运放搭一个滞回比较器配合RC充放电网络输出一个频率可调的方波。第二级积分器。用LM358的第二个运放搭一个反相积分器把方波积分成三角波。第三级LED驱动。三角波通过一个限流电阻直接驱动LED或者加一个射极跟随器提高驱动能力。三级之间是直流耦合的不需要耦合电容这样低频响应好呼吸节奏不会因为电容而变形。2.2 方波发生器的工作原理与参数计算方波发生器本质上是一个自激多谐振荡器。运放的同相输入端接一个电阻分压网络形成正反馈反相输入端接RC充放电网络。输出高电平时电容通过电阻充电反相端电压逐渐上升当反相端电压超过同相端电压时输出翻转为低电平电容开始放电当反相端电压低于同相端电压时输出再次翻转。如此循环输出就是方波。设同相端的翻转阈值由R1和R2决定。假设输出高电平为Voh低电平为Vol则上限阈值Vth_high Voh × R1/(R1R2) Vol × R2/(R1R2)下限阈值Vth_low Vol × R1/(R1R2) Voh × R2/(R1R2)为了简化取R1R210kΩVoh≈3.5VVol≈0.1V5V供电实测值则Vth_high ≈ 3.5×0.5 0.1×0.5 1.8VVth_low ≈ 0.1×0.5 3.5×0.5 1.8V等等这样算出来上下限一样了说明R1和R2不能相等。实际上同相端还需要一个电阻接到输出端形成正反馈。正确的接法是R1从输出接到同相端R2从同相端接到地。这样Vth_high Voh × R2/(R1R2)Vth_low Vol × R2/(R1R2)取R110kΩR210kΩ则Vth_high≈1.75VVth_low≈0.05V。翻转阈值有了接下来算RC时间常数。方波频率f ≈ 1/(2RC×ln(12R2/R1))。取R10kΩC10μFR1R210kΩ则f ≈ 1/(2×10000×0.00001×ln3) ≈ 1/(0.2×1.0986) ≈ 4.55Hz这个频率对应一次呼吸约0.22秒太快了。呼吸灯一般要求一次完整呼吸2~4秒即频率0.25~0.5Hz。所以需要增大RC。取R100kΩC10μFf ≈ 1/(2×100000×0.00001×1.0986) ≈ 1/(0.2197) ≈ 4.55Hz还是不对我算错了。重新算2×100000×0.0000122×1.09862.1972所以f≈1/2.1972≈0.455Hz。对了这样一次呼吸约2.2秒合适。所以方波发生器的元件取值为R110kΩR210kΩR100kΩC10μF。实际调试时可以用一个100kΩ电位器代替R这样呼吸速度可调。2.3 积分器把方波变成三角波的关键细节积分器的输出与输入的关系是Vout -1/(RC) × ∫Vin dt 初始电压。当输入是方波时积分结果就是三角波。方波高电平期间积分器输出线性下降方波低电平期间积分器输出线性上升。积分器的电阻和电容取值决定了三角波的幅度。设方波幅度为Vp约3.4V半周期为T/2则三角波的峰峰值为Vpp Vp × (T/2) / (R_int × C_int)取T2.2秒T/21.1秒Vp3.4V希望Vpp3V这样LED亮度变化明显则R_int × C_int Vp × (T/2) / Vpp 3.4 × 1.1 / 3 ≈ 1.247取C_int10μF则R_int≈124.7kΩ取标准值120kΩ。实际调试时R_int也可以用100kΩ电位器串联一个固定电阻方便调整三角波幅度。注意积分器的电容极性不能接反。如果用的是电解电容正极要接运放的反相输入端负极接输出端。因为运放反相端电压基本不变虚地而输出端电压在变化接反了电容会漏液甚至爆炸。2.4 LED驱动级的限流电阻怎么选三角波输出直接接LED和限流电阻到地。LM358的输出电流能力约20mALED正常工作电流5~15mA就够了。设三角波最高电压为3VLED正向压降1.8V红色LED则限流电阻R_led (3 - 1.8) / 0.01 120Ω取220Ω也可以亮度稍低但更安全。如果觉得亮度不够可以在运放输出和LED之间加一个NPN三极管如S8050做射极跟随器这样驱动电流可以更大LED更亮。3. 手把手实操从面包板到成品3.1 元件清单与工具准备元件规格数量LM358DIP-81电阻10kΩ2电阻100kΩ1电阻120kΩ1电阻220Ω1电解电容10μF/25V2LED红色5mm1电位器100kΩ1可选电源5V~9V1工具方面面包板、杜邦线、万用表、示波器如果有的话就够了。没有示波器也能调用万用表测电压变化也能判断电路是否起振。3.2 面包板搭接步骤与实测记录第一步把LM358插到面包板中间缺口朝左。第8脚接电源正第4脚接电源负。第二步搭方波发生器。第一个运放的同相端第3脚接R1到输出第1脚接R2到地。反相端第2脚接R到输出接C到地。输出第1脚就是方波。第三步搭积分器。第二个运放的反相端第6脚接R_int到第一个运放的输出接C_int到第二个运放的输出第7脚。同相端第5脚接一个10kΩ电阻到地或者接一个分压网络提供偏置。第四步接LED。第二个运放的输出第7脚接220Ω电阻再接LED正极LED负极接地。上电后用万用表直流电压档测第一个运放输出应该在0.1V和3.5V之间来回跳变。如果电压不变说明没起振检查R和C是否接对以及正反馈电阻R1是否接好。测第二个运放输出应该在1V到4V之间缓慢变化具体范围取决于积分器参数。如果变化太快增大R或C如果不变检查积分电容是否接反或损坏。3.3 调试技巧如何让呼吸效果更自然呼吸效果的自然程度取决于三角波的线性度和频率。如果三角波上升和下降不对称呼吸会显得“急升慢降”或反之。调整方法是让方波的占空比接近50%这可以通过微调R1和R2的比值来实现。另一个技巧是在LED前面加一个RC低通滤波把三角波的尖角磨圆一点亮度变化会更柔和。具体做法是在运放输出和LED之间串一个1kΩ电阻再并一个10μF电容到地。这样LED的亮度变化会稍微滞后于三角波但视觉上更接近真实呼吸。实测心得LM358在5V供电时输出高电平只有3.5V左右如果电源电压降到3.3V输出高电平可能只有2.5VLED亮度会明显变暗。建议用9V供电输出摆幅更大LED更亮呼吸效果更明显。4. 常见问题与排查技巧实录4.1 电路不起振怎么办不起振是最常见的问题。排查顺序如下测LM358第8脚电压确认电源正常。测第一个运放输出如果一直是高电平或低电平检查正反馈电阻R1是否接在输出和同相端之间。检查RC网络是否接在反相端和输出之间电容极性是否正确。如果R太大或C太小振荡频率可能很高万用表测不出来。用示波器看或者把C换成100μF试试。4.2 呼吸速度太快或太慢怎么调呼吸速度由方波频率决定。频率太高呼吸太快像闪烁频率太低呼吸太慢像慢动作。调整方法增大R或C频率降低呼吸变慢。减小R或C频率升高呼吸变快。用100kΩ电位器代替R可以实时调节。4.3 LED亮度变化不明显的原因如果LED只是微微闪烁没有明显的呼吸感可能原因有三角波幅度太小。检查积分器输出峰峰值如果小于1V增大R_int或减小C_int。LED限流电阻太大。换小一点的电阻或者加三极管驱动。电源电压太低。LM358在低电压下输出摆幅受限换9V电源试试。4.4 常见问题速查表现象可能原因解决方法完全不动电源未接或运放损坏测电源电压换运放输出恒定高/低正反馈缺失检查R1连接呼吸太快RC太小增大R或C呼吸太慢RC太大减小R或CLED不亮限流电阻太大或LED极性反换小电阻检查LED方向亮度变化小三角波幅度小调整积分器RC有尖峰干扰电源退耦不足电源脚并100μF电容5. 进阶玩法从呼吸灯到更多运放应用5.1 用LM358做电压跟随器提高带载能力如果觉得LED亮度不够可以在积分器输出和LED之间加一级电压跟随器。电压跟随器就是运放输出直接接到反相输入端同相端接输入信号。这样输入阻抗极高输出阻抗极低带载能力大大增强。LM358的第二个运放如果已经用了可以换LM324四运放或者用两个LM358。5.2 改成音频放大器电路的思路呼吸灯电路里的方波发生器和积分器稍加改动就能变成音频放大器。把方波发生器换成麦克风前置放大积分器换成功率输出级就能驱动小喇叭。LM358的增益带宽积只有1MHz做音频放大时高频响应一般但听个响完全够用。5.3 用Multisim或CircuitJS仿真验证在动手搭电路之前可以先用Multisim或CircuitJS仿真。CircuitJS里设置运放增益为无穷大就是理想运放模型仿真呼吸灯波形非常快。Multisim里可以用LM358的SPICE模型仿真结果更接近实际。仿真时重点看方波频率和三角波幅度确认参数后再焊电路能省不少调试时间。个人经验仿真里电路往往一次就起振但实际搭出来可能因为元件误差、面包板接触电阻等原因不起振。所以仿真通过不代表实际一定行留出调试余量很重要。5.4 从呼吸灯延伸到恒流源和升压电路LM358还能搭恒流源。用运放加MOS管可以做一个精度不错的恒流源用来驱动大功率LED。原理是运放比较采样电阻上的电压和基准电压调整MOS管栅极电压保持电流恒定。这个电路在电池充电、LED驱动里很常见。升压电路也可以用LM358做控制核心配合电感、二极管和MOS管把低电压升到高电压。不过LM358的响应速度不快升压效率一般适合小功率应用。6. 写在最后的一些实操体会这个呼吸灯电路我前前后后搭过五六次每次都有新发现。最开始用面包板搭LED亮度变化很生硬后来发现是积分电容用了钽电容漏电流太大导致三角波变形换成铝电解电容就好了。还有一次用9V电池供电呼吸效果特别顺滑换成5V USB供电就明显发涩说明电源电压对LM358的输出摆幅影响很大。元件选择上电阻用1%精度的金属膜电阻电容用普通铝电解就行没必要上发烧级。LM358本身精度就不高外围元件再精密也是浪费。倒是电源退耦电容不能省在LM358的电源脚旁边并一个100μF电解加一个0.1μF瓷片能有效抑制呼吸时的轻微抖动。如果你搭完发现LED亮度变化范围不够大可以在积分器输出后面加一个同相放大器把三角波幅度放大到接近电源电压。增益取2~3倍就够了太大反而会削顶。同相放大器的反馈电阻取10kΩ和20kΩ输出就能翻倍。最后分享一个懒人调法把方波发生器的R和积分器的R都换成电位器上电后一边看LED一边拧直到呼吸节奏和亮度变化都满意为止。调好之后用万用表测出电位器阻值换成固定电阻焊死电路就定型了。这个方法比算参数快得多适合不想动笔算的新手。
返回列表