news 2026/10/31 5:06:36

从1nA到10mA:DIY低电流源表架构与PCB实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从1nA到10mA:DIY低电流源表架构与PCB实战

前阵子在某实验室帮忙测一批光敏器件的暗电流,读数落在几百皮安到几纳安之间。台面上那台进口源表倒是能测,可只有一台,排队排到下周。同组的人开玩笑说,要不咱们自己搭一个。笑归笑,回去我真把这件事认真算了算账:能覆盖 ±1nA 到 ±10mA 这个区间的商用源表,价格基本都在五位数往上,而我要测的东西,本质上只需要一个能双向灌/拉电流、顺带把电压读回来的通道。于是我花了大概三周业余时间,从画板子到调通 1nA 档,中间炸过运放、烧过模拟开关、被一个 0.3pA 的漂移折腾了整整两天。这篇就把整个 DIY 源表的过程摊开讲清楚——架构怎么定、电阻怎么算、保护环怎么画、量程切换为什么会给你一个离谱读数,以及哪些钱绝对不能省。适合有一定模拟电路基础、想自己动手做一台低电流源表的人看,也适合只是想搞明白"源表凭什么叫源表"的读者。

1. 先把"1nA"这件事的分量掂清楚

1.1 源表不是电源加万用表的拼装货

很多人第一次听到源表,第一反应是"不就是个可调电源串个电流表"。这个理解在毫安级以上勉强成立,一旦往下走到微安、纳安,就彻底不成立了。源表的核心特征是四象限工作:它既能对外输出电流(源出),也能吸收外部电流(灌入),输出电压同理,正负两个方向都能推、都能拉。这意味着输出级必须是一个双向的、能过零的功率级,而不是一个单向的稳压器。

更关键的差别在于源和测共用同一组端子。你设定输出 1V,同时读回流过端子的电流,这个电流既可能是你推出去的,也可能是外部器件灌进来的,仪器得能分辨方向和大小。这就决定了电路拓扑上,输出级和测量级必须共用一个节点,而这个节点同时又是精度最敏感的地方。我一开始想图省事,用"电压源 + 串联采样电阻 + 差分放大"的方案,搭出来一测就发现问题:采样电阻本身会吃掉压降,输出电压就不准了;而且换量程要换采样电阻,继电器一切换,输出就抖一下。最后还是老老实实回到"电压控制电流源 + 独立跨阻放大器"的双通道结构。

1.2 七个数量级跨度,是这台机器全部的难点

±1nA 到 ±10mA,跨度是 10⁷,也就是七个数量级。这个跨度不是"加个可调旋钮"能解决的,它意味着整个信号链在不同量程下的主导误差源完全不同。在 10mA 档,你操心的是采样电阻的温漂、运放的输出摆幅、走线的压降;到了 1nA 档,你操心的是 PCB 表面那层看不见的助焊剂残留、运放输入端几个皮安的偏置电流、甚至空气湿度。

我把这条链路拆开算过一笔账:1nA 满量程,如果允许 0.1% 的误差,那么整个通路里所有漏电流之和不能超过 1pA。1pA 是什么概念?一块没洗干净的 FR4 板子,在两个相邻焊盘之间加上 5V 压差,表面漏电流轻松就能到几十上百皮安。也就是说,同一个物理误差在低量程下会被放大七个数量级,这是 DIY 源表最容易翻车的地方,也是我后面要花整整一章讲 PCB 的原因。

量程档位满量程电流允许误差(0.1%)主导误差源
10mA10 mA10 μA采样电阻温漂、走线压降
1mA1 mA1 μA运放失调、电阻精度
100μA100 μA100 nA运放偏置电流开始显形
1μA1 μA1 nAPCB 漏电开始显形
100nA100 nA100 pA保护环、清洗工艺
10nA10 nA10 pA运放 Ib、湿度、线缆
1nA1 nA1 pA上面全部叠加

1.3 为什么不能"一个电阻打天下"

