旋轉(zhuǎn)編碼器的編程思路
旋轉(zhuǎn)編碼器應用于角度定位或測量時,通常有A、B、Z三相輸出。A相和B相輸出占空比為50%的方波。編碼器每轉(zhuǎn)一周,A相和B相輸出固定數(shù)目的脈沖。當編碼器正向旋轉(zhuǎn)時,A相比B相超前四分之一個周期;當編碼器反向旋轉(zhuǎn)時,B相比A相超前四分之一個周期。A相和B相輸出方波的相位差為90°。編碼器每轉(zhuǎn)一周,Z相輸出一個脈沖。由于編碼器每轉(zhuǎn)一周,A相和B相輸出固定數(shù)目的脈沖,則A相或B相每輸出一個脈沖,表示編碼器旋轉(zhuǎn)了一個固定的角度。當Z相輸出一個脈沖時,表示編碼器旋轉(zhuǎn)了一周。因此旋轉(zhuǎn)編碼器可以測量角位移及位移方向。
我們通常用的是增量型編碼器,可將旋轉(zhuǎn)編碼器的輸出脈沖信號直接輸入給PLC,利用PLC的高速計數(shù)器對其脈沖信號進行計數(shù),以獲得測量結(jié)果。不同型號的旋轉(zhuǎn)編碼器,其輸出脈沖的相數(shù)也不同,有的旋轉(zhuǎn)編碼器輸出A、B、Z三相脈沖,有的只有A、B相兩相,最簡單的只有A相。
編碼器有5條引線,其中3條是脈沖輸出線,1條是COM端線,1條是電源線(OC門輸出型)。編碼器的電源可以是外接電源,也可直接使用PLC的DC24V電源。電源“-”端要與編碼器的COM端連接,“+ ”與編碼器的電源端連接。編碼器的COM端與PLC輸入COM端連接,A、B、Z兩相脈沖輸出線直接與PLC的輸入端連接,A、B為相差90度的脈沖,Z相信號在編碼器旋轉(zhuǎn)一圈只有一個脈沖,通常用來做零點的依據(jù),連接時要注意PLC輸入的響應時間。旋轉(zhuǎn)編碼器還有一條屏蔽線,使用時要將屏蔽線接地,提高抗干擾性。
編碼器-----------PLC
A,B,Z 分別接入PLC的輸入點(按速計數(shù)器HSC的規(guī)定)
+24V------------+24V
COM------------- -24V-----------COM
旋轉(zhuǎn)編碼器的應用電路為:
其中100pF的電容為去抖動的作用,但是軟件處理的時候最好還是加上軟件去抖動,以防止誤判。軟件去抖動最常用的就是延時和連續(xù)采樣多次,在此不再詳述。
A和B輸出波形為
通過輸出波形圖可知每個運動周期的時序為
靜止狀態(tài)為11或00,A異或B的結(jié)果為0(注1)
單片機可利用定時器中斷來檢測A和B的狀態(tài),中斷時間在5~20ms之間均可。
當檢測到A^B= 0時,表示為靜止狀態(tài),記下A和B的狀態(tài)。
當檢測到A^B= 1時,表示有轉(zhuǎn)動,讀取AB的狀態(tài),如果AB是從11到01或者是
從00到10則為正轉(zhuǎn),反之如果AB是從11到10或者是從00到01則為反轉(zhuǎn)。
此方法比較簡單可靠,可以檢測轉(zhuǎn)動一格又可以檢測快速轉(zhuǎn)動。
注1:異或運算
異或的運算方法是一個二進制運算,C語言中用A^B表示A異或B:
1^1=0
0^0=0
1^0=1
0^1=1
兩者相等為0,不等為1.