日本极品少妇xxxx_中文字幕人成乱码在线观看_久久夜色精品国产亚洲av动态图_亚洲春色在线视频_亚洲精品国产熟女久久久

技術(shù)文章您的位置:網(wǎng)站首頁 >技術(shù)文章>光電編碼器的計(jì)數(shù)方法
光電編碼器的計(jì)數(shù)方法
更新時(shí)間:2009-07-06   點(diǎn)擊次數(shù):13387次

 

1 引言
  在位置控制系統(tǒng)中,為了提高控制精度,準(zhǔn)確測量控制對象的位置是十分重要的。目前,檢測位置的辦法有兩種:其一是使用位置傳感器,測量到的位移量由變送器經(jīng)A/D轉(zhuǎn)換成數(shù)字量送至系統(tǒng)進(jìn)行進(jìn)一步處理。此方法雖然檢測精度高,但在多路、長距離位置監(jiān)控系統(tǒng)中,由于其成本昂貴,安裝困難,因此并不適用;其二是使用光電編碼器[1]。光電編碼器是高精度控制系統(tǒng)常用的位移檢測傳感器。當(dāng)控制對象發(fā)生位置變化時(shí),光電編碼器便會發(fā)出A、B兩路相位差90度的數(shù)字脈沖信號。正轉(zhuǎn)時(shí)A超前B90度,反轉(zhuǎn)時(shí)B超前A90度。脈沖的個(gè)數(shù)與位移量成比例關(guān)系,因此通過對脈沖計(jì)數(shù)就能計(jì)算出相應(yīng)的位移。該方法不僅使用方便、測量準(zhǔn)確,而且成本較低,因此在電力拖動系統(tǒng)中,經(jīng)常采用第二種位置測量方法。
  使用光電編碼器測量位移,準(zhǔn)確無誤的記數(shù)起著決定性作用。由于在位置控制系統(tǒng)中,電機(jī)既可以正轉(zhuǎn),又可以反轉(zhuǎn),所以要求計(jì)數(shù)器既要能夠?qū)崿F(xiàn)加計(jì)數(shù),又要能夠?qū)崿F(xiàn)減計(jì)數(shù)。相應(yīng)的計(jì)數(shù)方法可以用軟件來實(shí)現(xiàn),也可以用硬件來實(shí)現(xiàn)。
  使用軟件方式對光電編碼器的脈沖進(jìn)行方向判別和計(jì)數(shù)降低了系統(tǒng)控制的實(shí)時(shí)性,尤其當(dāng)使用光電編碼器的數(shù)量較多時(shí),并且其可靠性也不及硬件電路。但是用軟件計(jì)數(shù)外圍電路比較簡單,所以在計(jì)數(shù)頻率不高的情況下,使用軟件計(jì)數(shù)還是有一定優(yōu)勢的。對編碼器中輸出的兩路脈沖進(jìn)行計(jì)數(shù)主要分兩個(gè)步驟,首先要對編碼器輸出的兩路脈沖進(jìn)行鑒相,即:判別電機(jī)是正轉(zhuǎn)還是反轉(zhuǎn);其次是進(jìn)行加減計(jì)數(shù),正轉(zhuǎn)時(shí)加計(jì)數(shù),反轉(zhuǎn)時(shí)減計(jì)數(shù)。
2 鑒相原理
  脈沖鑒相的方法比較多,既可以用軟件實(shí)現(xiàn),也可以用一個(gè)D觸發(fā)器實(shí)現(xiàn)。下圖是編碼器正反轉(zhuǎn)時(shí)輸出脈沖的相位關(guān)系。

 


  由圖中編碼器輸出波形可以看出,編碼器正轉(zhuǎn)時(shí)A相超前B相90度.在A相脈沖的下降沿處,B相為高電平;而在編碼器反轉(zhuǎn)時(shí),A相滯后B相90度,在A相脈沖的下降沿處,B相輸出為低電平。這樣,編碼器旋轉(zhuǎn)時(shí)通過判斷B相電平的高低就可以判斷編碼器的旋轉(zhuǎn)方向[2]。
