現(xiàn)在很多單片機(jī)都有ADC功能了,10位或者12位的,使用ADC測(cè)量電壓是很方便的,測(cè)量電阻阻值的話可以使用歐姆定律進(jìn)行分壓然后測(cè)量分壓后的電壓即可計(jì)算出電阻阻值,最簡(jiǎn)單的電阻測(cè)量電路如下圖:
這時(shí)候測(cè)量點(diǎn)的電壓計(jì)算公式為:Vo=R2 / (R1 + R2) * Uref。
這是最簡(jiǎn)單的測(cè)量計(jì)算方法。但是因?yàn)楹?jiǎn)單也會(huì)導(dǎo)致不少小問(wèn)題,比如如果R1取值為2K,Uref為5V,而R2的阻值范圍在5到10歐姆左右,那么R2分得的電壓Vo=0.01247到0.02488,電壓變化的范圍過(guò)小,如果ADC是12位的,ADC的參考電壓為3.3V,這時(shí)候ADC的采集值的范圍在15到30,也就是AD值的變化范圍有30-15=15個(gè),而電阻的變化范圍為10-5=5歐姆,也就是5歐姆的變化范圍用15個(gè)AD值的變化來(lái)計(jì)算,那么AD測(cè)量的精度就是:5歐姆 / 15個(gè) = 0.33歐姆,也就是AD值加1,計(jì)算得到的電阻值就要加0.33歐姆,這精度著實(shí)讓人接受不了。
再比如R1和Uref的值不變,而R2的阻值范圍在1K到2K之間,同樣的計(jì)算方法得到R2的分壓值Vo=1.1到1.65伏,AD值的范圍為1365到2048,AD的測(cè)量精度為:1K/(2048-1365)=1.46。奇怪的是為什么AD值的范圍這么大了,精度反而更很差勁呢?因?yàn)殡娮璧娜≈捣秶軐挘瑢?dǎo)致精度降低了。
怎么辦?我想要測(cè)量一個(gè)比較精密的電阻的阻值R2,該怎么辦?下面的方法是網(wǎng)上的電橋測(cè)量電阻的方法,我為了測(cè)量方便有所修改。電阻網(wǎng)絡(luò)電路如下圖:
R2的電阻阻值大約在100到200歐姆,我們?nèi)∫粋€(gè)參考電阻R3為100歐,R1和R3阻值相同為2K。這樣得到了U1和U2兩個(gè)分壓值,U2為固定電壓U2=100 / (100+2000) * Uref。U1的值根據(jù)R2的變化而改變:U1=R2 / (R2+2000) * ref。得到了U1和U2之后可以計(jì)算壓差:
△U=U1-U2,將這兩個(gè)電壓輸入到運(yùn)算放大器中去進(jìn)行合理放大,使得得到的輸出電壓范圍在ADC參考電壓范圍內(nèi)盡可能的寬,這樣使用ADC就能更加精確地測(cè)量到電壓值。使用運(yùn)放進(jìn)行放大的電路如下圖:
在R5=R6,R7=R8的情況下,運(yùn)放的放大倍數(shù)m=R7 / R5。電路中的放大倍數(shù)為m=20。經(jīng)運(yùn)放放大后得到了Uo送到單片機(jī)系統(tǒng)的ADC中去進(jìn)行AD采樣。那么我們可以計(jì)算一下ADC測(cè)量得到的AD值和電阻R2之間的關(guān)系。
現(xiàn)在假定ADC系統(tǒng)的參考電壓為Uadc,ADC采樣位數(shù)為12位,ADC的測(cè)量值為A,那么Uo的計(jì)算公式如下:
Uo = A / 4096 * Uadc
而Uo也是運(yùn)放的輸出電壓,根據(jù)電橋網(wǎng)絡(luò)和運(yùn)放進(jìn)行計(jì)算可以得到:
Uo = (U1-U2) * m = ( (R2/(R1+R2) - R4/(R3+R4) ) * Uref * m
也就是說(shuō):
( (R2/(R1+R2) - R4/(R3+R4) ) * Uref * m = A / 4096 * Uadc ----------------------------①
上式中R1、R3、R4、m、Uref、Uadc都是已知的,那么根據(jù)ADC測(cè)量得到的值A(chǔ)’就可以輕松計(jì)算出來(lái)電阻R2的阻值。
上面說(shuō)的是理論上的計(jì)算方式,的確是這樣的,但是往往現(xiàn)實(shí)都比較殘酷,由于電阻都有誤差而且運(yùn)放也不是絕對(duì)精密,那么已知的R1、R3、R4、m、Uref、Uadc幾個(gè)參數(shù)都是和真實(shí)值有微小差別的,例如電阻R1的標(biāo)稱電阻為2K,誤差為1%,萬(wàn)用表測(cè)量得到的阻值為1980歐姆,顯然誤差是有的,直接帶入式子進(jìn)行計(jì)算是不可行的。那怎么辦呢?
解決辦法總是有的。前面公式①中是根據(jù)ADC的測(cè)量值和幾個(gè)已知參數(shù)來(lái)求電阻R2的阻值,那么我們就反過(guò)來(lái),使用若干組已知的固定阻值的R2電阻接入電阻網(wǎng)絡(luò)并測(cè)量出AD值A(chǔ),來(lái)計(jì)算R1、R3、R4、m、Uref、Uadc幾個(gè)參數(shù),但是這幾個(gè)參數(shù)有點(diǎn)多,6個(gè)未知參數(shù)需要6組式子才能解出來(lái),非常的費(fèi)勁,那么我們就簡(jiǎn)化一下計(jì)算方式。
我們將R4設(shè)為0歐姆,也就是U2接到GND,U2=0,這樣式子①就能簡(jiǎn)化成:
R2/(R1+R2) * Uref * m = A / 4096 * Uadc ----------------------------②
這不簡(jiǎn)單多了!好,現(xiàn)在我們要求出式子中的R1的阻值和放大倍數(shù)m,兩個(gè)未知數(shù)我們就需要兩組已知的點(diǎn)(R2,A)來(lái)求出參數(shù)R1和m。這樣取第一個(gè)點(diǎn)的測(cè)試電阻為R21,AD值為A1,第二個(gè)點(diǎn)的測(cè)試電阻為R22,AD值為A2,帶入到式子②中去得到:
R21/(R1+R21) * Uref * m = A1 / 4096 * Uadc
R22/(R1+R22) * Uref * m = A2 / 4096 * Uadc
上面的式子除以下面的式子可以得到:
(R21/(R1+R21)) / (R22/(R1+R22)) = A1 / A2
進(jìn)過(guò)整理之后得到:
R1=(R21 * R22) * (A2 - A1) / (R22A1 - R21 * A2)
這就求出來(lái)了R1的阻值了。
然后我們?cè)偾髆的值,根據(jù)式子②可以得到m的計(jì)算公式為:
m = (A / 4096 * Uadc) / (R2/(R1+R2) * Uref)
我們將電阻網(wǎng)絡(luò)的電源和ADC系統(tǒng)的參考電源連接到一起,也就是說(shuō)Uref=Uadc,我們要保證電源的穩(wěn)定性,可以使用TL431或者REF3030等高精度穩(wěn)壓芯片生產(chǎn)穩(wěn)定電壓源為電阻網(wǎng)絡(luò)和ADC系統(tǒng)供電。由于Uref=Uadc,這樣的話上面的式子得到了簡(jiǎn)化:
m = (A / 4096) / (R2/(R1+R2))
整理得到:
m = A(R1+R2) / (4096 * R2) ----------------------------③
式子③中R1在前面已經(jīng)算出來(lái)了,那么m也求出來(lái)了。
到這里我們已經(jīng)求出來(lái)了R1和m的值,后面就能根據(jù)這兩個(gè)參數(shù)和測(cè)量出來(lái)的AD值求出來(lái)待測(cè)電阻R2的值了。由于Uref=Uadc,式子②變成:
R2/(R1+R2) * m = A / 4096
整理得到:
R2 = A * R1 / (4096*m - A) ----------------------------④
式子④已經(jīng)簡(jiǎn)單到只需要A、R1、m就能計(jì)算出來(lái)R2的阻值了,并且使用的R1和m都是我們自己計(jì)算出來(lái)的值,而不是直接使用理論計(jì)算出來(lái)的值,精度提高了不少。同時(shí)我們可以發(fā)現(xiàn)由于Uref=Uadc,上面的式子②兩端約分了,所有計(jì)算竟然和Uref、Uadc沒(méi)有關(guān)系了,也就是說(shuō)不管Uref、Uadc怎么變動(dòng),只要Uref和Uadc一直是相等的,所有參數(shù)和阻值的計(jì)算都不涉及到Uref和Uadc。但是我們最好要保證Uadc的穩(wěn)定,不然測(cè)量出來(lái)的AD值會(huì)不準(zhǔn)確的。
原文鏈接:https://blog.csdn.net/tq384998430/article/details/79073339
審核編輯 黃宇
-
電阻
+關(guān)注
關(guān)注
86文章
5507瀏覽量
171931 -
adc
+關(guān)注
關(guān)注
98文章
6495瀏覽量
544468
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論