4、同相比例放大器:电路拓扑分析、SPICE网表编写、增益与输入阻抗的仿真验证
同相比例放大器,这应该是咱们接触运放基础电路时,第一个让我觉得「原来如此」的拓扑。它的输入信号加在运放的同相输入端,反馈从输出端引回反相输入端。说白了,就是输出和输入同号,而且能放大。
我个人习惯,拿到一个新电路,先不看公式,先看结构。同相比例放大器的核心结构其实就三样东西:运放本身、反馈电阻 Rf、接地电阻 Rg。Rf 跨在输出和反相输入端之间,Rg 从反相输入端到地。同相输入端接信号源。
4.1 电路拓扑分析
先画个简图在脑子里:
- 运放的同相输入端(+)接输入信号 Vin
- 反相输入端(-)接 Rf 和 Rg 的公共节点
- Rf 的另一端接输出 Vout
- Rg 的另一端接地
为什么叫「同相」?因为输入信号直接加在同相端,输出信号的极性和输入一致。你给个正电压,输出也是正的。这个和反相放大器正好相反。
嗯,这里要注意一个关键点:同相放大器的输入信号是直接加在运放的同相输入端上的。这意味着什么?意味着输入阻抗非常高,理想情况下是无穷大。我在项目中遇到过好几次,前级信号源输出能力很弱,比如一个高阻抗的传感器输出,这时候用同相放大器就特别合适。你想想看,它几乎不从信号源取电流。
核心公式: 闭环增益 Av = 1 + Rf / Rg
这个公式怎么来的?虚短虚断。同相端电压等于反相端电压,所以反相端也是 Vin。流过 Rg 的电流是 Vin / Rg,这个电流也流过 Rf,所以 Rf 上的压降是 (Vin / Rg) * Rf。输出 Vout = Vin + (Vin / Rg) * Rf = Vin * (1 + Rf / Rg)。
注意,这个增益永远大于 1。如果你想要增益为 1,怎么办?把 Rf 短路(Rf = 0),或者把 Rg 开路(Rg = ∞),这时候电路就变成了电压跟随器,增益为 1。我刚开始做设计时,总觉得电压跟随器没什么用,后来发现它在缓冲隔离时简直是神器。
4.2 SPICE 网表编写
写网表其实不难,关键是把节点编号搞清楚。我个人习惯这样分配节点:
- 节点 0:地
- 节点 1:输入信号
- 节点 2:运放同相输入端
- 节点 3:运放反相输入端
- 节点 4:运放输出端
- 节点 5:正电源
- 节点 6:负电源
下面是一个完整的 SPICE 网表示例,增益设为 2(Rf = 10k, Rg = 10k):
* 同相比例放大器 SPICE 网表
* 增益 = 1 + Rf/Rg = 1 + 10k/10k = 2
* 电源
VDD 5 0 DC +5V
VSS 6 0 DC -5V
* 输入信号
Vin 1 0 DC 0V AC 1V
* 运放(使用理想运放模型)
XOP 2 3 4 5 6 OPAMP
* 反馈网络
Rf 4 3 10k
Rg 3 0 10k
* 连接输入到同相端
Rs 1 2 1k
* 理想运放子电路
.SUBCKT OPAMP INP INN OUT VCC VEE
Rin INP INN 1MEG
Eamp OUT 0 INP INN 100k
.ENDS OPAMP
* 分析指令
.AC DEC 100 1Hz 10MHz
.TF V(4) Vin
.END
这里我用了 Rs = 1k 来模拟信号源内阻。实际项目中,信号源总是有内阻的,虽然同相放大器输入阻抗高,但 Rs 和运放输入电容会形成一个低通滤波器,高频时会衰减。我曾经吃过这个亏,一个 10MHz 的信号,因为没注意信号源内阻和运放输入电容,结果高频增益掉了 3dB。
小技巧: 写网表时,建议把电阻值写成标准值,比如 10k 而不是 10000。SPICE 能识别 k、M、u 等后缀。另外,子电路定义要放在主电路之后,或者单独文件引用。
4.3 增益的仿真验证
网表写好了,咱们跑一下 AC 分析看看增益对不对。
用上面的网表跑 .AC 仿真,频率从 1Hz 到 10MHz。你会看到低频增益大约是 6dB(因为增益为 2,20*log10(2) ≈ 6dB)。随着频率升高,增益会下降,这是因为运放的开环增益在滚降。
为什么低频增益正好是 6dB?因为理想情况下,闭环增益只取决于反馈电阻比。但实际运放的开环增益有限,所以低频增益会略低于理论值。我试过用开环增益 100k 的运放模型,算出来增益是 1.9998,非常接近 2。
用 .TF 指令可以直接看直流传输特性:
.TF V(4) Vin
结果会显示:
TRANSFER FUNCTION:
V(4)/Vin = 2.000000e+00
INPUT RESISTANCE = 1.001000e+03
OUTPUT RESISTANCE = 1.000000e-03
看到没?增益是 2.0,完全符合理论。输入阻抗显示 1.001k,这其实是 Rs(1k)加上运放同相端的输入电阻(1M 并联后的结果),几乎就是 Rs 本身。这说明同相放大器的输入阻抗主要由信号源内阻决定,而不是运放本身。
注意: 这里的输入阻抗是 1.001k,不是运放本身的输入阻抗。运放同相端的输入阻抗是 Rin = 1M,但因为串联了 Rs,所以从信号源看进去的阻抗是 Rs + (Rin || 运放共模输入阻抗)。实际项目中,运放的共模输入阻抗可能只有几兆欧,高频时还会下降。
4.4 输入阻抗的仿真验证
输入阻抗怎么仿真?有两种方法:
- 直接法: 看输入电流。在 SPICE 中,输入阻抗 Zin = Vin / Iin。Vin 是信号源电压,Iin 是流入同相端的电流。用 .PRINT AC I(Rs) 可以看电流。
- 间接法: 用 .TF 指令,它会直接给出输入电阻(直流)。
咱们用直接法看看:
.AC DEC 100 1Hz 10MHz
.PRINT AC V(2) I(Rs)
在低频时,V(2) ≈ Vin,I(Rs) ≈ Vin / (Rs + Rin)。因为 Rin = 1M,Rs = 1k,所以 I(Rs) ≈ Vin / 1001k。输入阻抗 Zin = Vin / I(Rs) ≈ 1001k。嗯,这和 .TF 的结果一致。
但到了高频,情况就变了。运放的输入电容(通常几 pF)会和 Rs 形成分压,导致输入阻抗下降。我遇到过最典型的情况是:一个 10k 的 Rs,配上 10pF 的输入电容,在 1MHz 时输入阻抗已经降到了 16k 左右。这时候你再用同相放大器,高频信号就会被衰减。
避坑指南: 我曾经设计一个音频前置放大器,用了同相拓扑,Rs 选了 100k 来匹配前级输出。结果高频响应一塌糊涂。后来一查,运放输入电容 15pF,和 100k 电阻形成极点,频率才 100kHz 左右。解决办法是把 Rs 降到 1k,或者用低输入电容的运放。
总结一下同相比例放大器的特点:
- 增益 ≥ 1,公式 Av = 1 + Rf/Rg
- 输入阻抗高,主要由信号源内阻和运放输入电容决定
- 输出阻抗低,接近零
- 适合高阻抗信号源的缓冲和放大
下一章咱们会讲反相比例放大器,到时候你可以对比一下两者的区别。反相放大器的输入阻抗就低多了,但它的共模输入电压是零,有些场合反而更稳定。