
常見的數字萬用表的電流擋最小分辨率可能是0.1微安,作為電子DIY中測量電路功耗的用途是夠細的。但要有特殊的需求測量更小的電流,比如要測量二極管的反向漏電電流時,萬用表的電流擋就不夠用了。幾年前我在網上看到一種低成本的微小電流測量方法,是用低偏置電流的MOS運放來做電流電壓變換,也就是跨阻放大器。反饋電阻取得越大,能夠測量的電流范圍越小。如下圖中b) 方案所示。

上圖的 a) 方案是最常用的,即通過電流取樣電阻將被測電流轉為電阻上的壓降。一般萬用表也是同樣的原理,由于取樣電阻不要太影響被測電路所以不會太大,于是電流分辨率受限與電壓的分辨率。b) 方案換了一個思路,用了運放的負反饋來讓電流輸入端虛短到地,把電流取樣電阻另一頭接到了運放輸出端上。這樣R2 可以取得很大,微小電流流經它也獲得很大的電壓擺幅。c) 方案是用積分法,也能測量很小的電流。
幾年前我就買了一些高阻值的電阻來做打算一個納安表,量程切換用機械開關,搭棚焊做了這樣一個跨阻放大前端電路:


因為是實驗性的,我沒有專門做一塊PCB, 就在洞洞板上搭了。運放用的是TLV271,SOT-23-5封裝的。為了減少板子上絕緣沒做好的風險,我將運放用飛線“懸掛”起來了,高阻的輸入端和其它部分隔得很開。
雙聯5擋旋轉波段開關的動片接在運放輸出,當初只焊了四個電阻(分別是10M, 100M, 1G, 10G歐姆),它們一端都接在運放的負輸入端。

TLV271這個運放最低支持單電源2.7V供電,電壓輸出擺幅比較接近電源軌了,所以用兩節(jié)AA或AAA電池來供電是合適的,若輸出接一個機械式的電壓表頭(正負1.5V量程,零位在中間的那種),就可以構成5擋量程的納安電流表。

TLV272的輸入偏置電流典型值是1pA,作為納安級電流測量是足夠的,測皮安級電流可能不太準,僅供參考。輸入失調電壓典型值0.5mV,因為是跨阻放大應用影響不算大,換算到運放輸出滿量程的占比不到千分之一。
因為沒有現成的電壓表頭,幾年前我做到這里就把它放一邊了?,F在接著做起來,用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湊合用了。

這個簡易納安表與萬用表的電流擋的關鍵差別在于:萬用表的電流擋,兩個表筆之間低阻抗等于里面的電流取樣電阻,而這個表的兩輸入端子間的阻抗約等于反饋電阻除以放大器的開環(huán)增益(還注意交流增益隨著頻率升高下降)。因此150pA擋位的內阻是1500nA擋位的一萬倍。我們測量小電流的測試對象,往往也是很高阻抗的,因此測試時連接端非常容易受干擾(只要干擾源的阻抗相對是低的)。我在拍上圖最后一個照片(150pA量程)時候就發(fā)現:我在半米距離外揮手,表上顯示的數字都會劇烈變化,超乎想象。用這個小儀器的時候,根據測量對象的情況,要考慮遠離電磁干擾,或做屏蔽措施了。
我現在還沒有合適的外殼方案,等電路優(yōu)化后下一版整體考慮吧。比如運放輸入端的保護、零位誤差的自動補償,反饋電阻是否換成T形網絡等。
帖子開頭的那張照片是測量一只白光LED在有光環(huán)境下的輸出電流。某種意義上LED也能做感光用途。
歡迎將我們設為“星標”,這樣才能第一時間收到推送消息。
關注EEWorld旗下訂閱號:“機器人開發(fā)圈”
回復“DS”領取《DeepSeek:從入門到精通》完整版
掃碼添加小助手回復“機器人”
進群和電子工程師們面對面交流經驗
熱門跟貼