做信号调理的时候,我第一个认真玩熟的运放就是LM358。这芯片便宜、常见、双运放封装,供货又多,很多开发板、传感器模块、电源保护电路里都能看到它。我印象最深的一次,是给一个传感器信号做电平匹配,需要把±0.5V的差分信号放大成后续ADC能采的范围。当时手边正好有一堆LM358,搭了个反相放大器,几分钟就调通了,从那以后我自己搭模拟前端,经常先拿LM358做原型验证。
这篇内容适合三类人看:刚开始学运放、想搞懂反相放大器到底怎么回事的电子爱好者;做嵌入式开发、需要给ADC加一级信号调理但不想一上来就上仪表放大器的人;还有一种就是纯粹想把手里的LM358盘活,知道它除了当电压跟随器还能怎么玩的硬件工程师。看完你会明白反相放大器的电路结构、计算公式、电阻怎么选、单电源下怎么偏置,以及在面包板上随便搭搭会踩到哪些坑。这些内容不是从教科书里抄的,是我实际焊板子和调试时反复验证过的东西。
1. 为什么选LM358搭反相放大器
1.1 LM358这颗“老将”凭什么还没过时
LM358是双通道运算放大器,1960年代就发布了,到今天还在大量出货。很多新手一看到这种“老芯片”就不屑一顾,觉得怎么能用这么旧的东西。但你在做实际项目时就会明白,LM358的定位从来不是高性能,而是高性价比、高易用性。
它最大的特点是单电源供电也能工作。很多运放需要正负对称电源,比如±5V或±12V,这在实验室里没问题,但在嵌入式场景下,系统通常只有一个5V或者3.3V电源。LM358的共模输入范围包含地电平,输出也能拉到接近地,这让它在单电源系统里非常容易用。另一个特点是它的输入级是PNP差分对,静态电流只有几百微安,功耗低,电池供电的设备也扛得住。
当然它也有明显的短板,比如增益带宽积(GBW)只有1MHz,电压噪声也不算低,大约40nV/√Hz,输出级是推挽结构但正摆幅达不到电源轨,通常最多到Vcc减1.5V左右。这些限制决定了它不能用来做高速信号处理或者高精度微小信号放大,但做传感器信号调理、音频前置放大、控制环路反馈这些低频应用,绰绰有余。
我的观点是:学习运放电路,LM358是最好的起步芯片。它特性足够典型,参数不算极端,不容易因为某个性能太好而掩盖了电路本身的问题。你用它把反相放大器吃透,再去看OP07、NE5532、OPA2277这些芯片,上手成本就很低了。
1.2 反相 vs 同相:为什么先学反相放大器
运放最基础的两种放大电路就是反相放大器和同相放大器。很多人一开始喜欢玩同相放大器,因为输出和输入同相位,直觉上好理解。但反相放大器有几个特性是它在信号调理里不可替代的。
反相放大器的同相输入端直接接地(或接到参考电压Vref上),反相输入端因为负反馈的作用会被“虚短”到和同相端相同的电位。在工作时反相输入端的电压几乎恒定不动,也就是说输入信号看到的不是一个变化的电位,而是一个稳定的“虚拟地”。这样一来,输入电流完全由输入端电阻决定,输入阻抗就等于输入端电阻R1,设计起来非常清晰。
最关键的一点:反相放大器不会遇到共模电压问题。因为两个输入端都保持在同一个固定电位,运放不需要处理输入信号里的共模分量。而同相放大器输入信号直接加到同相端,反相端跟着信号走,两个输入端的电压会随信号摆动。当信号超出运放的共模输入范围时,同相放大器直接失效,反相放大器则没这个毛病。
反相放大器还有一个好处是输出与输入反相。很多人觉得反相是缺点,但在某些闭环控制应用里,反馈本身需要反相,这个特性正好用得上。而且反相输入结构天然适合做加法器、减法器、积分器,后面全部可以串起来扩展。所以我一直建议新手先把反相放大器玩透,这个是很多运放应用电路的基本功。
2. 反相放大器原理与电路图拆解
2.1 先搞懂“虚短”和“虚断”
分析运放电路,两个概念绕不开:虚短和虚断。用生活化的方式理解,虚短就是运放两个输入端的电压被强制拉到几乎相等,虚断就是流入运放输入端的电流几乎为零。
为什么会出现这两个现象?因为运放本身是一个高增益的差分放大器,开环增益通常有几万到十几万倍。负反馈接好之后,只要输出没有饱和,系统会自动调节输出电压,使得两个输入端的电压差趋近于零。输入阻抗又非常高(LM358在常温下输入阻抗有几十兆欧以上),所以输入端流过的电流小到可以忽略。
把这两条规则用在反相放大器上,结论很直接:同相端接地,反相端电压就被“虚短”到地,虽然实际上反相端并没有直接连到地,但计算时可以把反相端当成一个“虚拟地”。信号源的电流全部流过输入电阻R1,又因为没有电流进运放,所以这个电流只能流过反馈电阻Rf。沿这个思路往下推,增益公式一下就出来了。
需要注意的是,虚短的前提是运放工作在负反馈状态,而且输出没有饱和。如果输出已经顶到电源轨,虚短不成立,这时候你说什么增益公式都没用,这是后面调试时最容易忽视的问题。
2.2 电路连接怎么走:引脚、电阻、反馈回路
LM358是双运放,8脚DIP封装最常见。拆解电路图之前,先把引脚弄清楚。对新手来说,最稳妥的方法是看芯片上的缺口或圆点标号,缺口朝上时,左下角是1脚,依次往上排。以LM358其中一个运放为例:2脚是反相输入端IN-,3脚是同相输入端IN+,1脚是输出端OUT,8脚接电源正极Vcc,4脚接电源负极(单电源时接地)。
反相放大器的接法是这样的:
- 输入信号Vin经过输入电阻R1,接到运放的2脚(反相输入端)。
- 反馈电阻Rf连接在2脚和1脚(输出端)之间。
- 3脚(同相输入端)直接接到系统地GND。
- 8脚接Vcc,4脚接GND,并且尽量在电源引脚附近加一个0.1uF的陶瓷电容做去耦。
从信号通路看,这实际上就是一个跨接在输入和输出之间的反馈网络。R1决定输入电流大小,Rf决定有多少电流被转成输出电压。因为反相端是虚地,输出端电压Vo需要满足(0-Vo)/Rf等于(Vin-0)/R1,这个等式一列,反相关系就出来了。
很多人第一次看这种图会困惑:反相输入端没有直接接地,为什么叫虚地?答案就在虚短上。3脚接地,2脚被负反馈拉到和3脚相同电位,所以对交流信号来说,2脚就相当于一个没有电流流入的地。这正是反相放大器输入阻抗低、没有共模电压问题的基础。
2.3 增益公式推导与计算实例
反相放大器的增益公式,就是输出电压等于输入电压乘以负的反馈电阻与输入电阻之比:
Vout = -(Rf / R1) × Vin
推导过程不复杂。虚断决定了流入R1的电流等于流入Rf的电流(反向输入端的电流近似为零)。虚短决定了2脚电位等于3脚电位,也就是0V。因此:
(Vin - 0) / R1 = (0 - Vout) / Rf
整理一下:
Vout = -Vin × (Rf / R1)
增益A = Rf / R1,负号代表相位反转。这就是全部核心。
举一个我实际使用过的例子。有一个压电传感器输出大约±0.5V的信号,我的ADC参考电压是3.3V,希望满量程接近±2V,于是选增益为4。电阻取值我先定了R1=10kΩ,因为10kΩ作为输入电阻,对大多数信号源的负载影响不大,噪声也不至于太大。增益4对应Rf=40kΩ。标准E24系列里没有40kΩ,我在手边凑了39kΩ加1kΩ串联得到40kΩ,也可以用两个20kΩ串联。如果要求不高,直接用39kΩ,实际增益3.9倍,误差在2.5%以内,很多时候也能接受。
这里要提醒一个容易忽略的点:电阻的精度直接影响增益精度。普通直插电阻很多是5%精度,两个电阻的误差可能叠加,最后实测增益和理论值偏离甚至到10%。需要精确增益时,选1%精度的金属膜电阻,或者用精密电阻网络。
另外,LM358的增益带宽积是1MHz,这决定了增益和带宽是互相制约的。闭环带宽约等于增益带宽积除以闭环增益。如果增益是10倍,理论带宽就是1MHz/10=100kHz,但这是“理论小信号带宽”,实际留一半余量比较稳妥。想放大100倍,带宽就压到10kHz,只适合低频信号。
3. 手把手搭建一个反相放大器
3.1 元器件清单与选型要点
实际搭建前把材料备齐。我用过的最简单的配置是这样一套:
- LM358运放一片,DIP-8封装最好,方便插面包板。
- 输入电阻R1:10kΩ金属膜电阻一只。
- 反馈电阻Rf:根据目标增益选,想放大10倍就选100kΩ。
- 0.1uF陶瓷电容一个,放电源去耦。
- 如果做单电源测试,准备两个10kΩ电阻和一个10uF电解电容做偏置电路。
- 面包板、跳线若干,9V电池或者稳压电源,信号发生器(手机音频输出也可以代替),示波器或万用表。
电阻功率要求很低,常规1/8W到1/4W都行。选型时重点关注阻值精度和温漂。温度变化大的环境里,普通碳膜电阻阻值会漂,增益跟着漂。虽然LM358本身温漂也不小,但电阻引入的漂移没有理由不去避免,优先选金属膜。
电容方面,反馈电阻两端可以并联一个几皮法到几十皮法的小电容,用来限制放大器的高频增益,防止噪声被过分放大。这个电容不是必须的,如果信号本身很干净可以不加,但并联后确实能让输出波形更稳定。
3.2 双电源和单电源:供电方式的差别
反相放大器在双电源下最容易理解:正电源接Vcc,负电源接V-,同相端接地,虚地就是系统地的0V。输入正电压输出负电压,输入负电压输出正电压,正负半周都能正常放大。
但很多实际系统只有单电源,比如5V供电。这种情况下问题就来了:反相端虚地是0V,当你输入正电压时,输出理论上是负电压,可负电压在单电源系统里根本产生不出来,输出会被卡在地附近。解决思路不是换芯片,而是把整个信号的参考电平往上抬。具体做法是用两个电阻分压产生一个Vcc/2的电压,接到运放的同相端,比如两个10kΩ串联在5V和GND之间,中间取2.5V,再并联一个10uF电容滤波。这样一来,虚地就从0V变成了2.5V,输出可以在2.5V的基础上上下摆动,负半周信号就被“抬”起来了。
这种“把地抬起来”的做法在工程里非常常见。注意LM358的输出不是轨到轨,输出正摆幅只能到Vcc减约1.5V,负摆幅能做到接近0V。5V供电、偏置在2.5V,实际可用的摆幅大约是0.1V到3.5V,也就是上下各只有约1V的动态范围。要放大真正意义上的双极性信号,不如用两个电源更方便。
3.3 面包板布线顺序参考
我搭面包板有个固定习惯:先布电源,再放芯片,最后接信号通路。顺序错了容易漏接地或者电源弄反,一上电芯片就烫手。
具体步骤参考如下:
- 把LM358插在面包板中央,缺口朝左或者朝上,确认1脚位置。用万用表二极管档确认电源脚和地脚,不要凭记忆硬接。
- 8脚接5V(或9V),4脚接GND。在芯片附近的电源和地之间并一个0.1uF陶瓷电容,电容脚越短越好。
- 取R1=10kΩ,一端接信号输入端,另一端接LM358的2脚。
- 取Rf=100kΩ,接在2脚和1脚之间。此时Rf是从输出反馈回输入的反馈路径,方向别接反。
- LM358的3脚直接接GND(双电源模式)。单电源模式则把3脚接到2.5V偏置点。
- 输入信号从R1的自由端注入,输出从1脚引出。
接完之后不要着急上电,先用万用表量一遍:8脚对4脚应有电源电压;3脚是否确实在GND;R1和Rf是否通路。确认无误再上电。
这种接线方式无数人验证过,我自己也在面包板上搭过几十次。前几次总会因为跳线松了或者电阻插错列导致信号不对,排查到崩溃。后来我养成了一个习惯:每个信号的接入点都用不同颜色的跳线,电源红色、地黑色、信号黄色,这样视觉上就很容易定位问题。
3.4 上电测试与增益验证
接好线后开始测试。先用直流信号验证基本功能最稳妥。我习惯拿一节5号电池或者可调电源给输入端加一个已知的小电压,比如0.1V,然后测输出。如果一切正常,输出应该是约-1V(10倍增益)。这里有一个细节:输入电压绝对值不能太大,0.3V以上输出就可能饱和。
如果没有信号发生器,用手机耳机口输出正弦波也可以。注意耳机口的输出幅度一般只有几百毫伏,对反相放大器来说刚好合适。把音量调到中等,输出端用示波器观察,可以看到完整的反相正弦波。如果按相位对比输入和输出,波形刚好差180度,这是反相放大器的一个“识别特征”。
用万用表验证增益时,要选交流档测有效值,或者干脆用直流档测两个直流电压。我实测过很多次,用普通万用表量出来增益总是略小于理论值,比如理论是-10倍,实测只有-9.6倍。这个现象很正常,原因就是电阻的容差。只要你用的是5%的电阻,这个误差完全在预期内。
测完增益再测一下频率特性。把输入频率逐渐升高,用示波器观察输出幅度,会发现到某个频率后幅度开始下降。这是LM358的增益带宽积在起作用。我之前搭的一块板子,10倍增益下大概到80kHz时输出幅值就开始明显滚降,和理论值100kHz基本吻合。
4. 调试翻车实录:常见问题与排查方法
4.1 输出饱和、波形削底:先查供电和输入范围
反相放大器最常见的故障是输出不随输入变化,要么死死贴在正电源电压附近,要么死死贴在地附近。这时候虚短不成立,整个电路等于废了。我遇到这种情况时的排查顺序是这样的:
第一步用万用表量电源电压,确认8脚和4脚之间的电压正常。LM358的供电范围是3V到32V(单电源),低于3V它不工作。第二步量3脚电压,确认同相端真的在预期电位上。如果3脚没接地,虚地就飘了,输出大概率饱和。第三步看输入信号幅度。反相放大器输入电阻和反馈电阻之比决定增益,输入信号如果太大,输出超出供电范围就会饱和。比如5V供电、10倍增益,输入0.5V的时候理论上输出应该有5V,但LM358输出到不了5V,所以波形会顶在约3.5V的位置削平。
单电源系统里还有一类削波特别隐蔽:反相输入端信号低于地电压。当同相端接地时,输入信号一旦低于地,反相输入端电压会被内部钳位电路“抓住”,导致输入电流不再按R1决定,输出直接紊乱。解决办法只能加偏置或者改用双电源。
4.2 输出直流失调:输入偏置电流和失调电压的影响
很多人都遇到过这种情况:输入端短接到地,理论上输出应该是0V,实际量出来却是几十毫伏甚至几百毫伏。这就是运放的直流失调。LM358的输入失调电压典型值2mV,最大可以到9mV,乘以增益10倍输出就有90mV的直流分量。
更麻烦的是输入偏置电流。LM358常温下输入偏置电流典型值45nA,最大值250nA。这个电流流过反馈电阻Rf时会产生一个偏置电压。如果Rf取100kΩ,250nA乘100kΩ等于25mV,再算上失调电压,输出端出现零到上百毫伏的直流偏移都很正常。如果Rf取1MΩ,偏置电流造成的误差直接到250mV,必须引起重视。
减小这个误差的办法有几条:反馈电阻别用太大,控制在几十到几百kΩ以内;在精度要求高的场合,改用输入偏置电流更小的运放,比如FET输入的TL072、OPA2134等;或者做一次校准,在软件里把这个直流偏移减掉。
4.3 高频噪声与自激振荡:注意电源退耦和寄生参数
面包板上搭反相放大器,示波器上出现几十MHz的振荡波形是常有的事。这种高频自激不是信号源带来的,而是放大器变成了振荡器。原因通常是电源退耦不良、反馈路径过长、输出连线寄生电容过大等。
LM358本身单位增益稳定,理论上不会自激。但面包板飞线过长、反馈电阻引线太长,就会在反馈环里引入额外的寄生电感和电容,导致相位裕度下降。电源的高频阻抗太高同样会引发问题。我在搭电路时养成了一个习惯:电源引脚旁边一定放一个0.1uF陶瓷电容,而且电容的地引脚尽量靠近芯片的地引脚,退耦路径越短越好。
如果输出噪声表现为白噪声,多半是输入电阻值太大造成的。输入电阻越大,电阻热噪声越大,反馈电流噪声也越大。10kΩ级别的输入电阻噪声约几个微伏,用万用表或者示波器看不太明显,但如果后面加高增益级就很容易被看出来。这种情况下可以在反馈电阻上并联一个几十皮法的电容,限制高频增益。
4.4 常见问题速查表
| 故障现象 | 可能原因 | 处理办法 |
|---|---|---|
| 输出一直高电平饱和 | 同相端没接地、反馈接错、输入过大 | 检查3脚电位、检查Rf是否接在2脚与1脚之间 |
| 输出贴近地不动 | 输入信号为负但单电源供电 | 加2.5V偏置或改用双电源 |
| 输出直流偏移大 | 输入失调电压、输入偏置电流 | 减小Rf、选精密运放、软件校准 |
| 波形与输入同相 | 误把信号接到了3脚 | 确认信号是否经过R1接2脚 |
| 输出叠加高频振荡 | 电源退耦不足、布线过长 | 加0.1uF退耦电容、缩短飞线、反馈并联小电容 |
| 增益明显低于理论值 | 电阻容差、输出饱和 | 用1%电阻、降低增益或输入幅度 |
| 低频增益正常、高频掉得快 | LM358增益带宽积限制 | 降低增益或换更高GBW芯片 |
| 带负载后增益下降 | 输出电流不足 | 减小负载、后续加电压跟随器 |
这张表是我每次调试运放电路时都会对照查一遍的清单。大多数问题都能在表里找到方向,省了很多瞎折腾的时间。
5. 基于反相放大器的几个经典变体
5.1 电压跟随器:最常用的阻抗缓冲
电压跟随器严格说不是反相放大器,但它和反相放大器共用同一个负反馈思路,而且很多实际系统里会用LM358同时做一级放大和一级缓冲。接法很简单:输出端直接连回反相输入端,同相端接输入信号,增益为1。它的作用是输入阻抗极高、输出阻抗极低,可以把高阻信号源和低阻负载隔离开来。
举一个常见场景:一个分压电阻网络产生的中枢电压,直接接负载时负载电阻会分压,导致电压不准。中间插一级电压跟随器,分压网络只驱动运放的同相端,运放再驱动负载,负载就不会影响分压比例了。单电源偏置电路里我经常用一片LM358的一半做跟随器,把分压后的Vcc/2电压送到后级。
5.2 反相加法器:把多路信号叠加起来
反相加法器是在反相放大器基础上加几个输入电阻实现的。每个输入信号分别经过各自的电阻接到反相输入端,反馈电阻Rf跨接在输出和反相端之间。输出公式是:
Vout = -Rf × (V1/R1 + V2/R2 + V3/R3)
它的方便之处在于,每一路输入的权重只由自己的电阻决定,互不影响。调增益时只要单独改对应电阻就行。这个电路在混合多路传感器信号、音频混音时都非常实用。
我做过一个温度采集模块,就是把热电偶信号和冷端补偿信号分别输入加法器的两个通道,把补偿量直接叠加到热电偶信号上。用LM358搭起来效果够用,而且只用了一片芯片的两个运放,成本很低。
5.3 差分放大器:用运放做减法
差分放大器又叫减法器,它把两个输入信号的差值放大。典型结构是在反相放大器的基础上,增加了同相输入端的电阻分压网络。当四个电阻严格匹配时,输出公式为:
Vout = (Rf / R1) × (V2 - V1)
这个电路非常适合测量两端都不接地的信号,比如电桥输出、电池电压检测等。缺点是四个电阻需要严格配对,否则共模抑制能力会被电阻失配拖累。LM358的共模抑制比本身在80dB左右,如果电阻误差太大,实际效果会差很多。
我一般用0.1%精度的配对电阻或者电阻网络,这样才发挥出差分放大器的优势。如果精度要求和共模抑制比更高,直接选INA128这类专用仪表放大器更合适,但在成本和器件种类受限时,LM358加配对电阻是一个很稳妥的备选方案。
5.4 关于“LM358升压电路”的说法说明
网上经常有人搜“LM358升压电路图”,很多人希望用LM358把电压升上去。这里必须澄清:LM358是运算放大器,它处理的是模拟信号,不是开关电源芯片。所谓“升压”,在运放的语境里通常是指把微弱信号的电压幅度放大到更高的电平。比如麦克风信号从几毫伏放大到几百毫伏,传感器信号从微伏级放大到伏级,这就是反相放大器(或者同相放大器)在做的事。
如果你真正需要的是把电源电压从5V升到12V给后级供电,那应该用Boost升压芯片(比如MT3608、XL6009)配合电感、肖特基二极管来搭建,运放不是干这个的。这个概念在选型时一定要区分开,否则后续电路烧了都不知道怎么烧的。
我见过一些新手在电源升压电路里塞了一个运放,电容电感全没有,只靠负反馈硬拉电压,结果输出达不到预期,还误以为是芯片坏了。运放的输出能量来自电源,它不能凭空产生比电源更高或者反相的电压,它只是在电源范围内按增益公式对输入信号进行缩放。想明白这一点,很多“为什么运放升压失败”的问题就不存在了。
最后说几点我的实操体会。第一,电阻值不要只盯着“标准值”死磕。比如算出来需要37kΩ,手边没有,那就看看能不能用33kΩ加3.9kΩ串出来,或者直接用36kΩ,增益误差一般都在能接受的范围。第二,面包板调试完最好尽快转PCB,面包板的寄生电容和接触电阻在高频下会让运放的表现和你在仿真软件里看到的完全不一样。第三,输出端留一个测试点,调试时方便夹示波器探头,这个小习惯能省很多事。我刚开始调运放时总喜欢靠耳朵听或者屏幕一闪而过判断,结果经常误判问题在哪一级。现在无论做多简单的板子都会预留测点,这个习惯我一直保留到现在。