有人会想,用一个 250Ω 的采样电阻覆盖 10mA,再用一个超高分辨率的 ADC 去读 1nA 不就行了?10mA 在 250Ω 上产生 2.5V,1nA 在 250Ω 上产生 250nV。要分辨 250nV,同时满量程是 2.5V,动态范围是 10⁷,也就是需要约 23 位无噪声分辨率。市面上 24 位 ΔΣ ADC 标称 24 位,实际有效位在低速下也就 20~21 位,而且前端放大器的噪声早就把 250nV 淹没了。

所以分档是绕不过去的。我的做法是每一档对应一个独立的反馈电阻,满量程统一折算到 ±2.5V 送到 ADC,这样 ADC 永远工作在最佳区间,量程切换本质上就是换一个反馈电阻。听着简单,但换电阻这个动作本身会引入电荷注入、寄生电容突变、稳定时间延长等一堆问题,后面单独讲。

2. 架构定死之前,先想清楚输出级和测量级怎么共存

2.1 输出级选 Howland 电流泵的三个理由

输出级要解决的问题是:给定一个控制电压 Vin,在负载上产生一个与负载无关的电流 Iout,且能双向过零。常见方案有三种:运放加 MOSFET 的恒流源、专用电流输出 DAC、以及 Howland 电流泵。

第一种方案的问题在于单向性,NMOS 只能拉电流,要双向就得推挽,推挽就有交越失真和偏置漂移。第二种方案芯片内部往往带斩波,输出端有开关噪声,在纳安级测量时会串到测量通道里去。最后我选了改进型 Howland 电流泵,理由很实在:它只用一片运放加四个电阻,输出阻抗高,双向自然过零,而且输出电流直接由电阻比决定,精度可以做得很高。

基本拓扑是这样:运放同相端接 Vin 经 R1,反相端接输出反馈 R2,输出端经 Rs 到负载,负载另一端接地,再从负载端经 R3 反馈回反相端,R4 从反相端接地。当 R4/R3 = R2/R1 时,输出电流 Iout = Vin × (R2/R1) / Rs。取 R1=R2=R3=R4=10kΩ 的简并形式,公式退化成 Iout = Vin / Rs。

Rs 就是那个决定量程的采样电阻。要给到 ±10mA 满量程、Vin 范围 ±2.5V,Rs 取 250Ω;要覆盖 1nA,Rs 得取到 2.5GΩ。这里立刻撞上第一个现实问题:2.5GΩ 的精密电阻又贵又难买,而且阻值公差普遍在 1% 以上。后面 3.2 节专门讲怎么绕过去。

提示:Howland 泵的输出阻抗不是无限的,负载变化仍会带来误差。我的做法是在输出串联一个 100Ω 的限流电阻,既保护了运放,也把输出阻抗抬高了三个数量级,代价是顺从电压损失一点,实测可以接受。

2.2 测量级的反馈电阻表,是算出来的不是猜的

测量级用跨阻放大器(TIA),这是低电流测量的标准答案。原理简单到一句话:运放反相输入端接被测电流,同相端接地,反馈电阻 Rf 跨在输出和反相端之间,输出 Vout = -Iin × Rf。反相端是虚地,被测器件两端的压降几乎为零,这是它能测纳安电流的根本原因——压降小,漏电通路就不存在。

关键在于 Rf 怎么选。我定的规则是每个量程满量程时输出刚好 ±2.5V,这样 ADC 的输入范围被充分利用,信噪比最好。于是每个档位的 Rf = 2.5V / I_fullscale。

量程Rf 理论值实际选用备注
10 mA250 Ω250 Ω 0.1%注意功耗,10mA²×250Ω=25mW
1 mA2.5 kΩ2.5 kΩ 0.1%
100 μA25 kΩ25 kΩ 0.1%
1 μA2.5 MΩ2.5 MΩ 0.1%普通薄膜电阻即可
100 nA25 MΩ25 MΩ 0.1%开始要注意封装漏电
10 nA250 MΩ250 MΩ 1%高阻电阻,需玻璃封装
1 nA2.5 GΩ2.5 GΩ 或 T 型网络后面详述

这张表是整个项目的骨架,后面所有的布局、屏蔽、清洗工艺,都是为了保住最后一行的 1pA 精度。

2.3 量程切换的瞬间,电路里到底发生了什么

