前幾天一個工程師向我反饋他測得如下電路MCU IO口的電壓不是3.3V,只有2V多。
IO配置的是輸入功能,無上下拉。最初我不太相信這個結(jié)果,后來自己用萬用表實際測量了下,還真是這個結(jié)果
這是咋回事呢?不應(yīng)該電壓就是3.3V嗎?后來經(jīng)高人指點可能是IO口輸入漏電流的原因,輸入漏電流在MCU數(shù)據(jù)手冊中符號為Ilkg,lkg表示Input leakage current。
IO口的內(nèi)部是CMOS器件,因為 CMOS 是高輸入阻抗器件, 理想狀態(tài)下IO接一個高電平是沒有輸入電流的。但實際情況因為存在一個輸入阻抗,所以還是會有微弱的電流,這個電流叫做漏電流。
那么電壓降低到2.48V是不是就是因為輸入漏電流的原因呢?
答案是否,因為如果電壓就是2.48V,那么漏電流有(3.3V-2.48V)/3.6M=227nA,這個和上述數(shù)據(jù)手冊最大100nA對不上??!
真實的原因是萬用表自身的內(nèi)阻導(dǎo)致的,就算上拉電阻不接MCU的IO,直接用萬用表測電壓下面,測出來也是2.4幾V,這也可以驗證和IO輸入漏電流無關(guān)。
萬用表在測量電壓時,內(nèi)部具有電阻,通常被稱為輸入阻抗。不同型號和品牌的萬用表有不同的輸入阻抗,一般在兆歐姆(MΩ)的數(shù)量級。
通常,萬用表的輸入阻抗可以在用戶手冊或儀器上找到。一些典型的值包括10 MΩ或更高。
這個輸入阻抗會影響測量結(jié)果,特別是在測量高阻值電路時,比如對上述電路就會產(chǎn)生很大影響,因為上拉電阻太大了,
假設(shè)萬用表輸入阻抗是10 MΩ,實際測量電壓值為10/(3.6+10)*3.3V=2.43V。
對于一般的上拉電阻比如1KΩ,實際測量電壓值為10000000/(1000+10000000)*3.3V≈3.3V,幾乎無影響了。
對于上述的兩個電路,要想得到準(zhǔn)確的電壓值,只能選用更高輸入阻抗的測量儀器。我這里選用了泰克DMM4050來測試第一個電路,同時要注意設(shè)置為高輸入阻抗模式,因為它默認也是10MΩ。這時候測得的電壓值如下:
啟用高輸入阻抗的設(shè)置方法可以在說明書中找到:
設(shè)置之后阻抗會超過10GΩ,這時測的電壓就準(zhǔn)確了,測得的電壓相比3.3V也有下降,只是不會再下降那么多,這時再來估算一下漏電流,(3.3V-3.10V)/3.6M=56nA,這就符合實際了。
如果測第二個電路電壓,那電壓幾乎就是3.3V。由此可見不同的測量儀器差別還是挺大的。
最后你可能會問他為什么要接這么大阻值的上拉電阻呢,歡迎大家留言區(qū)討論。
關(guān)注公眾號,掃碼加入嵌入式交流群: