ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

电压跟随器设计避坑:相位裕度、输出阻抗与高阻测量误差

电压跟随器设计避坑:相位裕度、输出阻抗与高阻测量误差

简介:围绕高精度智能电阻测量仪器与数字电压表的课程设计,这份技术文档面向电子信息、自动化等专业的学生及课程设计者,聚焦电压跟随器的工作机理与典型应用,帮助读者理解其在测量系统中承担缓冲、隔离和稳定信号传输的作用。压缩包内仅含1个doc文件,整体约32KB,篇幅集中,便于快速查阅原理说明与设计思路。文档从运算放大器构成的跟随电路讲起,说明电压放大倍数恒小于且接近1、高输入阻抗与低输出阻抗等特性,并延伸到缓冲级设计、减小前级输出电阻造成的信号损耗、降低测量电路对被测电阻影响等实际问题;同时提及HI-FI电路中利用跟随器切断扬声器反电动势干扰、改善清晰度的用法。已有232人学习,适合用于课程设计报告中的原理分析、方案论证与电路功能说明整理。

1. 电压跟随器:一个增益不到 1 的电路,为什么反而是运放电路里最容易出问题的那个

在数字电压表和智能电阻测量仪器的课程设计里,电压跟随器几乎是最先画上去的一级:同相端接信号,反相端直接接回输出,增益为 1,没有电阻可以算错,看起来是最没有设计含量的一级。但真正焊到板上、接到一段长电缆或者兆欧级信号源上,很多人会撞见两个反直觉的现象:空载时输出干干净净,接上探头或屏蔽线就开始高频振铃;万用表量输出阻抗只有几毫欧,频率一上去带载能力却直线塌陷。

这两件事指向同一个机制:跟随器把运放的全部开环增益都用作反馈深度,反馈系数 β=1,环路增益最大,任何一点附加相移都会被放大成稳定性问题;而它的高输入阻抗、低输出阻抗都是负反馈“折算”出来的,不是器件的物理属性,源阻抗一高,偏置电流和漏电立刻变成毫伏级直流误差。把这两条折算关系吃透,才算真正理解这一级。

2. 虚短与虚断:单位增益缓冲的“跟”到底靠什么维持

“虚短”常被当成一条电路定律来背,但它只是开环增益足够大时的一个近似结果。跟随器的全部精度、带宽和稳定性问题,都可以从这条近似的误差项里长出来。

2.1 开环增益把误差压到 ppm,但只在低频成立

设运放开环增益为 A,同相端输入 Vin,反相端直接连到输出 Vout,那么 Vout = A(Vin − Vout),整理得到:

Vout = Vin · A/(1+A) = Vin · (1 − 1/(1+A))

相对误差就是 1/(1+A)。A=10⁵(100 dB)时误差 10 ppm,1 V 输入差 10 µV;这在 4 位半表里可以忽略,在 6 位半里就是必须算进去的一项。真正麻烦的是 A 随频率下降:单极点模型下 A(f) = A₀/√(1+(f/fp)²),fp = GBW/A₀。

import math A0 = 1e5 # 开环直流增益,100 dB GBW = 1e6 # 增益带宽积,1 MHz fp = GBW / A0 # 主极点频率,10 Hz def follow_error(f): # 一阶单极点模型:开环增益幅值随频率滚降 A = A0 / math.sqrt(1 + (f / fp) ** 2) # 单位增益跟随的相对误差 return 1.0 / (1.0 + A) for f in [0.1, 10, 100, 1e3, 1e4, 1e5]: e = follow_error(f) print(f"{f:>9.1f} Hz 误差 {e*1e6:9.2f} ppm")

跑一遍就能看到问题:10 Hz 时误差仍是 10 ppm 量级,到 10 kHz 时 A 已经掉到约 100,误差变成 1%,也就是 10 mV/V。所以“跟随器精度高”这句话有前提——信号频率必须远低于主极点乘增益的区间。参数含义很直接:A0 决定直流精度上限,GBW 决定这个精度能维持到多高频率;换运放时如果只盯 A0 不看 GBW,高频段的误差会悄悄变大。

