常见的数字万用表的电流挡最小分辨率可能是0.1微安,作为电子DIY中测量电路功耗的用途是够细的。但要有特殊的需求测量更小的电流,比如要测量二极管的反向漏电电流时,万用表的电 流挡就不够用了。几年前我在网上看到一种低成本的微小电流测量方法,是用低偏置电流的MOS运放来做电流电压变换,也就是跨阻放大器。反馈电阻取得越大,能够测量的电流范围越小。如下图中b) 方案所示。
上图的 a) 方案是最常用的,即通过电流取样电阻将被测电流转为电阻上的压降。一般万用表也是同样的原理,由于取样电阻不要太影响被测电路所以不会太大,于是电流分辨率受限与电压的分辨率。b) 方案换了一个思路,用了运放的负反馈来让电流输入端虚短到地,把电流取样电阻另一头接到了运放输出端上。这样R2 可以取得很大,微小电流流经它也获得很大的电压摆幅。c) 方案是用积分法,也能测量很小的电流。
几年前我就买了一些高阻值的电阻来做打算一个纳安表,量程切换用机械开关,搭棚焊做了这样一个跨阻放大前端电路:
因为是实验性的,我没有专门做一块PCB, 就在洞洞板上搭了。运放用的是TLV271,SOT-23-5封装的。为了减少板子上绝缘没做好的风险,我将运放用飞线“悬挂”起来了,高阻的输入端和其它部分隔得很开。
双联5挡旋转波段开关的动片接在运放输出,当初只焊了四个电阻(分别是10M, 100M, 1G, 10G欧姆),它们一端都接在运放的负输入端。
TLV271这个运放最低支持单电源2.7V供电,电压输出摆幅比较接近电源轨了,所以用两节AA或AAA电池来供电是合适的,若输出接一个机械式的电压表头(正负1.5V量程,零位在中间的那种),就可以构成5挡量程的纳安电流表。
TLV272的输入偏置电流典型值是1pA,作为纳安级电流测量是足够的,测皮安级电流可能不太准,仅供参考。输入失调电压典型值0.5mV,因为是跨阻放大应用影响不算大,换算到运放输出满量程的占比不到千分之一。
因为没有现成的电压表头,几年前我做到这里就把它放一边了。现在接着做起来,用STM32做一个数字电压表接起来:
MCU部分电路是简单的,主要就是负责LCD模块的驱动,然后利用片内的ADC测量运放的输出电压,利用GPIO检测波段开关在哪一挡(开关是双联的,模拟部分只用了一联)。
不是整体一块设计,飞线在所难免。
MCU是便宜的STM32F030,集成的ADC是12-bit,没有专门的ADC器件好,只有通过软件处理来提高一下准确度。
电源就简单起见直接用一个3.2V锂电池设计了,或者插电源经其他3.3V LDO供电。运放的地(也是电流表输入另一端)用电源电压的中点(电阻分压得到),这样免得用负压产生电路以及运放输入到ADC的量程匹配电路。
STM32F030 48LQFP是没有VREF引脚的,ADC的参考电压就是电源电压AVDD. 所以电源电压会影响到ADC转换数值。解决办法是用ADC采一下片内的1.2V电压基准,再做软件补偿。于是我的程序里面ADC要采三个通道的电压:运放输出、运放+输入端和片内电压基准。我尝试使用了每256次采样结果做一个平均处理。
不同挡位之间电阻是10倍数关系,所以若不做电阻校准的话程序只需要切换显示的小数点位置和单位。
实测测量端悬空时的读数如下图参考,读数没有归零应该是运放输入失调电压的原因,此外读数的最后一位是在跳动的。除了量程最小的两个挡,数字的跳动可能是STM32 ADC噪声的原因。这个玩意我不追求高精度,就不会拿高级的ADC来做,就把STM32凑合用了。
这个简易纳安表与万用表的电流挡的关键差别在于:万用表的电流挡,两个表笔之间低阻抗等于里面的电流取样电阻,而这个表的两输入端子间的阻抗约等于反馈电阻除以放大器的开环增益(还注意交流增益随着频率升高下降)。因此150pA挡位的内阻是1500nA挡位的一万倍。我们测量小电流的测试对象,往往也是很高阻抗的,因此测试时连接端非常容易受干扰(只要干扰源的阻抗相对是低的)。我在拍上图最后一个照片(150pA量程)时候就发现:我在半米距离外挥手,表上显示的数字都会剧烈变化,超乎想象。用这个小仪器的时候,根据测量对象的情况,要考虑远离电磁干扰,或做屏蔽措施了。
我现在还没有合适的外壳方案,等电路优化后下一版整体考虑吧。比如运放输入端的保护、零位误差的自动补偿,反馈电阻是否换成T形网络等。
帖子开头的那张照片是测量一只白光LED在有光环境下的输出电流。某种意义上LED也能做感光用途。
本文来自论坛,点击查看完整帖子内容。