李玉俊,黃 琪
(中國(guó)礦業(yè)大學(xué) 江蘇 徐州 221116)
對(duì)于很多的電子愛好者來說,經(jīng)常使用的A/D轉(zhuǎn)換器是8位和12位的,尤其對(duì)于參加全國(guó)電子設(shè)計(jì)大賽的學(xué)生來說,基本上使用的都是ADC0808或ADC0809。對(duì)于一般的電子設(shè)計(jì),8位的A/D轉(zhuǎn)換器已經(jīng)足夠,但在某些場(chǎng)合就需要使用更高精度的A/D轉(zhuǎn)換器,由于A/D轉(zhuǎn)換器隨著其轉(zhuǎn)換精度的提高價(jià)格會(huì)成倍上升,所以在某些要求轉(zhuǎn)換精度高但對(duì)轉(zhuǎn)換時(shí)間要求不高的場(chǎng)合,可以搭建一些較為簡(jiǎn)單的電路來提高A/D轉(zhuǎn)換器的精度。筆者介紹兩種提高A/D轉(zhuǎn)換精度的方法。在某些特定的場(chǎng)合,8位A/D轉(zhuǎn)換器的轉(zhuǎn)換精度堪比12位的A/D轉(zhuǎn)換器[1]。
目前使用較多的是8位逐次比較型A/D轉(zhuǎn)換器,其相應(yīng)的工作原理[2]可以使用如圖1所示。
圖1 逐次比較性AD轉(zhuǎn)換器結(jié)構(gòu)原理圖Fig.1 Structure principle diagram of AD converter
當(dāng)啟動(dòng)信號(hào)作用后,時(shí)鐘信號(hào)先通過邏輯控制電路使N位寄存器的最高位DN-1為1,以下各位為0,此二進(jìn)制代碼經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換成電壓U0送到比較器與輸入的模擬電壓Ux比較。 若 Ux>U0,則保留這一位;若 Ux<U0,則 DN-1位置 0。DN-1位比較完畢后,再對(duì)DN-2位進(jìn)行比較,控制電路使寄存器DN-2為1,其以下各位仍為0,然后再與上一次DN-1結(jié)果一起經(jīng)過D/A轉(zhuǎn)換后再次送到比較器與Ux相比較。 如此一位一位地比較下去,直至最后一位D0比較完畢為止。 最后,發(fā)出EOC信號(hào)表示轉(zhuǎn)換結(jié)束。進(jìn)而使用單片機(jī)控制下一次的A/D轉(zhuǎn)換。經(jīng)N次比較后,N位寄存器保留的狀態(tài)就是轉(zhuǎn)換后的數(shù)字量數(shù)據(jù)。(注:EOC:轉(zhuǎn)換結(jié)束標(biāo)志位,“0”表示正在轉(zhuǎn)換,“1”表示A/D轉(zhuǎn)換的結(jié)束。OE:輸出允許信號(hào),當(dāng)向OE端輸入一個(gè)高電平時(shí),這時(shí)便可讀取結(jié)果。這些位都可由單片機(jī)連實(shí)現(xiàn)精確的控制。)
通常來說當(dāng)選用的A/D轉(zhuǎn)換器確定后,相應(yīng)的分辨率也就確定了,相應(yīng)的轉(zhuǎn)換精度也同時(shí)確定了[3]。此時(shí),提高A/D轉(zhuǎn)換芯片的精度通常有兩種方法,一種方法是將量程進(jìn)行動(dòng)態(tài)轉(zhuǎn)換,即根據(jù)輸入信號(hào)VIN的大小,將其放大,然后再進(jìn)行A/D轉(zhuǎn)換;另一種方法是實(shí)時(shí)控制參考電壓VREF,即根據(jù)VIN的大小,實(shí)時(shí)改變A/D轉(zhuǎn)換器的參考電壓VREF。以上兩種方法都可以達(dá)到提高AD轉(zhuǎn)換精度的目標(biāo)。
方法一:動(dòng)態(tài)轉(zhuǎn)換量程
圖2 動(dòng)態(tài)改變量程電路圖Fig.2 Circuit diagram of changing the range dygnamically
假設(shè)ADC的分辨率為8位,電源電壓V=5 V,那么在輸入信號(hào)在 0~5 V 變化范圍內(nèi), 其分辨率=5 V/(28-1)=19.6mV,也就是說A/D的分辨率為19.6 mV。但是當(dāng)輸入信號(hào)在0~2.5 V 時(shí),此時(shí)將信號(hào)放大一倍,即 9.80mV 放大到 19.6 mV,其分辨率提高了1倍。
在量程擴(kuò)大后,對(duì)其進(jìn)行電壓補(bǔ)償,保持量程不變,可以提高A/D轉(zhuǎn)換的位數(shù)。例如,在輸入電壓為0~1.25 V之間時(shí),此時(shí)不引入補(bǔ)償電壓;當(dāng)信號(hào)在1.25~2.5 V之間變化時(shí),這時(shí)引入 1.25 V 的補(bǔ)償電壓,使用差分放大器將在 1.25~2.5 V之間的電壓編程在0~1.25 V之間的電壓,并將其放大4倍,再進(jìn)行A/D轉(zhuǎn)換。這樣就能使8位A/D轉(zhuǎn)換器變?yōu)?0位A/D轉(zhuǎn)換器。本方法是用4個(gè)電阻進(jìn)行分壓,故可以將位數(shù)提高兩位,若使用8個(gè)電阻進(jìn)行分壓可以將位數(shù)提高3位。使用的分壓電阻越多,理論上提高的精度越高,但是同樣電路就會(huì)更加復(fù)雜,程序同樣也會(huì)復(fù)雜,建議將AD轉(zhuǎn)換芯片的精度2-3位即可。
方法二:實(shí)時(shí)改變參考電壓VREF
假設(shè)ADC的分辨率為8位,參考電壓為5 V,輸入信號(hào)的變化范圍為 0~5V, 此時(shí) ADC 的分辨率=5V/(28-1)=19.6mV。當(dāng)輸入電壓在0~2.5 V之間時(shí),通過使用軟件的方法將參考電壓改為 2.5 V,這樣,分辨率就為=5 V/(28-1)=9.80 mV,從而使分辨率提高1倍。筆者著重討論方法一,方法二不做詳細(xì)介紹。
圖3 實(shí)時(shí)改變參考電壓電路圖Fig.3 Circuit diagram of changing the voltage in real-time
電壓的選擇標(biāo)準(zhǔn)如表1所示。
1)實(shí)現(xiàn)兩次轉(zhuǎn)換的電路連接:8個(gè)精密等值的電阻R2~R9,將0-5 V的電壓分為 8檔,則每檔電壓為0.625 V,從各檔引出的線接8通道模擬開關(guān)74HC4051,模擬開關(guān)的控制端 CBA 分別接 P3.6,P3.5,P3.4 口。 LM324A 構(gòu)成電壓跟隨器,LM324B構(gòu)成差分放大器。
表1 電壓選擇參考Tab.1 Reference of voltage choice
圖4 系統(tǒng)原理框圖Fig.4 Block diagram of system principle
2)ADC0808的接口連接:START是A/D轉(zhuǎn)換啟動(dòng)信號(hào),為上升沿時(shí),所有內(nèi)部寄存器清0,為下降沿時(shí),啟動(dòng)A/D轉(zhuǎn)換。ALE為地址鎖存允許信號(hào)輸入端。START,ALE都接單片機(jī)的P3.0口。OE為輸出允許控制端,接單片機(jī)的P3.1口。EOC為轉(zhuǎn)換結(jié)束信號(hào)輸出引腳。EOC=0時(shí)開始轉(zhuǎn)換,EOC=1時(shí)轉(zhuǎn)換結(jié)束,接單片機(jī)P3.2口。CLK為時(shí)鐘信號(hào)輸入端,要求時(shí)鐘頻率<<750 kHz, 接單片機(jī)的 P3.3 口。 ADDA,ADDB,ADDC為地址線,用來進(jìn)行通道的選擇。ADDB,ADDC接地。選擇如表2所示。
表2 通道選擇Tab.2 Choose the passageway
3)現(xiàn)實(shí)模塊的連接:?jiǎn)纹瑱C(jī)的 P1.0,P1.1,P1.2,P1.3 分別接共陰極數(shù)碼管的位選端的 1,2,3,4。單片機(jī)的 P2.0~P2.7 接數(shù)碼管的 A,B,C,D,E,F(xiàn),G,DP 接口。
11位A/D轉(zhuǎn)換器的實(shí)現(xiàn)是通過2次8位A/D轉(zhuǎn)換完成的[5]。這些模擬量是輸入通道復(fù)用1個(gè)采樣保持器進(jìn)入A/D轉(zhuǎn)換器。參考電壓VREF可以來自外部也可以來自于內(nèi)部VDD。A/D轉(zhuǎn)換器采用逐次逼近式,轉(zhuǎn)換結(jié)果(8位)存入寄存器。在A/D轉(zhuǎn)換前必然選擇適當(dāng)?shù)耐ǖ溃O(shè)置足夠的采樣時(shí)間。可以通過設(shè)置A/D控制寄存器來控制A/D轉(zhuǎn)換過程,同時(shí)A/D轉(zhuǎn)換的狀態(tài)也會(huì)在IN0中體現(xiàn)出來。先將待轉(zhuǎn)換的電壓Vi送到IN0通道做一次A/D轉(zhuǎn)換。根據(jù)轉(zhuǎn)換所得的數(shù)字量由軟件算出Vi在哪檔中。再將Vi減去Vi所在檔的電壓,將所得差值放大8倍,使之變?yōu)?~5 V的電壓信號(hào),將其在送入IN1通道在積分一次,所得的8位數(shù)字量就是11位A/D轉(zhuǎn)換的低8位,而檔位CBA就是高3位。下面舉個(gè)例子進(jìn)行說明:
假設(shè)輸入的電壓Vi是4 V,先通過IN0通道做一次A/D轉(zhuǎn)換,所得的結(jié)果是204,即4/5×255=204,對(duì)應(yīng)8位數(shù)字量位11001100[6]。將低5位屏蔽掉,即得11000000,循環(huán)右移5次的到00000110,這時(shí)低三位對(duì)應(yīng)的就是Vi=4 V電壓所對(duì)的檔位,即第6檔,CBA=110。通過程序?qū)BA從P3口輸出,用來控制8選1模擬通道開關(guān),是74HC4051輸出3.75 V。該電壓經(jīng)LM324A跟隨,再經(jīng)LM324B放大。調(diào)整電阻,使放大倍數(shù)為 8 倍。則 LM324B 的輸出電壓為 Vo=8×(4-3.75)=2 V,選擇IN1通道進(jìn)行第二次A/D轉(zhuǎn)換,所得的結(jié)果01100110,這就是11位A/D轉(zhuǎn)換結(jié)果的低8位。檔位110為11位A/D轉(zhuǎn)換的高3位,合起來就是11位A/D轉(zhuǎn)換的結(jié)果11001100110。
將只進(jìn)行一次A/D轉(zhuǎn)換所引起的理論誤差與進(jìn)行兩次A/D轉(zhuǎn)換所引起的理論誤差進(jìn)行比較,比較結(jié)果如表3所示。(表3只列出典型的電壓值)
表3 (8位精度與11位精度)誤差理論比較Tab.3 Error com parison(eight precision and eleven precision)
從上表中可以看出提高后的轉(zhuǎn)換誤差要比提高前地轉(zhuǎn)換誤差小很多,從而說明了該方案的可行性。
可以看出轉(zhuǎn)換精度的提高是以犧牲轉(zhuǎn)換時(shí)間為代價(jià)的,本來只需轉(zhuǎn)換一次的時(shí)間變成現(xiàn)在需要轉(zhuǎn)化兩次的時(shí)間,轉(zhuǎn)換時(shí)間明顯上升了。所以對(duì)于一些需要快速進(jìn)行A/D轉(zhuǎn)換的場(chǎng)合,本方法并不適用,建議不要選擇本方法。那時(shí)就需要選擇高速度,高精度的A/D轉(zhuǎn)換芯片。
筆者將提高A/D轉(zhuǎn)換精度的方法與單片機(jī)相結(jié)合,簡(jiǎn)單明了,并且有很大的實(shí)用性。對(duì)于單片機(jī)愛好者和參加電子設(shè)計(jì)競(jìng)賽的學(xué)生來說具有比較好的參考價(jià)值[7]。
筆者創(chuàng)新點(diǎn):說明了兩種提高A/D轉(zhuǎn)換精度的方法,并將提高精度的具體的方法實(shí)際應(yīng)用到數(shù)字電壓表中,并對(duì)其提高前和提高后的轉(zhuǎn)換精度進(jìn)行了對(duì)比,說明了該方案的可行性。
該方案的適合場(chǎng)合:對(duì)A/D轉(zhuǎn)換精度的要求超過8位的A/D轉(zhuǎn)換器所能滿足的要求,同時(shí)對(duì)轉(zhuǎn)換時(shí)間的要求不太高的場(chǎng)合,文中所論述的兩種方法有很實(shí)際的用途。
[1]楊峰.一種簡(jiǎn)易提高A/D轉(zhuǎn)換器分辨率的方法[J].微計(jì)算機(jī)信息,2007(23):282-283.
YANG Feng.One easily method of increase resolving power of A/D converter[J].Micro computer information,2007(23):282-283.
[2]趙茂泰,智能儀器原理及應(yīng)用[M].3版.北京:電子工業(yè)出版社,2009.
[3]紀(jì)宗南.單片機(jī)外圍器件實(shí)用手冊(cè)—輸入通道器件分冊(cè)[M].北京:北京航空航天大學(xué)出版社,2005.
[4]張毅剛.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2007.
[5]馬艷玲,趙戰(zhàn)民,李明亮.高精度兩次采樣AD轉(zhuǎn)換[J],電子設(shè)計(jì),2008,24(14):311-312.
MA Yan-ling,ZHAO Zhan-min,LIMing-liang.Realize twice sample A/D conversion[J].Electronic design,2008,24(14):311-312.
[6]譚浩強(qiáng).C++程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004,6.
[7]林志琦.基于Proteus的單片機(jī)可視化軟硬件仿真[M].北京:北京航空航天大學(xué)出版社,2006.