機械測量中旋轉編碼器與單片機的通用接口

發(fā)布時(shí)間:2010-10-10 20:43    發(fā)布者:conniede
關(guān)鍵詞: 編碼器 , 測量 , 單片機
在準備”Freescale”杯全國大學(xué)生智能車(chē)比賽中我們開(kāi)始的時(shí)候是采用紅外傳感器來(lái)測量速度,但是它受環(huán)境的干擾很大,且響應頻率很小,還達不到1K Hz,為了提高速度測量精度和響應頻率,減小環(huán)境的干擾,決定采用了旋轉編碼器,我們成功地開(kāi)發(fā)了單片機與旋轉編碼器的最簡(jiǎn)硬件接口。

1 旋轉編碼器及其工作原理

旋轉編碼器是用來(lái)測量角度的裝置。它分為單路輸出和雙路輸出兩種。單路輸出是指旋轉編碼器的輸出是一組脈沖,而雙路輸出的旋轉編碼器輸出兩組相位差90度的脈沖,通過(guò)這兩組脈沖不僅可以測量轉速,還可以判斷旋轉的方向。

它將測量到的角度量轉換為數字脈沖信號輸出,用來(lái)檢測被檢對象的角位移、角速度、角加速度、線(xiàn)位移、線(xiàn)速度和線(xiàn)加速度等,因而,應用十分廣泛。旋轉編碼器有絕對式和增量式兩種。絕對式所測量到的角位置是絕對位置;而增量式所測量的是轉動(dòng)體角位移的累計量。

旋轉編碼器有一個(gè)中心有軸的光電碼盤(pán),其上有環(huán)形通、暗的刻線(xiàn),有光電發(fā)射和接收器件讀取,獲得四組正弦波信號組合成A、B、C、D,每個(gè)正弦波相差90度相位差(相對于一個(gè)周波為360度),將C、D信號反向,疊加在A(yíng)、B兩相上,可增強穩定信號;另每轉輸出一個(gè)Z相脈沖以代表零位參考位。

由于A(yíng)、B兩相相差90度,可通過(guò)比較A相在前還是B相在前,以判別編碼器的正轉與反轉,通過(guò)零位脈沖,可獲得編碼器的零位參考位。

信號輸出有正弦波(電流電壓),方波(TTL、HTL),集電極開(kāi)路(PNP、NPN),推拉式多種形式,其中TTL為長(cháng)線(xiàn)差分驅動(dòng)(對稱(chēng)A,A-;B,B-;Z,Z-),HTL也稱(chēng)推拉式、推挽式輸出,編碼器的信號接收設備接口應與編碼器對應。編碼器的脈沖信號一般連接計數器、PLC、計算機,PLC和計算機連接的模塊有低速模塊與高速模塊之分,開(kāi)關(guān)頻率有低有高。如單相聯(lián)接,用于單方向計數,單方向測速。B兩相聯(lián)接,用于正反向計數、判斷正反向和測速。 A、B、Z三相聯(lián)接,用于帶參考位修正的位置測量。A、A- 、B、B- 、Z、Z-連接,由于帶有對稱(chēng)負信號的連接,電流對于電纜貢獻的電磁場(chǎng)為0,衰減最小,抗干擾最佳,可傳輸較遠的距離。

為方便用戶(hù)使用,旋轉編碼器信號有電壓、NPN、PNP、T、D多種輸出方式。不同輸出方式的抗電磁干擾的能力也不同。因而,可根據使用的具體要求選擇恰當輸出形式的旋轉編碼器。本設計采用旋轉編碼器的單相聯(lián)接輸出方波。

2 旋轉編碼器與單片機的接口

由于工程實(shí)踐和比賽的需要,我們研究開(kāi)發(fā)了一種單片機與旋轉編碼器直接接口的方法。此方法就是直接將旋轉編碼器信號端與Freescale 的S12的單片機的輸入捕捉/輸出比較通道(IOC)極為簡(jiǎn)潔,由此構成的系統極為簡(jiǎn)單而可靠性很高。旋轉編碼器A相輸出信號,故可使用單片機的IOC1(IOC0~IOC7任意一個(gè)都可以)與之相接。實(shí)際使用時(shí),根據旋轉編碼器信號線(xiàn)的長(cháng)度及電磁干擾的程度,可以在旋轉編碼器與單片機之間增加光電耦合器,或整形門(mén)電路,以抵抗干擾,調理旋轉編碼器的輸入信號。我們在使用中采用了電壓輸出形式的旋轉編碼器,而且信號線(xiàn)很短,接口電路見(jiàn)圖1。