量程切换看着只是"换个电阻",实际上是把一个带电的电容从一个节点上拔下来,再插到另一个节点上。跨阻放大器的反馈网络里,Rf 上并联着几皮法的寄生电容,切换瞬间这个电容上的电荷要重新分配,输出端就会打出一个尖峰。我用机械继电器切 250Ω 到 25kΩ 这几档,尖峰幅度在几百毫伏,衰减时间几十微秒,无所谓;但切到 2.5GΩ 那一档,因为时间常数 Rf×Cf 变成了秒级,尖峰能挂好几秒才稳下来。

这带来两个直接后果。一是程序里必须做"切换后延时确认",我设的是切档后丢弃前 500ms 的采样,再取后面 20 个点做中值滤波。二是切换只能在没有负载电流的时候做,否则大电流档切换到大电阻档的瞬间,2.5GΩ 上会产生 2.5GΩ × 10mA = 25MV 的理论压降(当然被运放供电轨钳死),运放直接进饱和,恢复要很久。所以我的控制逻辑里强制先关断输出,等 100ms,再切档,再重新使能。

2.4 数字侧的分辨率预算,别在这里省

DAC 负责给输出级提供 Vin,ADC 负责读回 TIA 的输出。这两个器件的位数直接决定了系统的"细粒度"。

先算 DAC。16 位 DAC 在 0~2.5V 范围下 LSB 是 38μV。在 10mA 档(Rs=250Ω),对应的电流步进是 38μV/250Ω = 152nA,相对满量程是 0.0015%,够用。在 1nA 档(Rs=2.5GΩ),电流步进是 38μV/2.5GΩ = 15fA,理论上远远够。所以16 位 DAC 足以覆盖整个范围,瓶颈从来不在 DAC。

再看 ADC。同样 16 位,满量程 ±2.5V,LSB 是 76μV。在 1nA 档,对应电流是 76μV/2.5GΩ = 30fA。只要前端噪声不超过几个 LSB,读数就是有效的。我实际选的是 16 位、差分输入、内置 PGA 的 ΔΣ ADC,采样率压到 20SPS,这样能拿到最好的噪声性能。低速换低噪,在源表这种场合是稳赚不赔的交易。

注意:ADC 的参考电压必须和 DAC 的参考电压同源或者至少温度特性一致。我第一版用了两颗不同的基准,室温下对得上,开空调降温 5 度之后两个通道的比值飘了 30ppm,做比值测量时误差很明显。

3. 器件选型的几道生死线

3.1 运放的偏置电流,必须比最小量程低两个数量级

这是选型的第一原则,也是最容易翻车的地方。1nA 量程,如果运放输入偏置电流 Ib 是 10pA,那就是 1% 的固定误差,而且随温度变化可能翻几倍。所以我的要求是Ib ≤ 1pA,留出两个数量级的余量。

满足这个条件的运放主要是 CMOS 输入或者斩波稳零结构。CMOS 输入的 Ib 典型值在 1pA 以下,但要注意它随温度指数上升,每升 10℃ 大约翻一倍,所以厂商标的数据通常是在 25℃ 下测的。斩波稳零运放能同时把失调电压压到 μV 级,代价是输入端的开关噪声会抬高电流噪声谱密度,而且斩波频率会在频谱上留下一个尖峰。

我最后的取舍是:测量通道用斩波稳零,因为失调电压在 TIA 里会直接转换成输入端的一个等效电流源,低失调比低噪声更值钱。你可能会问,TIA 反相端是虚地,Vos 怎么会产生误差?因为 Vos 会通过被测器件的内阻形成一个误差电流。如果被测器件是纯电流源(内阻极高),几乎没影响;但如果测的是一个高阻值电阻的漏电,内阻只有几十兆欧,Vos 哪怕只有 100μV,也会产生 100μV/10MΩ = 10pA 的误差,正好吃掉整个 1nA 档的预算。

运放参数1nA 档要求10mA 档要求说明
输入偏置电流 Ib≤1 pA≤1 nA低压档严苛得多
失调电压 Vos≤50 μV≤500 μV影响被测点实际电压
电压噪声≤20 nV/√Hz不敏感折算成电流噪声要除以 Rf
电流噪声≤0.5 fA/√Hz不敏感1nA 档的决定性指标
增益带宽积1 MHz 足够≥10 MHz高阻档要压低带宽换稳定