顺带说清“虚断”:它来自运放输入偏置电流极小,输入端近似不取电流。这个近似在 BJT 输入运放上只有几十纳安,在 CMOS 输入上可以到皮安,但都不是零。2.2 节讲输出阻抗时会用到“虚短”,第 3 章讲高阻源时会用到“虚断”,两者都不是无条件成立的。

2.2 低输出阻抗是负反馈“造”出来的,不是运放自带的

运放输出级本身有一个开环输出电阻 Ro,典型值几十到几百欧。闭环之后,输出端看到的阻抗是:

Rout_cl = Ro / (1 + Aβ),跟随器 β=1,所以 Rout_cl = Ro/(1+A)

Ro=75 Ω、A=10⁵ 时,闭环输出阻抗 0.75 mΩ,确实低得可以忽略。但这个式子里的 A 是频率的函数,A 一掉,Rout_cl 就按同样的比例回升。

Ro = 75.0 # 开环输出电阻,欧姆 def zout(f): # 与 2.1 节同一个单极点模型 A = A0 / math.sqrt(1 + (f / fp) ** 2) return Ro / (1 + A) for f in [1, 100, 1e3, 1e4, 1e5, 1e6]: print(f"{f:>9.1f} Hz 闭环输出阻抗 {zout(f)*1e3:9.3f} mΩ") # 反推输出阻抗升到 1 欧姆时的频率 target = 1.0 A_needed = Ro / target - 1 f_1ohm = fp * math.sqrt((A0 / A_needed) ** 2 - 1) print(f"\n输出阻抗升到 1 Ω 的频率约 {f_1ohm/1e3:.1f} kHz")

结果很能说明问题:1 MHz 的 GBW、10 Hz 主极点,输出阻抗升到 1 Ω 只发生在十几千赫兹。换句话说,直流到音频段它是“几乎零阻抗”的电压源,到了几十千赫兹以上就退化成一个几十欧的普通输出。带容性负载、驱动长线、给 ADC 采样电容充电,全都发生在这个退化区间里,这是后面所有稳定性问题的物理根源。

输入侧同理。跟随器的输入阻抗不是简单的“几兆欧”,而是共模输入阻抗与差模输入阻抗并联,再叠上几皮法的输入电容。差模输入阻抗在闭环下会被反馈提升约 (1+A) 倍,但跟随器两输入端电压几乎相等,源看到的其实主要是共模阻抗和输入电容。所以 datasheet 上写着 10¹² Ω 共模阻抗,不代表接在 10 MΩ 源上就没有负载效应——输入电容在交流上才是主要问题。

2.3 容性负载:环路里的 Ro 和你看得到的 Rout 不是同一个东西

这是最容易混淆的一点。反馈是从输出端取的,环路内部走的是开环输出电阻 Ro,不是闭环后的 0.75 mΩ。负载电容 CL 与 Ro 构成一个极点 p2 = 1/(2π·Ro·CL),这个极点落在反馈环内部,会额外贡献相位滞后。

用相位裕度粗估:主极点贡献约 90°,p2 在交越频率 fc 处贡献 arctan(fc/p2),于是

PM ≈ 90° − arctan(fc/p2),跟随器的噪声增益为 1,fc ≈ GBW。

def phase_margin(CL, Riso=0.0, Ro=75.0, GBW=1e6): # 环路内实际串在输出端的总电阻 R = Ro + Riso p2 = 1.0 / (2 * math.pi * R * CL) return 90.0 - math.degrees(math.atan(GBW / p2)), p2 for CL in [100e-12, 1e-9, 10e-9, 100e-9]: pm, p2 = phase_margin(CL) print(f"CL={CL*1e9:6.1f} nF p2={p2/1e6:7.2f} MHz 相位裕度≈{pm:5.1f}°")

