昨天写了这个 AD 的芯片,但其实有几个点很值得引申出来写。
按数据手册名义值:en(1 kHz) ≈ 4.2 nV/√Hz,in ≈ 0.6 pA/√Hz,0.1–10 Hz 输入噪声 ≈ 0.13 µV_p-p(据此反推 1/f 转折频率约 2.6 Hz)。
大家有注意到这句话说,据此反推 1/f 转折频率约 2.6 Hz。
取运放输入电压噪声的功率谱密度模型
其中 是白噪声密度(平坦), 是 1/f 噪声项。
用数据手册给的两条“锚点”来标定:
白噪声密度:(1 kHz 处)
低频区域积分噪声:0.1–10 Hz 的输入噪声 (把它换算成 RMS)
在区间 上做均方积分
白噪声面积面积
把手册的 p-p 换算成 rms:常用高斯近似 。 代入可解出
其中 定义为 1/f 与白噪声相等的“转折频率”。
用上面的公式直接算了一遍(代码与输出已贴在下方):
factor en_rms[nV] k [V^2] f_c[Hz]
6.2 20.968 5.755e-17 3.262
6.4 20.312 5.167e-17 2.929
6.6 19.697 4.633e-17 2.626
6.8 19.118 4.144e-17 2.349
7.0 18.571 3.697e-17 2.096
名义计算(factor=6.6):
en_rms = 19.697 nV
k = 4.633e-17 V^2
f_c = 2.626 Hz
将 按 6.6 换算:
解得
得到
p-p→rms 的经验因子取 6.2–7.0 都有人用;范围内 变化如下(已在代码里打印):
factor=6.2 → Hz
factor=6.6 → Hz(本文名义值)
factor=7.0 → Hz
公式核心:,由此得 再得 。
用 AD8634 的手册指标代入,得到 ****,和我们前面说的一致;结果对 p-p→rms 的换算因子有轻微敏感度,但数量级稳定在 2–3 Hz。
# 推导 1/f 转折频率 f_c 的数值演示
# 依据:AD8634 数据手册给出的噪声参数(名义值)
# en_white(1kHz) = 4.2 nV/√Hz
# 0.1~10 Hz 输入噪声(峰-峰) = 0.13 µVpp
# 模型:S_e(f) = en_white^2 + k/f
# 令在 [f1, f2]=[0.1, 10] Hz 上的均方根:
# ∫(en_white^2 + k/f) df = en_rms^2
# => en_rms^2 = en_white^2*(f2-f1) + k*ln(f2/f1)
# 解得 k,再取 f_c = k / en_white^2
import math
en_white = 4.2e-9 # V/√Hz
v_pp = 0.13e-6 # Vpp (0.1~10 Hz)
f1, f2 = 0.1, 10.0
def vpp_to_rms(vpp, factor=6.6):
# 经验:高斯噪声 p-p ≈ factor * σ,常用 factor≈6.6(~±3.3σ)
return vpp / factor
# 中心换算:factor=6.6,并做灵敏度(6.2~7.0)
factors = [6.2, 6.4, 6.6, 6.8, 7.0]
print("factor en_rms[nV] k [V^2] f_c[Hz]")
for fac in factors:
en_rms = vpp_to_rms(v_pp, fac)
# 解 k
A = (f2 - f1)
B = math.log(f2/f1)
k = max(en_rms**2 - en_white**2 * A, 0.0) / B
f_c = k / (en_white**2)
print(f"{fac:>5.1f} {en_rms*1e9:>9.3f} {k: .3e} {f_c:>7.3f}")
# 采用 factor=6.6 的名义值
fac = 6.6
en_rms = vpp_to_rms(v_pp, fac)
A = (f2 - f1)
B = math.log(f2/f1)
k = max(en_rms**2 - en_white**2 * A, 0.0) / B
f_c = k / (en_white**2)
print("\n名义计算(factor=6.6):")
print(f" en_rms = {en_rms*1e9:.3f} nV")
print(f" k = {k:.3e} V^2")
print(f" f_c = {f_c:.3f} Hz")