鄧兆翠 張鳳登
(上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
在高精度位置控制場合,光電增量式編碼器(以下簡稱編碼器)是一種常用的位移檢測傳感器。當(dāng)檢測對(duì)象的直線位置或者角位置發(fā)生變化時(shí),帶動(dòng)編碼器轉(zhuǎn)動(dòng),編碼器便會(huì)發(fā)出A、B兩路相位相差±90°的、規(guī)則的數(shù)字脈沖信號(hào)。位移量與脈沖個(gè)數(shù)成正比,而A、B兩路脈沖的相位關(guān)系則表示編碼器的轉(zhuǎn)動(dòng)方向,即位移量的變化方向。編碼器正轉(zhuǎn)時(shí),A脈沖相位相對(duì)B脈沖超前90°;而編碼器反轉(zhuǎn)時(shí),A脈沖相位相對(duì)B脈沖滯后90°。因此,通過對(duì)脈沖個(gè)數(shù)的可逆計(jì)數(shù),即可實(shí)現(xiàn)對(duì)位移量的可逆計(jì)數(shù),從而計(jì)算出被檢測對(duì)象的精確位移。
由于實(shí)際應(yīng)用場合存在物理或電路干擾,會(huì)對(duì)A、B兩路脈沖輸出產(chǎn)生抖動(dòng)和毛刺,影響兩路脈沖相位關(guān)系的判斷和脈沖個(gè)數(shù)的計(jì)數(shù),從而影響計(jì)數(shù)結(jié)果。因此,必須在實(shí)現(xiàn)可逆計(jì)數(shù)的同時(shí),在不降低計(jì)數(shù)速度的前提下,最大限度地降低毛刺和抖動(dòng)干擾,提高計(jì)數(shù)精度。
編碼器輸出的脈沖波形如圖1所示。由圖1可知,當(dāng)A相處于下降沿、B相為高電平時(shí),表示編碼器正轉(zhuǎn);當(dāng)A相處于下降沿、B相為低電平時(shí),表示編碼器反轉(zhuǎn);無轉(zhuǎn)動(dòng)時(shí),A、B輸出皆為低電平。
圖1 編碼器輸出脈沖波形圖Fig.1 Waveforms of the output pulse of encoder
單中斷計(jì)數(shù)法的原理如下[1-2]。將 A 相接到INT0,將中斷0觸發(fā)方式設(shè)置為下降沿觸發(fā);B相接到普通的I/O口。在中斷0的中斷服務(wù)程序中,讀取B相電平,如果B相電平為高電平,則表示正轉(zhuǎn),反之為反轉(zhuǎn)。同時(shí)在中斷服務(wù)程序中計(jì)一次脈沖數(shù),根據(jù)判斷出的轉(zhuǎn)動(dòng)方向加1或者減1。
對(duì)應(yīng)的單中斷計(jì)數(shù)法C51程序如下。
通過圖1所示脈沖波形可以觀察到,理想狀態(tài)下,位移量與A相脈沖個(gè)數(shù)和B相脈沖個(gè)數(shù)均成正比,這是因?yàn)锳相脈沖與B相脈沖一一對(duì)應(yīng)。但是利用單中斷計(jì)數(shù)方法,即只以A相一路脈沖個(gè)數(shù)作為計(jì)數(shù)依據(jù)時(shí),A相上的毛刺會(huì)嚴(yán)重影響計(jì)數(shù)結(jié)果。如在沒有位移變化的情況下,A相出現(xiàn)毛刺;而B相正常、為低電平時(shí),那么A相上的每一毛刺都會(huì)致使計(jì)數(shù)減1,導(dǎo)致檢測結(jié)果比實(shí)際位移量偏小。因此,采用單中斷計(jì)數(shù)方法雖然軟硬件實(shí)現(xiàn)簡單,但計(jì)數(shù)精度不可靠,只能用于計(jì)數(shù)精度較低的場合[3-4]。
由圖1可知,當(dāng)B相為高電平時(shí),A相正跳變?yōu)榉崔D(zhuǎn),負(fù)跳變?yōu)檎D(zhuǎn),A、B脈沖成對(duì)出現(xiàn)。鑒于此,雙中斷計(jì)數(shù)方法僅當(dāng)B相為高電平時(shí)才對(duì)A相脈沖信號(hào)進(jìn)行計(jì)數(shù),并通過A相電壓的跳變方向判斷編碼器轉(zhuǎn)動(dòng)方向。相對(duì)于單中斷計(jì)數(shù)法,采用雙中斷計(jì)數(shù)法,當(dāng)B相為低電平時(shí),A相出現(xiàn)的毛刺并不會(huì)引起計(jì)數(shù)誤差;而僅在A相、B相同時(shí)出現(xiàn)毛刺的情況下才可能導(dǎo)致計(jì)數(shù)誤差,精確度明顯提高[5-6]。
雙中斷計(jì)數(shù)法硬件連接圖如圖2所示。
圖2 雙中斷計(jì)數(shù)法硬件連接圖Fig.2 Hardware connections for double interrupt counting method
圖2中,INT0和INT1都分別設(shè)為以下降沿觸發(fā)。當(dāng)DIR由高到低跳變時(shí),觸發(fā)INT0,表示正轉(zhuǎn),相應(yīng)的中斷服務(wù)程序進(jìn)行加1計(jì)數(shù);當(dāng)DIR由低到高跳變時(shí),觸發(fā)INT1,表示反轉(zhuǎn),相應(yīng)的中斷服務(wù)程序進(jìn)行減1計(jì)數(shù)[7-8]。
在圖2所示的硬件連接圖的基礎(chǔ)上,對(duì)應(yīng)的雙中斷計(jì)數(shù)法的C51程序如下。
當(dāng)然,雙中斷計(jì)數(shù)法也有它的不足之處。它占用了兩個(gè)外部中斷,在一個(gè)完整的控制系統(tǒng)中,這是十分占用資源的;同時(shí),一次計(jì)數(shù)引發(fā)一個(gè)外部中斷和計(jì)數(shù)器中斷,在實(shí)時(shí)控制系統(tǒng)中,這將影響其他控制部分的實(shí)時(shí)性。因此,雙中斷計(jì)數(shù)法不適用于高速計(jì)數(shù)兼需實(shí)時(shí)控制的場合。
為了解決雙中斷計(jì)數(shù)法占用過多中斷資源、影響控制程序的實(shí)時(shí)性等問題,掃描計(jì)數(shù)法將編碼器的A、B相分別連接到80C51的普通I/O口,采用固定時(shí)間間隔同時(shí)掃描A、B兩相電平,結(jié)合A、B兩相的相位次序,同時(shí)完成計(jì)數(shù)和辨向。
根據(jù)圖1所示輸出脈沖波形,每隔1/4周期采樣一次A、B脈沖序列。由采樣得到的脈沖序列可以觀察到:正轉(zhuǎn)時(shí) A 路 ={1,0,0,1,1}、B 路 ={1,1,0,0,1};反轉(zhuǎn)時(shí) A 路 ={1,1,0,0,1}、B 路 ={1,0,0,1,1}。
為了分析A、B脈沖的相位關(guān)系,固定地將A相作為高位、B相作為低位,并將同時(shí)刻采樣值相加,得出反轉(zhuǎn) 的 數(shù) 組 為 {3,2,0,1,3}、正 轉(zhuǎn) 的 數(shù) 組 為{3,1,0,2,3}。以下是基于8051、晶振頻率為12 MHz、掃描間隔為1 ms的掃描計(jì)數(shù)法的C51程序。
若掃描間隔為1 ms,則最快4 ms掃描一個(gè)完整的計(jì)數(shù)數(shù)組,這樣便完成一次可逆計(jì)數(shù)。以ALPS(阿爾卑斯)的EC11E型號(hào)編碼器為例,編碼器旋轉(zhuǎn)360°發(fā)出18個(gè)脈沖,掃描計(jì)數(shù)法采用1 ms的掃描間隔,可以完成角速度5°/ms以下的位移控制場合的計(jì)數(shù)。如果該控制系統(tǒng)中與編碼器連接的轉(zhuǎn)輪的半徑為0.5 m,則由V=ωr,可得V=(5 000°/180°)×π ×0.5≈43.6 m/s=157 km/h,即掃描計(jì)數(shù)法可完成線速度在157 km/h以下速度場合的計(jì)數(shù)[9-10]。
若要用于更高計(jì)數(shù)速度的場合,可以適當(dāng)減小掃描周期。掃描計(jì)數(shù)法硬件設(shè)計(jì)簡單,軟件掃描時(shí)間固定,不影響其他控制程序的實(shí)時(shí)性。此外,該方法同時(shí)掃描兩列脈沖序列作為計(jì)數(shù)和辨向依據(jù),減小了單一相位上毛刺的干擾,提高了計(jì)數(shù)精確度。
本文從軟硬件結(jié)合的角度,分別分析與介紹了利用一個(gè)外部中斷和兩個(gè)外部中斷以及掃描脈沖序列對(duì)編碼器進(jìn)行可逆計(jì)數(shù)的方法。對(duì)比發(fā)現(xiàn),使用一個(gè)外部中斷時(shí),軟硬件容易實(shí)現(xiàn),但是計(jì)數(shù)誤差偏大,不適合精確位置控制系統(tǒng);使用兩個(gè)外部中斷的方法時(shí),會(huì)影響其他控制功能的實(shí)時(shí)性,因此其比較適合高速、純位移檢測的場合;而掃描方法嚴(yán)格依據(jù)脈沖相位關(guān)系進(jìn)行同步辨向和計(jì)數(shù),能很好地消除毛刺干擾,且該方法可根據(jù)適用的速度適當(dāng)調(diào)整掃描周期,能適應(yīng)一般高速計(jì)數(shù)的場合。
[1]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航天航空大學(xué)出版社,1999.
[2]郭光明,王秀華.光電增量編碼器與微處理器的接口電路[J].電子與自動(dòng)化,1997(5):42-43.
[3]潘明東.光電編碼器輸出脈沖的幾種計(jì)數(shù)方法[J].電子工程師,2004,30(8):69 -71.
[4]張?zhí)旆?51單片機(jī)C語言開發(fā)詳解[M].北京:電子工業(yè)出版社,2008.
[5]鐘富昭.8051單片機(jī)典型模塊設(shè)計(jì)與應(yīng)用[M].北京:人民郵電出版社,2007.
[6]唐中燕,楊曉紅,楊靜.基于單片機(jī)的智能型光電編碼器計(jì)數(shù)器[J].儀器儀表用戶,2001,8(5):11 -13.
[7]高偉,李玄曾.光電編碼器的信號(hào)處理電路研究[J].陜西師范大學(xué)繼續(xù)教育學(xué)報(bào),2007,24(2):116 -118.
[8]任駿原.用Multisim軟件分析觸發(fā)器的狀態(tài)變化過程[J].實(shí)驗(yàn)科學(xué)與技術(shù),2001(1):53-56.
[9]俞竹青,潘全勝.一種光電編碼器用可編程計(jì)數(shù)電路的設(shè)計(jì)[J].傳感器技術(shù),2002(10):22 -24.
[10]劉江省,宋健.一種基于單片機(jī)的增量式光柵參考信號(hào)處理方法[J].工具技術(shù),2009(7):109-111.