3 用軟件實(shí)現(xiàn)脈沖的鑒相、計(jì)數(shù)
 


  編碼器輸出的A向脈沖接到單片機(jī)的外部中斷INT0,B向脈沖接到I/O端口P1.0。當(dāng)系統(tǒng)工作時(shí),首先要把INT0設(shè)置成下降沿觸發(fā),并開相應(yīng)中斷。當(dāng)有有效脈沖觸發(fā)中斷時(shí),進(jìn)行中斷處理程序,判別B脈沖是高電平還是低電平,若是高電平則編碼器正轉(zhuǎn),加1計(jì)數(shù);若是低電平則編碼器反轉(zhuǎn),減1計(jì)數(shù)。
4 用硬件實(shí)現(xiàn)脈沖的鑒相、計(jì)數(shù)
  硬件計(jì)數(shù)在執(zhí)行速度上有軟件計(jì)數(shù)不可比擬的優(yōu)勢,通常采用多個(gè)可預(yù)置4位雙時(shí)鐘加減計(jì)數(shù)器74LS193 級聯(lián)組成的加減計(jì)數(shù)電路。P0-P3為計(jì)數(shù)器的4位預(yù)置數(shù)據(jù)端,與數(shù)據(jù)輸入鎖存器相接;QA-QD 為計(jì)數(shù)器的4位數(shù)據(jù)輸出端,與數(shù)據(jù)輸出緩沖器相接;MR為清零端與上電清零脈沖相接;PL為預(yù)置允許端,由譯碼控制電路觸發(fā);CU 為加脈沖輸入端,CD為減脈沖輸入端;TCU為進(jìn)位輸出端,TCD 為借位輸出端。如下圖所示:
 


  當(dāng)CU和CD中一個(gè)輸入脈沖時(shí),另一個(gè)必須處于高電平,才能進(jìn)行計(jì)數(shù)工作。而從編碼器直接輸出的A、B兩路脈沖不符合要求,不能直接接到計(jì)數(shù)器的輸入端。但我們可以利用這兩路脈沖之間的相位關(guān)系對其進(jìn)行鑒相后再計(jì)數(shù)。下圖給出了光電編碼器實(shí)際使用的鑒相與雙向計(jì)數(shù)電路,鑒相電路用1個(gè)D觸發(fā)器和2個(gè)與非門組成,計(jì)數(shù)電路用3片74LS193組成。
  當(dāng)光電編碼器順時(shí)針旋轉(zhuǎn)時(shí), A相超前B相90°,D觸發(fā)器輸出/Q(W1)為高電平,Q(W2)為低電平,上面與非門打開,計(jì)數(shù)脈沖通過(W3),送至雙向計(jì)數(shù)器74LS193的加脈沖輸入端CU,進(jìn)行加法計(jì)數(shù);此時(shí),下面與非門關(guān)閉,其輸出為高電平(W4)。當(dāng)光電編碼器逆時(shí)針旋轉(zhuǎn)時(shí), A相比B相延遲90°,D觸發(fā)器輸出/Q(W1)為低電平,Q(W2)為高電平,上面與非門關(guān)閉,其輸出為高電平(W3);此時(shí),下面與非門打開,計(jì)數(shù)脈沖通過(波W4),送至雙向計(jì)數(shù)器74LS193的減脈沖輸入端CD,進(jìn)行減法計(jì)數(shù)[3]。
 


5 利用單片機(jī)內(nèi)部計(jì)數(shù)器實(shí)現(xiàn)可逆計(jì)數(shù)
  對以上兩種計(jì)數(shù)方法進(jìn)行分析可知,用純軟件計(jì)數(shù)雖然電路簡單,但是計(jì)數(shù)速度慢,難以滿足實(shí)時(shí)性要求,而且容易出錯(cuò),用外接加減計(jì)數(shù)芯片的方法,雖然速度快,但硬件電路復(fù)雜,由上圖可以看出要做一個(gè)12位計(jì)數(shù)器需要5個(gè)外圍芯片,成本也較高。那么我們能否用單片機(jī)內(nèi)部的計(jì)數(shù)器來實(shí)現(xiàn)加減計(jì)數(shù)呢。我們知道,8051片內(nèi)有兩個(gè)16位的定時(shí)器:定時(shí)器0和定時(shí)器1,8052還有一個(gè)定時(shí)器2,這三個(gè)定時(shí)器都可以作為計(jì)數(shù)器來用。但8051內(nèi)部的計(jì)數(shù)器是加1計(jì)數(shù)器,所以不能直接應(yīng)用,必須經(jīng)過適當(dāng)?shù)能浖幊蹋瑏韺?shí)現(xiàn)其“減”計(jì)數(shù)功能。硬件電路如下:
 


  我們可以把經(jīng)過D觸發(fā)器之后的脈沖,即方向控制脈沖(DIR)接到單片機(jī)的外部中斷INT0端,同時(shí)經(jīng)過反向器后再接到另一個(gè)外部中斷INT1,并且把計(jì)數(shù)脈沖A接到單片機(jī)的片內(nèi)計(jì)數(shù)器T0端即可,相對外部計(jì)數(shù)芯片來說,使用這種方法電路相對要簡單的多。系統(tǒng)工作時(shí),先要把兩個(gè)中斷設(shè)置成下降沿觸發(fā),并打開相應(yīng)的中斷。當(dāng)方向判別脈沖(DIR)由低—高跳變時(shí),INT1中斷,執(zhí)行相應(yīng)的中斷程序,進(jìn)行加計(jì)數(shù);而當(dāng)方向判別脈沖由高—低跳變時(shí),INT0中斷,執(zhí)行相應(yīng)的中斷程序,進(jìn)行“減”計(jì)數(shù)(實(shí)際是重新復(fù)值,進(jìn)行加計(jì)數(shù))。下面是軟件編程思路:

我們在C語言環(huán)境下來實(shí)現(xiàn)計(jì)數(shù)功能:
#Include
int data k=1;
void service_int0() interrupt 0 using 0
{ k-- ;/*標(biāo)志位減1*/
TR0=0 ;/*停止計(jì)數(shù)*/
TH0= -TH0 ;
TL0= -TL0 ;/*把計(jì)數(shù)器重新復(fù)值,此時(shí)相當(dāng)于減計(jì)數(shù)*/
TR0=1 ;/*開始計(jì)數(shù)*/
}
void service_int1() interrupt 2 using 1
{ k++ ;/*標(biāo)志位加1*/
TR0=0 ;/*停止計(jì)數(shù)*/
TH0= -TH0 ;
TL0= -TL0 ;/*把計(jì)數(shù)器重新復(fù)值,此時(shí)相當(dāng)于加計(jì)數(shù)*/
TR0=1 ;/*開始計(jì)數(shù)*/
}
void timer0(void) interrup 1 using2
{ if(k=0)
/*反向計(jì)數(shù)滿*/
else if(k=1)
/*計(jì)數(shù)為0*/
else
/*正向計(jì)數(shù)滿*/
}
void main(void)
{TCON=0X05 ;/*設(shè)置下降沿中斷*/
TMOD=0X05 ;/*T0為16位計(jì)數(shù)方式*/
IE=0X87 ;/*開中斷*/
TH0=0 ;
TL0=0 ;/*預(yù)置初值*/
}
  此方法采用中斷的形式進(jìn)行計(jì)數(shù),硬件電路比較簡單,程序也不復(fù)雜,執(zhí)行速度較快。
6 結(jié)論
  本文分別介紹了利用軟件、外接計(jì)數(shù)芯片及單片機(jī)內(nèi)部計(jì)數(shù)器實(shí)現(xiàn)對編碼器輸出脈沖進(jìn)行計(jì)數(shù)的方法。利用軟件計(jì)數(shù),硬件電路簡單,但占用了較多的CPU資源,執(zhí)行速度較慢。利用外接計(jì)數(shù)芯片的方法計(jì)數(shù),計(jì)數(shù)速度較快,但是要用較多的外圍芯片,硬件電路復(fù)雜。利用單片機(jī)內(nèi)部計(jì)數(shù)器實(shí)現(xiàn)加減計(jì)數(shù),在編碼器旋轉(zhuǎn)方向不頻繁改變的情況下,計(jì)數(shù)速度很快,而且外圍電路簡單,編程也不復(fù)雜,只是占用了兩個(gè)外部中斷和一個(gè)內(nèi)部計(jì)數(shù)器。具體使用哪種計(jì)數(shù)方法,在使用時(shí)還要根據(jù)具體情況進(jìn)行選擇。

                                                                                        

 

 

                                                                                                                              來源于中華機(jī)械網(wǎng)

網(wǎng)站首頁 關(guān)于我們 新聞中心 產(chǎn)品中心 聯(lián)系我們
備案號:滬ICP備09051314號-3   GoogleSitemap   技術(shù)支持:智能制造網(wǎng) 管理登陸
© 2018 上海德晶光電科技有限公司DECHING(m.ccren.com.cn) 版權(quán)所有 總訪問量:479965