CL=100 pF 时 p2 在 21 MHz,远高于 1 MHz 交越点,PM 接近 87°,没事;CL 涨到 10 nF,p2 落到 212 kHz,PM 只剩约 12°,阶跃响应会出现严重过冲甚至自激。隔离电阻 Riso 的作用就是把 p2 往低频推——注意方向:R 变大,p2 变低,但此时 p2 已经移出环路(反馈点改到 Riso 之前),环路内不再包含 CL 造成的相移,稳定性反而恢复。代价是 Riso 上有负载电流压降,直流和低频增益出现误差,带 1 kΩ 负载、Riso=47 Ω 时就是 4.7% 的增益误差,只能靠后级高阻或把反馈点接到负载端再另做补偿来换回精度。

注意:探头本身的电容(10~15 pF)加上一段一米长的屏蔽线(约 100 pF),足以把某些高 GBW 运放的单位增益缓冲推到振荡边缘。台面上“接探头就振、拔掉就好”的现象,八成是这条路径。

3. 缓冲级在测阻电路里干了什么:从分压误差到 ADC 建立时间

高精度智能电阻测量仪器里,跟随器通常插在两个位置:一个是分压节点与 ADC 之间,另一个是量程切换网络与后级之间。它解决的不是“放大”,而是“不让测量电路改变被测对象”。

3.1 分压法测电阻:输入阻抗如何直接写进系统误差

最朴素的比例法测阻:基准电阻 Rref 与被测电阻 Rx 串联,两端加激励 Vref,测中间节点电压 Va = Vref·Rx/(Rref+Rx),反解出 Rx。这套算法的前提是“测量端不取电流”。一旦后级输入阻抗 Rin 有限,它就与 Rx 并联,实际读到的电压变成:

Va' = Vref·(Rx∥Rin)/(Rref + Rx∥Rin)

误差随 Rx/Rin 的比例上升。Rx=1 MΩ 时,Rin=10 MΩ 带来约 9% 的读数偏低;Rin=1 GΩ 降到 0.1%;Rin=100 GΩ 才到 0.001% 量级,勉强够 5 位半。

def ratio_error(Rx, Rin): # 理想分压与实际分压之比,近似为并联分流造成的相对误差 return 1 - (Rx * Rin / (Rx + Rin)) / Rx for Rin in [1e6, 1e7, 1e8, 1e9, 1e11]: print(f"Rin={Rin:>8.0e} Ω Rx=1MΩ 时读数偏低 {ratio_error(1e6, Rin)*100:8.4f}%")

跟随器在这里的价值就是把 Rin 从“后级的几兆欧”抬到“运放的共模输入阻抗”,通常是 10⁹~10¹² Ω 量级,误差直接掉两个数量级。但它同时引入了新问题:输入电容与 Rx 并联,在量程切换或激励换向时形成 RC 建立过程。Rx=10 MΩ、输入电容 5 pF 时时间常数 50 µs,要建立到 1 ppm 需要约 14 个时间常数,也就是 0.7 ms。如果采样率要求更高,这个建立时间就是硬约束,靠软件延时解决不了,只能减小输入电容或者降低源阻抗。

3.2 偏置电流与失调电压:兆欧源阻抗上的毫伏账

“虚断”在兆欧级源阻抗上会失效。输入偏置电流 Ib 流过源电阻 Rs,产生 Ib·Rs 的直流误差;输入失调电压 Vos 则直接叠加在输出上,与源阻抗无关。

def dc_error(Ib, Rs, Vos): # Ib 单位 A,Rs 单位 Ω,Vos 单位 V return Ib * Rs + Vos cases = [ ("通用 BJT 输入", 50e-9, 20e-6), ("低偏置 BJT", 2e-9, 10e-6), ("CMOS 输入", 1e-12, 50e-6), ] for name, Ib, Vos in cases: v = dc_error(Ib, 10e6, Vos) print(f"{name:<12} 10MΩ 源上总误差 {v*1e3:8.3f} mV")

