盧秀和, 陳 楠, 王艷雙
(長(zhǎng)春工業(yè)大學(xué) 電氣與電子工程學(xué)院,吉林 長(zhǎng)春 130012)
A/D轉(zhuǎn)換是PIC18F4520單片機(jī)一個(gè)主要的組成模塊,由于單片機(jī)只能對(duì)數(shù)字量進(jìn)行識(shí)別,這時(shí)就需要設(shè)置一種模擬接口,用于把連續(xù)不斷的模擬量轉(zhuǎn)換成一系列不連續(xù)的、離散的數(shù)字信號(hào),以方便對(duì)所需監(jiān)控的狀態(tài)進(jìn)行讀取[1]。
PIC18F4520單片機(jī)的A/D模塊為10位A/D,占用兩個(gè)數(shù)據(jù)存儲(chǔ)器,即低地址的8位和高地址的低2位[2]。
這樣看來(lái),如果所采集的信號(hào)為直流信號(hào)時(shí),就會(huì)轉(zhuǎn)換出相同的數(shù)字量,反之,當(dāng)采集的信號(hào)為非直流信號(hào)時(shí),就會(huì)轉(zhuǎn)換出不同的數(shù)字量。由于一些系統(tǒng)需要對(duì)一些非直流信號(hào)進(jìn)行實(shí)時(shí)的監(jiān)控,這樣就無(wú)形中加大了對(duì)單片機(jī)的工作約束。文中提出一種相對(duì)于傳統(tǒng)對(duì)順序多路非直流信號(hào)采集時(shí)的方法——循環(huán)中斷式采集。這種方法相對(duì)于傳統(tǒng)的方法,降低了單片機(jī)對(duì)執(zhí)行程序時(shí)間的要求,同時(shí)提高了采集精度。
A/D采集運(yùn)用到剩余電流探測(cè)器(電器火災(zāi)監(jiān)控探測(cè)器的一種,通常含有四路A/D采集信號(hào))中,如果采用常規(guī)順序A/D采集方法,不僅加大了PIC18F4520單片機(jī)對(duì)程序執(zhí)行時(shí)間的要求,同時(shí)還降低了系統(tǒng)的精度。采用循環(huán)中斷式采集方法時(shí),相對(duì)于常規(guī)方法來(lái)說(shuō),不僅降低了程序執(zhí)行的時(shí)間,同時(shí)加大了系統(tǒng)的精度。
通過(guò)分立式剩余電流探頭分別檢測(cè)出四路剩余電流,接入機(jī)器的四路輸入,然后對(duì)每路電流進(jìn)行整流,運(yùn)用單項(xiàng)橋式整流電路,去掉四路信號(hào)中小于0的波形,然后送入運(yùn)算放大器中進(jìn)行放大,同時(shí)完成了把電流信號(hào)轉(zhuǎn)換成電壓信號(hào)進(jìn)行采集,將輸出的電壓信號(hào)傳入PIC18F4520單片機(jī)中進(jìn)行采集。放大電路如圖1所示[3-4]。
圖1 模擬輸入信號(hào)處理電路
由于PIC18F4520單片機(jī)內(nèi)部的A/D模塊供電電壓為5V,因此,在設(shè)計(jì)此電路時(shí)必須保證運(yùn)算放大器輸出到A/D接口的波形最大值不得超于5V,否則導(dǎo)致單片機(jī)燒毀。
搭建硬件電路的系統(tǒng)框圖如圖2所示。
圖2 系統(tǒng)框圖
通過(guò)示波器測(cè)量,四路波形如圖3和圖4所示。
圖3 第一路A/D波形
圖4 后三路A/D波形
從圖中可以看出,所采集的波形周期為20ms,四路 A/D 的平均值分別為230,73,73,73mV。為了提高精度,設(shè)置一周期采集的點(diǎn)數(shù)為64點(diǎn),這樣要求系統(tǒng)在完成一次完整的循環(huán)時(shí)間(包括四路A/D數(shù)據(jù)處理時(shí)間與系統(tǒng)其它程序執(zhí)行時(shí)間)為20ms/64=312μs,系統(tǒng)要求對(duì)四路模擬量進(jìn)行采集,而且要求必須是實(shí)時(shí)監(jiān)控。
PIC18F4520采用的A/D電壓為內(nèi)部電壓,即5V,為10位 A/D,A/D數(shù)據(jù)換算公式[5]:
分別把230mV,73mV代入式(1),得到四路 A/D采集數(shù)據(jù)為:47,14,14,14,轉(zhuǎn)化成十六進(jìn)制數(shù)為0x002F,0x000E,0x000E,0x000E。
主要介紹用到的兩種濾波程序。為了進(jìn)一步提高A/D采集精度,運(yùn)用了3點(diǎn)去壞值和滑動(dòng)平均值濾波兩種濾波程序[6]。
3點(diǎn)去壞值:在定時(shí)器定時(shí)312μs的時(shí)間內(nèi),對(duì)所采集的模擬信號(hào)連續(xù)采集3個(gè)數(shù)據(jù),然后進(jìn)行3個(gè)數(shù)據(jù)的比較,去掉最大值與最小值,留下中間值作為本次采集所得值,然后將此數(shù)據(jù)送入滑動(dòng)平均值濾波區(qū),進(jìn)行滑動(dòng)平均值濾波[7]。
滑動(dòng)平均值濾波:對(duì)四路A/D分別在數(shù)據(jù)存儲(chǔ)器中開(kāi)啟占有64個(gè)12位的數(shù)據(jù)存儲(chǔ)區(qū),把經(jīng)過(guò)3點(diǎn)去壞值的數(shù)據(jù)放入此存儲(chǔ)區(qū)內(nèi),當(dāng)放滿64個(gè)數(shù)據(jù)后,算出此時(shí)的平均值,作為模擬輸入量的平均值,然后當(dāng)下一個(gè)經(jīng)過(guò)3點(diǎn)去壞值的數(shù)據(jù)來(lái)之前,對(duì)濾波存儲(chǔ)區(qū)內(nèi)的數(shù)據(jù)進(jìn)行循環(huán)左移,即把第1個(gè)數(shù)據(jù)去除,第2個(gè)數(shù)據(jù)賦值給第1個(gè),以此類推,最終把第64個(gè)數(shù)據(jù)賦值給63,然后把此時(shí)經(jīng)過(guò)3點(diǎn)去壞值的數(shù)據(jù)賦值給第64位,以后當(dāng)每次采集得到數(shù)據(jù)時(shí),都經(jīng)過(guò)此方法進(jìn)行循環(huán)左移。算出每次濾波區(qū)的平均值即可[8]。
為了更加準(zhǔn)確地證明相對(duì)于常規(guī)順序采集方法,文中提出的循環(huán)中斷式采集方法能夠更加準(zhǔn)確地采集模擬信號(hào),對(duì)兩種方法都進(jìn)行了編寫(xiě)相應(yīng)的實(shí)驗(yàn)程序。
簡(jiǎn)單的理解方法就是,當(dāng)采集完第一路A/D模擬量時(shí),馬上開(kāi)始對(duì)第二路A/D數(shù)據(jù)進(jìn)行采集,依次類推第三路與第四路。系統(tǒng)采集流程圖如圖5所示。
圖5 常規(guī)順序A/D采集方法流程圖
從圖中可以看出,此方法要求四路A/D的采集時(shí)間與數(shù)據(jù)處理時(shí)間要求在一次定時(shí)器定時(shí)之內(nèi)完成,這樣就可能出現(xiàn)程序執(zhí)行過(guò)程時(shí)間過(guò)長(zhǎng),大于定時(shí)器定時(shí)時(shí)間,導(dǎo)致不能正確采集四路模擬量,從而不能得到正確的數(shù)字量。
經(jīng)過(guò)編寫(xiě)相應(yīng)的實(shí)驗(yàn)程序發(fā)現(xiàn),如果采集點(diǎn)數(shù)為64點(diǎn)系統(tǒng)無(wú)法得到正確的平均值,為了能得到正確的平均值,只好減少點(diǎn)數(shù),這樣才能在規(guī)定的時(shí)間內(nèi)完成系統(tǒng)程序,直到減少到16點(diǎn)后,才得以成功,這樣就要求定時(shí)器定時(shí)為20ms/16=1.25ms。系統(tǒng)采集數(shù)據(jù)見(jiàn)表1。
從數(shù)據(jù)的變化可以看出,完全符合波形變化。但是此種方法由于采樣點(diǎn)數(shù)的減少,從而加大了誤差,而且對(duì)時(shí)間的要求非常嚴(yán)格。
通過(guò)采集的數(shù)據(jù)可以得到平均值為0x002A,0x000B,0x000B,0x000A,對(duì)應(yīng)的十進(jìn)制為42,11,11,10,相對(duì)于測(cè)得的數(shù)據(jù)47,14,14,14,可以算出誤差比例為10%,21%,21%,38%。
表1 常規(guī)順序A/D采集所得數(shù)據(jù)
本方法是在系統(tǒng)采集完一路A/D模擬量之后,進(jìn)行A/D數(shù)據(jù)處理程序與系統(tǒng)其它程序的執(zhí)行,在第二次進(jìn)入定時(shí)器中斷后,開(kāi)始對(duì)第二路A/D模擬量的采集,以此類推第三路與第四路。系統(tǒng)采集流程如圖6所示。
圖6 循環(huán)中斷式采集流程圖
從圖中可以看出,此方法只需要求對(duì)一路A/D采集時(shí)間與數(shù)據(jù)處理時(shí)間在一次定時(shí)器定時(shí)之內(nèi)完成,不管采集的模擬量為四路或者更多,都不會(huì)影響系統(tǒng)對(duì)時(shí)間的嚴(yán)格要求。
經(jīng)過(guò)編寫(xiě)相應(yīng)的實(shí)驗(yàn)程序,可以得到正確的平均值,由于采集點(diǎn)數(shù)為64點(diǎn),從而加大了精確度。系統(tǒng)采集數(shù)據(jù)見(jiàn)表2。
表2 循環(huán)中斷采集所得數(shù)據(jù)
通過(guò)采集的數(shù)據(jù)可以得到平均值為0x002E,0x000E,0x000E,0x000D,對(duì)應(yīng)的十進(jìn)制為46,14,14,13,相對(duì)于測(cè)得的數(shù)據(jù)47,14,14,14,可以算出誤差比例為2%,0,0,7%。
通過(guò)兩種實(shí)驗(yàn)對(duì)比,可以得到一些性能指標(biāo)參數(shù)的對(duì)比數(shù)據(jù),見(jiàn)表3[8]。
表3 兩種方法參數(shù)對(duì)比
經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,相比于傳統(tǒng)的實(shí)驗(yàn)方法,文中提出的循環(huán)中斷式采集方法在占機(jī)時(shí)間上為常規(guī)方法的1/4,為系統(tǒng)執(zhí)行其它程序釋放了相當(dāng)大的時(shí)間,在使用PIC18F4520單片的程序存儲(chǔ)器少于常規(guī)方法,同時(shí)提高了系統(tǒng)的采集精度[9]。運(yùn)用到剩余電流檢測(cè)器中,保證了機(jī)器本身更加準(zhǔn)確的運(yùn)行、及時(shí)的報(bào)警以及相應(yīng)的處理工作。
[1] 宋大維,崔友,孫鵬遠(yuǎn),等.基于 RS-485總線的高壓設(shè)備智能試驗(yàn)臺(tái)[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2003,24(4):56-58.
[2] 劉啟中,李榮正,王力生,等.PIC單片機(jī)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2003.
[3] 勒孝峰.模擬電子技術(shù)[M].北京:北京航空航天大學(xué)出版社,2009.
[4] 林渭勛.現(xiàn)代電力電子技術(shù)[M].北京:機(jī)械工業(yè)出版社,2006.
[5] W·H·高斯曼.數(shù)字電子學(xué)[M].李昔.譯.北京:國(guó)防工業(yè)出版社,1985.
[6] 劉和平.PIC18Fxxx單片機(jī)程序設(shè)計(jì)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005.
[7] 明日科技,王娣,安劍,等.C語(yǔ)言程序開(kāi)發(fā)范例寶典[M].北京:人民郵電出版社,2010.
[8] 龍宏波,葉曉慧,譚思煒.歸一化加權(quán)平均值算法在測(cè)量中的應(yīng)用[J].電光與控制,2010,17(12):2-3.
[9] 李頡,呂強(qiáng)中.PIC單片機(jī)A/D轉(zhuǎn)換數(shù)據(jù)存儲(chǔ)及串口效率[J].機(jī)械工程與自動(dòng)化,2006(3):5-6.