用單片機(jī)設(shè)計(jì)A/D、D/A轉(zhuǎn)換器
1、PIC16C62×系列單片機(jī)的特點(diǎn)
本文引用地址:http://butianyuan.cn/article/201610/307431.htmPIC16C62×系列為RISC精簡指令、哈佛結(jié)構(gòu)總線、18個(gè)引腳的單片機(jī)。具有低功耗、高性能、全靜態(tài)、35條指令極易編程的特點(diǎn)。OTP 片種的性價(jià)比極高。除了具備一般單片機(jī)的特點(diǎn)外,PIC16C62×系列內(nèi)部集成了兩個(gè)模擬比較器和一個(gè)4bit的可編程基準(zhǔn)電壓源(REF)。如果利用該單片機(jī)的這些特點(diǎn),只需幾個(gè)外圍元件就具備A/D與D/A轉(zhuǎn)換功能,且分辨率達(dá)到8bit~10bit。價(jià)格上的優(yōu)勢使其在工控行業(yè)、儀器儀表、家電產(chǎn)品的應(yīng)用前景極為樂觀。
本文以8bit分辨率論證A/D、D/A轉(zhuǎn)換的實(shí)現(xiàn)方法,更高分辨率的方案完全相似,只是在編程上作小部分調(diào)整。
2、D/A轉(zhuǎn)換器
PIC16C62×系列單片機(jī)內(nèi)部部分功能模塊及A/D、D/A的電路如圖1所示。
圖1 PIC16C62×部分功能模塊及轉(zhuǎn)換電路
2.1 利用內(nèi)部基準(zhǔn)源
PIC16C62×系列單片機(jī)內(nèi)部基準(zhǔn)源由一16個(gè)抽頭的電阻梯形網(wǎng)絡(luò)構(gòu)成,相當(dāng)于一個(gè)4bit 分辨率的D/A轉(zhuǎn)換器,該基準(zhǔn)源由VRCON特殊功能寄存器控制。VRCON寄存器定義如下:
VREN:REF基準(zhǔn)電壓源使能位,當(dāng)VREN=1時(shí),內(nèi)部基準(zhǔn)電壓源使能。
VROE:REF輸出選擇位,VROE=1時(shí),REF輸出至RA2引腳。
VRR:REF段選擇,REF值可編程設(shè)定為高低兩個(gè)段輸出。
VR3~VR0:4bit REF電壓值。改變?cè)?位的值即改變了REF的電壓值。為了后文說明的需要,將該4位二進(jìn)制碼作如下定義:
VR= VR3VR2VR1VR0
VR-1=VR3VR2 VR1VR0-1
根據(jù)PIC16C62×的特性:
(1)當(dāng)VRR=1時(shí),低段基準(zhǔn)電壓輸出REFL= DD*VRL/24,分辨單元VF1=DD/24。
REFL電壓值范圍為:VRL*DD/24,VRL= 0~15,表示相應(yīng)的低段二進(jìn)制碼值。
(2)當(dāng)VRR=0時(shí),高段基準(zhǔn)電壓輸出REFH=DD/4+DD*VRH/32,分辨單元VF2=DD/32。VRH=0~15,VRH表示相應(yīng)的高段二進(jìn)制碼值。
REFH電壓值變化范圍為:DD/4~23*DD/32。
上述DD為PIC16C62×的供電電壓,只要在該供電端加一個(gè)簡單的電源去耦電路,就能很好的保證基準(zhǔn)電壓REF的抗噪聲要求。
由上述可見,PIC16C62×系列單片機(jī)的內(nèi)部基準(zhǔn)源實(shí)際是一個(gè)可設(shè)定為兩個(gè)段值的4bit D/A轉(zhuǎn)換器,每個(gè)段二進(jìn)制碼值均為0~15,兩個(gè)段的分辨單元不一樣。為了設(shè)計(jì)一個(gè)8bit及以上的D/A轉(zhuǎn)換器,需將REF的范圍進(jìn)行擴(kuò)展。使用 REFH值,即REFH =DD/4~23*DD/32,擴(kuò)展為REFH= (DD/4-DD /32) ~23*DD/32, 向電壓低端擴(kuò)展一個(gè)分辨單元值DD /32,相當(dāng)于二進(jìn)制碼值VRH=0~15擴(kuò)展為-1 ~15。這是實(shí)現(xiàn)8bit及以上D/A轉(zhuǎn)換的關(guān)鍵。VRH= -1是一個(gè)特殊條件,超出了REF取值范圍對(duì)應(yīng)的二進(jìn)制碼值VRH的界限,須由低段基準(zhǔn)電壓REFL與外圍可編程固定衰減比的電阻網(wǎng)絡(luò)實(shí)現(xiàn)。 PIC16C62×的內(nèi)部有一個(gè)場效應(yīng)OC門(漏極開路門),將其接成圖1所示的應(yīng)用電路。
當(dāng)OC門GK導(dǎo)通時(shí),衰減系數(shù)=1/(0+1) 0=2kΩ(內(nèi)部固定電阻)。
當(dāng)OC門GK截止時(shí),衰減系數(shù)=1 (RA4引腳為高阻)。
場效應(yīng)OC門通過編程對(duì)RA4引腳進(jìn)行I/O操作實(shí)現(xiàn)其導(dǎo)通與截止。
由上所述,高段VRH=-1對(duì)應(yīng)的REFH基準(zhǔn)值可由低段二進(jìn)制碼值VRL對(duì)應(yīng)的REFL值乘上系數(shù)得到。
VRH=-1時(shí),REFH=DD/4-DD/32=7DD /32,建立如下方程式
7DD /32 =(DD/24)* VRL* (1)
VRL=1~15 (取整數(shù)) (2)
K 1 (3)
可得VRL=6~15的多組解,取其中任一組解均可,例如:VRL=7,=0.75。
系數(shù)由外接電阻1的取值決定。編程時(shí),首先確定VRL值,然后根據(jù)式(1)計(jì)算出系數(shù),再根據(jù)=1/(0+1)、0=2kΩ 計(jì)算出1的阻值。1也可用一只電位器調(diào)整的方式代替。
2.2 編程4bit PWM實(shí)現(xiàn)8bit的D/A轉(zhuǎn)換
設(shè)8bit 待D/A轉(zhuǎn)換的二進(jìn)制數(shù)存放于PIC16C62×;的數(shù)據(jù)存儲(chǔ)器的某一單元,定義為如下格式:
將其分為兩個(gè)4bit的二進(jìn)制碼:VR=VR3VR2VR1 VR0,VP=VP3VP2VP1V P0。VR控制基準(zhǔn)電壓源實(shí)現(xiàn)4bit D/A轉(zhuǎn)換,VP用于對(duì)基準(zhǔn)源的輸出電壓進(jìn)行4bit PWM(脈寬調(diào)制)。PWM的高電平為VR對(duì)應(yīng)的VREF電壓值, PWM的低電平為VR-1對(duì)應(yīng)的VREF電壓值。如此,以4bit D/A轉(zhuǎn)換基準(zhǔn)電壓源的兩個(gè)相鄰二進(jìn)制碼對(duì)應(yīng)的兩個(gè)VREF值,分別作為4bit PWM的高電平和低電平,這就組成一個(gè)8bit的D/A轉(zhuǎn)換器。圖2、圖3為常規(guī)PWM與D/A+PWM的區(qū)別,常規(guī)PWM 的高電平為VDD(如5V),低電平為0V,其原理眾所皆知,此處不再詳細(xì)敘述。本文所述的D/A+PWM其PWM的工作原理與常規(guī)PWM的工作原理一樣,只是PWM脈沖的高電平與低電平分別由VR 與VR-1的值決定。編程時(shí),首先將待D/A轉(zhuǎn)換的8bit二進(jìn)制數(shù)分成高4位與低4位,低4位存放于PIC16C62×的某一數(shù)據(jù)存儲(chǔ)器R0中,高4位作4次右移(移到字節(jié)低端)存放于PIC16C62×的另一個(gè)數(shù)據(jù)存貯器R1中。利用PIC16C64×的一個(gè)定時(shí)器中斷編寫PWM程序,PWM的占空比由R0中的值(即VP值)決定。將定時(shí)器中斷設(shè)置為最高優(yōu)先級(jí)別,以保證PWM的占空比精度。此段程序的實(shí)質(zhì)是:在由二進(jìn)制碼VP決定占空比的PWM程序中對(duì)VRCON控制寄存器進(jìn)行賦值操作。PWM脈沖的高電平由向VRCON控制寄存器低4位裝入VR產(chǎn)生,PWM脈沖的低電平由向VRCON控制寄存器低 4位裝入VR-1產(chǎn)生。程序中需判斷:當(dāng)VRH=0時(shí),VR-1對(duì)應(yīng)的REF由前所述的REFL低段值實(shí)現(xiàn)。
OUT即為8bit 的D/A輸出。PWM的濾波電路由0、2、1組成,其時(shí)間常數(shù)根據(jù)PWM的周期選定,與具體應(yīng)用中對(duì)D/A轉(zhuǎn)換要求的速度和編程有關(guān)。由于 PIC16C62×的高速RISC精簡指令,D/A轉(zhuǎn)換速度可達(dá)到400Kbit /s以上。DD的溫漂要求盡量小。OUT可根據(jù)需要進(jìn)行放大或電平變換。
3 A/D轉(zhuǎn)換器
如圖1所示,把前述D/A轉(zhuǎn)換輸出的OUT模擬信號(hào)接到PIC16C62×內(nèi)部的一個(gè)比較器的同相端,待轉(zhuǎn)換模擬信號(hào)接到比較器的反相端,這就構(gòu)成一個(gè)典型的逐次逼近型A/D轉(zhuǎn)換器。其原理在許多教科書里講得非常清楚,本文不再詳述。
由于PIC16C62×具有比較器中斷功能,充分利用比較器中斷可提高編程效率及提高A/D轉(zhuǎn)換速度。定義一個(gè)PIC16C62×的數(shù)據(jù)存儲(chǔ)器單元作為A/D轉(zhuǎn)換結(jié)果數(shù)據(jù)寄存器,啟動(dòng)A/D轉(zhuǎn)換之前在此寄存器內(nèi)預(yù)置一個(gè)經(jīng)驗(yàn)數(shù)據(jù),采用前述D/A轉(zhuǎn)換的方法將此數(shù)據(jù)轉(zhuǎn)換成OUT電平,OUT電平與待轉(zhuǎn)換模擬信號(hào)電平進(jìn)行比較。比較器的同相端電平高于反相端電平時(shí),比較器輸出邏輯“1”,并產(chǎn)生一次中斷。比較器的同相端電平低于反相端電平時(shí),比較器輸出邏輯“0”,也產(chǎn)生一次中斷。比較器輸出邏輯狀態(tài)“1”或“0”可從其特殊功能寄存器的相關(guān)位查詢獲取。在比較器中斷程序中,根據(jù)查詢結(jié)果逐次修改“A/D轉(zhuǎn)換結(jié)果數(shù)據(jù)寄存器”中的數(shù)據(jù),使OUT電平逐次逼近并最終收斂于待轉(zhuǎn)換模擬信號(hào)電平,收斂時(shí)數(shù)據(jù)寄存器中的值即為A/D轉(zhuǎn)換結(jié)果。收斂算法的優(yōu)劣是提高A/D轉(zhuǎn)換速度的關(guān)鍵,這與具體應(yīng)用場合及外圍電路參數(shù)相關(guān)。不過,大多數(shù)家電產(chǎn)品應(yīng)用中被轉(zhuǎn)換的模擬信號(hào)為低速緩慢變化信號(hào),對(duì)A/D轉(zhuǎn)換速度的要求并不高。因此,對(duì)收斂算法的要求不高,通常采用從MSB至LSB逐次進(jìn)行比較的算法。另外,待轉(zhuǎn)換模擬信號(hào)須經(jīng)過電平變換,使其變化范圍與OUT電平的變化范圍相一致。
4 小結(jié)
PIC16C62×;系列單片機(jī)內(nèi)部有兩個(gè)獨(dú)立的模擬比較器,并且其數(shù)字I/O口具備直接驅(qū)動(dòng)發(fā)光二極管與LED數(shù)碼管的能力。采用本文所述的 A/D、D/A轉(zhuǎn)換器原理的應(yīng)用電路只占用其內(nèi)部一個(gè)模擬比較器、一個(gè)基準(zhǔn)源、4個(gè)引腳的資源,外圍電路也很簡單,應(yīng)用系統(tǒng)容易做到體積小、可靠性高、性價(jià)比好 。缺點(diǎn)是A/D、D/A的轉(zhuǎn)換速度較慢并占用單片機(jī)的大量時(shí)間資源,適合于低速變化的信號(hào)應(yīng)用。
參 考 文 獻(xiàn)
1 MICROCHIP. PIC16C62× DATA SHEET. 1997. 10 ~ 22
評(píng)論