请问现在是多少度?没关系,在运行的 OP 也在同样感知着周遭的一切。

红框里的公式:
含义:
:在 25℃ 时测得的失调电压(这里取 300 µV 作为例子)
:失调电压的温度系数(这里是 ±3.5 µV/℃)
:当前环境温度
℃:相对 25℃ 的温度变化量
就是“25℃ 的起点 + 每升高/降低 1℃ 多漂 3.5µV * 温差”。
因为温漂可能是正的也可能是负的(实际芯片有分布),所以画了两种极端情况:
+3.5 µV/℃(随温度升高,Vos 变大)
−3.5 µV/℃(随温度升高,Vos 变小)
以 +3.5 µV/℃ 这一列为例(左边那列):
℃
所以表格在 25℃ 这一行,两列都是 300µV(漂移为 0)。
℃
对 +3.5 µV/℃:
℃℃
对 −3.5 µV/℃:
℃℃
这两个值就对应表格最后一行的 650µV / −50µV,底下红框里的示例也写了这一行的计算。
℃
+3.5 µV/℃:
℃
−3.5 µV/℃:
℃
依次把 T 换成 0℃、50℃、85℃,都按同一个公式算,就得到整张表所有的数值。 两列代表:在 datasheet 允许的“±3.5µV/℃”范围内,最小 / 最大 可能的 Vos 曲线。
实际芯片的 Vos(T) 会落在这两条“上下包络”之间。
这个电路还是之前那个 同相增益 100 的放大器:
任何在输入端出现的 Vos,都会被乘以 100 变成输出偏移:
举几个温度点:
如果输入信号只有 1mV,理想输出是 100mV,那这些偏移就是:
25℃:输出 100mV+30mV → 30% 增益误差
125℃(650µV 情况):100mV+65mV → 65% 误差
125℃(−50µV 情况):100mV−5mV → −5% 误差
这张“温漂表”要告诉我们的就是:
只要闭环增益很高,小小几十/几百 µV 的 Vos 随温度漂移,放到输出端就会变成几 10 mV 的大偏差,所以在高增益前端必须选低 Vos + 低 TCVos 的运放,或者做温度/零点校准。
可以把这张表扩展成“输出随温度变化的曲线”,画一条 Vout_offset(T) 的图,看在 −25~125℃ 范围内整个放大器的 DC 输出飘成什么样子。
好,这里借着这三张图,把“温漂 → 输出误差”的关系讲完整。

蓝线:**+3.5 µV/°C**
橙线:−3.5 µV/°C
可以看到:
在 25℃:两条线都交在 300 µV —— 这是“室温初始 Vos”。
温度越高:
+TC 曲线一路爬升,到 125℃ 变成 650 µV;
−TC 曲线一路下降,到 125℃ 变成 −50 µV。
温度越低(−25℃):
+TC 降到 125 µV;
−TC 升到 475 µV。
这两条线就是 datasheet 里说的“±TC 包络”:真实芯片的 Vos(T) 只要在这两条线之间,都算满足规格。
第二张图把闭环增益 = 100 放大后的结果画出来(理想输出 100 mV):

纵轴:Vout 误差(相对理想 100mV),单位 mV
横轴:温度
能看到:
25℃:
Vos = 300 µV → 输出偏移 = µ
图上两条线在 T=25℃ 都是 +30 mV
125℃:
+TC:Vos=650µV → 偏移 = 65mV
−TC:Vos=−50µV → 偏移 = −5mV
−25℃:
+TC:Vos=125µV → 偏移 = 12.5mV
−TC:Vos=475µV → 偏移 = 47.5mV
所以对于一个只有 1mV 输入→100mV 输出的电路:温度变化会让输出在 −5mV 到 +65mV 之间跑;也就是输出会在 95mV~165mV 范围里晃。

第三张图把上面的偏移换算成“相对理想输出的百分比”:
25℃:
两条线都在 +30% 左右(因为 30mV/100mV)
125℃:
+TC:65mV → +65%
−TC:−5mV → −5%
−25℃:
+TC:12.5mV → +12.5%
−TC:47.5mV → +47.5%
能直观看到:
在高增益(×100)的小信号放大电路里,一颗“看起来还行”的运放(室温 Vos=300µV、TC=±3.5µV/℃),会让输出在工作温区内出现 几十个百分点级别的误差。
这就是为什么:精密小信号放大器一定要选 Vos 很小、温漂很低的零漂运放,或者做 多点温度校准;否则单靠 datasheet 上“几百 µV + 几 µV/℃” 的普通指标,在 ×100、×1000 这类增益下,误差巨大。
import numpy as np
import matplotlib.pyplot as plt
# Parameters
Vos_25 = 300e-6 # 300 µV at 25°C
TC = 3.5e-6 # 3.5 µV/°C (use ± later)
gain = 100 # closed-loop gain
Vin = 1e-3 # 1 mV signal
Vout_ideal = gain * Vin
# Temperature range
T = np.linspace(-25, 125, 300) # -25°C ~ 125°C
# Vos(T) for +TC and -TC
Vos_plus = Vos_25 + TC * (T - 25)
Vos_minus = Vos_25 - TC * (T - 25)
# Output offsets
Vout_plus = gain * (Vin + Vos_plus)
Vout_minus = gain * (Vin + Vos_minus)
# Error percentage relative to ideal output (100 mV)
err_plus = (Vout_plus - Vout_ideal) / Vout_ideal * 100
err_minus = (Vout_minus - Vout_ideal) / Vout_ideal * 100
# Plot Vos vs T
plt.figure(figsize=(6,4))
plt.plot(T, Vos_plus*1e6, label="+3.5 µV/°C")
plt.plot(T, Vos_minus*1e6, label="-3.5 µV/°C")
plt.axhline(300, linestyle="--", linewidth=0.8, label="25°C: 300 µV")
plt.xlabel("温度 / °C")
plt.ylabel("Vos / µV")
plt.title("输入失调电压 Vos 随温度变化")
plt.grid(True, linestyle=":")
plt.legend()
plt.tight_layout()
plt.show()
# Plot output offset vs T
plt.figure(figsize=(6,4))
plt.plot(T, (Vout_plus - Vout_ideal)*1e3, label="输出偏移 (+TC)")
plt.plot(T, (Vout_minus - Vout_ideal)*1e3, label="输出偏移 (-TC)")
plt.axhline(0, linestyle="--", linewidth=0.8)
plt.xlabel("温度 / °C")
plt.ylabel("Vout 误差 / mV")
plt.title("高增益放大器输出偏移 vs 温度")
plt.grid(True, linestyle=":")
plt.legend()
plt.tight_layout()
plt.show()
# Plot error percentage vs T
plt.figure(figsize=(6,4))
plt.plot(T, err_plus, label="+TC")
plt.plot(T, err_minus, label="-TC")
plt.axhline(0, linestyle="--", linewidth=0.8)
plt.xlabel("温度 / °C")
plt.ylabel("增益误差 / %")
plt.title("输出相对理想值的误差百分比 vs 温度")
plt.grid(True, linestyle=":")
plt.legend()
plt.tight_layout()
plt.show()