通用 BJT 输入运放,50 nA 偏置电流在 10 MΩ 上就是 500 mV,完全不可用;换成 CMOS 输入,偏置电流项压到 10 µV,误差主要由 50 µV 的失调电压决定。这就是高阻测量前端几乎清一色选 CMOS 或 JFET 输入的原因。但这两类运放也有代价:CMOS 输入的失调电压通常比精密 BJT 运放大,且 1/f 噪声拐点高;JFET 输入的偏置电流随温度每升高 10 ℃ 大约翻一倍,常温标定好的零点到了夏天会漂。

工程上的折中手段是平衡电阻:在反馈路径里串一个阻值约等于源阻抗的电阻,让两个输入端看到的直流电阻相等,Ib⁺ 和 Ib⁻ 产生的压降成为共模量,被共模抑制比吃掉一部分。但这只在 Ib⁺ 与 Ib⁻ 匹配时有效,而实际器件的两者可能差好几倍,最坏情况下误差只减半。更可靠的做法是选 Ib 本身足够小的器件,再把平衡电阻当作锦上添花。

3.3 驱动 SAR ADC 采样电容:跟随器要做的是瞬时电荷搬运

SAR ADC 采样瞬间,内部采样电容 Cs 通过开关电阻 Rsw 接到输入端,输入端电压会被瞬间拉低,然后按指数恢复。建立到 n 位精度需要的时间是:

t = τ·ln(2^(n+1)),τ = (Rsw + Rout_cl)·Cs

12 位精度约 9.0 个 τ,16 位约 11.1 个 τ。Cs=10 pF、Rsw=100 Ω 时 τ=1 ns,12 位只需 9 ns,看起来跟随器随便都能满足。真正的瓶颈在别处。

def settle_time(bits, R, C, n_tau=None): if n_tau is None: # 半 LSB 判据:误差小于 1/2^n 的一半 n_tau = math.log(2 ** (bits + 1)) return n_tau * R * C bits = 16 Cs = 10e-12 Rsw = 100.0 for Rout in [0.001, 1.0, 10.0]: t = settle_time(bits, Rsw + Rout, Cs) print(f"Rout={Rout:>7.3f} Ω 16 位建立时间 {t*1e9:8.2f} ns") # 大信号压摆率限制:从 0 摆到满量程所需时间 SR = 10e6 # 10 V/µs print(f"\n5 V 满量程阶跃的压摆时间 {5/SR*1e9:.1f} ns")

关键结论:小信号建立时间取决于高频段的闭环输出阻抗,而不是直流那 0.75 mΩ。2.2 节已经算出,输出阻抗在几十千赫兹就开始上升,采样瞬间的电流尖峰正好落在这个频段。如果跟随器在采样边沿“软”了,会出现输出跌落再缓慢恢复的拖尾,表现为相邻通道之间的码间干扰——通道一测大电压,通道二的读数跟着偏几个 LSB,换一片 ADC 也查不出来。大信号还额外受压摆率限制,5 V 阶跃、10 V/µs 就要 500 ns,这往往才是多通道扫描时真正的瓶颈。

4. 隔离与反电动势:跟随器切断的是哪一条耦合路径

音频功放里的跟随器用法,和测量电路里不太一样:它不是为了精度,而是为了切断一条看不见的反馈路径。

4.1 音圈反电动势怎么绕回前级

扬声器音圈在磁场中振动,会产生一个与振速成正比的反电动势 E=Blv,这个电压直接出现在功放输出端。在有大环路负反馈的功放里,反馈网络从输出端取样,E 就和输入信号一起进入反馈节点,环路把它当作“输出误差”去修正。修正的结果是:功放输出电流被迫跟随反电动势变化,产生额外的互调成分,听感上就是低频糊、声像散。这不是玄学,是反馈环把负载的机械振动耦合回了输入端。