3.2 2.5GΩ 买不到也买不起,T 型网络和它的代价

2.5GΩ 的精密电阻,现货少、交期长、单价能顶半块板子的钱,公差还只有 1%~5%。我试过两个替代思路。

思路一:降低满量程输出电压。如果接受 1nA 对应 1V 输出,Rf 只要 1GΩ,好买一些,但 ADC 的动态范围利用率下降,1V 满量程下 16 位 ADC 的有效分辨率损失约 1.3 位。这是可以接受的折中,我第一版就是这么干的。

思路二:T 型反馈网络。用三个普通电阻合成一个大跨阻。经典接法是 R1 从反相端到中间节点,R2 从中间节点到输出,R3 从中间节点到地,等效跨阻 Rf_eq = R1 + R2 + R1×R2/R3。取 R1=R2=1MΩ、R3=400Ω,算出来约 2.5GΩ,三个电阻都是常规货架品,成本不到十块钱。

但 T 型网络有代价,而且不止一个。第一,噪声不吃等效阻值这一套。反馈网络的约翰逊噪声由实际的 R1、R2 决定,不是由等效的 2.5GΩ 决定,所以你会得到一个"等效跨阻很大但噪声也很大"的电路。第二,噪声增益被抬高了。T 型网络的噪声增益是 1 + R2/R3 量级,运放的电压噪声被同比例放大,折算到输入端的等效电流噪声直接翻几十倍。第三,带宽塌陷。中间节点引入的极点会让整个环路的相位裕度变差,补偿电容得重新算。

我的实测结论是:T 型网络适合做到 100MΩ 这一档,再往上,噪声和稳定性都不划算,不如老老实实买一颗玻璃封装的 1GΩ 高阻电阻,把它架空焊在特氟龙支柱上。这颗电阻是整个 BOM 里最贵的单项,但它是 1nA 档能不能用的分水岭,这笔钱我建议别省。

3.3 模拟开关的电荷注入与继电器的线圈干扰

量程切换用模拟开关还是继电器,我两种都试过。

模拟开关(CMOS 传输门)体积小、驱动简单、切换快,但有三个毛病。电荷注入:开关断开瞬间会把沟道里的电荷注入到节点上,典型值几到几十皮库仑,在 2.5GΩ 的节点上产生的电压跳变是 Q/C,C 只有几个皮法,跳变能到伏级。导通电阻随温度变化,在 250Ω 档会和采样电阻串联,直接引入增益误差。关断漏电流在高温下能到纳安级,对低电流档是灾难。

机械继电器(我用的干簧继电器)没有电荷注入问题,关断电阻高达 10¹² Ω 以上,导通电阻几十毫欧,在低电流档几乎是完美开关。代价是线圈驱动会产生磁场和电源干扰,切换动作本身要几毫秒,寿命有限。

我的最终方案是混合使用:100μA 及以上的档位用模拟开关,因为那里对漏电不敏感;10nA 和 1nA 档用干簧继电器。继电器线圈用独立的 LDO 供电,线圈两端反并联续流二极管,线圈走线远离信号区,切换期间 ADC 停止采样。这套组合拳打下来,切档毛刺从原来的几百毫伏压到了几毫伏。

3.4 电源与地的划分,比想象中更重要

整台机器里有三套电源:数字 3.3V(MCU、通信)、模拟 ±15V(输出级运放)、模拟 ±5V(测量级运放和 ADC 基准)。三套地最终单点汇合在电源入口处。

我踩过的坑是:一开始图省事,所有地铺成一整块,结果 MCU 的 SPI 时钟串到了 TIA 的输出上,频谱上看就是 8MHz 的尖峰,幅度虽然只有几毫伏,但在 100nA 档折算成电流就是几皮安。后来改成模拟地和数字地分开铺,中间用 0Ω 电阻单点连接,连接点放在 ADC 下方,串扰立刻降了一个数量级。

