基于80C196的高精度、低成本A/D轉(zhuǎn)換器實(shí)現(xiàn)
0 引言
在智能化儀表中,A/D轉(zhuǎn)換器直接影響儀表的性能,A/D轉(zhuǎn)換器的性能主要在兩個(gè)方面,轉(zhuǎn)換精度和轉(zhuǎn)換時(shí)間。目前常用的有逐次逼近型轉(zhuǎn)換器、并行轉(zhuǎn)換器、雙積分轉(zhuǎn)換器等。其中,雙積分A/D轉(zhuǎn)換器因?yàn)檗D(zhuǎn)換精度高、抗干擾性能強(qiáng),并且價(jià)格相對(duì)較低,在數(shù)字測(cè)溫儀表以及工業(yè)現(xiàn)場(chǎng)的慢變信號(hào)數(shù)據(jù)采集中得到非常廣泛的應(yīng)用。但是雙積分A/D轉(zhuǎn)換器在實(shí)際應(yīng)用中仍有不足之處。由于其工作過(guò)程中零點(diǎn)漂移誤差、以及電容充放電造成的非線性,使得其如要獲得較高的精度,對(duì)電路中運(yùn)放、電阻、電壓基準(zhǔn)等元件的精確度和溫漂系數(shù)等指標(biāo)的要求就非常高,特別是它不適合快變信號(hào)的數(shù)據(jù)采集。而適合快變信號(hào)的高精度并行轉(zhuǎn)換器的價(jià)格太高,如12位精度的AD7874價(jià)格就十分昂貴。因此尋找一種高精度、高速且低成本的A/D轉(zhuǎn)換方法是有實(shí)用價(jià)值的。本文利用Intel公司單片機(jī)80C196自帶的10位A/D轉(zhuǎn)換器和PWM輸出,外加放大器、濾波器等簡(jiǎn)單電路配合,實(shí)現(xiàn)了高精度(最高可達(dá)18位精度)、高速A/D轉(zhuǎn)換,滿足快變信號(hào)的A/D轉(zhuǎn)換要求。經(jīng)使用表明,該A/D轉(zhuǎn)換方法的性價(jià)比高,效果非常好。
1 80C196簡(jiǎn)介
80C196是INTEL公司推出的一種準(zhǔn)16位單片機(jī)系列,常見(jiàn)的型號(hào)有80C196KB、80C196KC、80C196KT等,本文選用了80Cl96KB,與其他通用的單片機(jī)相比,80C196KB主要有以下特點(diǎn):(1)片上232字節(jié)的寄存器兼有RAM和累加器的功能,克服了面向累加器引起的瓶頸問(wèn)題,提高了執(zhí)行效率;(2)具有8通道10位A/D轉(zhuǎn)換器(逐次逼近型),特別適合于智能儀表、控制系統(tǒng)等應(yīng)用領(lǐng)域;(3)脈寬調(diào)制輸出器PWM,PWM信號(hào)經(jīng)過(guò)積分就可以獲得直流輸出,可作為D/A轉(zhuǎn)換器使用,D/A轉(zhuǎn)換器的分辨率為8位;(4)高速輸入/輸出器(HSI/HSC)),HSI/HSO特別適合于測(cè)量和產(chǎn)生分辨力高達(dá)2us的脈沖;(5)16為監(jiān)視定時(shí)器(WDT),即看門狗,有軟硬件故障時(shí),WDT將使系統(tǒng)復(fù)位,提供了一種軟硬件故障的恢復(fù)能力;(6)可動(dòng)態(tài)配置的總線,在運(yùn)行過(guò)程中,80C196KB總線可以動(dòng)態(tài)地配置成8位或16位,以便適應(yīng)對(duì)外部存儲(chǔ)器進(jìn)行字節(jié)操作或字操作的不同需求。
80C196的特點(diǎn)決定了它很適合應(yīng)用于自動(dòng)化儀表與控制,自帶的A/D可以方便的進(jìn)行數(shù)據(jù)采集,PWM可以輸出D/A信號(hào),WDT保證了運(yùn)行的可靠性,HIS/HSO方便脈沖信號(hào)的測(cè)量與產(chǎn)生。80C196KB共有68管腳,采用PLCC型封裝,其管腳圖如圖1所示。
2 A/D轉(zhuǎn)換的硬件實(shí)現(xiàn)
利用80C196KB自帶的10位A/D轉(zhuǎn)換器和PWM輸出,實(shí)現(xiàn)高精度A/D轉(zhuǎn)換的原理如下:假設(shè)傳感器提供的信號(hào)為Vs,經(jīng)放大后提供給A/D轉(zhuǎn)換器信號(hào)為As,A/D轉(zhuǎn)換的結(jié)果為Rd,A/D轉(zhuǎn)換的舍入誤差為Ed,對(duì)于逐次逼近式A/D轉(zhuǎn)換有0≤Ed
圖中,運(yùn)算放大器H1和H2構(gòu)成了差分放大器,H1和H2應(yīng)選用性能較好的運(yùn)算放大器,該電路具有極高的共模抑制比,傳感器信號(hào)Vs經(jīng)過(guò)差分放大器放大后得到As,As連接到80C196KB的0號(hào)A/D通道輸入口ACH0,A/D轉(zhuǎn)換后得到高8位數(shù)字量;80C196KB的PWM輸出信號(hào)經(jīng)過(guò)U2與E2構(gòu)成的濾波器濾波后,得到直流信號(hào)Rd,這就是80C196KB通過(guò)PWM進(jìn)行D/A轉(zhuǎn)換的典型電路;運(yùn)算放大器H3構(gòu)成的電路實(shí)現(xiàn)Es×28,該信號(hào)連接到80C196KB的1號(hào)A/D通道輸入口ACH1,完成Es的A/D轉(zhuǎn)換,得到低位數(shù)字量。通過(guò)軟件合并高位數(shù)字量和低位數(shù)字量即可實(shí)現(xiàn)高精度A/D轉(zhuǎn)換。
3 A/D轉(zhuǎn)換的軟件實(shí)現(xiàn)
為保證實(shí)時(shí)性,A/D轉(zhuǎn)換的軟件通過(guò)中斷方式實(shí)現(xiàn),首先主程序在初始化中設(shè)定定時(shí)器和A/D中斷工作模式,定時(shí)器中斷到來(lái)時(shí)啟動(dòng)0通道A/D轉(zhuǎn)換。A/D中斷時(shí),判斷A/D的通道號(hào),當(dāng)0通道ACH0中斷時(shí),讀取并保存A/D結(jié)果的高8位,通過(guò)PWM輸出該結(jié)果,然后啟動(dòng)下一次l通道ACHl的A/D轉(zhuǎn)換;當(dāng)ACHl中斷時(shí),讀取A/D轉(zhuǎn)換結(jié)果并與高8位合并,得到最終結(jié)果。
當(dāng)采用12MHz晶振時(shí),80C196KB的A/D轉(zhuǎn)換時(shí)間為22us,PWM輸出周期是64us,PWM信號(hào)輸出后,為使D/A結(jié)果穩(wěn)定后再啟動(dòng)ACHl,延時(shí)了3倍PWM周期,整個(gè)A/D轉(zhuǎn)換時(shí)間(包括A/D轉(zhuǎn)換時(shí)間和軟件運(yùn)行時(shí)間)可以在1ms內(nèi)完成。A/D中斷服務(wù)程序的流程框圖如圖3所示。初始化程序和定時(shí)器中斷服務(wù)程序較簡(jiǎn)單,流程圖略。
4 結(jié)束語(yǔ)
利用80C196KB單片機(jī)的內(nèi)置10位A/D轉(zhuǎn)換器和PWM信號(hào),輔以簡(jiǎn)單的放大電路和濾波電路實(shí)現(xiàn)模數(shù)轉(zhuǎn)換。這種方法成本低、精度高、速度快、容易實(shí)現(xiàn),具有較高的實(shí)用價(jià)值。該A/D轉(zhuǎn)換方法在我單位研制的全自動(dòng)數(shù)控對(duì)刀儀上得到成功應(yīng)用。
評(píng)論