把跟随器放在前级与功放之间,切断的是前级到功放输入网络的双向耦合:前级看到的负载从“功放输入级的偏置网络”变成跟随器的高阻输入,几乎不取电流;功放输入端看到的则是一个极低阻抗的驱动源,反电动势要窜回前级,必须经过功放输入阻抗与跟随器输出阻抗的分压。跟随器在音频段的闭环输出阻抗是毫欧级,分压比小到可以忽略,这条路基本被堵死。同时它把前级原本较高的输出阻抗“变换”成低阻抗,前级不再受功放输入电容和偏置电流变化的影响。

需要注意的是,它只切断“前级↔功放输入”这一段。反电动势进入功放自身的反馈环这条路并没有被切断,那一层要靠功放末级的设计来解决。

4.2 无大环路负反馈的失真代价,与跟随器自身的失真

末级取消大环路负反馈,确实能消除反电动势被反馈放大的问题,但代价是末级自身的非线性完全暴露。输出级工作电流随信号大幅变化,β 非线性、交越失真、电源扰动全部直接进入输出,总谐波失真通常比闭环时高一个数量级以上。这就是为什么这类设计对前级缓冲的要求反而更高:缓冲级自己的失真要足够低,否则前面省下来的失真又被它加回去。

跟随器的失真来源和常见印象不太一样。单位增益配置下,两个输入端的共模电压随信号全摆幅摆动,输入级的共模抑制非线性会转化成失真;输出级若工作在甲乙类,过零处的交越失真也会出现。相比之下,反相放大配置的共模电压几乎不变,失真通常更低——但反相输入的阻抗低,接高阻源会出问题。这是一个典型的取舍:要高输入阻抗就得接受共模摆动带来的失真,要低失真就得放弃高阻输入。

注意:单电源供电的跟随器必须把工作点偏置在电源中点附近,输入信号接近地或接近电源轨时,共模输入范围先于输出摆幅失效,波形会“削平”而不是“削顶”,很容易误判成后级问题。

4.3 阻抗隔离不等于电气隔离

这里必须纠正一个常见误解:跟随器提供的是阻抗变换,不是电位隔离。两地之间存在直流或工频电位差时,跟随器的共模输入范围一旦被突破,输出就会锁死或反向,输入级也可能被击穿。地环路形成的共模电流仍然会流过信号地,在长线上感应出噪声。

真需要断开地环路时,手段是差分放大、变压器耦合或者光耦,代价是带宽、精度或成本。跟随器的定位应该明确为“让前级不被后级加载、让后级看到一个确定的低阻抗源”,把它当成隔离器用,出问题只是时间早晚。

5. 避坑与排查:跟随器翻车的五个现场

这一章记录的都是“现象看起来毫不相关、根因却都落在同一级”的案例,按稳定性与直流精度分成两类。

5.1 稳定性与负载相关的三个现场

现场一:接上示波器探头就振,拔掉就干净。现象是输出叠加了几十兆赫兹的等幅振荡,幅度几百毫伏,用不同探头振荡频率还会变。原因不是运放坏了,而是探头电容(10~15 pF)加上探头地线电感,在输出端构成了一个容性负载,与环路内的开环输出电阻形成附加极点,把相位裕度吃掉了。解决顺序是:先在输出与负载之间串 22~100 Ω 隔离电阻,同时把反馈取样点挪到电阻之前;如果精度不允许串电阻,改用能驱动容性负载的运放,或者在输出加一节 RC 缓冲网络(电阻几欧、电容几十纳法到地),把高频负载与环路隔开。