输出级和测量级之间还有一层隔离要考虑。输出级运放要推 10mA,电源电流波动大;测量级运放只处理微安级信号。两者的电源必须分开走线,各自从稳压器单独拉,不能共用一段 PCB 铜皮。我在两路电源之间串了 10Ω 电阻加 10μF 电容做 RC 滤波,把输出级的开关噪声挡在测量级之外。

4. nA 级电路真正的战场在 PCB 上

4.1 保护环画在哪个电位上,这个问题有标准答案

保护环(Guard Ring)是低电流电路的保命符,但很多人画错——画了一圈铜,接到信号地上,结果一点用没有。原理是这样的:PCB 表面的漏电流,正比于两个节点之间的电位差除以表面电阻。如果信号节点(TIA 反相端,虚地约 0V)周围有一圈铜,这圈铜的电位也是 0V,那么信号节点和这圈铜之间没有电位差,漏电流就是零。原本要流进信号节点的漏电,被这圈铜"截胡"了。

所以保护环的接线原则是:接到与信号节点等电位的低阻节点上。在 TIA 里,反相端是虚地,同相端接的是真正的地,两者电位相同,所以保护环接模拟地就是对的。如果同相端不接地而是接了一个偏置电压,那保护环就得接那个偏置电压,或者用一个跟随器缓冲后驱动保护环。

具体画法上,我在顶层和底层都画了保护环,环宽 0.5mm,距离信号焊盘 0.3mm,两层之间每隔 5mm 打一个过孔缝合。信号走线全程被保护环包住,从运放反相端一直到输入端子,中间不露出任何一段裸线。保护环上不要盖阻焊,裸露的铜更能把表面漏电导走。

提示:保护环只能解决"环内外之间"的漏电,环内部如果还有残留助焊剂,信号线之间照样会漏。所以保护环和清洗是配套的,缺一不可。

4.2 板材、清洗与那层薄薄的助焊剂

FR4 是吸湿材料,湿度从 30% 升到 80%,表面电阻能掉两个数量级。我做过对比:同一块板子,干燥天气下 1nA 档零点漂移 5pA,梅雨天不开空调能漂到 200pA。这不是电路问题,是材料问题。

应对办法有三层。第一层,高阻节点区域开窗。我在 1nA 档的反馈电阻和输入端周围做了阻焊开窗,装完后用无水乙醇加超声波清洗 5 分钟,再用热风枪 60℃ 烘 30 分钟驱潮。第二层,架空。那颗 1GΩ 电阻不贴板,用两根特氟龙支柱架在板子表面 3mm 以上,输入线用裸铜线在空气中飞过去,不经过任何 PCB 表面。第三层,涂覆。洗完烘干后,在高阻区域刷一层薄薄的三防漆,把表面和空气隔开。注意三防漆本身要选高绝缘型号,而且涂之前必须洗干净,否则等于把助焊剂封在里面。

我第一版没做这些,1nA 档的读数完全不可信,同一颗 1GΩ 电阻,清洗前后测出来的漏电流差了 40 倍。

4.3 热电动势:看不见的 μV 级对手

热电动势在电流测量里不显眼,但它会通过两条路径影响结果。一是输入端子。如果两个输入端子的材料不同,或者一个焊点大一个焊点小,室温波动就会在输入端产生几 μV 到几十 μV 的电动势,这个电动势加在被测器件上,改变了它的实际工作点。二是反馈电阻。高阻电阻的端头材料和引脚材料不同,形成热电偶,电阻自身发热或者环境温度变化都会产生漂移电压。

处理办法比较土但有效:输入端子的两个焊点尽量做成一样大,走线长度和宽度对称;高阻电阻远离任何发热元件(LDO、继电器线圈、MCU),布局时留出至少 10mm 的间距;整机加一个小风扇做低速空气搅拌,让板面温度均匀,避免局部温差。最后这一条听起来反直觉——风扇不是引入噪声吗?实测下来,均匀的气流带来的噪声远小于局部温差带来的漂移,尤其在 1nA 档。

4.4 屏蔽和接地,在 nA 电路里怎么落地

