
运放这东西刚入门的时候觉得它就是个三角形符号两个输入端一个输出端看起来比三极管简单多了。但真到动手搭电路的时候你会发现同样是那个三角形接法稍微变一变行为就完全不一样了——有的老老实实按比例放大有的直接变成开关量输出有的甚至能记住上一次的状态。我带过不少刚入行的朋友他们最常问的一个问题就是这个电路到底该用电压跟随器还是比较器反馈电阻要不要加加了电容又是干嘛的这篇内容就是把我这些年从电压跟随器一路做到滞回比较器、差分放大、恒流源这些电路时踩过的坑和总结出来的经验系统地梳理一遍。不管你是刚学模电的学生还是工作中需要快速搭一个运放电路的工程师这8种经典电路的来龙去脉、设计要点和实测注意事项我都会掰开揉碎讲清楚。尤其是那些教科书上不会告诉你的细节——比如为什么你的比较器输出一直在抖、为什么电压跟随器接容性负载会自激、为什么差分放大电路的共模抑制比实测远不如理论值——这些才是真正干活时会卡住你的地方。1. 先搞清楚运放到底在干什么1.1 虚短和虚断不是假设是深度负反馈的必然结果很多人背了虚短虚断但没真正理解它的前提条件。虚短说的是两个输入端电压相等虚断说的是两个输入端没有电流流入。这两个结论成立的前提是运放工作在线性区并且有深度负反馈。我打个比方。运放的开环增益通常在10万倍以上你可以把它想象成一个极度敏感的调节器。只要两个输入端之间有哪怕0.01mV的差异输出就会往一个方向猛冲。加了负反馈之后输出通过反馈网络回送到反相输入端形成一个自我纠正的闭环。这个闭环的调节能力非常强强到最终两个输入端之间的差值被压到几乎为零——这就是虚短的来源。虚断则更简单运放输入端的输入阻抗极高通常在兆欧级别甚至更高所以流入输入端的电流小到可以忽略。但注意这个忽略是有条件的如果你的外接电阻到了兆欧级别或者你用的是偏置电流比较大的老式运放比如LM324的输入偏置电流在几十纳安级别那虚断就不再成立了必须把偏置电流的影响算进去。注意虚短虚断只在负反馈闭环下成立。比较器电路没有负反馈两个输入端电压可以差很多这时候千万不能用虚短去分析。1.2 选运放先看这四个参数别上来就翻手册选型的时候很多人一上来就翻几百页的数据手册看到一堆参数就懵了。其实对于大多数常规应用你只需要先关注四个核心参数参数含义典型关注场景GBW增益带宽积开环增益为1时的频率放大高频信号时必须算SR压摆率输出电压的最大变化速率处理脉冲、方波时关键输入偏置电流流入输入端的电流高阻抗电路、精密测量失调电压两输入端之间的固有偏差直流精度要求高的场合GBW和SR这两个参数经常被混淆。GBW限制的是小信号的带宽SR限制的是大信号的响应速度。举个例子你用GBW1MHz的运放放大100倍那闭环带宽只有10kHz这时候如果输入一个10kHz、幅度1V的方波输出会变成三角波——不是因为带宽不够而是因为SR不够。SR的预留量我一般至少留3倍余量比如你需要的最大电压变化速率是1V/us那就选SR≥3V/us的运放。1.3 反馈电阻不是随便选的它和稳定性直接相关反馈电阻的取值有两个约束。太小了反馈电流大运放输出驱动能力吃不消而且会增加功耗太大了和输入端的寄生电容形成极点容易引起相位裕度不足甚至自激。我的经验是反馈电阻在1k到100k之间选超过100k就要在反馈电阻两端并联一个小电容几皮法到几十皮法用来补偿寄生电容造成的相位滞后。这个电容的值可以通过实验调先并一个10pF用示波器看阶跃响应有没有过冲有就加大响应太慢就减小。2. 电压跟随器看起来最简单坑却不少2.1 它到底有什么用为什么不能直接用一根导线电压跟随器的电路极其简单输出直接接到反相输入端输入信号接同相输入端。增益为1输出跟输入一样。那问题来了——既然输出等于输入我直接用一根导线连过去不就行了答案在于阻抗变换。电压跟随器的核心价值不是跟随而是隔离。它的输入阻抗极高兆欧级别输出阻抗极低毫欧级别。这意味着它可以用来做缓冲级前级电路输出阻抗很高、带负载能力很弱你直接接负载的话信号会被拉垮中间加一级电压跟随器前级看到的是高阻抗几乎不取电流后级得到的是低阻抗可以放心取电流。典型场景就是传感器信号采集。比如一个压阻式压力传感器它的输出阻抗可能在几十千欧你直接接到ADC输入端ADC的采样电容会瞬间拉低信号。中间加一个电压跟随器问题就解决了。2.2 接容性负载为什么会自激怎么解决这是电压跟随器最经典的坑。运放的输出阻抗加上负载电容在反馈环路里引入了一个额外的极点。如果这个极点落在单位增益带宽附近相位裕度就不够了输出会振荡。判断方法很简单用示波器看输出如果看到几百kHz到几MHz的高频正弦波叠加在直流上基本就是自激了。解决办法有三个我按推荐程度排序输出串联小电阻在运放输出和负载电容之间串一个10到100欧姆的电阻。这个电阻和负载电容形成一个新的极点但同时也在反馈环路中引入了一个零点补偿了相位。这是最简单有效的办法。反馈电阻上并联电容如果电路本身有反馈电阻网络在反馈电阻两端并一个小电容引入超前补偿。换用容性负载驱动能力强的运放比如某些专门标注了unity gain stable with capacitive load的型号。我实测下来串联50欧姆电阻加在输出端对大多数容性负载都能稳住。但注意这个电阻会影响输出幅度——如果负载电流是10mA50欧姆上就要压降0.5V对于低电压供电的场合要算清楚。2.3 LM358做电压跟随器的实测表现LM358是很多人手头最常见的运放便宜、好买、单电源供电方便。但用它做电压跟随器有几个需要注意的地方。首先是输入共模范围。LM358的输入共模范围是V-到V减1.5V左右。也就是说如果你用5V单电源供电输入信号最高只能到3.5V左右再高输出就不跟随了。这个坑我在早期项目中踩过——传感器输出0到5V用LM358跟随结果超过3.5V之后输出就卡住了。其次是输出摆幅。LM358的输出不能拉到电源轨高端大概差1.5V低端大概差5mV到20mV取决于负载。所以如果你需要输出接近电源电压的信号要么选轨到轨运放要么给运放用更高的供电电压。第三是压摆率。LM358的SR只有0.3V/us左右处理频率稍高的信号就会失真。我试过用它跟随一个10kHz、2Vpp的正弦波输出已经能看到明显的三角波畸变了。3. 同相放大和反相放大增益公式背后的取舍3.1 同相放大高输入阻抗的代价是什么同相放大的输入信号接同相端反馈网络由两个电阻组成一个从输出接到反相端一个从反相端接到地。增益公式是1Rf/R1。它的优点是输入阻抗极高因为信号直接进同相端而同相端的输入阻抗本身就是兆欧级别。缺点是增益不能小于1最小就是1这时候就变成了电压跟随器。另外同相放大对共模干扰的抑制能力不如差分放大因为两个输入端都暴露在共模信号下。还有一个容易被忽略的问题同相放大电路的反馈网络会引入噪声增益。即使你只放大直流信号电阻的热噪声也会被放大。所以在高增益场合Rf和R1的取值要权衡——阻值太小功耗大阻值太大噪声大。我一般让R1在1k到10k之间Rf根据增益算出来。3.2 反相放大虚地带来的便利和限制反相放大的输入信号通过输入电阻接到反相端同相端接地。增益公式是-Rf/Rin负号表示反相。反相放大的最大特点是反相端是虚地——电压始终接近0V。这意味着输入信号源看到的负载就是Rin与运放本身无关。这个特性在某些场合很方便比如你需要一个确定的输入阻抗时直接选Rin的值就行了。但虚地也带来一个限制输入阻抗等于Rin。如果你需要高输入阻抗又要反相放大就得增大Rin但增大Rin会导致噪声增益上升噪声增益1Rf/Rin噪声也跟着放大。这是个两难。我的做法是如果信号源输出阻抗低直接用反相放大Rin取1k到10k如果信号源输出阻抗高先用一级电压跟随器缓冲再做反相放大。3.3 两级运放能不能先同相再反相这个问题我被问过很多次。答案是可以但要想清楚为什么这么做。先同相再反相最终输出和输入是同相的两次反相等于同相。那为什么不直接用一级同相放大原因通常有两个一是需要极高的输入阻抗同时又要精确的增益控制同相放大做第一级提供高输入阻抗反相放大做第二级提供精确增益二是需要在中途插入滤波或电平偏移电路。但要注意两级级联会累积失调电压和噪声。第一级的失调会被第二级放大所以第一级的失调电压要尽可能小。另外两级之间的耦合如果是直接耦合第二级的输入偏置电流会流过第一级的反馈网络造成额外的误差。4. 差分放大电路共模抑制比为什么总是不达标4.1 基本差分放大的电阻匹配要求有多苛刻差分放大电路的增益公式是Rf/Rin当四个电阻满足R1/R2R3/R4时。它的核心价值是放大两个输入端之间的差模信号同时抑制共模信号。但共模抑制比CMRR对电阻匹配极其敏感。理论计算表明如果四个电阻的匹配精度是0.1%CMRR大约只有54dB匹配精度0.01%CMRR大约74dB。而运放本身的CMRR通常在80到120dB。也就是说整个电路的CMRR往往被电阻匹配精度卡住了而不是运放本身。这就是为什么分立电阻搭的差分放大电路实测CMRR远不如理论值。要解决这个问题要么用匹配精度0.01%的电阻网络比如集成电阻排要么用集成差分放大器内部电阻已经激光修调过。4.2 单运放差分放大的输入阻抗不平衡问题基本差分放大电路有一个先天缺陷两个输入端的输入阻抗不相等。同相端的输入阻抗是R1R2反相端的输入阻抗是Rin。这个不平衡会导致当信号源内阻不可忽略时两个输入端看到的等效源阻抗不同共模抑制能力进一步下降。解决办法是加一级缓冲。在两个输入端各加一个电压跟随器把信号源的阻抗隔离掉。这样两个输入端看到的都是运放的高输入阻抗平衡性大大改善。代价是电路复杂了成本高了而且多了一级失调和噪声。4.3 三个运放搭仪表放大器什么时候值得这么做三运放仪表放大器是差分放大的进阶版。第一级用两个运放做同相放大提供极高的输入阻抗和可调的差模增益第二级用一个运放做差分放大把双端信号转成单端。它的优点是输入阻抗极高且平衡CMRR可以做得很高取决于第二级电阻匹配增益调节方便只改一个电阻就能调增益。缺点是电路复杂需要三个运放和至少七个电阻成本高功耗大。我的建议是如果信号源阻抗高、共模干扰强、精度要求高比如应变片、热电偶、ECG前端用仪表放大器如果信号源阻抗低、共模干扰不大、精度要求一般用单运放差分放大就够了。5. 比较器运放和专用比较器的本质区别5.1 为什么用运放做比较器有时候会出问题运放和比较器的符号一样但内部设计目标完全不同。运放追求的是线性放大输出级通常是推挽结构响应速度慢输出摆幅受限。比较器追求的是快速切换输出级通常是集电极开路或推挽响应速度快输出可以直接驱动逻辑电平。用运放做比较器最常见的问题是响应速度慢。比如LM358的响应时间在微秒级别而LM393比较器在纳秒级别。如果你需要检测快速变化的信号用运放做比较器会漏掉窄脉冲。另一个问题是输出电平。运放的输出摆幅通常不能到电源轨而比较器的输出如果是集电极开路可以通过上拉电阻拉到任意电平方便和不同逻辑电平的电路接口。但运放做比较器也不是完全不行。如果信号变化慢、对响应速度没要求、手头只有运放那用运放做比较器是可以的。只是要注意加一点正反馈滞回避免输出在阈值附近抖动。5.2 LM393的集电极开路输出怎么接上拉电阻LM393是经典的专用比较器输出是集电极开路结构。这意味着它只能拉低输出不能拉高。要得到高电平必须在输出端接一个上拉电阻到目标逻辑电平。上拉电阻的取值要考虑两个因素一是输出低电平时灌电流不能超过比较器的最大灌电流LM393是16mA二是输出高电平时上拉电阻和负载电容形成的RC时间常数不能太大否则上升沿会变缓。我一般取4.7k到10k。如果后级是CMOS输入输入阻抗极高10k就够了如果后级是TTL输入需要一定灌电流取4.7k或更小。上拉电阻接的电压可以和比较器的供电电压不同比如比较器用12V供电上拉电阻接到5V输出就是5V逻辑电平直接接单片机IO口。5.3 比较器输出抖动不是比较器坏了是没加滞回这是最最常见的故障。比较器输入信号上叠加了噪声当信号缓慢经过阈值点时噪声会让输出在高低之间反复跳变。你用示波器看输出会看到一串密集的脉冲。很多人以为是比较器坏了或者电源不干净换芯片、加滤波电容折腾半天没用。根本原因是比较器没有滞回阈值只有一个点噪声一扰动就翻转。解决办法就是加正反馈做成滞回比较器。下面详细讲。6. 滞回比较器一个电阻解决抖动问题6.1 滞回是怎么产生的正反馈的作用滞回比较器的核心是在比较器的基础上加一个正反馈电阻从输出端反馈到同相输入端。当输出是高电平时反馈会稍微抬高同相端的电压当输出是低电平时反馈会稍微拉低同相端的电压。这样阈值就不再是一个点而是两个点一个上升阈值和一个下降阈值。输入信号上升时必须超过上升阈值输出才翻转输入信号下降时必须低于下降阈值输出才翻转回来。两个阈值之间的差值就是滞回宽度。噪声幅度只要小于滞回宽度就不会引起误翻转。6.2 滞回宽度的计算和取值经验滞回宽度的计算公式取决于具体电路结构。以最常见的反相滞回比较器为例同相端通过一个电阻R2接到输出通过一个电阻R1接到参考电压。滞回宽度大约等于输出摆幅乘以R1/(R1R2)。取值的时候滞回宽度要大于噪声峰峰值的2到3倍但也不能太大否则会降低比较精度。我一般先估算噪声幅度比如噪声峰峰值50mV那滞回宽度取150到200mV。然后根据输出摆幅反推电阻比值。注意滞回比较器的阈值会随输出摆幅变化。如果输出摆幅受负载影响阈值也会跟着变。所以输出端尽量不要接重负载或者用稳压管钳位输出摆幅。6.3 脉冲按键拨号电路里的滞回比较器脉冲按键拨号电路是一个经典应用场景。老式电话拨号时按键会产生一串脉冲每个脉冲代表一个数字。这些脉冲经过传输线之后边沿变缓还叠加了噪声。用滞回比较器可以把这些脉冲整形回干净的方波送给计数器或单片机。这个场景对滞回比较器的要求是滞回宽度要大于传输线上感应的噪声但小于脉冲的最小幅度。同时响应速度要够快不能漏掉窄脉冲。LM393配合正反馈电阻就能胜任成本极低。我在实际搭这个电路时发现拨号脉冲的边沿可能慢到几百微秒如果滞回宽度设得太小输出会在边沿上产生多次翻转。后来把滞回宽度加大到脉冲幅度的30%左右问题就解决了。7. 加法器和减法器运放做模拟运算的入门7.1 反相加法器的虚地特性让计算变得简单反相加法器的电路结构是多个输入信号各通过一个电阻接到反相端反馈电阻从输出接到反相端同相端接地。由于反相端是虚地每个输入信号产生的电流是Vin/Rin这些电流在反馈电阻上叠加输出电压就是负的反馈电阻乘以总电流。公式是Vout -Rf × (V1/R1 V2/R2 ...)。如果所有电阻相等就是Vout -(V1V2...)。虚地特性让加法器的计算非常直观每个输入独立产生电流互不影响。这也是为什么加法器几乎都用反相结构而同相加法器因为输入端之间存在相互影响很少用。7.2 减法器的电阻匹配和共模问题减法器本质上就是差分放大器一个输入端接被减数另一个接减数。它的精度同样受电阻匹配限制。如果四个电阻完全匹配输出就是Rf/Rin × (V2 - V1)。但实际电路中电阻总有误差。误差导致的共模泄漏会直接叠加在输出上。比如共模电压是5V电阻匹配精度0.1%那共模泄漏就是5mV直接反映在输出上。如果被减信号只有几十毫伏这个误差就不可忽略了。我的经验是做减法器时四个电阻用同一批次、同一阻值的电阻最好用电阻排。如果精度要求高就在后面加一级调零电路。7.3 加法器在电平偏移电路中的实际应用加法器最实用的场景之一是电平偏移。比如你有一个双极性信号-5V到5V但ADC只能采集0到5V你需要把信号偏移到0到5V。这时候用加法器一个输入接信号另一个输入接一个直流参考调整参考电压和电阻比值就能把双极性信号搬到ADC的输入范围内。这个电路我做过很多次关键点是直流参考必须干净。如果参考电压上有噪声会直接叠加到输出上。所以参考电压要用LDO稳压并且加RC滤波。另外偏移量的温漂也要考虑如果参考电压来自电阻分压分压电阻的温漂会影响偏移精度。8. 恒流源电路运放加MOS管的经典组合8.1 运放恒流源的工作原理反馈稳住的到底是什么运放恒流源的基本结构是运放的同相端接参考电压反相端接采样电阻上的电压运放输出驱动MOS管的栅极MOS管的源极通过采样电阻接地负载接在MOS管漏极和电源之间。工作原理是运放通过负反馈调节MOS管的栅极电压使得采样电阻上的电压等于参考电压。因为采样电阻上的电压等于电流乘以电阻所以电流就等于参考电压除以采样电阻。只要参考电压和采样电阻稳定电流就稳定与负载变化无关。这个电路的精度取决于三个因素参考电压的精度、采样电阻的精度、运放的失调电压。参考电压和采样电阻的温漂会直接导致电流温漂。运放的失调电压会叠加在参考电压上造成电流误差。8.2 采样电阻的取值功耗和精度的平衡采样电阻的取值是一个权衡。阻值大采样电压大运放失调的影响相对小但功耗大而且会压缩MOS管的工作电压范围。阻值小功耗小但采样电压小运放失调的影响就大了。我的经验是采样电压取100mV到1V之间。如果电流是100mA采样电阻取1到10欧姆。功耗是10mW到100mW可以接受。运放失调如果是1mV对采样电压的影响是1%到0.1%看你能不能接受。如果对精度要求高选低失调运放比如OPA333失调只有10uV采样电阻用低温漂的比如锰铜电阻温漂25ppm/度。8.3 MOS管的选择和散热计算MOS管在这个电路里工作在线性区相当于一个可变电阻。它的功耗等于电源电压减负载电压减采样电压乘以电流。如果电源电压12V负载电压5V采样电压0.5V电流100mA那MOS管上的压降是6.5V功耗是0.65W。这个功耗需要散热否则MOS管会过热。选MOS管的时候除了耐压和电流还要看它的导通电阻和热阻。导通电阻越小同样的电流下压降越小功耗越低。但导通电阻小的MOS管通常栅极电容大运放驱动起来可能吃力响应速度会变慢。我一般选导通电阻在几十毫欧到几百毫欧之间的MOS管配合一个小的铝散热片0.5W左右的功耗完全没问题。如果功耗超过1W就要认真算散热了。9. 几个容易被忽略的实战细节9.1 电源去耦不是走过场位置比容值更重要运放电路的电源去耦电容很多人随便放一个100nF了事。但实际上去耦电容的位置比容值更重要。它必须尽可能靠近运放的电源引脚引线越短越好。因为引线电感会抵消电容的高频去耦效果。我的做法是每个运放的电源引脚旁边放一个100nF的陶瓷电容距离不超过5mm。如果电路板空间允许再在电源入口处放一个10uF的钽电容或电解电容用来滤低频。另外如果是双电源供电正负电源都要去耦不能只去耦一边。9.2 运放输出接MOS管基极时的驱动能力问题运放输出接MOS管栅极或者三极管基极看起来很简单但要注意运放的输出电流能力。MOS管栅极是容性负载运放驱动它的时候瞬间电流可能很大。如果运放的输出电流不够栅极充电慢开关速度就上不去。另外如果运放输出直接接三极管基极基极电流会从运放输出抽取。运放的输出电流通常只有几十毫安如果三极管需要更大的基极电流运放就驱动不了。这时候要么用达林顿管要么用MOS管栅极几乎不取电流。9.3 用CircuitJS仿真运放时增益设无穷大的坑CircuitJS是一个在线的电路仿真工具很多人用它来验证运放电路。但CircuitJS里的理想运放模型默认增益是无穷大这会导致一些问题。比如你做电压跟随器理想运放模型下输出完美跟随输入。但实际运放有失调、有带宽限制、有压摆率限制仿真结果和实际差很远。再比如你做比较器理想运放模型下输出会在阈值处瞬间翻转但实际运放需要时间而且输出摆幅有限。我的建议是用CircuitJS做初步验证可以但不要完全依赖仿真结果。关键参数GBW、SR、失调要手动在仿真模型里设置或者干脆搭实际电路测试。9.4 运放电路的抗干扰设计从布局到屏蔽运放电路处理的是模拟小信号很容易受干扰。抗干扰设计要从三个方面入手布局输入信号线尽量短远离输出线和电源线。高阻抗节点比如同相输入端的走线要尽可能短周围用地线包围。屏蔽如果信号源是远距离传感器信号线要用屏蔽线屏蔽层单端接地接在电路板的地上。如果环境干扰特别强整个电路板可以放在金属屏蔽盒里。滤波在运放输入端加RC低通滤波截止频率根据信号带宽设定。但注意滤波电阻会增加输入阻抗不平衡差分输入时两个输入端的滤波电阻要匹配。10. 从8种电路到实际项目怎么选、怎么搭、怎么调10.1 按信号特征选电路拓扑面对一个实际需求怎么快速确定用哪种电路我的思路是先看信号特征信号源阻抗高、需要隔离电压跟随器信号需要放大且源阻抗低反相放大信号需要放大且源阻抗高同相放大需要抑制共模干扰差分放大或仪表放大器需要比较大小、输出开关量比较器或滞回比较器需要电流恒定运放恒流源需要信号运算加法器或减法器这个对应关系不是绝对的但能帮你快速缩小选择范围。10.2 调试时先看直流工作点再看交流响应电路搭好之后不要一上来就加交流信号。先用万用表测各点的直流电压确认运放的输出在预期范围内。如果输出直接饱和到电源轨说明反馈回路有问题或者输入偏置不对。直流工作点正常之后再加小幅度正弦波用示波器看输入输出波形。先看增益对不对再看有没有失真再看频响。如果增益不对检查电阻值如果有失真检查电源和偏置如果高频衰减快检查GBW和补偿电容。10.3 常见故障的排查顺序运放电路出问题我一般按这个顺序排查电源电压对不对正负电源是否对称运放有没有发烫可能自激或接反直流工作点是否正常反馈回路是否接通电阻值是否正确输入端是否有意外的高阻抗或悬空输出负载是否超出运放驱动能力有没有容性负载导致自激这个顺序覆盖了90%以上的常见问题。按这个流程走基本能定位到故障点。10.4 从单个电路到系统级设计的注意事项单个运放电路调通了放到系统里可能又出问题。最常见的是级间耦合和地线干扰。级间耦合如果是直接耦合前级的输出失调会被后级放大。所以每一级的失调都要控制或者用隔直电容。但隔直电容会引入高通特性低频信号会被衰减电容值要根据最低信号频率算。地线干扰是另一个大问题。多个运放共用一条地线时后级的大电流会在地线上产生压降这个压降会串到前级的参考地上。解决办法是用星形接地每个运放的地线单独走回电源接地点不要串联。我在一个多级放大器的项目里踩过这个坑前级放大微弱信号后级驱动一个继电器。继电器吸合时地线上产生了几十毫伏的跳变前级输出跟着跳导致误触发。后来把继电器驱动地和模拟地分开走问题就解决了。运放电路这东西理论看着简单实际做起来细节特别多。上面这8种电路每一种我都实际搭过、调过、出过问题、解决过。希望这些经验能帮你少走一些弯路。如果你在调试中遇到什么奇怪的现象先别急着换芯片按排查顺序一步步来大概率能找到根因。