ARTICLE DETAIL

资讯详情

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

LM358运放实战:从比较器到放大器,原理、计算与踩坑指南

LM358运放实战:从比较器到放大器,原理、计算与踩坑指南 手里正好有一堆LM358的同学举下手。这颗芯片大概是电子爱好者最容易接触到的第一颗运放了几毛钱一颗、双运放、单电源供电从电压比较器、信号放大器到恒流源基本上什么电路都能插一脚。很多人一开始只知道照着网图接线但换了电阻、换了供电电压就翻车根本原因还是没搞懂运放内部到底在干什么。今天我就拿这颗LM358从比较器到放大器完整走一遍附带上具体计算过程、实物接线的踩坑教训以及几个我实际用过的经典电路希望能让新手少走弯路。这篇文章会包含运放最核心的“虚短、虚断”怎么理解用LM358搭电压比较器、滞回比较器用LM358搭同相放大器、反相放大器、电压跟随器运放加MOS管做恒流源的实际电路常见翻车现场和排查方法比如输出不到0V、自激振荡、电压不对等无论你是刚接触模拟电路的学生还是想低成本做传感器信号处理的工程师这篇都值得收藏慢慢看。1. 动手前先弄明白LM358到底能干嘛1.1 一颗芯片搞定大部分模拟电路场景LM358是双运算放大器芯片意思是一颗封装里集成了两个独立的运放。它最讨人喜欢的地方是单电源供电电压范围从3V到32V都能工作也可以双电源供电正负1.5V到正负16V。很多传感器、单片机系统都是单电源LM358可以直接塞进去用不用为了运放单独搞一路负电源。它的静态功耗也很低典型的电源电流在500μA左右电池供电的场景能接受。输出端能提供的电流大概在20mA到40mA驱动LED、三级管、MOS管栅极都够用。再加上增益带宽积大概1MHz意味着在低频信号放大、直流信号调理、电压比较这些场合它都有用武之地。而且这个芯片实在太便宜了散买也就几毛钱做实验烧了也不心疼。新手完全可以用它来建立运放的直觉把负反馈、比较器、恒流源这些基础电路玩透之后再去上手其他高速运放、精密运放会轻松很多。1.2 引脚和关键参数看懂数据手册里的“潜台词”LM358常见的封装是DIP-8和SOIC-8不管是哪种引脚功能都一样。这里以DIP-8为例引脚名称功能1OUT A运放A输出2IN- A运放A反相输入3IN A运放A同相输入4GND/VEE负电源或地5IN B运放B同相输入6IN- B运放B反相输入7OUT B运放B输出8VCC/V正电源新手最容易把引脚搞混尤其是2、3脚。记住一个习惯先看引脚序号再看功能接线前最好对着芯片实物上的缺口或者圆点确定方向缺口朝上时左面是1脚往下数到4脚再从右侧5脚往上数到8脚。除了引脚还有几个参数我会特别提醒输入失调电压Vos典型2mV左右最差可能到7mV。做直流放大时这个失调会被放大倍数一起放大所以增益很高时输出有固定偏置不要慌先算算是不是失调电压的问题。输入偏置电流I_B大约100nA级别比很多精密运放高但配合几十kΩ级别的电阻还够用。如果前端信号源内阻到了MΩ级别就要考虑换JFET输入的运放了。输出摆幅单电源供电时输出高电平一般到VCC减去1.5V左右也就是5V供电时输出最高可能只有3.5V。这个知识点很多人不知道后面我会专门讲。共模输入范围VICMLM358的输入共模电压可以到地GND上限大概是VCC减去1.5V。也就是说输入信号不能太接近正电源否则内部输入级会进入不正常状态。2. 运放原理速通记住两句话就够了很多新手卡在运放原理这一步觉得内部电路复杂其实对应用来说根本不需要死磕内部三极管。你只需要记住在负反馈闭环状态下运放的两条“黄金法则”也就是常说的“虚短”和“虚断”。2.1 虚短和虚断运放分析的基础第一句话叫“虚短”在负反馈闭环工作时运放的同相输入端电压V和反相输入端电压V-会越靠越近最终可以近似看作相等即V ≈ V-。注意这个“≈”并不是物理上真的一根导线短接在一起而是因为运放增益极大小小的压差经过开环放大后足以把输出推到饱和所以稳定状态下两输入端电压会趋于一致。习惯上我们把它当相等来计算。第二句话叫“虚断”运放的输入阻抗非常高LM358的输入阻抗在兆欧级别以上所以流入同相端和反相端的电流可以近似看作0即I ≈ 0、I- ≈ 0。实际操作中你不会从信号源或前面电路抽出明显电流因此后一级电路的负载效应很小。这两条法则组合起来基本能解决90%的运放电路计算题。比如反相放大器输入端通过电阻R1接到反相端反相端又通过电阻Rf接到输出端同相端接地。因为虚短V- V 0V因为虚断电流不能流入运放那么流过R1的电流就只能流过Rf。根据欧姆定律输入Vin在R1上产生的电流是Vin / R1这个电流在Rf上产生的压降是(Vout - 0) / Rf两者相等于是解出Vout -Vin × Rf / R1。整个推导不超过三步。2.2 负反馈运放稳定工作的核心为什么偏偏要强调负反馈因为运放开环增益太高了LM358的开环直流增益能到100dB左右也就是十万倍以上。开环操作时输入毫伏级的波动就会把输出打到电源轨这种状态只能当比较器用。想要得到稳定的“放大”效果必须把输出的一部分引回反相输入端让系统自我纠偏。打个比方运放开环就像方向盘没有回正力的车稍微动一下方向就偏了加上负反馈就像车子有了自动回正功能系统会自己修正让输出稳定在期望值附近。负反馈不仅决定放大器增益还能改善线性度、展宽带宽、降低输出失真。学习运放一定要养成“先看反馈有没有接到反相端”的习惯。有一个快速判断方法如果输出通过电阻或导线直接连回反相输入端那就是负反馈如果反馈同样连到了同相输入端那就是正反馈输出会处于滞回或饱和状态。做比较器时我们反而需要正反馈来加速跳转和引入滞回。2.3 单电源供电的特殊性为什么输出不是“0V”LM358长期被吐槽的一个点是输出不能真正到0V。单电源5V供电时理想中你把输入拉到低于参考电压输出应该变成0V但实测很多芯片的输出最低只能到20mV到100mV左右。原因是LM358的输出级不是轨到轨结构内部输出管在接近地电位时会进入饱和区等效阻抗变大导致输出电压被抬高。这在实际项目里会带来麻烦比如你用它做电流检测负载电流为零时运放输出本来就该是0V结果它输出50mV后级单片机ADC检测到的是0.05V还要做软件补偿。再比如做比较器驱动负载输出低电平如果超过逻辑低电平阈值后级就可能误判。所以单电源轨到轨输出才是更省心的选择常见的替代芯片有LMV358、MCP6002等。如果只是验证电路原理、或者对低电平精度要求不高LM358完全够用。后面的实战我都会以单电源5V供电为例遇到输出精度问题再单独说明。3. 实战一LM358当比较器三分钟搭一个电压监控运放开环使用就是一个比较器。它把同相输入端的电压和反相输入端的电压做比较V V-时输出接近正电源V V-时输出接近负电源单电源时就是接近地。简单粗暴不需要任何负反馈。3.1 最基础的电压比较器阈值这样设需求场景我想检测一个环境光传感器输出电压当电压超过2.5V时点亮一颗LED。用LM358就能做。接线如下用一颗10kΩ电位器接在5V和GND之间动臂接运放A的反相输入端2脚把参考电压设在2.5V光敏传感器输出信号接到同相输入端3脚运放A输出1脚串联一个1kΩ电阻再接到LED正极LED负极接地当传感器输出电压超过2.5V时同相端比反相端电压高输出直接拉到接近5V实际约3.5V到4VLED点亮低于2.5V时输出接近0VLED熄灭。这里有个细节参考电压不建议用两个普通电阻从5V分压因为分压值会受电源波动影响精度也很一般。想要稳定基准可以用TL431搭一个2.5V基准再配合电阻分压微调。如果只是做验证电位器分压是最省事的。还要注意LED的限流电阻不能用太小。运放输出能力有限你把限流电阻设成100Ω理论上电流能有40mA但芯片会发烫而且很多LM358在输出大电流时输出电压会明显下降。稳妥做法是把LED电流控制在5mA到15mA之间也就是限流电阻选330Ω到1kΩ。3.2 加个正反馈滞回比较器避抖动基础比较器有一个烦人的问题输入信号在阈值附近波动时输出会在高电平和低电平之间来回跳产生“抖动”或“抖动噪声”。最常见的就是热敏电阻测温温度在设定点附近时风扇一直开关开关非常折磨人。解决办法是在运放输出与同相输入端之间加一个正反馈电阻Rf形成滞回比较器。这会让电路有两个阈值一个是输出从低翻高时的阈值另一个是输出从高翻低时的阈值两个阈值之间有一段“死区”输入信号在这个区间内变化时输出不会翻转。接法和计算我举个例子同相输入端3脚接参考电压Vref这里选2.5V反相输入端2脚接输入信号Vin从输出1脚接一个100kΩ电阻Rf到同相输入端3脚因为有了Rf的反馈同相端电压不再是单纯的Vref而是和输出电压Vout叠加的结果。计算方法用叠加定理V (Vref × Rf Vout × R1) / (R1 Rf)其中R1是同相端到Vref的输入电阻。为了方便说明假设R1也取10kΩRf取100kΩ。当输出高电平VOH约4V时V_H (2.5V × 100kΩ 4V × 10kΩ) / (10kΩ 100kΩ) ≈ 2.64V当输出低电平VOL约0.1V时V_L (2.5V × 100kΩ 0.1V × 10kΩ) / (10kΩ 100kΩ) ≈ 2.28V也就是说输入信号要从低往上超过2.64V输出才翻高翻高之后输入要降到低于2.28V输出才翻低。这样阈值区间内2.28V到2.64V输入怎么变化输出都不会被干扰这就是滞回曲线的含义。滞回宽度就是VH - VL由正反馈电阻Rf和输入电阻R1的比值决定。Rf相对R1越大滞回宽度越小Rf相对R1越小滞回宽度越大。实际操作中先定需要多大的滞回范围再反算Rf比较合理。3.3 比较器输出的常见问题电平兼容用LM358做比较器后级接单片机时很多人会遇到逻辑电平不兼容的问题。比如工作在5V供电输出高电平只有3.5V对3.3V单片机来说勉强算高电平但如果你用12V给LM358供电输出高电平可能到10V以上直接进单片机就会烧引脚。最简单的做法是给输出加一个分压电阻或者串联稳压管把输出摆幅限制到单片机可接受范围。比如12V供电、需要5V逻辑输出时可以用“输出端串联10kΩ电阻再在电阻后面对地并联一个5.1V稳压管”的钳位电路。电阻起到限流作用稳压管把电压钳在5.1V。另一个常用方案是在输出端加一颗NMOS或三极管做电平转换用LM358的输出去控制晶体管开关再由晶体管去驱动继电器等负载。这样既解决了电平问题也扩大了输出驱动能力。LM358在比较器模式下驱动容性负载的能力也有限直接驱动继电器线圈这种感性负载时必须加续流二极管否则很容易烧芯片。4. 实战二LM358当放大器同相、反相、跟随器一次学会运放最核心的用法还是做放大器。这一节把同相放大器、反相放大器、电压跟随器、差分放大器都过一遍给出具体电阻取值和增益计算而不是只给一张原理图。4.1 同相放大器接一根热敏电阻就搞定温度采集同相放大器的特点是输入信号从同相端进来输出不会反相增益公式是A 1 Rf / R1其中Rf是从输出到反相输入端的反馈电阻R1是从反相输入端到地的电阻。举个例子用NTC热敏电阻和固定电阻组成分压把温度变化转成电压变化然后送入LM358同相放大。假设传感器分压输出在室温下是0.5V满量程时是1V我想放大到0~3.3V给单片机ADC采样放大倍数需要3.3倍左右。取Rf23kΩ、R110kΩA 1 23k/10k 3.3倍输出就是1.65V到3.3V。实际项目里R1和Rf的取值要考虑几点第一阻值不能太大否则偏置电流在电阻上产生的压降会导致输出误差增大第二阻值不能太小否则前级信号源需要提供较大电流还可能让运放超负荷。10kΩ到100kΩ之间是LM358的合适工作区间。还要注意同相放大器的输入阻抗很高对信号源来说几乎是开路的这在前级传感器输出能力很弱的场景下非常有用。但高输入阻抗同时意味着容易拾取空间电磁干扰所以输入端到地之间最好放一个几十pF到几百pF的小电容滤掉不必要的射频噪声。4.2 反相放大器需要反相或需要低输入阻抗时用它反相放大器增益公式A -Rf / Qin这里的负号表示输出和输入反相输入为正时输出为负。单电源供电时麻烦就来了——负输出根本出不来。所以单电源下做反相放大通常先把同相端偏置到VCC/2左右让输出在静态时停在VCC/2有用信号在这个中点上下摆动。还是以5V供电为例R110kΩRf100kΩ则增益为-10倍同相输入端3脚接到2.5V的偏置电压输入信号1V时理想输出是 2.5V (-10 × (1V - 2.5V))其实信号要相对于2.5V中点反相。这种电路需要偏置基准源最好用精密基准做直接用两个电阻分压在精度要求不高时也能跑。反相放大器的输入阻抗等于R1不像是同相端那么高所以前级如果信号源内阻较大就要重新考虑。新手做反相放大最容易犯的错是忘记了单电源下需要加中点偏置直接输入端接地结果输出无论如何到不了负电压波形被削掉一半。这属于典型“会公式但不会用”的场景公式推导没问题但供电方式决定了你得先搭一个直流工作点。4.3 电压跟随器最容易被忽略却最实用的电路电压跟随器就是把输出直接接到反相输入端输入信号从同相端进增益为1输出等于输入。很多人觉得这种电路毫无技术含量但在实际项目里极其常用。它解决的问题是阻抗隔离和驱动能力。比如一个温度传感器输出电压是0到1V但传感器输出阻抗很大直接接后级ADC会把信号拉到明显低于真实值或者后级电路需要的电流超过了传感器能提供的范围。这时候在传感器和ADC之间插一级电压跟随器利用运放高输入阻抗、低输出阻抗的特性输入侧几乎不吸取电流输出侧则能轻松驱动后级。LM358做电压跟随器时需要注意输出范围和前面说的失调电压。单电源5V供电输入2.5V输出理论上也是2.5V但实测可能会是2.498V或2.503V存在几个毫伏的误差。这在大多数场合可以忽略但在高精度测量中必须考虑。还有一点电压跟随器接大电容负载时容易自激振荡表现为输出波形叠加高频振铃。解决办法是在输出端先串一个几十欧到几百欧的电阻再接电容或者减小反馈路径电感。这个问题在长线传输场景尤其明显。4.4 差分放大器用四颗电阻测电压差差分放大器的作用是放大两个输入端的电压差同时抑制两端共有的电压。最经典的结构是四电阻差分放大器反相输入端经R1接V1反馈电阻Rf从输出到反相端同相输入端经R2接地或参考点再经R3接V2一般取R1R2、RfR3此时输出 Vout (Rf/R1) × (V2 - V1)这在高边电流检测里很常用。比如检测电源正极线上串联的毫欧级取样电阻两端电压这个电压就是电流产生的微小压降用差分放大器把它放大成可测电平。LM358的问题在于共模抑制比CMRR不算特别高四颗电阻稍微不匹配共模抑制效果就会退化很严重。理想情况四颗电阻用同阻值同批次精密电阻但在实际搭电路时我更推荐用集成差分放大器芯片或者把电路改成仪表放大器结构。仪表放大器是三运放方案前级两个同相放大器先缓冲输入信号后级一个差分放大器做相减这样输入阻抗极高、共模抑制比更高。LM358里刚好有两个运放但三运放结构需要三颗运放两颗不够用可以考虑用一颗LM324四运放来实现。如果你只是想学习原理四电阻差分电路值得手算一遍尤其是共模电压对输出的影响。在实验室里我用普通5%精度的贴片电阻搭过结果共模抑制比惨不忍睹连40dB都难保证。后来把四颗电阻换成0.1%精度效果立刻好转。这件事让我深刻意识到差分电路性能很大程度取决于外围元件而不是运放本身。5. 进阶玩法运放加MOS管做恒流源LM358还有一个经典玩法是构建恒流源。恒流源在很多场合都有用比如LED驱动、电池充电、传感器激励等。利用运放的虚短特性和一颗MOS管可以搭出一个非常稳定的压控恒流源。5.1 恒流源电路原理和计算电路结构如下运放A的同相输入端接一个参考电压Vref运放A的反相输入端接采样电阻Rs的上端同时也是MOS管源极运放A输出接MOS管的栅极MOS管漏极接负载源极经采样电阻Rs接地因为虚短运放会不断调整输出使MOS管栅极电压变化直到反相输入端电压等于同相端参考电压。也就是说采样电阻上的电压稳定在Vref那么流过采样电阻的电流就是Vref / Rs。这个电流实际上就是从MOS管漏极流下来的电流也就是负载电流和负载本身阻值无关。举个例子Vref取1VRs取1Ω那么恒流值就是1A。但LM358在这种大电流场景下Vref和Rs的功耗都比较可观要注意选功率够大的采样电阻。如果只是想驱动LED假设恒流目标20mAVref取0.2VRs取10Ω效果就很好。计算电路参数时记住几个约束MOS管栅源电压Vgs要满足运放输出范围。LM358输出高电平大约到VCC-1.5V如果你用5V供电栅极最高只有3.5V左右那就要选Vgs(th)比较低、最好是逻辑电平MOS管采样电阻Rs功耗为 I² × Rs大电流时要用水泥电阻或大功率贴片电阻负载电压降加上采样电阻压降再加上MOS管压降不能超过电源电压否则电流达不到设定值5.2 恒流源的实际扩展LED驱动和电流检测扩展除了单纯的恒流源这个结构稍加改动就可以变成压控电流源把Vref端接一个DAC或者PWM滤波得到的模拟电压输出电流就跟随Vref变化实现软件控制亮度或充电电流。我之前用STM32的DAC加LM358和一颗AO3400 MOSFET做了一个0到500mA可调的LED驱动线性度还不错10位DAC的分辨率下能明显看到亮度渐变。另一个方向是电流检测。把采样电阻放在低边负载负极和地之间用运放放大采样电阻两端的压降再送给ADC。这种方案在单片机项目里很常见成本极低。需要注意低边检测会把负载的“地”和系统地分开如果负载有接地参考或者多个负载共地就可能产生地环路干扰。还有一种高边电流检测不需要断开负载的地线但需要运放能承受较高共模电压更适合用INA180这类专用电流检测放大器。LM358在这种场景下也能凑合但精度和温漂都比较一般。我的建议是学习阶段可以拿LM358练手做产品就直接上专用芯片省心得多。如果要把恒流精度进一步提升可以把参考电压的电阻分压换成TL431基准确保Vref不随电源电压变化。采样电阻也要用低温漂的金属膜电阻或康铜丝否则温度一上来恒流值就会漂。6. 翻车实录LM358常见问题排查速查玩LM358的人多少都遇到过一些莫名其妙的问题。这里整理一些我实际踩过的坑和排查方法。6.1 疑难杂症排查从症状到原因症状可能原因排查与解决输出始终接近电源电压怎么调输入都不变反馈没接对或运放未进入负反馈状态检查输出是否连回反相输入端同相端是否有信号输出低电平不到0V最低停在几十毫伏LM358非轨到轨输出轻负载下会好一些要求高时换LMV358输出波形上叠加高频振荡供电去耦不足输出带容性负载在VCC和GND之间加104和10μF电容输出串小电阻输出值偏大或偏小始终有固定偏差输入失调电压被放大用万用表测同相端和反相端电压差结合增益估算误差芯片发热严重输出电流过大或供电电压过高检查负载电流串联限流电阻接上信号后输出乱跳输入信号在阈值附近抖动信号源内阻过大用滞回比较器加强输入滤波电容用12V供电输出高电平只有10V以下LM358输出高电平比电源低1.5V左右这是正常现象后级电压范围按实际输出设计还有一个常被忽略的问题是引脚接错。很多人从面包板上拔下芯片再插回去时方向装反把VCC和GND接反芯片当场报废。LM358虽然便宜但烧一片要排查半天所以每次上电前养成检查引脚的习惯非常有必要。6.2 供电与去耦别小看这颗104电容LM358在面包板上工作时很多不稳定问题其实来源于供电。面包板内部长导线会产生寄生电感在高频信号下会形成振荡再加上动辄几十厘米的杜邦线反馈回路里串进了不小的寄生电感运放自激是常有的事。我的习惯是在LM358的VCC和GND之间紧挨芯片引脚位置放一个0.1μF瓷片电容再在供电入口放一个10μF到47μF的电解电容。这是最基础的去耦组合能解决大部分莫名的振荡问题。另外面包板的电源轨不要一根线跑到底再取电最好在芯片附近接入供电。电源线尽量短、尽量粗如果有多颗运放芯片并联工作每颗芯片都要独立去耦不要省。信号线和高频数字线尽量分开放避免电磁干扰耦合进运放输入端。LM358的输入阻抗较高悬空引脚非常容易拾取噪声所以不用的运放输入端不要悬空可以接到地或者接成跟随器防止噪声扰乱供电。6.3 个人心得模拟电路的坑需要靠经验填玩了几年电路我最大的体会是运放电路的仿真结果只是理想参考实际搭起来总会有一堆意想不到的偏差。比如LM358的输入失调电压在数据手册上写的可能只有2mV但你手里那颗芯片在低温或高温下可能已经到了5mV甚至更多。温度一变输出基准就跟着飘这在精密测量里是硬伤。做方案选型时我会先问自己是工作在直流还是交流、精度要求多少、供电环境是否稳定。如果只是做个简单阈值判断LM358完全够用如果是微弱信号放大比如毫伏级电桥信号建议直接上精密仪表放大器如果是音频或高速信号LM358的带宽和压摆率也不够看。如果非要给新手一个建议那就是先把LM358的常见电路全部亲手搭一遍不要只靠仿真。你需要在面包板上亲眼看到“虚短”和“虚断”在实际电路里是如何被满足的看到电压跟随器输出和输入之间的微小差值看到滞回比较器在临界点不再乱跳这样以后遇到任何运放电路分析思路都会清晰很多。电路这个东西别人的经验再丰富都不如自己踩一次坑来得深刻。这篇文章里的电路参数和计算公式都不能直接抄完就完事你需要结合自己的供电电压、信号幅度、负载特性去做调整。好在LM358足够便宜、足够皮实试错成本极低随便折腾。等你把这块芯片玩透了再去看看NE5532、OP07、AD620这些更高阶的运放你会发现原理都是相通的只是参数侧重点不同上手会快很多。
返回列表