圖1 旋轉編碼器與單片機的接口電路

圖1上拉電阻R是因為我們的編碼器是NPN型集電極開(kāi)路的。在這個(gè)接口方式中,將旋轉編碼器的A相與單片機的IOC1/PT1引腳相連,輸出端需接1KΩ的上拉電阻,這個(gè)電阻是我們通過(guò)實(shí)驗得到的結果,其空載輸出脈沖頻率為0~10KHz。

實(shí)物圖見(jiàn)圖2,我們采用齒輪嚙合的原理將電機的齒輪和編碼器的齒輪嚙合,當電機旋轉帶動(dòng)編碼器的旋轉,編碼器就在接上拉電阻的信號線(xiàn)A上產(chǎn)生方波。


圖2 智能車(chē)上旋轉編碼器的安裝

3 接口程序

上述接口方法是利用了S12單片機的ECT模塊的外部輸入捕捉/輸出比較工作方式。單片機也僅僅使用外部輸入捕捉的來(lái)處理旋轉編碼器數據,只要將旋轉編碼器的A相(或B相)接至外部輸入捕捉口IOC1(IOC0~IOC7任意一個(gè)都可以),程序如下:

用PT1(IOC1)通道作為速度脈沖信號輸入,ECT模塊初始化步驟如下:

1)設置TIOS寄存器,設置PT1通道為輸入;

2)設置TCTL4寄存器,使得上升沿和下降沿(任何沿)均能得到捕捉;

3)設置ICOVW_NOVW寄存器,保護脈沖累加器的數據;

4)置位ICPAR_PA1EN,使能脈沖累加器。設置此寄存器之后,脈沖累加器開(kāi)始計數;

5)通過(guò)讀取PACN1寄存器,即可以獲取當前的脈沖累加值。

初始化程序為:

void ECT_initial(void) //ECT初始化

{

DDRT_DDRT1=0; //置PT1(IOC1)腳為輸入

TIOS_IOS0=0;

TIOS_IOS1=0; //通道1為輸入捕捉


TCTL4=0b00001101; //通道1為任何沿捕捉

TSCR1_TEN=1; //計數器1使能

ICOVW_NOVW1 = 1; //保護

ICPAR_PA1EN = 1; //脈沖累加器使能

}

在每一控制周期開(kāi)始時(shí),MC9S12DG128讀取脈沖累加器中的數值(average),然后與前5個(gè)控制周期的脈沖累加器值求和(all_speed)再求平均值,做為當前速度反饋值(speed)。程序流程圖如圖3所示。


圖3 直流電機測速流程圖

4 計數速度的測試

采用以下兩種方法對電機測速部分進(jìn)行測試:

1)讓智能車(chē)在賽道上行駛,每20ms將賽車(chē)當前速度值通過(guò)SCI串口發(fā)送到上位機上,并利用串口調試器進(jìn)行監控。對正好在一圈當中賽車(chē)行駛的速度值進(jìn)行累加求和,再乘以20ms,得到的總行駛距離約為27m,而模擬賽道總長(cháng)約為26m,兩者的相對誤差不到4%。這說(shuō)明,速度傳感器測量基本準確。

2)直流電機空載運行時(shí),改變脈沖捕捉方式,在上升沿、下降沿和任何沿捕捉方式間進(jìn)行切換。不改變驅動(dòng)電機占空比設置,理想情況下,單位時(shí)間內捕捉的脈沖數滿(mǎn)足:上升沿獲取下的脈沖數=下降沿獲取下的脈沖數=任何沿獲取下的脈沖數/2。在脈沖捕捉方式不變的情況下,改變PWM信號占空比(即改變速度給定值),檢測的速度值與占空比近似成線(xiàn)性比例關(guān)系。以上間接說(shuō)明脈沖檢測的可靠性。
本文地址:http://selenalain.com/thread-31264-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页