畢恩興
(西安鐵路職業(yè)技術(shù)學(xué)院 陜西 西安 710014)
“飛思卡爾”智能車一般由:前瞻(路徑傳感器)、核心控制器、驅(qū)動器、測速模塊等部分組成[1]。為提高模型車的控制精度,引入車速閉環(huán)控制對于模型車在運行過程中的狀態(tài)控制是十分重要的。
文獻[1]與文獻[2]僅對速度測量傳感器的工作原理及如何安裝速度傳感器進行了說明,沒有考慮在實際的使用過程中如何從測速算法角度減小測速誤差,以及對不同數(shù)字測速算法的優(yōu)缺點進行比較分析。筆者主要針對速度傳感器的信號輸出特點,設(shè)計了速度信號處理電路,針對數(shù)字測速的特點分別對M法、T法、M/T法這3種測速算法進行了分析、比較,最終選擇了測速范圍廣、測速誤差在一定范圍內(nèi)較小的適合模型車測速的M/T法作為模型車測速算法并加以實現(xiàn)。通過實驗對測速算法進行了比較、分析,證明了理論分析的正確性,并為智能車測速提供了程序設(shè)計范例。
測速電路主要是由測速傳感器與信號處理電路組成。測速傳感器的功能是將速度信號轉(zhuǎn)換為電信號。信號處理電路的功能是將傳感器輸出的信號轉(zhuǎn)換為單片機可以識別的信號。
智能車競賽中,測速傳感器一般由發(fā)光二極管、光敏三極管與光柵組成,其工作原理是利用光柵遮擋發(fā)光二極管,使光敏三極管輸出頻率與轉(zhuǎn)速成線性關(guān)系的電壓信號,其結(jié)構(gòu)如圖1所示[3]。
圖1 測速傳感器結(jié)構(gòu)圖Fig.1 Speed sensor structure
針對速度傳感器的特點,在模型車車輪轉(zhuǎn)動時,通過光柵遮擋發(fā)光管,從而使光敏三極管產(chǎn)生頻率與速度成線性關(guān)系的電壓信號。對于單片機而言,由于是數(shù)字芯片,對于頻率與速度成線性關(guān)系的模擬電壓信號是不能直接識別的,故在此采用信號處理電路對速度信號進行調(diào)整,使其變?yōu)榭梢员粏纹瑱C識別的數(shù)字脈沖信號。具體的信號處理流程如圖2所示,信號處理電路圖如圖3所示[4]。
圖2 速度信號處理流程Fig.2 Speed signal processing flow
由圖2可知,該信號處理電路首先對速度電壓信號進行削波處理,其次經(jīng)過低通濾波器對高頻干擾進行濾除,通過遲滯比較電路將信號整形為正負電壓的方波信號,由于單片機只能識別邏輯正電平,故采用施密特觸發(fā)器與二極管D75將負電平去除從而得到可以被單片機識別的數(shù)字信號。
圖3 速度信號處理電路Fig.3 Speed signal processing circuit
測速模塊硬件的主要功能是:將頻率隨轉(zhuǎn)速變化的模擬信號送入信號處理電路,最終轉(zhuǎn)換成數(shù)字脈沖信號。單片機通過對脈沖計數(shù)就可以得到轉(zhuǎn)速的具體數(shù)值,該測量方法屬于數(shù)字測速的范疇。常用數(shù)字測速方法有:M法、T法和M/T法。
在一定的時間Tc內(nèi)測取測速電路輸出的脈沖個數(shù)M1,用以計算這段時間內(nèi)的平均轉(zhuǎn)速,稱為M法測速。如圖4所示。把M1除以Tc就可得到測速電路輸出脈沖的頻率f1=M1/Tc,所以又稱頻率法。電動機每轉(zhuǎn)一圈共產(chǎn)生Z個脈沖,把f1除以Z就得到電動機的轉(zhuǎn)速。在習(xí)慣上,時間Tc以秒為單位,而轉(zhuǎn)速是以每分鐘的轉(zhuǎn)數(shù)r/min為單位,則電動機的轉(zhuǎn)速為
上式中,Z和Tc均為常值,因此轉(zhuǎn)速n正比于脈沖數(shù)M1高速時M1大,量化誤差較小,隨著轉(zhuǎn)速的降低誤差增大,轉(zhuǎn)速過低時M1小于1,測速裝置便不能正常工作。所以M法測速只適用于高速段[5]。
圖4 M法測速原理Fig.4 M speed measurement algorithm
在測速電路兩個相鄰輸出脈沖的間隔時間內(nèi),用一個計數(shù)器對已知頻率為f0的高頻時鐘脈沖進行計數(shù),并由此來計算轉(zhuǎn)速,稱作T法測速,如圖5所示。在這,測速時間源于編碼器輸出脈沖的周期,所以又稱周期法。在T法測速中,準(zhǔn)確的測速時間Tt是用所得的高頻時鐘脈沖個數(shù)M2計算出來的,即Tt=M2/f0,則電動機轉(zhuǎn)速為
高速時M2小,量化誤差大,隨著轉(zhuǎn)速的降低誤差減小,所以T法測速適合用于低速段與M法恰好相反[5]。
圖5 T法測速原理Fig.5 T speed measurement algorithm
在M法和T法結(jié)合起來,即檢測Tc時間內(nèi)測速電路輸出的脈沖個數(shù)M1,又檢測同一時間間隔的高頻時鐘脈沖個數(shù)M2,用來計算轉(zhuǎn)速,稱作M/T法測速。設(shè)高頻時鐘脈沖的頻率為f0,則準(zhǔn)確的測速時間Tt=M2/f0,而電動機轉(zhuǎn)速為:
采用M/T法測速時,應(yīng)保證高頻時鐘脈沖計數(shù)器與測速電路輸出脈沖計數(shù)器同時開啟與關(guān)閉,以減小誤差,如圖6所示。只有等到測速電路輸出脈沖前沿到達時,兩個計數(shù)器才同時允許開始或停止計數(shù)[5]。
圖6 M/T法測速原理Fig.6 M/T speed measurement algorithm
綜上所述,3種方法中M法在高速時誤差較小,低速時誤差較大。T法在低速時誤差較小,高速時誤差較大。M/T法測速范圍較廣,在高速時相當(dāng)于M法,低速時相當(dāng)于T法。對于智能車而言從啟動、加速到高速運行,速度范圍較廣,為了能夠在各種情況下對車速進行精確測量,采用M/T法較為適合。
M/T法的原理如圖6所示。該算法需要兩個脈沖計數(shù)器、一個允許計數(shù)定時器。并且要求兩個脈沖計數(shù)器根據(jù)脈沖邊沿同時開啟與關(guān)閉,故需要對脈沖信號的邊沿進行捕捉。Freescale MC9S12DG128單片機的ECT模塊可以實現(xiàn)定時功能,并且可以實現(xiàn)對脈沖邊沿捕捉的功能。
1)脈沖輸入捕捉、定時模塊
脈沖輸入捕捉、定時模塊的功能是:脈沖輸入捕捉中斷、定時器計數(shù)。與該模塊相關(guān)的控制寄存器有:TSCR1、TSCR2、ICSYS、TIOS、TCTL4、TIE。其分別可以完成:定時器使能、定時器分頻、輸入捕捉緩沖使能、觸發(fā)模式設(shè)定、邊沿觸發(fā)類型設(shè)定、中斷使能等功能[6-8]。
2)脈沖累加計數(shù)模塊
該模塊的功能是:實現(xiàn)對外部輸入脈沖進行累加計數(shù)。與該模塊功能相關(guān)的控制寄存器有:PACN01、PBCTL。分別可以實現(xiàn):脈沖累加結(jié)果存儲、脈沖累加計數(shù)器級聯(lián)、脈沖累加計數(shù)器使能功能[6-8]。
3)模數(shù)向下計數(shù)定時模塊
該模塊的功能是:實現(xiàn)長度可控的定時,采用16位減法計數(shù)的方法??梢詫崿F(xiàn)對允許計數(shù)時間的定時。與該模塊相關(guān)的控制寄存器有:MCCTL、MCCNT。分別可以實現(xiàn):計數(shù)器工作模式設(shè)定、中斷使能、計數(shù)器使能、分頻系數(shù)設(shè)定、定時器初值設(shè)定等功能[6-8]。
速度測量算法主要通過3個模塊來實現(xiàn):脈沖輸入捕捉定時模塊、脈沖累加計數(shù)模塊、模數(shù)向下計數(shù)定時模塊。測速程序主流程圖如圖7所示。
圖7 M/T法測速算法流程圖Fig.7 Flow chart of M/T method
由圖7可知,測速算法的實現(xiàn),主要通過兩個中斷程序:脈沖輸入捕捉中斷程序、模數(shù)向下計數(shù)中斷程序,的嵌套實現(xiàn)。在中斷嵌套的同時,采用脈沖累加功能對測速電路輸出脈沖進行計數(shù)得到M1值,采用主定時器脈沖計數(shù)功能得到M2值,已知高頻脈沖計數(shù)頻率,通過公式3即可得到轉(zhuǎn)速。接下來就詳細介紹兩個模塊的實現(xiàn)流程。
1)脈沖輸入捕捉定時模塊
該模塊主要完成:輸入脈沖的邊沿捕捉、高頻定時脈沖的計數(shù)、脈沖累加計數(shù)功能。具體的程序流程圖如圖8所示。其中,實線方框內(nèi),箭頭所指的是相關(guān)寄存器設(shè)置所產(chǎn)生的功能說明,圖8左側(cè)流程圖為寄存器初始化等待中斷流程說明,右側(cè)流程圖為脈沖上升沿捕捉中斷響應(yīng)程序,通過中斷程序設(shè)置固有長度定時器啟動,并且計算定時長度內(nèi)的固有高頻脈沖數(shù)目M2。
圖8 脈沖捕捉定時模塊流程圖Fig.8 Flow chart of capture pulse timing module
2)模數(shù)向下定時計數(shù)模塊
圖9 模數(shù)向下定時計數(shù)模塊流程Fig.9 Flow chart of MCCNT module
該模塊主要實現(xiàn):允許計數(shù)時間Tc的定時。具體的程序流程圖如圖9所示。其中,圖9左側(cè)流程圖為模數(shù)向下計數(shù)器控制寄存器初始化等待流程,右側(cè)流程圖為模數(shù)向下計數(shù)定時器中斷響應(yīng)程序。在中斷響應(yīng)程序中對測速電路輸出數(shù)字脈沖進行計數(shù)可以得出M1值,已知Z值,由通過公式3可求出具體的轉(zhuǎn)速 n(r/min)。
M/T算法實現(xiàn)主要包含:脈沖輸入捕捉初始化、脈沖捕捉中斷響應(yīng)函數(shù)、模數(shù)先下計數(shù)定時中斷3部分。
為了對測速算法的準(zhǔn)確性進行比較與分析,采用信號發(fā)生器模擬測速傳感器輸出信號,將標(biāo)準(zhǔn)信號發(fā)生器產(chǎn)生信號頻率值與測速算法所得頻率值進行比較。具體的實驗測試結(jié)果如表1所示。
表1 實驗測試結(jié)果Tab.1 Experimental results
根據(jù)表 1所測數(shù)據(jù),令 δ為誤差率,根據(jù) δ=(誤差/被測量)×100%,通過給定頻率的變化可以得出不同算法的誤差率變化曲線如圖10所示。
圖10 誤差率曲線Fig.10 Error rate curve
由圖10可以看出,采用不同的測速算法后實際的測試效果是不同的:M法適用于測量高速段;T法適用于測量低速段;M/T法測速范圍較廣,低速相當(dāng)于T法測速,高速相當(dāng)于M法。
通過對“飛思卡爾”智能模型車的測速模塊進行研究,根據(jù)速度傳感器的信號特點設(shè)計了測速信號處理電路。依據(jù)數(shù)字測速原理,對不同的速度測量方法進行了分析與比較,確定了M/T測速算法的適應(yīng)性最廣,準(zhǔn)確度最高。并以MC9S12DG128單片機為硬件開發(fā)環(huán)境實現(xiàn)了該算法,并通過實驗證明了其可靠性。
[1]韓毅,秦緒鑫,趙軒.基于反射式黑白碼盤的模型車測速裝置[J].計算機工程與設(shè)計.2009,30(24):5793-5795.
HAN Yi,QIN Xu-xin,ZHAO Xuan.Speed device of model car based on black and white stripe[J].Computer Engineering and Design.2009,30(24):5793-5795.
[2]雷貞永,謝光驥.飛思卡爾智能車舵機和測速的控制設(shè)計與實現(xiàn)[J].電子設(shè)計工程.2010,18(2):91-92.
LEI Zhen-yong,XIE Guang-ji.Design and implementation of Freescale smart car steering gear and gun control[J].Electronic Design Engineering.2010,18(2):91-92.
[3]彭軍.傳感器與檢測技術(shù)[M].西安:西安電子科技大學(xué)出版社,2003.
[4]林濤.模擬電子技術(shù)基礎(chǔ)[M].重慶:重慶大學(xué)出版社,2003
[5]陳伯時.電力拖動自動控制系統(tǒng)[M].北京:機械工業(yè)出版社,2003.
[6]邵貝貝.單片機嵌入式應(yīng)用的在線開發(fā)方法[M].北京:清華大學(xué)出版社,2007.
[7]劉曉生,王宜懷.嵌入式系統(tǒng)使用HCS12微控制器的設(shè)計與應(yīng)用[M].北京:航空航天大學(xué),2008.
[8]孫同景,陳桂友.Freescale 9S12十六位單片機原理及嵌入式開發(fā)技術(shù)[M].北京:機械工業(yè)出版社,2008.