基于PIC單片機的測速系統(tǒng)設(shè)計
0 引言
在現(xiàn)代工業(yè)測量系統(tǒng)中, 位移量和轉(zhuǎn)速的測量是關(guān)鍵環(huán)節(jié)。早期的測量系統(tǒng), 雖然技術(shù)比較成型, 但一般是采用分立元件構(gòu)成的, 其結(jié)果是測量精度低, 穩(wěn)定性差, 成本高, 抗干擾能力差等。隨著電子技術(shù)和計算機技術(shù)的發(fā)展, 測量系統(tǒng)也逐步向智能化轉(zhuǎn)化。本文利用PIC單片機實現(xiàn)了轉(zhuǎn)速的實時測量,通過推導(dǎo)多倍周期法的測量誤差算法,得出了一種有效的確定多倍周期法中周期倍數(shù) N的方法,使之在高、低速測量時均有很小的誤差。本設(shè)計硬件結(jié)構(gòu)設(shè)計簡單,測量速度快,精度高,運行可靠,可以滿足人們愈來愈高的對速度準確性和實時性的要求。
1 系統(tǒng)主要性能特點
(1) 硬件結(jié)構(gòu)設(shè)計簡單,測量速度快,精度高,運行可靠。
(2) 采用帶有EEPROM的PIC單片機,設(shè)計了簡單可靠的掉電保護功能。
(3) 兩種測量模式:測轉(zhuǎn)速和測速度(測速度時要預(yù)先通過按鍵輸入轉(zhuǎn)盤的周長)。
(4) 有上下限報警功能,適用于對速度或轉(zhuǎn)速有限制的場合。
(5) 有3個獨立的按鍵,可方便的設(shè)置上下限報警值、測量模式以及轉(zhuǎn)盤周長。
2 系統(tǒng)硬件設(shè)計
圖(1) 系統(tǒng)體系結(jié)構(gòu)
PIC16F874A是由美國Microchip公司生產(chǎn)的8位 Flash型單片機,具有低功能、低工作電壓、高性能、高速度、全靜態(tài)、較強的引腳直接驅(qū)動能力等特點。由于采用哈佛(Harvard)雙總線和兩級指令流水線結(jié)構(gòu),使指令執(zhí)行和取指操作同步進行,因而可達到很高的執(zhí)行速度。該系列單片機只有35條單字節(jié)指令,除跳轉(zhuǎn)指令是2周期指令外,其它指令都是單周期指令。這與其它的8位單片機相比節(jié)省了1/2的程序空間,并且具有4∶1的速度優(yōu)勢。PIC16F874A有4K×14的程序存儲器,192個字節(jié)的通用寄存器,128字節(jié)的EEPROM,33個I/O口,3個定時/計數(shù)器及2個捕捉/比較/PWM模塊,2個串行口,A/D轉(zhuǎn)換器具有5路模擬量輸入端, 還有時鐘、復(fù)位、看門狗定時器等。由于該單片機具有非常豐富的資源,使硬件電路得到簡化,從而降低成本。
2.1 信號輸入電路
在此部分電路設(shè)計時采用的器件是夏普公司生產(chǎn)的OPTC光斷續(xù)器,事實上用其他的器件也是可以的,只要能產(chǎn)生讓單片機檢測到的脈沖信號就可以了。該光斷續(xù)器將發(fā)光部分的GaAs紅外發(fā)光二極管和感光部分的光電二極管以及信號處理電路(放大器,施密特觸發(fā)器及穩(wěn)壓電路等)集成在一塊芯片上。這種光斷續(xù)器具有下列特點:
(1) 體積小,可靠性高;
(2) 外圍電路少;
(3) 能與TTL 、LSTTL、CMOS器件直接連接;
(4) 工作電壓范圍大(Vcc=4.5—16V)
2.2 掉電保護電路
單片機在工作時,困某種原因造成突然掉電,將會丟失數(shù)據(jù)存儲器(RAM)里的數(shù)據(jù),沖掉前期工作的所有信息。雖然單片機主電源里有太容量濾波電容器,當?shù)綦姇r,單片機靠貯存在電容器里的能量,一般能維持工作1Oms左右。為此,要求一旦市電發(fā)生瞬問斷電時,必須要在小于 10ms的時間內(nèi)將RAM中的數(shù)據(jù)及時的轉(zhuǎn)存到EEPROM數(shù)據(jù)寄存器中,在下次上電工作時將數(shù)據(jù)從EEPROM中調(diào)出來確保單片機系統(tǒng)能正常運行。由于在PIC16F874A單片機中集成了128個字節(jié)的EEPROM這就使得保護電路非常簡單,具體電路見圖(2)。其工作原理如下: PIC單片機B口的RB4—RB7引腳在設(shè)為輸入模式下,當輸入電平由高到低或者由低到高發(fā)生電平變化時,可以使單片機產(chǎn)生中斷,這就是通常所說的引腳狀態(tài)變化中斷。當12V電源電壓在正常范圍內(nèi)時,單片機RB4引腳的電平為高電平;而當12V電源被切斷時,由于二極管D1的單向?qū)ㄐ宰柚沽藶V波電容C3 的回路,使得RB4引腳上的分壓迅速的下降到足以觸發(fā)RB4引腳內(nèi)部電路發(fā)生電平反轉(zhuǎn),引發(fā)中斷,在中斷程序中完成對需要保護的數(shù)據(jù)燒寫到EEPROM 中。在燒寫的瞬間,單片機的工作電源依靠電源濾波電容維持即可夠用。
3 檢測方法和誤差處理
通常對于轉(zhuǎn)速或速度的測量可轉(zhuǎn)化為對信號頻率(或周期)的檢測,對信號頻率的檢測最常采用的三種方法是:記數(shù)法、周期法和多倍周期法。其中記數(shù)法適合測高頻,測低頻時所需時間較長故誤差較大;周期法適合測低頻,測高頻信號時要求的參考脈沖的頻率高故誤差大;這兩種方法共同的優(yōu)點是實現(xiàn)比較簡單。而多倍周期法在一定程度上可以解決高低頻之間的矛盾,但實現(xiàn)相對困難。因為多倍周期法要預(yù)先確定一個恰當?shù)谋稊?shù)N,而N的預(yù)先確定是比較困難的。如果N確定不當,同樣會使檢測的時間增長或高頻時有較大的誤差。在實際設(shè)計中,本文對多倍周期法進行了一定的改進,并提出了一個簡單確定N 的算法,即可自動地確定恰當?shù)腘,又可滿足高低頻信號的檢測要求。
多倍周期法由周期法改進而來,周期法在測量信號的周期時,由一個固定頻率的參考脈沖作為加法計數(shù)器的時鐘信號。在被測信號一個周期的開始啟動加法計數(shù)器;然后,到這個周期的結(jié)束停止計數(shù),假設(shè)這時候計數(shù)器的值為M ,參考脈沖的周期為Tm ,則M、Tm 與被測信號周期T有如下的關(guān)系:
T = M * Tm 轉(zhuǎn)速 n = 60/T = 60/(M * Tm) (轉(zhuǎn)/min)
在這一節(jié)只討論轉(zhuǎn)速的檢測方法和誤差處理,因為轉(zhuǎn)速和速度的檢測方法和誤差處理是相似的。轉(zhuǎn)速n與速度v的關(guān)系為:v = n * L/ 60 (米/秒) (其中L為轉(zhuǎn)盤周長)
一個Tm 周期對應(yīng)的轉(zhuǎn)速為: n/M = 60/(M * M * Tm)
根據(jù)圖(3)所示,最大的誤差有2 * n/M,即最大誤差 = 2 * n/M = 120/(M * M * Tm)。
圖(3)參考脈沖信號與被檢測信號之間的關(guān)系
這樣就得到了為什么周期法適合于測量低頻信號的原因。從誤差關(guān)系式可看出,當n大時,則誤差大;當n小時,則誤差小。,從上式也可得到減少誤差n 的兩個方法:一個是增加M;另一個是增加Tm。對于一臺確定的檢測儀而言,Tm是一個固定的常數(shù)。這樣只有增加M值。但是,對于一個轉(zhuǎn)速n,一個周期內(nèi)的M也是一個相對固定的值。因此,要增加M值就只有增加檢測的周期數(shù),即由一個周期內(nèi)的測量擴大到多個周期的測量。如果假設(shè)N個周期內(nèi)的計數(shù)值為Mn,則有:
可見這兩式是相互矛盾的。要減少誤差就必須增加N,而這時測量時間就相應(yīng)增加;要減少測量時間就要減少N,而這時的誤差就相應(yīng)增加。顯然,要預(yù)先確定一個恰當?shù)腘值是比較困難的。因為,不同的轉(zhuǎn)速對應(yīng)不同的N值。
針對N值難以確定這個問題,本文采取了一種比較合理的確定N值的方法。對于單片機而言,它的計數(shù)器的位數(shù)是有限的,假設(shè)為P位。對一個轉(zhuǎn)速n而言,當計數(shù)器達到滿刻度時,對應(yīng)的誤差是最小的。因此,為使檢測的誤差最小,就可以以計數(shù)器是否達到滿刻度為標準來確定一個轉(zhuǎn)速n 對應(yīng)的N值。假設(shè)單片機指令執(zhí)行周期為Tm,計數(shù)器溢出時間為Tn,檢測到的信號次數(shù)為N,此時的轉(zhuǎn)速為n,就有如下關(guān)系式:
Tn = ( ) Tm 誤差: n = 120/[( )( ) Tm/N]
轉(zhuǎn)速: n = 60N/ ( ) Tm (轉(zhuǎn)/min)
從n與N的關(guān)系式中可以看出,這時侯不同的n有不同的N值。為求計數(shù)器達到滿刻度時的N值,具體做法是:用單片機的計數(shù)器1來計時,再用軟件設(shè)計一個計數(shù)器對被測信號進行計數(shù)。當計數(shù)器1溢出以后,取該計數(shù)器的值就可計算得到要求的N值。這樣就不要象通常的多倍周期法那樣,預(yù)先確定一個N值。
4 測速算法與系統(tǒng)實現(xiàn)程序
本文采用PIC單片機實現(xiàn)測速系統(tǒng),在PIC中檔系列單片機中,定時器TMR1是一個標準配置,它是一個16位的定時器/計數(shù)器。如圖(2)所示,我們將檢測信號輸入到單片機INT端。利用定時器1的定時和INT的中斷功能來實現(xiàn)測量。
4.1 主程序流程圖見圖(4)
(1)初始化程序:初始化定時器1、INT1及各輸入輸出口設(shè)置,清顯示緩沖區(qū)等。
(2) 按鍵掃描程序:當掃描到有按鍵按下時做出相應(yīng)的響應(yīng),用來設(shè)置上下限報警值、測量模式以及被測轉(zhuǎn)盤周長。
(3) 測量值比較與報警:用顯示緩沖區(qū)的值與預(yù)設(shè)在EEPROM中的上下限報警值逐個比較,當大于上限值或小于下限值時報警。
(4)顯示程序:將顯示緩沖區(qū)的BCD碼經(jīng)查表譯碼后送七段數(shù)碼管顯示。
4.2 中斷服務(wù)程序流程圖見圖(5)
(1)中斷類型判斷:當TMR1中斷時,計數(shù)器1溢出次數(shù)W =W+1;當INT中斷時,被檢測信號周期數(shù)N =N+1;當RB4電平變化中斷時,保存需要掉電保護的數(shù)據(jù)到EEPROM中;
(2)轉(zhuǎn)速n的計算公式為:,其中Tm為指令執(zhí)行周期;速度的計算公式為:v=n*L/60(米/秒)其中L為轉(zhuǎn)輪周長。
圖(5)中斷程序流程圖
周期;速度的計算公式為:v =n*L/60(米/秒) 其中L為轉(zhuǎn)輪周長。
圖(4)系統(tǒng)主流程圖
5 結(jié)語
本文介紹了一種利用單片機為核心器件實現(xiàn)高精度轉(zhuǎn)速和速度測量的系統(tǒng)。經(jīng)過對測速系統(tǒng)的誤差分析,論證了該方法的可行性和實用性,并成功的利用該系統(tǒng)實現(xiàn)了對卷揚機速度的測量,測試中各項功能正常,運行可靠,使用方便,效果好,達到了設(shè)計的要求。
本文作者創(chuàng)新:采用了以單片機定時器溢出為準來確定多倍周期法倍數(shù)N的方法,成功的解決了倍數(shù)N難以確定的難點;設(shè)計了測轉(zhuǎn)速和測速度兩種測量模式,有上下限報警功能使得該系統(tǒng)具有更加廣泛的應(yīng)用前景。
參考文獻:
[1]姜慶明、楊旭、甘永梅、王曉鈺、王兆安。一種基于光電編碼器的高精度測速和測加速度方法[J]。微計算機信息,2004,6:48-50。
[2]張明峰。PIC單片機入門與實踐。北京航空航天大學(xué)出版社,2004年第1版。
評論