现场二:阶跃响应过冲 40%,datasheet 明明写着“单位增益稳定”。“单位增益稳定”只保证纯阻性负载下的相位裕度,不保证任意容性负载。查法很简单:用方波激励,看上升沿的过冲比例。过冲 4% 对应相位裕度约 65°,16% 对应约 45°,25% 对应约 35°。过冲超过 20% 就该怀疑容性负载或反馈走线过长引入了寄生电容。解决时优先缩短反馈走线、去掉反馈节点上的多余铺铜,其次才是加隔离电阻。

现场三:两个跟随器并联扩流,一个烫一个凉。两个运放输出直接并联,失调电压的微小差异会让失调小的那个承担几乎全部电流,另一个几乎不工作。这属于典型的均流失败。正确做法是每个输出各串一个小电阻(几欧到几十欧)再并接,用电阻压降强迫均流;或者干脆换用输出电流足够的单只器件。并联跟随器在音频缓冲里偶尔能见到,但必须配合均流电阻,否则就是随机挑选一个器件去烧。

5.2 直流精度与布局相关的两个现场

现场四:输入悬空时输出乱飘,手一靠近读数就变。现象是高阻输入端对人身感应敏感,读数随机跳动。原因通常是 PCB 表面漏电:助焊剂残留、灰尘、潮气在输入焊盘与相邻走线之间形成 10⁹~10¹¹ Ω 的漏阻,与兆欧级的源阻抗构成分压。更隐蔽的是保护环没做:高阻节点周围缺少一圈由低阻抗点驱动的等电位环,漏电流全部灌进输入。解决是清洗板面、输入节点做保护环并接到缓冲后的低阻点、缩短输入走线、必要时用聚四氟乙烯支柱或开槽隔离。这类问题用万用表查不出来,只能靠现象和布局复盘。

现场五:单电源供电,输入接近 0 V 时输出卡在 1 V 不动。原因是输入共模范围不含负轨。轨到轨输出不代表轨到轨输入,很多运放的共模输入下限比负电源高 1~2 V,超出后输入级饱和,反馈环失效,输出锁在某个电平。查法是给一个缓慢下降的三角波,看输出在哪个输入电平开始不跟随。解决是换共模范围真正包含负轨的器件,或者给输入加负电源、抬高静态工作点。这个问题在电池供电的便携测量设备上尤其常见,且低温下共模范围还会缩窄。

6. 选型与验证的取舍:把跟随器当成一个受约束的环节

走到这里,跟随器的设计其实可以归成三个互相牵制的变量:输入侧要低偏置电流和低输入电容,输出侧要低高频输出阻抗和足够的相位裕度,环路里还要在 Riso 带来的增益误差与容性负载稳定性之间选一个平衡点。三者不可能同时最优。高阻测量前端选 CMOS 输入,就得接受更大的失调电压和 1/f 噪声;为了驱动长线串 47 Ω,就得接受千分之几的增益误差,或者在反馈点位置上下功夫。

验证上,我更信阶跃响应而不是开环增益曲线。用 1 kHz 方波、上升时间小于 100 ns 的源去激励,看输出的过冲百分比,再反推相位裕度:过冲 0% 说明相位裕度在 90° 以上,4.3% 对应约 65°,16% 对应 45°,25% 对应 35°。这个方法不需要网络分析仪,一台示波器就够,能覆盖从直流精度到高频稳定性的全部关键信息。再配一个直流扫描:输入从负共模极限缓慢扫到正极限,看输出跟随误差在哪个区间开始恶化,共模范围的问题会立刻暴露。

血泪教训是有一年做多通道电阻扫描板,样机在实验室一切正常,装到现场机箱里 Reading 就开始跳。查了两天才发现是通道之间的模拟开关切换时,跟随器输出端的容性负载把建立时间拖长,前一通道的残余电荷污染了后一通道的采样。从那以后我每次画跟随器,都强制走一遍“接最坏负载 + 扫共模范围 + 看阶跃过冲”这三步,不管这一级看起来有多简单。

希望这些取舍和排查思路,能帮你在下一块板上少走一段弯路。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进