整机装进铝壳,壳接大地。PCB 的模拟地与外壳在一点连接,位置选在输入端子附近。这样外部干扰在壳体上形成的电流,就近入地,不会绕着信号线跑一圈。

输入线缆是个大坑。普通的屏蔽线,屏蔽层和芯线之间的绝缘电阻在几十兆欧到几百兆欧量级,在 1nA 档这就是一条漏电通路。我最后用的是低噪声同轴电缆,绝缘层是特氟龙,屏蔽层单端接地(接在仪器端,不接在被测端),长度控制在 30cm 以内。双端接地会形成地环路,反而引入工频干扰。

另外,输入端子的清洁度要当成耗材一样维护。每次测完高电压或者脏样品,我都用无水乙醇棉签擦一遍端子,等干了再接下一个。这个习惯帮我避免了好几次莫名其妙的读数漂移。

5. 从冒烟到能稳定读出 1nA 的调试路径

5.1 分步上电,别一次全插上

板子回来第一次上电,我建议分三步走,每一步都量一下关键节点。

第一步只焊电源部分,不焊运放。上电后量三路输出电压是否正常,纹波是否小于 5mV。这一步出问题,后面全是白搭。第二步焊输出级和测量级的运放,但不接反馈电阻,不接负载。量各个运放的输出是否在零点附近,有没有自激(用示波器看输出有没有高频振荡)。自激是这一步最常见的故障,表现为输出端有一个几十兆赫兹的等幅振荡,直流表看不出来,但会让所有读数都不对。第三步才把反馈电阻和继电器焊上,先用万用表量各档的电阻值,确认继电器吸合正常,再上电测零点。

我第一块板子在第二步就翻车了:测量级运放输出一直在 ±13V 之间来回跳,查了半天是反馈电阻的焊盘设计错误,把反相端和输出端短路了,运放变成了比较器。这种低级错误在分步上电时十分钟就能定位,一次全焊上就得花一晚上。

5.2 零点校准:先短接输入端,再谈精度

所有量程的零点校准,都是在输入端接一个高阻值假负载(我用的是 1GΩ 电阻串一个 100MΩ,模拟开路)的情况下,读 ADC 的原始码值,存进 MCU 的 Flash 里作为 offset。

这里有个细节:零点必须在每个量程单独校,不能只校一个档然后按比例推算。因为每个档位的失调来源不同——低阻档主要是运放 Vos 和 ADC 失调,高阻档主要是 PCB 漏电和运放 Ib。我一开始想偷懒,只校了 1mA 档,结果 1nA 档的零点偏了 300pA,完全对不上。

校准时的环境也要控制。我在恒温 25℃ 下校,然后把校准值存起来。实际使用时如果环境温度偏离超过 5℃,低电流档的零点会有几十皮安的漂移,这时候要么重新校,要么加温度补偿系数。我在固件里做了简单的线性温度补偿,用板载的 NTC 测板温,每℃ 补偿 2pA,虽然粗糙,但把漂移压到了可以接受的范围内。

5.3 量程切换后的稳定时间,必须实测出来

前面说过切档会有电荷注入和 RC 恢复。具体等多久,不能拍脑袋,得测。

方法很直接:把输出固定在一个已知电流(比如用 1GΩ 电阻加 1V 电压产生 1nA),然后让程序在 10nA 档和 1nA 档之间来回切,每次切换后以 1ms 间隔连续记录 ADC 值,画成曲线。你会看到一条典型的指数衰减曲线,从切换瞬间的满幅饱和,慢慢回到稳态值。

我的实测结果是:250Ω 到 25kΩ 这几档,稳定时间小于 5ms;25MΩ 档约 80ms;250MΩ 档约 600ms;1GΩ 档约 2.5s。这个数据直接决定了固件里的等待时间——等待时间设为实测稳定时间的 2 倍,这样即使有批次差异也留了余量。1nA 档等 5 秒听起来很久,但比起读一个错数,5 秒完全值得。

5.4 用已知电阻做一次闭环校验

校准完零点,接下来要校增益。最靠谱的办法是用一个高精度、高阻值的电阻作为"标准电流源":给它加一个精确的电压,它产生的电流就是 V/R,送进源表读回来,比对读数。

