首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >开源高等级校准器:电流源0至40mA,0.001%的设计

开源高等级校准器:电流源0至40mA,0.001%的设计

作者头像
云深无际
发布2026-06-09 20:14:42
发布2026-06-09 20:14:42
400
举报
文章被收录于专栏:云深之无迹云深之无迹

昨天写了一篇残稿是关于 MMB 这个产品的,适用于工业场景的快速校准。

百元校准器:MMB 万用表伴侣(残稿篇)

除了压流,就是一些温度的模拟了
除了压流,就是一些温度的模拟了

除了压流,就是一些温度的模拟了

比较丰富

然后分辨率是这样的
然后分辨率是这样的

然后分辨率是这样的

是不是,看着还行?(其实不行,这里面的数据展开就不嘻嘻了),那有没有适合普通人的 DIY 产品呢?其实从来也不缺。

代码语言:javascript
复制
https://www.elektormagazine.com/labs/voltage-current-calibrator-0-to-10v-and-0-to-40ma-0001

这是最原始的地址。

开电压电流校准仪

大概这这样
大概这这样

大概这这样

参数:

电压输出:0 至 ±10V。 电压步进:20μV 分辨率。 电流输出:0 至 40mA。 电流步进:100nA 分辨率。 整体精度:在 21°C 时为 10ppm(即0.001%)。

项目

MMB校准器

AD5791 校准源项目

电压分辨率

10 µV / 0.1 mV / 1 mV

约 20 µV

10 V 点误差

约 ±3 mV

目标 10 ppm,即 10 V 约 ±100 µV

电流分辨率

1 µA

标称 100 nA,硬件约 200 nA 级

20 mA 点误差

约 ±6 µA

明显更高,但依赖老化/校准/热设计

主要用途

工业现场校准

精密电压/电流源原型

(和 MMB 简单对比一下,详细分析之后补充)

这个设计的器件是重要的,基准采用 MAX6350ESA 5V 低漂移基准源,配合低噪声运放 AD8676 产生 ±10.48V 基准;DAC选用 AD5791(20位、1ppm 线性度),大幅简化了软件校准流程;电流源由仪表运放 AD8276、PZT1222 晶体管及 100Ω 超低温漂精密电阻(0.2ppm/°C)构成。

布局是比较重要的
布局是比较重要的

布局是比较重要的

当然了,韩老师也有设计过这个东西:

性能更好
性能更好

性能更好

高端的东西朴实无华,就是堆料
高端的东西朴实无华,就是堆料

高端的东西朴实无华,就是堆料

总之韩老师这个校准器的性能嘎嘎猛
总之韩老师这个校准器的性能嘎嘎猛

总之韩老师这个校准器的性能嘎嘎猛

聊聊设计

DC 输出的话,直流链没什么好说的,基准和电阻,关键是看看电流源吧,这个新奇。

就这部分
就这部分

就这部分

看设计是“DAC 设定电压 + AD8276 差分伺服 + Q1 串联调整管 + R10 精密采样电阻”闭环压控电流源,想输出电流:

原设计中:

所以:

也就是:

另外这个精密电流源主要由 U7 AD8276、Q1 PZT2222、U8 AD8677、R10 100Ω 组成,Q1 提供负载电流,电流流过 R10、继电器、负载后回到地;R10 上的电压被测量并和 AD5791 的 DAC 设定电压比较,输出电流为 ,电流被软件限制到 40 mA,以减少 R10 和 Q1 发热造成的漂移。

先看电流路径

在电流模式下,继电器 K1 把输出端切到电流源路径,电流大致这样流:

代码语言:javascript
复制
+12V
  │
  │
 Q1 PZT2222A
  │
  │
 R10 = 100Ω 精密采样电阻
  │
  │
 K1 继电器触点
  │
  │
 J6 输出端
  │
  │
 外部负载
  │
  │
 J7 / GNDA

所以它是一个 高边串联调整型电流源,Q1 像一个可调阀门,R10 是检测电流的标准电阻,AD8276 + AD8677 负责闭环控制这个阀门。

AD8276 是“差分伺服”

AD8276 是单位增益差分放大器,内部有 4 个激光修调的 40 kΩ 电阻,适合做高 CMRR 的差分检测和伺服控制。

它的标准差分关系可以理解为:

在这个电流源里,大致连接关系是:

AD8276 +IN ← DAC 缓冲输出 VDAC AD8276 -IN ← GNDA AD8276 REF ← U8 缓冲后的 R10 下端电压 AD8276 OUT → Q1 基极 AD8276 SENSE ← Q1 发射极 / R10 上端

