模拟电路里最重要的一个器件就是运算放大器(Operational Amplifier,简称运放)。传感器信号太弱要放大、ADC 采样前要调理信号、输出要带得动负载——都靠它。这篇讲透运放最核心的三个概念:虚短、虚断、负反馈,以及由它们推导出的三大基本电路。
文中的电路公式用 Python 理想运放模型做了数值仿真验证(4 项 PASS),不是纸面推导。
一、运放是什么:一个"黑盒"放大器
运放是一个集成芯片,从外面看就是一个黑盒:两个输入端、一个输出端、两根电源线:
- V+(同相输入):输入增大 → 输出增大
- V-(反相输入):输入增大 → 输出减小
- Vout:输出 = A × (V+ − V-),A 是开环增益(理想无穷大,实际 10⁵ ~ 10⁶)
理想运放有三个特性(图里右边三块):
- 增益无穷大:输入差一点点,输出就顶到电源轨
- 输入阻抗无穷大:输入端几乎不吸取电流——不拖累前级信号源
- 输出阻抗为零:输出像理想电压源,带多重负载都不塌
关键问题来了:增益无穷大,那输出不就要么 +VS 要么 -VS 吗?怎么控制放大倍数?——靠负反馈。
二、核心概念:负反馈 → 虚短虚断
把输出接一部分回到 V-(反相输入端),就构成负反馈:输出大了 → 反馈回去让 V- 变大 → 输出被拉回来。系统自动稳定在一个平衡点。
负反馈稳定后,得出两个"虚"结论——这是分析运放电路的万能钥匙:
| 概念 | 内容 | 为什么 |
|---|---|---|
| 虚短 | V+ ≈ V-(两端"看起来短路") | 输出自动调整,直到 V+ 和 V- 相等才稳定(否则会一直放大差值) |
| 虚断 | 输入端"看起来断路" | 输入阻抗无穷大,几乎不吸取电流 |
⚠️ 注意是"虚"短、"虚"断——不是真的短路/断路。V+ 和 V- 之间有极小电压差(Vout/A),只是小到可以忽略;输入端有极小电流(V+/输入阻抗),小到可以当作没有。虚短虚断只在负反馈闭环下成立,开环(没反馈)时 V+、V- 差别很大。
有了虚短虚断,任何运放电路都能直接"算"出来——这是运放题的标准解法。
三、三大基本电路
① 反相放大器:Vout = −(Rf/Rin) × Vin
- Vin 经 Rin 接 V-,V+ 接地
- 虚地:虚短 → V- ≈ V+ = 0V(反相输入端是"虚地",不是真接地)
- 虚断:V- 不吸电流 → 流过 Rin 的电流 = 流过 Rf 的电流
- 推导:
(Vin − 0)/Rin = (0 − Vout)/Rf→ Vout = −(Rf/Rin) × Vin
用途:信号放大(带负号,反相)。Rf/Rin 决定增益,精确且与运放本身无关。
② 同相放大器:Vout = (1 + Rf/Rin) × Vin
- Vin 直接接 V+(同相输入)
- 虚短 → V- = V+ = Vin
- Rin、Rf 分压:
V- = Vout × Rin/(Rin+Rf)→ Vout = (1 + Rf/Rin) × Vin
用途:放大且不反相。输入阻抗极高(直接接 V+,信号源几乎不带负载)——传感器信号放大首选。
③ 电压跟随器:Vout = Vin
- 输出直接接 V-(100% 负反馈,Rf=∞、Rin=0 的同相放大器特例)
- 虚短 → V- = V+ = Vin → Vout = Vin
不放大?那它有什么用——缓冲:输入阻抗无穷(不拖累信号源)、输出阻抗为零(带得动负载)。比如 ADC 采样前接跟随器,隔离传感器和 ADC 的相互影响。
四、仿真验证(Python 实跑)
用理想运放模型(Vout = A×(V+−V-),A=10⁶)解节点方程,验证三个公式:
def solve_inverting(Rin, Rf, Vin, A=1e6):
# 节点法:V- = (Vin/Rin + Vout/Rf) / (1/Rin + 1/Rf)
# Vout = -A * V-
denom = (1/Rin + 1/Rf) + A/Rf
return -A * Vin / Rin / denom
def solve_non_inverting(Rin, Rf, Vin, A=1e6):
beta = Rin / (Rin + Rf) # 反馈系数
return A * Vin / (1 + A * beta) # Vout = A(Vin - beta*Vout)
def solve_follower(Vin, A=1e6):
return A * Vin / (1 + A) # Vout = A(Vin - Vout)实跑结果(4 PASS 0 FAIL):
PASS 反相放大器 Vout=-(Rf/Rin)*Vin: 仿真=-0.999989V 理论=-1.000000V 误差=0.0011%
PASS 反相放大器(负输入): 仿真=1.999978V 理论=2.000000V 误差=0.0011%
PASS 同相放大器 Vout=(1+Rf/Rin)*Vin: 仿真=1.999980V 理论=2.000000V 误差=0.0010%
PASS 电压跟随器 Vout=Vin: 仿真=3.299997V 理论=3.300000V 误差=0.0001%还验证了"为什么开环增益要大"——A 越大越接近理想公式:
反相 A=1000 → Vout=-0.989120V(误差 1.088%)
反相 A=1e6 → Vout=-0.999989V(误差 0.0011%)结论:运放靠"超大增益 + 负反馈"把电路行为收敛到只由外部电阻决定——这就是"运算放大器"里"运算"二字的由来:增益是精确的"算"出来的,不是靠运放本身。
五、和 ADC 的关系(嵌入式前置)
运放最常见的实际应用之一就是 ADC 采样前置。传感器(温度、压力、光敏)输出往往是毫伏级小信号,直接进 ADC 会被分辨率/噪声吃掉,需要先经过:
传感器(mV 级) → 同相放大器放大(×10~×100) → 电压跟随器缓冲 → ADC 输入- 同相放大器:放大到 ADC 满量程附近,充分利用分辨率
- 电压跟随器:ADC 采样电容会"吸取"电流(拉低信号),跟随器隔离它,保证 ADC 读到的是真实信号
- 后面还可以加 RC 低通滤波滤掉高频噪声(讲滤波时再展开)
这正是"模拟电路 → 嵌入式"衔接的关键点——以后做 STM32 传感器采集会反复用到。
小结
- 运放 = 高增益差分放大器(Vout = A×(V+−V-)),理想特性:增益无穷、输入阻抗无穷、输出阻抗零
- 负反馈让电路稳定,虚短虚断是分析一切运放电路的钥匙(只在闭环成立)
- 三大基本电路:反相(−Rf/Rin)、同相(1+Rf/Rin)、跟随器(缓冲)——增益只由外部电阻决定
- Python 仿真 4 项 PASS 验证公式,开环增益越大误差越小
- ADC 前置 = 同相放大 + 跟随器缓冲,是模拟→嵌入式衔接的关键
想继续深入,接下来可以看《数字电路》(运放之后是数字世界的门电路与触发器)、《嵌入式》(STM32 的 ADC 采样,运放输出最终进这里),或者先看《树莓派实践》的摄像头模拟信号处理。