我用的是一颗 10MΩ、0.01% 的金属膜电阻,配合一个 10.000V 的基准,产生 1μA 的电流。在 1μA 档读回来,误差在 0.05% 以内。然后往下推:换 100MΩ 电阻产生 100nA,换 1GΩ 产生 10nA。每换一次量程,都要重新校增益,因为不同档位的增益误差来源不同(电阻公差、运放增益误差、ADC 增益误差)。

最后的 1nA 档是最难校的,因为你需要一个 1nA 的标准电流源。我的土办法是用 10GΩ 电阻加 10V 电压,产生 1nA。这颗 10GΩ 电阻本身公差 5%,所以只能校到 5% 的绝对精度,但可以校出线性度。如果只关心相对变化(比如测暗电流随时间的变化),这个精度就够了。

6. 那几次让我怀疑人生的读数

6.1 输出级自激:容性负载和相位裕度

输出级接上长线缆或者容性负载(比如 MOS 管的栅极),Howland 泵很容易自激。表现是输出端叠加一个几兆赫兹的正弦波,幅度几百毫伏,用万用表看不出来,但会把被测器件搞坏,也会让测量通道读到一堆垃圾。

根因是运放的输出阻抗和负载电容形成了一个极点,把相位裕度吃掉了。解决办法有三个,我三个都用了:输出串联 100Ω 隔离电阻,把容性负载和运放输出隔开;反馈回路并联一个小电容(10pF)做相位超前补偿;选增益带宽积适中的运放,不要盲目追求高速。第一版我选了一颗 50MHz 的运放,结果怎么补偿都不稳,换成 10MHz 的立刻就好了。在源表这种场合,带宽是敌人不是朋友。

6.2 1nA 档读数漂移,最后查到是继电器

1nA 档调通后,我发现读数会缓慢漂移,几分钟内从 0 漂到 +80pA,然后稳定。查了运放、查了电阻、查了清洗工艺,都没问题。最后用热成像仪一看,干簧继电器的线圈在持续通电,温度比周围高 8℃,而它就装在高阻电阻旁边 5mm 处。高阻电阻的温度系数哪怕是 100ppm/℃,8℃ 的温升也意味着 0.08% 的阻值变化,折算到 1nA 就是 0.8pA。但实际漂移远大于这个数,说明还有别的机制——后来发现是继电器的绝缘电阻随温度下降,线圈和触点之间的漏电流串到了信号上。

解决办法:继电器改用磁保持型,切换后线圈断电,不持续发热;同时把继电器和高阻电阻的间距拉到 15mm 以上,中间加一条接地铜皮做热隔离。改完之后漂移降到 5pA 以内。

6.3 切档瞬间 ADC 打出的离谱值

这个问题困扰我最久。现象是:从 10mA 档切到 1nA 档,ADC 会连续输出 3~5 个满幅值(0xFFFF),然后才回到正常。程序里明明已经加了 500ms 延时,为什么还有?

原因是ADC 的输入保护二极管在运放输出饱和期间被导通,内部电荷泵被抽走,恢复需要时间。运放在切档瞬间输出冲到 ±13V 轨,超过了 ADC 的输入范围,保护二极管导通,把电荷注入了 ADC 的采样电容。ADC 内部要花好几个转换周期才能把这个电荷泄放掉。

解决分两层。硬件上,在 TIA 输出和 ADC 输入之间串一个 10kΩ 电阻加一个肖特基钳位到 ±2.5V 基准,把过冲限制在安全范围内。软件上,切档流程改成:关输出 → 延时 100ms → 切档 → 延时稳定时间 → 打开 ADC 但丢弃前 50 个采样 → 正式开始采集。这套流程下来,再没出现过离谱值。

注意:切档期间如果被测器件是敏感的(比如某些传感器),输出端的电压冲激可能损伤它。我的做法是在输出端加一个继电器,切档时把负载断开,切完再接通。多一个继电器,多一份安心。

7. 一些不上台面但很管用的实操经验

做完整台机器,我最深的体会是:源表的精度不是设计出来的,是洗出来、等出来、隔离出来的。电路拓扑就那几种,书上都有,真正拉开差距的是那些不起眼的工艺细节。