所以闭环目标变成:

也就是:

而 R10 两端电压就是:

所以闭环最终强迫:

于是得到:

这就是整个电流源的核心。

AD8677 缓冲 R10 下端电压

U8 AD8677 看起来接成了电压跟随器,检测 R10 下端电压,然后把这个电压送到 AD8276 的 REF 脚。

为什么要这样做?

因为 R10 不是直接接地的,它下面还接着继电器、输出端、负载;负载电压会变化,所以 R10 的下端不是固定 0 V,若只把 R10 上端和地比较,就会把负载电压混进去,电流就不准。

U8 的作用是把 R10 下端电压作为“参考基准”送给 AD8276,于是 AD8276 控制的是 R10 两端的差分电压,而不是某个点对地的电压,让系统真正控制:

而不是控制:

Q1 PZT2222A 的作用:功率调整管

AD8276 本身不能输出 40 mA 给负载,它只是控制器。真正提供负载电流的是 Q1, NPN 管,接法类似射极跟随器:

这个管子老演员了,忘了上次看到是什么时候
这个管子老演员了,忘了上次看到是什么时候

这个管子老演员了,忘了上次看到是什么时候

collector → +12V base → AD8276 输出 emitter → R10 上端

AD8276 输出升高,Q1 基极升高,Q1 发射极电压升高,通过 R10 和负载的电流增大,反之 AD8276 输出降低,Q1 导通变弱,电流减小。

闭环会自动调节 Q1,直到:

所以 Q1 的 、电流增益 、温漂不会直接决定输出电流精度。它们主要影响:需要多少基极驱动电流,剩余合规电压,发热,以及环路稳定性。

真正决定电流比例的是:

和:

为什么用 AD8276,而不用普通运放直接比较?

看着就是一个减法器?因为 R10 两端有共模电压,而且这个共模电压会随负载变化,比如输出 20 mA,负载是 100 Ω:

R10 上的压降为:

那么 R10 两端可能大约在 2 V 和 4 V 附近,而不是 0 V 和 2 V;负载换了以后,R10 两端的共模电压也会变。

AD8276 能把 R10 两端的差分电压提取出来,同时抑制共模;数据手册说明 AD8276/AD8277 是单位增益差分放大器,内部电阻经过激光修调,具有高 CMRR 和低增益漂移;典型应用也包括电压/电流测量以及电流源。

为什么电流只限制到 40 mA?

因为 R10 是 100 Ω,电流越大,R10 自热越明显。

40 mA 时:

45 mA 时:

这对一个精密 100 Ω 电阻来说已经不小,即使 R10 标了很低的 TCR,实际仍然会有自热温升,导致阻值变化。

电流源的比例关系是:

所以 R10 只要变一点,电流就跟着变。

如果 R10 变化:

那么电流相对误差近似为:

文档中还强调 R10 的温度系数要很低,并且 Q1 要远离 R10 和参考源,是非常合理的。

合规电压怎么估算?

这个电流源由 +12 V 供电,最大负载电压不是无限的;在电流路径中至少要消耗:Q1 的 VCE 余量,R10 上的压降,继电器/走线压降,以及外部负载电压,总之阻性器件都会损失一些电压。

近似有:

忽略继电器压降,取:

40 mA 时:

如果 Q1 至少需要 0.5 V 到 1 V 余量,那么:

也就是大约:

所以 40 mA 时最大负载电阻大约是:

到:

实际还要扣掉继电器触点、导线、Q1 发热后的余量,所以工程上不要按极限设计,总之就是低压电流校准源,适合校准 DMM 电流档、示波器/模块输入、低阻负载,但不适合驱动高阻负载。

分辨率怎么来的?

AD5791 使用约 ±10.48 V 参考时,DAC 步进约为:

经过 100 Ω 转换为电流:

所以从硬件单码角度看:

文档标称 100 nA 分辨率,更像是显示/设定分辨率或软件层面的输入粒度;如果严格按 计算,硬件自然步进约为 200 nA。原文档也说 DAC 参考约 ±10.48 V,步进约 20 µV。

误差主要来自哪里?

这个电流源的误差可以写成:

展开近似:

主要误差源包括:AD5791 输出误差和噪声,AD8276 失调、CMRR、增益误差,AD8677 失调和漂移,R10 绝对误差、温漂、自热,Q1 发热影响附近温度;继电器触点电阻和热电势,PCB 走线压降,输出保护器件漏电,软件校准误差。

