
很多人第一次接触差分放大器都是在运放应用电路那一章里。书上通常就甩出一个四个电阻加一个运放的电路然后直接给出 Vout (V2 - V1) × Rf / R1 这个结果。至于这个公式到底怎么一步步推出来的、电阻为什么要配对、共模抑制比是怎么被电阻误差毁掉的教材里往往一笔带过。但实际做项目时差分放大器几乎是模拟信号调理的基石。电机电流采样、电桥传感器读取、电池组电压监测到处都有它的影子。我见过太多工程师拿着现成公式套电路结果输出乱飘、共模干扰压不下去最后只能怀疑芯片有问题其实问题全在电阻匹配和电路理解上。这篇文章就把差分运放的公式推导从头到尾走一遍每一步代数变换都写清楚顺便把推导过程中暴露出来的工程陷阱也一起聊透。适合刚学运放的学生也适合想把这部分基础补扎实的嵌入式或硬件工程师。1. 差分运放到底解决了什么问题1.1 从“测两个点之间的电压”说起先说一个最常见的场景你想测一个电阻两端的电压用来算电流。电阻一端接在电源正极附近另一端接在负载上。麻烦的地方在于这个电阻既不接地两端的电压还都在一个很高的共模电位上。比如一个 48V 系统里采样电阻两端分别是 47.8V 和 47.2V你真正关心的差值只有 0.6V但任何一个端点对地都有接近 48V 的电压。如果拿一个普通单端放大器去放大这个 0.6V它会把 48V 的共模成分也一起放大。运放早早就饱和了根本看不到 0.6V 的有效信号。就算你用分压电阻先把 48V 降下来分压电阻的精度又会引入新的误差而且输入阻抗会被拉得很低影响原电路工作状态。差分放大器就是为了解决这个问题出现的。它的核心思路是两个输入端同时感知共模电压然后在运放内部通过“相减”的方式把共模成分抵消掉只留下两个输入之间的差值。这就是“差分”两个字的意义——放大的是差抑制的是同。1.2 差分结构如何做到“只关心差值”标准差分放大电路长这样一个运放四个电阻。反相输入端经过 R1 接 V1反馈电阻 Rf 从输出端接到反相输入端同相输入端经过 R3 接 V2同时还有一个 R4 从同相输入端接到地。从拓扑上看它同时用上了同相放大和反相放大两条路径。V1 走的是反相放大路径输出贡献是负的V2 走的是同相放大路径输出贡献是正的。两条路径拼在一起输出就正比于 V2 和 V1 的差。更关键的是当电阻满足 R1 R3、Rf R4 时共模电压在两条路径上的增益完全相同一正一负正好抵消。这就是差分放大器能在较高共模电压下工作的根本原因。这里插一句我自己的体会很多人学差分放大时只盯着公式背不画信号路径。我建议你拿到电路先做一件事——把 V1 和 V2 分别当成独立源用叠加定理看一遍信号是怎么从输入传到输出的。走一遍之后你就明白为什么同相那条路径的增益表达式里带着分压项为什么电阻不匹配会让共模信号漏进来。这些东西不自己想通光记公式迟早翻车。2. 公式推导前的三个基本概念2.1 虚短和虚断所有运放推导的起点差分运放公式推导用的是理想运放模型整个推导只建立在这两个假设上虚短运放两个输入端的电压相等即 VN VP。这是因为运放的开环增益极大输出为了稳定在某个值会让两个输入端的差压趋近于零。注意“虚短”不是真的短路是两个输入端的电位差极小近似相等。虚断运放两个输入端不吸取电流输入阻抗无穷大。也就是说外部电路流入运放输入端的电流为零。这一点在列节点电流方程时至关重要——你可以认为电流只流过电阻完全不进运放。这两个概念是后面所有代数操作的基石。很多推导看不懂就是在这两个地方没转过来一会儿把输入端当成等电位一会儿又把输入端当成开路新手容易精神分裂。其实你只要记住虚短是用来列电压关系的虚断是用来列电流关系的两件事分开用思路就很清楚。2.2 叠加定理把复杂电路拆成简单组合差分放大器是一个线性电路所以叠加定理完全适用。所谓叠加定理就是对于一个包含多个独立源的线性网络任何一个节点电压或支路电流等于各个独立源单独作用时产生的响应之和。处理时除了当前考虑的源其它电压源短路、电流源开路。这里我用叠加定理主要是为了验证推导结果同时也为了给出另一种理解方式。你想差分电路看起来四个电阻加两个输入很复杂。但如果你把 V2 接地电路就退化成经典反相放大器 Vout1 -V1 × Rf / R1你把 V1 接地电路就变成带分压的同相放大器 Vout2 V2 × (R4 / (R3 R4)) × (1 Rf / R1)。最后把两个结果加起来就是总输出。这种拆解方式不仅验证了公式还能让你直观看到“反相贡献”和“同相贡献”各自是多少。我后面在推导完完整公式之后会用叠加定理再验算一遍两边结果能对上说明推导过程没有出错。2.3 电阻对称性差分放大器的隐藏前提你可能已经注意到差分放大器的公式里有个特殊条件R1 R3Rf R4。这个条件教科书叫“电阻匹配”或者“对称条件”。但很多人没意识到这个条件正是差分放大器能“抑制共模”的全部秘密。如果不满足对称条件公式里会多出一项跟共模电压相关的分量。也就是说输出不仅包含差模信号还混进了共模信号。这在工程上是非常糟糕的事情因为共模电压通常远大于差模信号哪怕只有一点点漏过来都可能把有效信号淹没。比如前面说的 48V 系统0.6V 差模信号只要共模抑制能力差个 40dB共模分量就能等效出接近 0.5V 的误差——这误差可比你用的运放本身大多了。所以推导公式之前我特意把电阻对称性拎出来强调因为后面每一项代数运算都是在为这个条件做铺垫。你理解了对称性为什么重要才能理解为什么实际电路里要用 0.1% 精度的电阻为什么电阻网络要选同批次、同温度系数的型号。3. 差分运放公式完整推导全程代数过程3.1 先画出电路并约定符号为了推导过程清晰先把电路符号统一。运放反相输入端记为节点 N同相输入端记为节点 P。V1 经过 R1 接到 NRf 跨接在输出 Vout 和 N 之间。V2 经过 R3 接到 PR4 接在 P 和地之间。输出对地记为 Vout。理想运放工作时VN VP且流入运放输入端的电流为零。后面所有方程都围绕 VN、VP 这两个节点电压展开。注意 VN 和 VP 不是一个固定值它们会随着输入信号变化但始终满足 VN VP。因为虚短的存在推导过程中可以把这个共同节点电压记为 VX方程写起来会清爽很多。这里我先直接用 VN、VP等到联立时才合并成同一个变量。3.2 从反相输入端写电流方程根据虚断流入 N 点的电流为零。那么流过 R1 的电流一定等于流过 Rf 的电流。这里要注意电流方向假设电流从 V1 经过 R1 流入 N 点再从 N 点经过 Rf 流向 Vout。用欧姆定律写出来就是(V1 - VN) / R1 (VN - Vout) / Rf这个方程就是整个推导的第一块基石。它没有用到任何复杂理论就是“流入节点的电流等于流出节点的电流”。但很多人列这个式子时容易把符号搞反尤其是 VN - Vout 这一项。我的经验是电流方向可以随便假设只要左右两边保持一致就行。你把左边写成从 V1 流向 N那右边也必须是从 N 流向 Vout写出来就是 (VN - Vout) / Rf。如果两个方向都反过来结果也一样因为整个方程会同时变号。为了后面化简方便先把这式子交叉相乘整理一下(V1 - VN) × Rf (VN - Vout) × R1这一步就是两边同乘 R1 × Rf把分母去掉。交叉相乘之后方程里只剩加减和乘除后面做代数变换就不容易出错。我习惯先把分母清干净再往下走否则带着分数一堆括号符号一多就乱。3.3 同相输入端分压计算再看同相输入端 P 点。根据虚断流入 P 点的电流也为零所以 R3 和 R4 之间就是一个简单的串联分压。VP 的表达直接写出来VP V2 × R4 / (R3 R4)这里不需要写电流方程因为串联分压公式本身就是从电流连续推出来的。P 点的电压完全由 R3、R4 的比值决定跟运放输入端没有关系。换句话说运放输入阻抗无穷大不会从分压节点“抽走”电流分压比例不会被破坏。这里有个容易忽略的细节VP 的表达式里没有 Vout 或 VN 出现说明同相输入端电压只取决于 V2 和电阻分压比。这个独立性让后面的联立变得简单。如果运放不是理想的输入偏置电流会在 R3、R4 上产生附加压降VP 就会发生偏移。这也是为什么高精度应用要选低偏置电流的运放。3.4 联立方程并化简现在把虚短条件 VN VP 代入第一节的电流方程替换掉 VN。为了方便书写直接用 VP 替换 VN(V1 - VP) / R1 (VP - Vout) / Rf然后交叉相乘展开(V1 - VP) × Rf (VP - Vout) × R1把括号展开V1 × Rf - VP × Rf VP × R1 - Vout × R1接下来把所有含 Vout 的项移到左边其余移到右边Vout × R1 VP × R1 VP × Rf - V1 × Rf整理右边把 VP 提出来Vout × R1 VP × (R1 Rf) - V1 × Rf两边同时除以 R1得到 Vout 的表达式Vout VP × (1 Rf / R1) - V1 × (Rf / R1)到这里输出分成两部分一部分来自 VP乘以同相增益 (1 Rf/R1)另一部分来自 V1乘以反相增益 -Rf/R1。注意这个式子里 VP 还是未知数需要把前面同相分压的表达式代进来。代入 VP V2 × R4 / (R3 R4)Vout V2 × [R4 / (R3 R4)] × (1 Rf / R1) - V1 × (Rf / R1)这是差分放大器在没有配对电阻条件下的完整表达式。注意看它一共由两项组成一项跟 V2 有关一项跟 V1 有关。在一般情况下这两项的增益并不相等所以输出不是纯正的差值信号。3.5 电阻配对时的实用公式现在让电路满足对称条件R1 R3Rf R4。此时电阻配对且 R4/(R3 R4) Rf/(R1 Rf)。代入上式Vout V2 × [Rf / (R1 Rf)] × [(R1 Rf) / R1] - V1 × (Rf / R1)第一个中括号和第二个中括号相乘正好约掉 (R1 Rf)Vout V2 × (Rf / R1) - V1 × (Rf / R1)提取公因子Vout (V2 - V1) × (Rf / R1)这就是大家最熟悉的差分放大公式。整个过程没有跳步每一步都是把前一个式子做等价变换。说它“巨详细”主要就是把约分的细节和变量替换的过程摆到明面上来避免读者自己拼凑时卡在代数环节。为了确认这个结果没有推错用叠加定理再验算一遍。V2 接地时反相放大器输出是 -V1 × Rf/R1。V1 接地时同相输入端分压得到 VP V2 × R4/(R3R4)在 R1 R3、Rf R4 的条件下VP V2 × Rf/(R1Rf)。同相放大输出为 VP × (1Rf/R1)代入并化简V2 × Rf/(R1Rf) × (R1Rf)/R1 V2 × Rf/R1。两项相加得到 Vout V2 × Rf/R1 - V1 × Rf/R1跟前面推导完全一致。验证通过。4. 从公式看电路本质4.1 放大差模、抑制共模公式里藏着答案有了完整公式 Vout (V2 - V1) × Rf/R1就可以直接讨论差模和共模的问题了。把两个输入信号分解成差模分量和共模分量V2 - V1 是差模分量而 (V1 V2)/2 是共模分量。注意差分放大器的输出表达式里根本没有出现共模分量。这说明在理想状态下无论共模电压是多少只要电阻严格对称输出就完全不受影响。这正是“抑制共模”四个字的数学来源。实际中的运放当然不可能做到彻底抑制共模因为电阻有误差运放本身也有有限的共模抑制比。但公式至少告诉你理想情况下输出只由差值决定。这个结论是后面所有工程权衡的基础——你要做的所有努力本质上都是为了让实际电路更接近这个理想公式。4.2 输入阻抗的不对称性公式里看不出输入阻抗但实际用的时候这个坑特别大。反向输入端看进去的阻抗大约是 R1而同相输入端看进去的阻抗是 R3 R4。在电阻对称时这两个输入端的阻抗并不相同一个大约是 R1另一个是 R1 Rf。这意味着什么如果你拿一个内阻较高的信号源直接接差分放大器信号源内阻会跟输入电阻分压而且两个输入端分压比例不一样导致共模抑制效果被破坏。这也是为什么很多精密测量场合前端要先加一级缓冲器把信号源阻抗隔离掉再进差分放大器。我之前做电池组电压监测时就吃过这个亏。电池内阻只有几十毫欧问题不大但连接线一长线阻加接触电阻能到几百毫欧。对于 0.1Ω 级别的采样电阻来说这几百毫欧直接改变分压比测量结果出现明显的非线性。后来在每个输入端前面都加了电压跟随器问题才解决。4.3 两个关键的工程现象从公式还能解释两个经典工程现象。第一个电阻失配导致共模增益。如果 R1 ≠ R3 或 Rf ≠ R4Vout 表达式里 V1 和 V2 前面的系数就不相等输出中就混入了 (V1 V2)/2 的共模分量。假设共模电压有 10V电阻误差 0.1%共模泄漏到输出的分量大约是 10mV。如果你采的差模信号本身只有 20mV这个误差就是 50%完全无法接受。这就是为什么差分放大电路对电阻精度要求极高。第二个反馈电阻过大会引入噪声和失调。Rf/R1 决定增益提高增益最简单的方法是加大 Rf。但电阻热噪声跟电阻值的平方根成正比Rf 加大会让输出噪声明显上升。同时运放输入偏置电流流过 Rf 产生的失调电压也会随 Rf 增大而增大。所以一味靠加大 Rf 提高增益不是好方案很多时候反而应该减小 R1 来提高增益代价是输入阻抗变低对前级驱动能力要求更高。5. 实战应用电流采样和传感器调理5.1 电机驱动里的低边电流采样电机驱动是差分放大器应用最多的场景之一。低边电流采样是指在电机和地之间串联一个采样电阻通过测电阻两端电压算电流。这种接法的好处是采样电阻一端接地共模电压接近零放大器压力小。但坏处是采样电阻会抬高电机的地电位可能影响其它电路而且无法检测电机对地短路。用差分放大器做低边采样时公式直接套 Vout (V2 - V1) × Rf/R1其中 V2 接采样电阻靠近电机的一端V1 接采样电阻靠近地的一端。关键是采样电阻的值要选得合适。电阻太大功耗和压降影响电机工作电阻太小信号太小需要很高增益噪声也跟着放大。我一般先估算满量程电流让采样电阻上的压降在 50mV 到 200mV 之间再根据 ADC 量程算放大器增益。这里有个实操细节采样电阻要用四线开尔文接法尤其是在大电流场合。采样电阻本身有几个毫欧引脚和走线电阻可能跟它一个数量级。如果直接走普通走线铜箔电阻和焊点电阻都会串进采样回路导致测量结果偏大。我在 10A 级别的电机驱动板上吃过这个亏电流越大误差越明显。5.2 高边采样与仪表放大器的关系高边采样是指采样电阻放在电源和负载之间不抬高地电位能检测对地短路但共模电压很高。比如一个 24V 系统采样电阻两端电压可能是 23.8V 和 23.2V差值只有 0.6V但共模接近 24V。这种情况下标准差分放大器也能用但要求运放的共模输入范围必须覆盖 24V。很多普通运放共模范围到不了电源轨需要选专门的共模范围宽的型号或者给运放供电用比被测电压更高的电源。另一个问题是标准差分放大器输入阻抗不够高在高边采样场景中可能对采样电阻造成分流影响测量精度。仪表放大器本质上就是为解决这些问题演化出来的前面加两个运放做输入缓冲后面再接一个差分放大级。它输入阻抗极高共模抑制比也更好。如果你发现标准差分放大器在高边采样场景中怎么调都不满意建议直接换成仪表放大器。这不是说差分放大器不好而是工具要选对口。5.3 电桥传感器信号调理电阻应变式传感器比如称重传感器、压力传感器内部通常是一个惠斯通电桥。电桥输出的是一个很小的差分电压大约每伏激励电压只有几毫伏的满量程输出。这个信号如果不经过差分放大根本没法送到 ADC。接法上电桥的两个差分输出端分别接差分放大器的 V1 和 V2。激励电压的波动会同时影响两个输出端表现为共模干扰而差分放大器正好能把它抑制掉。这就是为什么称重仪表里普遍采用差分结构的原因。做这类应用时我会特别关注两个事。一个是电桥输出阻抗可能比较高需要确认差分放大器输入阻抗是否足够不够的话要加缓冲。另一个是电桥激励电压本身可能带纹波差分放大只能抑制激励纹波带来的共模分量但如果电桥两端阻抗不完全平衡纹波的一部分会变成差模信号这时就得靠后续滤波了。差分放大器的带宽通常很宽我一般会在输出端加一个低通滤波器把高频噪声滤掉。6. 常见问题与排查技巧实录6.1 电阻误差带来的共模泄漏现象电路按照差分公式计算但输出总有一个随共模电压变化的偏置。共模一变输出就跟着飘。原因四颗电阻没有严格配对。回到公式的完整版V2 的增益系数是 R4/(R3R4) × (1Rf/R1)V1 的增益系数是 Rf/R1。只有 R1 R3、Rf R4 时这两个系数才相等共模分量才会抵消。哪怕电阻标称值相同实际阻值还有误差。排查方法用万用表实测四颗电阻的实际阻值算一下两个增益系数的偏差。如果偏差明显换 0.1% 精度的电阻或者选同一批次、温度系数相同的电阻网络。很多精密运放厂家会直接卖集成好的差分放大器或电阻网络排除了人工装配误差效果立竿见影。补充心得有时候你会遇到“换了 0.1% 电阻还是有共模误差”的情况。这时别急着怀疑电阻先看看电阻的位置。PCB 布局不对称、一个电阻靠近发热元件而另一个离得远都会导致两个电阻实际工作温度不同温漂特性不一致等效误差照样产生。对称布局不只是为了好看而是实实在在影响性能。6.2 输出出现“莫名其妙”的偏置电压现象输入短路理论上 Vout 应该是 0但实际上输出有一个固定的直流偏置。原因常见的有三个。第一个是运放输入偏置电流流过电阻网络产生失调电压。第二个是运放本身的输入失调电压 Vos 不为零这是芯片固有参数。第三个是反馈电阻和输入电阻的并联等效阻抗不相等导致偏置电流引起的压降不同。排查方法先看运放数据手册的 Vos 和 Ib 参数估算一下理论偏置有多大。如果偏置在预计范围内可以在软件里做校准。如果偏置远超理论值检查是否电阻布局不对称、运放供电是否干净、输出是否带了太重的负载。还有一个容易忽略的点输入接插件接触不良或悬空时输入偏置电流会往悬空节点充放电导致输出漂移。因此差分放大器的输入端在不接信号时最好有确定的钳位电阻或短路帽。6.3 共模电压接近电源轨导致的波形失真现象输入信号正常但输出波形在某个区间出现明显的削顶或畸变尤其是输入共模电压接近电源电压时。原因运放内部输入级结构决定了它的共模输入范围。普通运放的共模范围通常只能到电源轨附近但很多型号不允许完全到轨。当输入共模电压超过运放的共模范围输入级会进入非线性区虚短条件失效公式自然就不成立了。排查方法看数据手册的 Common-Mode Input Voltage Range也就是 VICR 参数。如果共模电压接近甚至超过电源轨要么提高运放供电电压要么换一个 VICR 到轨或超越轨的运放型号。某些场合可以用负电源给运放供电彻底把共模范围撑开但会增加电源设计的复杂度。我做 24V 高边电流检测时第一次遇到的坑就是这里。运放供电用的 5V共模电压却有 24V芯片完全超出共模范围输出怎么调都不对。后来换了专门支持高共模电压的差分运放型号把采样电阻两端直接接芯片的专用输入引脚问题才解决。芯片选型时专门挑高边电流检测用途的型号比自己拼分立运放省心得多。6.4 高频噪声导致的测量不稳定现象输出波形跳动大用万用表看测量结果不稳定但输入信号本身很干净。原因差分放大器带宽通常很高几 MHz 甚至几十 MHz。如果输入信号频率只有几 kHz但环境里有开关电源的纹波、电机 PWM 的跳变沿或者其它高频辐射源这些噪声都会被放大器毫无保留地放大混叠到有用信号上。排查方法在输出端加一阶 RC 低通滤波转折频率设为信号最高频率的 3 到 5 倍。如果想要更好的抗混叠效果可以加二阶有源滤波器。另外在差分输入端加一个差模滤波电容对抑制高频差模噪声也非常有效。需要注意的是输入端加电容会改变反馈环路的相位裕度可能引起振荡。稳妥的方法是先加输出端滤波不够再加输入端电容并且要实测闭环稳定性。说到稳定性我多提醒一句差分放大器的反馈网络本身是电阻性的稳定性问题不像运放带电容负载那么突出。但如果你在输出端直接并联较大容量电容驱动长线缆运放输出级容易振荡。这时候应该在输出电容前面串一个小电阻隔离负载电容就能避免很多莫名其妙的振荡问题。最后分享一个我自己的习惯。每次拿到一个运放电路不管多熟悉我都会先把公式从头推一遍然后用最简单的阻值实际搭个电路测一下。这听起来很基础但正是这种基本功让我在排查问题时少走了很多弯路。差分放大器的公式推明白之后再看仪表放大器、电流检测放大器、电桥调理电路你会发现它们的核心思想都是相通的。如果你正在被某个运放电路折磨不妨也拿出纸笔把它的公式老老实实推一遍答案往往就藏在代数过程里。