比如焊接。低电流通道的所有焊点,我都用免清洗助焊剂含量最低的焊锡丝,焊完立刻用无水乙醇加软毛刷清洗三遍,每遍都换新的棉签。听起来夸张,但用离子污染测试笔一测,清洗前后表面绝缘电阻差了两个数量级。

比如走线。信号线绝对不走直角,不是玄学,是直角处铜箔变宽会导致阻抗突变,在高阻节点上容易形成电荷积聚。所有信号走线尽量短,从运放反相端到输入端子的路径长度控制在 20mm 以内。

比如固件里的滤波。1nA 档我用了 32 点中值滤波加滑动平均,采样率 20SPS 时响应时间约 2 秒。这个速度对测暗电流这种慢变量完全够用,但如果要测瞬态,就得把滤波关掉,接受更大的噪声。滤波参数不是越强越好,要看你的被测对象是什么。

最后一个建议:先做一版只有 1mA 和 100μA 两个档位的简化版,把架构跑通,再往上加档位。我就是一上来做了八个档,结果低电流档的问题和高电流档的问题搅在一起,排查起来极其痛苦。分阶段做,每一阶段都有可验证的成果,这才是 DIY 复杂仪器的正确节奏。整台机器最后装进一个 200×150×80mm 的铝壳里,成本算下来不到商用机的十分之一,性能上除了绝对精度(我做到 0.1% 量级,商用机是 0.02%)和长期稳定性稍差,日常测器件漏电、暗电流、休眠功耗完全够用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 5:06:35

VoiceStudio深度体验:一站式语音工作台,让录音降噪转写一气呵成

最近在好几个内容创作圈子里,都在讨论VoiceStudio这个名字。我一开始以为又是什么换汤不换药的录音小工具,后来自己动手搭了一套环境、跑完一条完整的录音—降噪—转写—配音流程之后,才发现它跟传统录音软件还真不是一回事。先说清楚&#x…

作者头像 李华
网站建设 2026/10/31 5:06:11

GeneralUpdate:跨平台自动化更新组件的设计与实践

1. 项目背景与核心价值在桌面应用开发领域,版本更新一直是个令人头疼的问题。传统的手动更新方式不仅用户体验差,还经常因为网络中断或操作失误导致更新失败。我曾在维护一个跨平台工业控制软件时,就遇到过用户因为不会手动替换更新包而导致产…

作者头像 李华
网站建设 2026/10/31 5:06:03

Skills:现代开发者的轻量级能力封装协议

1. “skills”不是功能菜单,而是现代开发者的认知操作系统最近在几个技术社区里频繁看到“skills”这个词被反复提起,但很多人点开后一脸茫然——它既不像VS Code的扩展列表,也不像GitHub上的开源项目仓库,更不是某个新出的CLI工具…

作者头像 李华
网站建设 2026/10/31 5:05:34

光船代码生成器:基于WebAssembly的高效开发实践

1. 光船代码生成器的设计哲学光船项目的核心思想源于对现代软件开发效率瓶颈的深刻反思。在传统开发流程中,开发者需要将业务逻辑转化为具体的编程语言实现,这个过程往往伴随着大量重复性劳动和细节处理。光船通过引入"动词算子"这一抽象层&am…

作者头像 李华
网站建设 2026/10/31 5:03:23

Mac本地部署大模型:隐私安全与离线AI实践指南

1. 在Mac上部署本地大模型的完整指南作为一名长期在Mac平台上折腾各种开发环境的程序员,我最近花了大量时间研究如何在Mac电脑上部署本地大模型。与云端API调用不同,本地部署能提供更好的隐私保护、更低的长期使用成本,以及完全离线的使用体验…

作者头像 李华
网站建设 2026/10/31 5:02:31

多机器人路径规划算法优化与工程实践

1. 多机器人路径规划的技术挑战与改进思路在仓储物流、智能制造等场景中,多机器人协同作业已成为提升效率的关键手段。但传统路径规划算法在面对动态环境时,常出现路径冲突、计算效率低下等问题。以某电商分拣中心为例,50台AGV同时运行时&…

作者头像 李华