但是其中最关键的是:R10 的 Kelvin 采样,以及R10 自热,AD8276 的共模误差,最后才是DAC 设定电压准确度(地表最强了)

为什么需要电流校准?

因为 AD8276 的系统失调是百微伏级,数据手册中,B 级系统失调典型 100 µV、最大 200 µV;增益误差最大也可到 0.02%;折算到 100 Ω 电流源:

这比 100 nA 或 200 nA 的设定分辨率大很多,所以这类电流源不能靠初始精度直接达到目标,必须做软件校准。

电流模式用 10 µA 和 30 mA 两点校准,就是为了校掉偏移和增益误差。

设计的闭环过程

设用户想输出:

软件计算 DAC 电压:

然后闭环发生:AD5791 输出 2 V,U6 缓冲这个 2 V,AD8276 看到 +IN = 2 V,-IN = 0 V,U8 把 R10 下端电压送到 AD8276 REF,AD8276 驱动 Q1 基极,Q1 改变通过 R10 和负载的电流,当 R10 两端电压 = 2 V 时,环路平衡;电流稳定为 2 V / 100 Ω = 20 mA。

这个电流源设计得好在哪里?

它的优点是:电流由 VDAC/R10 决定,公式简单,DAC 可编程,电流连续可调;AD8276 做差分伺服,能处理 R10 两端共模变化;Q1 承担功率,控制芯片不直接带负载,R10 用低 TCR 精密电阻,适合校准源;继电器切换电压/电流模式,漏电小。

如何改进?

把R10 换成四端精密采样电阻;现在图上是 1206,虽然标了 0.2 ppm/℃,但 40 mA 时有 0.16 W 自热。更好的的设计应可使用四端 Kelvin 精密电阻,而且个人看0.1 W 不够,建议 0.5 W 或 1 W 余量;基本电阻要求是低 TCR,低热电势,最后需要远离 Q1、LDO、DC-DC、继电器线圈这些东西。

也可以提高合规电压,如果想让 40 mA 驱动更高负载,可以把 Q1 供电从 +12 V 提高,比如 +18 V 或 +24 V。

算电流设定、R10 功耗和负载合规范围:

代码语言:javascript
复制
I =   1.0 mA
  VDAC / VR10 = 0.1000 V
  R10 power   = 0.10 mW
  Vload max   = 11.10 V
  Rload max   = 11100.0 ohm
I =  10.0 mA
  VDAC / VR10 = 1.0000 V
  R10 power   = 10.00 mW
  Vload max   = 10.20 V
  Rload max   = 1020.0 ohm
I =  20.0 mA
  VDAC / VR10 = 2.0000 V
  R10 power   = 40.00 mW
  Vload max   = 9.20 V
  Rload max   = 460.0 ohm
I =  30.0 mA
  VDAC / VR10 = 3.0000 V
  R10 power   = 90.00 mW
  Vload max   = 8.20 V
  Rload max   = 273.3 ohm
I =  40.0 mA
  VDAC / VR10 = 4.0000 V
  R10 power   = 160.00 mW
  Vload max   = 7.20 V
  Rload max   = 180.0 ohm

小结

这个电流源的本质是:

实现方式是:AD5791 产生精密设定电压,U6 缓冲 DAC,AD8276 比较 VDAC 和 R10 两端电压,AD8677 缓冲 R10 下端作为 REF,AD8276 驱动 Q1,Q1 调节流过 R10 和负载的电流,继电器把输出端切到电流模式

设计得比较巧妙的地方是:AD8276 不是直接测 R10 对地电压,而是通过 U8 把 R10 下端作为 REF,使 AD8276 闭环控制 R10 两端的差分电压。这样负载电压变化不会直接破坏电流设定。

学到新知识了!开熏~等我有米挑战一下这个设计。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开电压电流校准仪
  • 聊聊设计
  • 先看电流路径
  • AD8276 是“差分伺服”
  • AD8677 缓冲 R10 下端电压
    • 为什么要这样做?
  • Q1 PZT2222A 的作用:功率调整管
  • 为什么用 AD8276,而不用普通运放直接比较?
  • 为什么电流只限制到 40 mA?
  • 合规电压怎么估算?
  • 分辨率怎么来的?
  • 误差主要来自哪里?
  • 为什么需要电流校准?
  • 设计的闭环过程
  • 这个电流源设计得好在哪里?
  • 如何改进?
    • 算电流设定、R10 功耗和负载合规范围:
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档