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