ARTICLE DETAIL

资讯详情

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

半个世纪经典:LM358运放比较器与放大器设计实战详解

半个世纪经典:LM358运放比较器与放大器设计实战详解 1. 为什么一块1968年的运放芯片到现在还能打先说个我自己的经历。前两年给一个电池组监控项目做硬件方案产品经理丢过来一个需求用最少的BOM成本实现过压报警、欠压锁定和LED驱动指示整机成本要压到极致。我第一反应是新出的轨到轨CMOS运放比如MCP6002这类参数漂亮、功耗低结果一算账一片要一块多钱还得等两周货期。后来翻库存翻出一包LM358单价三毛钱立创当日达随便造。这块芯片1968年就诞生了National Semiconductor现在并入TI推出的双运放到今天半个多世纪过去仍在大量新设计中被使用。你可能会问现在随便一颗国产GS8552、SGM8532带宽更高、噪声更低、失调更小凭什么还要用LM358答案是在大量“够用就行”的工业场景里LM358的性价比和易用性没有对手。它单电源3V到32V宽压供电双电源也能用±1.5V到±16V静态电流典型值只有几百微安输出能拉到接近地电位虽然不能真正到0输入共模范围包含地这些特性组合在一起几乎是为单电源工业控制量身定做的。这篇文章我想用我自己做过的几个实际电路把LM358在两种核心工作模式——比较器和放大器——下的设计方法、坑点、调试思路完整过一遍。不是抄规格书是从应用角度讲清楚每一颗电阻电容为什么选这个值、电路为什么会振荡、输出为什么到不了预期电压。2. 比较器模式LM358当比较器用的边界在哪里2.1 开环工作才是比较器的本质运放工作在开环状态时开环增益极大LM358典型值100dB也就是10万倍两个输入端的电压只要有一丁点差异输出就会往正向饱和或负向饱和方向打。这就是比较器的基本原理。用LM358做比较器时最核心的设计逻辑是把输入信号接到其中一个输入端把参考电压接到另一个输入端然后根据输出是高电平还是低电平来判断信号与参考的大小关系。我举个最简单的例子12V系统里的欠压报警电路。系统电压经过分压电阻送入LM358的同相输入端反相输入端接一个2.5V的基准可以用TL431生成也可以直接用电阻分压从12V取得当电池电压低于10.8V时同相端电压低于2.5V输出翻转驱动后面的LED或者蜂鸣器。这里有个新手最容易犯的错误直接把12V经过两个电阻分压给LM358供电然后输入信号也用12V分压。12V电池在充电时会冲到14.4V甚至更高在放电时会掉到10V以下这个电压范围波动直接导致基准电压跟着飘比较器阈值完全不准。正确做法是基准电压用独立稳压源或者用TL431这类精密基准芯片。在低成本场景下你可以用78L05先把电压稳住再分压得到2.5V基准这样虽然多了一颗芯片但阈值稳定度完全不一样。2.2 输出不是理想电平扇出能力和上拉电阻的讲究用LM358做比较器输出电平需要特别留意。如果是推挽输出级的运放比如LMV358高电平可以接近电源轨但LM358的输出级是典型的射极跟随器结构高电平输出时内部有一个PNP管和一个NPN管的组合实际高电平只能达到VCC减去一个VBE压降大概比电源轨低1.5V左右。比如你用5V供电LM358输出高电平实测可能只有3.5V左右直接驱动3.3V逻辑芯片虽然勉强够用但噪声容限很差。更稳的做法是把LM358接成开集开漏模式使用也就是输出端不接内部上拉而是在外部接一个上拉电阻到目标逻辑电平。实现方式把输出端接一个上拉电阻到3.3V同时在输出端对地接一个二极管不对LM358不是开集输出它是推挽结构不能用开漏方式。实际上LM358的输出级结构决定了它高电平输出能力有限但你还是可以用外部上拉电阻来辅助——把输出端通过电阻上拉到VCC同时输出端内部管子在下拉时导通到地这时候高电平由上拉电阻决定。不过这种做法需要确认内部上管不会和外部上拉打架。实测经验LM358输出高电平时内部上管是导通的外部上拉和内部上管并联输出电压由内部上管的饱和压降决定不会因为你外接上拉到3.3V就输出3.3V。所以LM358做比较器驱动3.3V逻辑最靠谱的方式是中间加一级三极管或MOS管转换电平或者直接用LM393真正的开集输出比较器。这也是为什么我推荐如果你确定要用比较器模式优先选LM393而不是LM358。LM393是专用比较器开集输出输出端随便接上拉到多少伏都行速度也比LM358快。LM358做比较器能用但灵活性受限。2.3 反相输入端的噪声陷阱为什么实际电路会误触发上面说了比较器的基本原理理论上只要同相端高于反相端输出就翻转。但实际应用中你会发现在阈值点附近如果输入信号叠加了噪声输出会在高电平和低电平之间反复跳动LED闪烁、蜂鸣器乱叫、继电器嗒嗒响。原因不复杂LM358的响应速度不算快但也不慢输入端的毫伏级噪声足以让输出在阈值附近来回翻转。比较器没有负反馈不会像放大器那样对噪声有抑制作用噪声进来多少输出抖得就有多厉害。解决手段有几种在输入端并联一个电容到地构成低通滤波把高频噪声滤掉。比如输入信号是从电流采样电阻来的可以在同相输入端对地接一个0.1uF陶瓷电容。加滞回迟滞让阈值变成一个区间信号要越过区间上下边界才会翻转。在输出端加RC滤波不过治标不治本如果输入噪声很大还是会在比较器输出产生窄脉冲。我通常的做法是输入端滤波和滞回一起上。输入端滤波解决高频噪声问题滞回解决阈值点附近抖动问题两者配合基本能做到干净利落的翻转。在输入端并联电容的方案有个小坑如果输入信号本身是缓慢变化的模拟信号比如温度传感器输出电压并联电容过大会导致比较器翻转延迟影响响应速度。一般来说0.1uF到1uF之间比较合适具体看信号的频率成分。3. 滞回比较器从原理到参数计算手把手推一遍3.1 为什么需要滞回不只是一个“消抖”功能滞回比较器本质上是引入了正反馈让比较器的翻转阈值不再是一个固定的电压点而是随着输出状态不同而变化。输出为高电平时阈值抬高输出为低电平时阈值降低。这样信号在阈值附近波动时不会反复触发翻转。我常用滞回比较器的场景是电机堵转保护。电机电流经过采样电阻变成电压信号正常情况下电流在1A到2A之间波动堵转时电流飙升到5A。如果不用滞回在保护阈值附近电流波动会导致保护电路反复开启和关闭电机一卡一卡的最后烧的还是那个采样电阻。用滞回比较器之后比如设定门槛是4A触发保护回差值1A那么只有电流真正高于4A才触发触发后要降到3A以下才会恢复。这个1A的回差就是滞回区间保证了保护动作的果断性也避免了反复重启的振荡。3.2 滞回电阻计算两个公式搞定滞回比较器的典型结构是输入信号经过一个电阻R1接到同相输入端反相输入端接参考电压Vref也就是阈值中心输出端通过电阻R2反馈到同相输入端正反馈。这种接法下同相输入端的电压由输入信号和输出电压共同决定实际上是一个叠加。假设输出高电平为VOH输出低电平为VOL翻转点1输出由低到高Vin Vref × (R1 R2) / R2 - Vref × R1 / R2还是回差计算更清晰。我来把推导过程写清楚。设反馈电阻为Rf从输出接到同相端输入电阻为Rin从Vin接到同相端反相端接Vref。由叠加定理同相端电压V Vin × Rf / (Rin Rf) Vout × Rin / (Rin Rf)。比较器翻转条件V Vref忽略输入失调电压。当Vout VOH时代入V公式解出对应的VinVin_高 Vref × (Rin Rf) / Rf - VOH × Rin / Rf当Vout VOL时解出另一个翻转点Vin_低 Vref × (Rin Rf) / Rf - VOL × Rin / Rf回差宽度ΔV Vin_高 - Vin_低 (VOH - VOL) × Rin / Rf。举个我实际用过的参数12V供电TL431提供2.5V基准作为Vref输出高电平VOH≈10.5VLM358高电平大约VCC-1.5V低电平VOL≈0.1V。选Rin10kΩRf100kΩ则ΔV (10.5 - 0.1) × 10/100 ≈ 1.04V两个翻转点分别在Vref ± 0.52V附近约2.0V和3.0V。看到这里你应该明白了回差宽度和(VOH-VOL)成正比和Rf/Rin的比值成反比。要加大回差就减小Rf或增大Rin要减小回差就反过来。实际电路里如果输出的高低电平压差不够明显比如输出高电平被严重拉低回差也会跟着变小。3.3 滞回比较器设计里的三个常见失误反馈电阻选得太小Rf如果只有几kΩ正反馈太强回差可能高达好几伏。信号幅度不大时会直接导致比较器永远不翻转。我见过一个同事把Rf选成4.7kΩRin选成10kΩ12V系统里回差整整4V多阈值漂得离谱。忽略了VOH的实际值很多人计算时直接拿VCC当VOH用但LM358的VOH比VCC低1.5V左右输出电流越大压降越大算出来的翻转点和实际差不少。严谨的做法是查阅规格书里的VOH曲线或者干脆实测。反相端参考电压源阻抗过高如果Vref是用电阻分压从VCC取得的而VCC本身有纹波或者负载波动那么参考电压也会跟着抖。滞回虽然能消除一部分阈值点抖动问题但参考电压的稳定度直接影响阈值的绝对精度。4. 放大器模式同相放大和反相放大先把虚短虚断吃透4.1 虚短虚断运放应用的第一性原理运放线性放大状态时存在负反馈同相输入端和反相输入端的电压近似相等这叫“虚短”虚拟短路两个输入端的输入电流近似为零这叫“虚断”虚拟断路。这两个概念是运放电路分析的基石。LM358的输入偏置电流典型值在几十nA到几百nA之间听起来不算大但如果你用的反馈电阻是MΩ级别的偏置电流在电阻上产生的压降就会对电路精度造成明显影响。比如100nA的偏置电流流过10MΩ电阻产生1V的误差电压在低功耗传感器信号放大场景下这是灾难。LM358输入偏置电流偏大这个问题规格书标称典型值45nA25°C在单电源低压应用中要注意。如果是高阻抗信号源比如pH电极、光电二极管建议选用偏置电流更小的FET输入运放LM358不太合适。4.2 同相放大电路输入阻抗高信号源不累同相放大电路是最常用的放大器结构。信号从同相输入端输入反相输入端通过电阻分压网络接地输出通过反馈电阻连回反相端。增益公式G 1 Rf / Rg其中Rf是从输出到反相端的反馈电阻Rg是从反相端到地的电阻。LM358做同相放大时有个天然优势输入共模范围包含地规格书里写的是-0.3V到VCC-2V意味着输入信号可以从0V开始放大大。这在单电源系统中非常宝贵因为很多传感器输出都是0V到几V的电压不需要额外的电平搬移电路。我用LM358做过的典型同相放大电路是ACS712电流传感器的输出放大。ACS712输出在0到VCC之间中心点VCC/2对应零电流用LM358做同相放大把灵敏度提高ACS712输出每安培变化185mV20A量程版放大4倍后变成740mV/A送给ADC采样时分辨率就上去了。电路参数Rg10kΩRf30kΩ增益130/104。实际焊接时我发现Rg和Rf的精度直接影响增益误差用1%精度的电阻实测增益误差可以控制在2%以内。如果你想做更精确的增益可以用0.1%精度的电阻或者用微调电位器取代Rf做校准。4.3 反相放大电路增益任意但输入阻抗要提前想清楚反相放大电路的信号从反相输入端经过输入电阻Rin接入同相输入端接地单电源时接VCC/2虚拟地输出通过Rf反馈到反相端。增益公式G -Rf / Rin负号表示输出相位反转180度。这个公式看起来简单但新手容易忽略一个关键问题反相放大电路的输入阻抗主要由Rin决定忽略运放自身的输入阻抗如果你需要高输入阻抗反相放大不是好选择。反相放大电路的最大价值在于同相放大电路的增益永远大于等于1因为1Rf/Rg最小等于1而反相放大电路的增益可以小于1比如做衰减器用。另一个好处是反相输入端是虚拟地信号源的共模电压不会进入放大链路这在处理有直流偏置的交流信号时很方便。实际案例我需要把一个±5V的交流信号转换到0-3.3V范围给ADC采样用反相放大电路先做一个-0.33倍的衰减然后再加上1.65V的直流偏置。结构是Rin30kΩRf10kΩ增益为-0.33输出信号反相且幅度变成1.67V再经过一个加法器电路叠加上1.65V偏置得到0.02-3.32V的输出完美匹配ADC输入范围。反相放大器有个容易被忽略的问题同相输入端需要接地或接虚拟地这个“地”必须是低阻抗的干净地否则电源噪声会通过同相端进入放大器。在单电源系统中同相端一般接VCC/2基准这个基准必须用运放跟随器缓冲不能直接电阻分压。4.4 电压跟随器LM358最被低估的接法电压跟随器是增益为1的缓冲器输出跟随输入电压变化。结构简单输出直接接反相输入端信号从同相输入端进入。虽然看起来“什么也没做”但电压跟随器的价值在于输入阻抗极高、输出阻抗极低能把信号源和负载隔离开。LM358做电压跟随器时输入阻抗典型值是几十MΩ以上但受偏置电流影响实际有效输入阻抗在高阻信号源场景下会打折输出阻抗则在几Ω量级。我做过的实用例子给单片机ADC前端加跟随器解决传感器输出阻抗过高导致ADC采样不准确的问题。用的是LM358的其中一个单元同相输入端直接接电位器滑臂输出经过一个100Ω电阻接ADC引脚。这里的100Ω电阻是经验值作用是隔离ADC采样时内部采样电容的电荷注入冲击防止反冲影响电位器的线性度。LM358带宽1MHz跟随100Hz以内的信号完全无压力。电压跟随器还有一个很实用的场景做多路分配的缓冲。如果一个基准电压需要同时供给多个电路使用直接并联会导致分压影响基准精度每路各配一个LM358跟随器就能保证基准电压不被拉偏。一个LM358含两个运放一片能缓冲两路成本很低。5. 单电源供电的偏置问题LM358最容易被误用的地方5.1 为什么要关心“虚拟地”和“VCC/2偏置”LM358虽然支持单电源供电但它内部的输出级和输入级是为正负电源优化设计的单电源下处理交流信号时必须人为创建一个“虚拟地”让信号在虚拟地上下摆动。举个例子5V单电源供电你需要放大一个±500mV的交流音频信号。如果直接把信号送入LM358由于共模输入范围限制负半周信号完全无法处理输出会削底。解决方案是把同相输入端偏置到VCC/2即2.5V信号叠加在2.5V直流上这样输出也在2.5V上下摆动负半周变成相对2.5V的“低压”不会低于电源轨。偏置方法通常是电阻分压加跟随器两个10kΩ电阻从VCC到地分压得到2.5V送入一路LM358做电压跟随器输出作为虚拟地。为什么必须加跟随器因为分压电阻的输出阻抗是5kΩ如果直接接到放大器的同相输入端偏置电流会在电阻上产生压降导致虚拟地偏移。5.2 偏置设计的一个坑VCC/2偏置对电源纹波的敏感度VCC/2偏置最大的问题是VCC上的纹波会直接叠到虚拟地上经过放大器放大后出现在输出端。12V供电时开关电源输出纹波如果达到50mV这个50mV理论上会被放大器增益放大——但注意VCC/2偏置是经过分压电阻的纹波也被分压了实际进入放大器的纹波只有50mV的一半25mV放大10倍后就是250mV的噪声出现在输出端。这就是为什么我在做音频放大或精密测量时很少直接用LM358加电阻分压做偏置而是用一颗TL431或者稳压二极管生成一个纹波更小的参考电压。TL431的阴极电压稳定度远好于电阻分压而且在2.5V到36V范围内可调配合LM358简直是低成本精密电路的黄金搭档。5.3 输入/输出摆幅限制LM358不是轨到轨运放LM358的输出不能真正到VCC或地它的输出高电平VOH典型值是VCC-1.5V轻负载时HCC版本会好一些输出低电平VOL则能做到接近地电位但接低阻负载时VOL会抬升。输出电流越大输出摆幅越受限。我在12V系统中用LM358输出驱动继电器通过三极管并不直接驱动因为LM358输出驱动能力有限规格书推荐最大输出电流在20mA级别相对于VCC和GND的短路电流。直接接LED倒是没问题但需要通过限流电阻LED电流控制在5-10mA以内比较安全。如果你的设计需要轨到轨输出输出电压要达到VCC或接近0VLM358做不到考虑LMV358轨到轨输出或者SGM8532这类现代运放。但如果是工业级的12V/24V系统LM358的VOHVCC-1.5V其实完全不是问题因为后面的负载电路通常不需要那么高的电压余量。6. 实战案例一用LM358搭一个电池电压监测兼低电量报警电路6.1 需求分析一个电路同时完成放大和比较这个案例融合了前面讲的多种技术点单电源设计、比较器、滞回、偏置。需求是监测一个12V铅酸电池的电压在正常范围10.5V到14.5V内用LED显示状态低于10.5V时红色LED点亮报警。两个LM358运放单元全用上第一路做电压跟随器对电池电压分压后的信号进行缓冲第二路做滞回比较器判断电压是否低于阈值。先做分压比设计电池电压0V到15V需要分压到LM358共模输入范围内。12V电池经过两个电阻分压R1100kΩ上端接电池正极R220kΩ下端接地分压比20/(10020)1/6。15V时分压点电压2.5V低于LM358上限VCC-2V10V这里VCC直接用12V其实偏置也直接用12V会有问题因为LM358共模范围上限是VCC-2V10V分压后最高2.5V没有超限可以。6.2 阈值计算和滞回参数整定接上TL431产生2.5V精密基准作为比较器参考。低电量阈值设定为10.5V对应分压后电压为10.5 × 1/6 1.75V。比较器结构分压后的电池电压信号0-2.5V经过Rin10kΩ接入比较器同相输入端TL431基准2.5V经过电阻接到反相输入端注意基准电压高于信号电压所以比较器输出逻辑需要确认。不对我重新理一下逻辑电池电压高于10.5V时比较器输出为正常状态低于10.5V时输出报警状态。如果信号接同相端反相端接1.75V的参考阈值那么当信号大于1.75V时输出高电平小于1.75V时输出低电平。输出低电平作为报警信号驱动红色LEDLED另一端接VCC。1.75V参考可以从TL431的2.5V用电阻分压得到TL431输出串联R310kΩ然后R413.3kΩ到地用12kΩ并联100kΩ凑接近值分压点1.75V。滞回电阻输出端通过Rf100kΩ反馈到同相输入端。正常时输出高电平实测约10.5V12V供电VOH≈VCC-1.5V报警时输出低电平实测约0.15V。回差ΔV (10.5-0.15) × 10/100 1.035V对应到电池电压乘以6约6.2V的回差这个回差太大了不行。这里就暴露了一个新手常犯的错误反馈电阻选型时没有算回差与输入信号量的比例。信号在比较器输入端只有0-2.5V范围回差1.035V占了将近一半的信号范围这会导致比较器翻转需要很大的电压变化报警和恢复之间的电压差太大约6V实际体验是电池冲到13.5V才恢复报警感觉很奇怪。正确做法把Rf加大到470kΩ回差变为(10.5-0.15)×10/470≈0.22V对应电池电压约1.3V报警恢复点在10.51.311.8V左右就比较合理了。这个案例告诉我们回差设计不仅要看消除抖动够不够还要注意不能影响主阈值的精度。回差过大导致迟滞区间大到失真信号在区间内变化时比较器根本不响应。6.3 实际调试中遇到的怪现象输出一直在振荡焊接好电路后上电实测发现一个奇怪现象不接电池时LED不亮正常比较器输出高一接上真实电池LED就开始高频闪烁就像在快速抖动一样。排查链路先用万用表测比较器输入端的直流电平发现同相端电压在1.7V附近微微抖动不像接固定直流源时那么稳定。用示波器看12V电源轨发现上面有大约100mV的纹波频率几十kHz来自给电池充电的开关电源。100mV的纹波经过分压后进入比较器输入端约16mV虽然小于滞回宽度0.22V理论上不应该触发翻转但输出确实在抖动。怀疑是地线阻抗问题。重新布线后把比较器的地和电源地单点连接抖动消失。分析原因PCB走线布局不合理LED驱动电流和比较器的地回流路径重合地线上有电流噪声抬高了比较器反相端的参考地电位等效于输入信号跳变。这是个非常典型的布局问题比较器输入是高阻抗节点对噪声极其敏感参考地必须和功率地分离。我在后来的版本里把所有LED驱动、继电器驱动这类开关性负载的地都单独走线在电源输入端汇合信号地只有比较器和分压电阻电路再没有出现抖动。7. 实战案例二LM358误差放大器在Buck降压电路中的应用思路7.1 为什么Buck电源里会用到LM358提到误差放大器很多人的第一反应是专用的电源管理芯片比如TL494、UC3842内部的误差放大器。但如果你在做一个简单的Buck降压电路手上又正好有LM358用它来搭环路补偿和电压反馈是完全可行的尤其适合输出电压可调、精度要求不高的教学或DIY电源项目。“误差放大器”在电源里的作用本质是一个负反馈放大器通过采样输出电压与基准电压的误差生成PWM控制信号需要的误差电压用来调节占空比。LM358在这里的工作方式不是开环比较器而是闭环放大器——它的输出不是翻转而是在一定范围内线性变化。7.2 用LM358搭一个电压反馈环分压采样、基准、补偿一个典型的Buck电路电压反馈结构输出端Vout经过R1、R2分压采样送入LM358的反相输入端TL431或稳压管提供2.5V基准送入同相输入端。LM358的输出通过控制一个PWM芯片的反馈引脚比如TL494的COMP引脚来调节占空比。为什么不直接用一个比较器因为反馈环需要的是连续调节而不是开关式翻转。如果输出比目标值低误差放大器输出电压上升PWM占空比增大输出回升输出比目标值高误差放大器输出电压下降占空比减小。这个过程是连续的、线性的属于负反馈闭环控制。这里的关键是环路补偿。LM358的单位增益带宽只有1MHz在开关电源的反馈环路里不算快但它用在低频补偿上是足够的。我设计过一个24V输入、12V输出的Buck电路开关频率100kHzLM358做误差放大环路带宽在1kHz左右输出纹波实测50mV以内。环路稳定的判断方法用网络分析仪测波特图看增益曲线和相位曲线。没有仪器的情况下可以用负载阶跃测试——给输出加一个从空载到满载的突变负载用示波器看输出响应的振铃情况。如果振铃很多次才稳定说明相位裕度不够可以减小补偿电容的容值如果输出响应很慢甚至震荡说明补偿过大需要增大零点频率。7.3 误差放大器与比较器在实际电路中的角色差异我见过不少新手把误差放大器和比较器混为一谈结果搭出来的电路要么直接饱和要么疯狂振荡。其实两者的核心差别就一句话误差放大器工作在线性区比较器工作在饱和区。误差放大器的输出是连续可调的比较器的输出只在高电平和低电平之间切换。判断一个运放工作在哪种状态的简单方法是看负反馈是否存在有负反馈运放处于线性放大状态没有负反馈或正反馈运放处于饱和/比较器状态。这也是为什么同一个LM358既可以用作比较器也可以用作放大器——完全取决于外围电路怎么接。如果你在调试中发现电路“输出突然跳到一个固定电平怎么调输入都没用”先检查是不是负反馈断了反馈电阻虚焊、走线断裂、芯片引脚搭锡短接到旁边引脚都可能导致运放瞬间从放大状态变成比较器状态。8. 调试验证与参数测量用实验数据说话8.1 供电和静态工作点检查先看电再看信号拿到电路板不要急着接信号先做静态检查用万用表确认LM358的8脚VCC和4脚GND之间电压正常电压要在3V到32V范围内。我遇到过VCC和GND接反的情况LM358会发烫芯片直接报废。测两个输入端电压是否相等同相和反相之间电压差应在几毫伏以内。如果负反馈正常同相端和反相端电压应该几乎相同。如果偏差很大说明反馈环路有问题。测输出端静态电压。同相放大电路不接输入信号时输出应该接近0V单电源或接近两个电源的中点双电源。8.2 输入失调电压和偏置电流对LM358实际精度的影响LM358的输入失调电压Vos典型值是2mV最大7mV25°C温度漂移7uV/°C。这些参数意味着什么2mV的失调电压在增益为100倍的放大电路里输出端会产生200mV的直流误差。这对于直流信号放大来说是致命的。举例说明你用一个LM358放大一个压力传感器的差分输出满量程20mV增益100倍输出应该是0-2V。如果LM358的Vos是3mV那么输出误差就是0.3V占了满量程的15%而这个误差还不能通过简单的增益校正消除。解决方案在放大倍数不高的场景增益小于20Vos造成的输出误差60mV可以接受。需要精密放大的场合换用斩波稳零运放如OP07、AD8628Vos低至uV级别。或者在软件里做零点校准输入短路时记录输出值实际测量时减去这个零点偏移。8.3 频率特性和带宽LM358不是高速运放别硬用LM358的单位增益带宽GBW典型值1.1MHz。这句话的含义是增益为1时带宽约1.1MHz增益为10时带宽降到约110kHz增益为100时带宽只有约11kHz。增益越大可用带宽越窄。设计滤波电路或交流放大时要特别注意。我做过一个20kHz超声信号放大电路增益需要40dB100倍按GBW计算LM358在100倍增益时只有11kHz带宽实际放出来的波形已经衰减严重根本不能用。后来换了NE5532GBW 10MHz同样增益下带宽100kHz表现好得多。LM358的压摆率SR典型值0.5V/us。压摆率限制了输出对输入快速变化的响应能力。全功率带宽公式BW_full_power SR / (2π × Vpp)。如果输出幅度5Vpp全功率带宽约为0.5×10^6 / (2π×5) ≈ 15.9kHz。超过这个频率和幅度要求输出波形就会失真变成三角波而不是正弦波。做个简单对比表参数LM358NE5532LMV358OP07GBW1.1MHz10MHz1MHz0.6MHzSR0.5V/us9V/us1V/us0.3V/usVos典型值2mV0.5mV1mV0.06mV供电范围3-32V单电源双电源±5-15V2.7-5.5V双电源±3-18V每片价格参考0.3元0.8元1元2元这张表说明了LM358的定位通用慢速应用、宽压供电、低成本。你的设计如果只是做直流信号放大、100Hz以内的交流信号处理、电压比较判断LM358绰绰有余一旦涉及高频信号或者高转换速率要求还是老老实实用专用运放。9. 进阶扩展LM358还能玩出什么花样9.1 恒流源设计用LM358加MOS管搭精密电流源LM358在恒流源电路中出场率极高原因很简单它的输入共模范围包含地输出可以驱动MOS管或三极管天然适合做低压侧电流源。一个典型的压控恒流源电路LM358同相输入端接DAC输出的控制电压反相输入端接采样电阻上端的电压输出端驱动一个N沟道MOS管的栅极。负载接在VCC和MOS管漏极之间采样电阻接在MOS管源极和地之间。运放的负反馈会强制让采样电阻上的电压等于控制电压所以流过采样电阻的电流约等于控制电压除以采样电阻阻值。比如控制电压1V采样电阻1Ω则输出恒流1A当然实际受MOS管功耗和散热限制。做恒流源时的几个关键点采样电阻要用低温度系数的温漂小于50ppm/°C否则电流设定值会随温度漂移。MOS管需要加散热片功耗I×I×Rds_on导通损耗或者I×(VCC-Vload)线性工作损耗。12V负载用5V、电流1A时MOS管上的压降可能有7V功耗7W必须要足够大的散热器。输出端并联一个储能电容防止寄生振荡。LM358输出接MOS管栅极时栅极电容和运放输出电阻构成极点可能产生自激振荡。常见的补救是栅极串联几十Ω到100Ω的电阻或者在反馈路径并联一个小电容。9.2 RC有源滤波器一阶到二阶低通LM358有限的GBW虽然限制高速应用但做音频范围内的有源滤波器完全够用。一阶有源低通滤波器就是在之前的同相放大电路基础上在输入端串联电阻并对地并联电容构成RC低通然后由运放做缓冲放大。截止频率fc 1/(2πRC)。比如R15.9kΩC0.1uFfc约100Hz。要做二阶低通常见结构是Sallen-Key型。两个RC环节和一个运放组成二阶滤波器设计公式稍微复杂一些但可以用现成的滤波器设计工具算好元件参数再搭电路。我之前用LM358做过一个心电信号前置滤波器需要抑制50Hz工频干扰和肌电高频噪声用了一个二阶低通截止频率250Hz。实际效果是心电波形比较平坦没有明显的工频干扰残留。需要注意的是有源滤波器的Q值品质因数设计不当会导致幅度峰值过高或自激振荡。Q值太高1滤波器在截止频率附近会有明显增益峰值可能让信号过冲Q值过低则过渡带不够陡峭。用Sallen-Key结构时二阶低通的Q值由反馈电阻和电容的比值决定一般设计Q0.707巴特沃斯响应此时通带平坦度高。9.3 窗口比较器LM358双运放的绝佳应用组合LM358因为内置两个相同的运放单元特别适合做窗口比较器——判断输入信号是否在某一电压范围内如果超出范围就输出报警或切换状态。具体结构输入信号同时接入两个比较器的同相端或反相端反相端分别接上限阈值和下限阈值。比如第一个比较器判断信号是否低于3V信号接反相端3V接同相端第二个比较器判断信号是否高于7V信号接同相端7V接反相端两个输出经过MOS管或逻辑门合并后得到“信号不在3-7V范围内”的报警信号。用LM358做窗口比较器的优点一颗芯片两个比较器天然互补。缺点是前面提到过的LM358的输出不能接成开漏形式输出高电平被限制在VCC-1.5V如果需要和5V TTL逻辑无缝连接还是建议用LM393或者在输出端加电平转换电路。10. 常见问题排查清单把LM358电路的坑一次性说完10.1 输出不翻转/输出电平不对现象可能原因排查方法输出一直高电平反相端电压高于同相端实测两个输入端电压确认比较关系输出一直低电平同相端电压低于反相端同上输出高电平只有3VLM358非轨到轨输出特性实测VCC和输出高电平压差是否约1.5V输出带负载后电压下跌输出驱动能力不足降低负载电流或加缓冲级芯片发烫电源接反或输出短路断开电源检查接线更换芯片10.2 输出振荡或异常抖动现象可能原因排查方法比较器输出高速抖动未加滞回或输入噪声过大输入端加RC低通或加滞回反馈电阻放大电路自激振荡负载电容过大或负反馈太深输出串接电阻降低增益低频间歇振荡电源纹波耦合到输入端电源引脚并联100nF10uF电容检查地线布局信号到阈值附近时输出异常参考电压不稳定用TL431或稳压芯片提供基准这里的振荡排查我在实际项目里踩坑最多的不是没有加滞回而是PCB布局不良引入的地环路噪声。有一次做一个液体液位检测电路用LM358做比较器判断液位感应电极的电平输出接到单片机IO口。接上真实液位传感器后单片机IO口的电平一直在跳动但用示波器看LM358输出波形明明是稳定的方波。问题是单片机的地和LM358的地不在同一个电位IO口噪声容限不够。后来给IO口串联一个10kΩ电阻并在单片机引脚对地并联100nF电容解决了。10.3 影响LM358精度的几个“慢性病”温度漂移Vos随温度变化约7uV/°C在工业温度范围-40到85°C内容易产生约0.9mV的漂移。对要求高精度的电路这不是LM358该出现的场景。电源抑制比PSRRLM358的PSRR典型值80dB100倍意味着电源轨上的10V纹波会在输入端产生等效约1mV的失调变化。开关电源的纹波虽然通常只有几十mV但在增益放大电路里这部分纹波会直接进入输出。通道间串扰LM358是一颗双运放两个通道共用同一个基片和电源。当一个通道驱动大负载电流时衬底电流会稍微改变另一个通道的输入失调。严格来说这属于二阶效应但在精密模拟信号处理时要提前规划好哪个通道处理敏感信号、哪个通道处理驱动信号。11. 从LM358开始学会自己的运放设计方法论这篇内容从比较器讲到放大器从虚短虚断讲到滞回计算从偏置设计讲到环路补偿核心是建立一套运放电路设计的思维方式。多年下来我自己的体会是运放电路设计最关键的三个习惯第一先算再焊。所有关键节点的电压、电流、增益、功耗先手算验证一遍再动手。哪怕只是估算数量级也能在事后缩减80%的调试时间。很多人焊完电路发现问题后第一步就直接换芯片、改电阻结果越改越乱。其实大部分问题都可以通过静态工作点计算提前发现。第二供电先行。运放电路出问题优先检查供电——电压是否在规格范围内、纹波是否过大、地线是否干净。电源不干净后面所有信号处理都白搭。我习惯在每颗运放的电源引脚就近放置0.1uF陶瓷电容和10uF电解电容这个成本很低但能解决很多莫名其妙的振荡和噪声问题。第三尊重规格书但不迷信规格书。LM358的规格书里写明了典型值但你实际拿到的芯片批次不同、温度环境不同、负载条件不同性能会有偏差。关键参数必须实测验证尤其是VOH、VOL、Vos、GBW这些直接影响电路功能的指标。回到题目本身LM358这颗芯片从1968年活到现在无数工程师用过它批评过它但依然离不开它。它不是一个精密的运放但足够皮实、便宜、易用非常适合学习和验证运放电路的基础原理。你把它当比较器用、当放大器用、当误差放大器用只要理解了运放的本质逻辑——负反馈和环路控制——任何一颗运放都逃不出这个框架。我把这篇文章里所有涉及到的计算公式和参数整理在这节末尾方便你做自己的电路设计时快速参考同相放大增益G 1 Rf/Rg反相放大增益G -Rf/Rin滞回比较器回差ΔV (VOH - VOL) × Rin/RfSallen-Key低通截止频率fc 1/(2πRC)增益带宽积GBW G × BW设计时留2-3倍余量全功率带宽BW_full_power SR / (2π × Vpp)最后分享一个小技巧在设计电路时如果拿不准某个引脚应该接什么可以在同相输入端和反相输入端各串一个100Ω的小电阻。这个小电阻能起到未知阻抗隔离和限制寄生振荡的作用尤其是你的信号线比较长、环境电磁干扰比较大的场合这个小成本能省掉后面很多排查噪声的时间。我最早接触LM358是在大学实验室焊了一个电池电量指示器用两颗LED显示电量的高低完全不理解运放的工作原理照着网上的电路图焊出来居然能用。后来做了十几年硬件回头看那个最初级的电路才真正理解了虚短虚断在那个电路里是怎么起作用的。这就是LM358的价值——它足够简单简单到你能用它验证每一个运放原理也足够皮实皮实到你可以大胆试错而不怕烧坏。希望你也能从这个“小三毛钱”的芯片里找到电路设计真正的乐趣。
返回列表