旋轉編碼器應用于角度定位或測量時,通常有A、B、Z三相輸出。旋轉編碼器的輸出波形見圖1。
A相和B相輸出占空比為50%的方波。編碼器每轉一周,A相和B相輸出固定數目的脈沖(如100個脈沖)。當編碼器正向旋轉時,A相比B相超前四分之一個周期;當編碼器反向旋轉時,B相比A相超前四分之一個周期。A相和B相輸出方波的相位差為90±45°。編碼器每轉一周,Z相輸出一個脈沖。由于編碼器每轉一周,A相和B相輸出固定數目的脈沖,則A相或B相每輸出一個脈沖,表示編碼器旋轉了一個固定的角度。當Z相輸出一個脈沖時,表示編碼器旋轉了一周。因此旋轉編碼器可以測量角位移及位移方向。
問題出在伺服系統停止工作時,若無鎖定,則旋轉軸受外力(如風力影響)可能自由晃動,因而引起編碼器輸出波形抖動,如圖2所示,
從而引起誤計數。在這種情況下,就不能對波形進行正確計數。雖然可以通過軟件設置標志狀態,用記錄歷史狀態的變化來濾除誤計數,但是程序耗費頗大。因此,本人設計了一個抗抖動計數電路,它能夠自動消除抖動造成的誤計數。
1 抗抖動計數電路原理圖
圖3是抗抖動計數電路原理圖。
此電路濾除了旋轉編碼器輸出波形的抖動現象。該電路分為四個部分:譯碼電路U4A;互鎖電路U5A、U5B;正旋計數鏈J1、J3、J5和反旋計數鏈J2、J4、J6。U4A為二四譯碼器,U5A、U5B為與門,J1~J6為D觸發器。正旋計數鏈負責對編碼器正向旋轉的計數,反旋計數鏈負責對編碼器反向旋轉的計數。
2 抗抖動計數電路工作分析
圖4為二四譯碼器輸出的波形
譯碼器產生d、a、b、c四種不同的狀態。在圖3中當B=0、A=0時,譯碼器 Q0輸出為d狀態,d狀態為高電平。當B=0、A=1時,譯碼器Q1輸出為a狀態,a狀態為高電平。當B=1、A=1時,譯碼器 Q2輸出為b狀態,b狀態為高電平。b狀態不影響計數和方向確定,在圖3電路中沒有使用。當B=1、A=0時,譯碼器Q3輸出為c狀態,c狀態為高電平。
當旋轉編碼器正向旋轉時,譯碼器輸出的狀態順序為d、a、b、c、d、a、b、c……。如圖4所示。當B=0、A=0時,進入d狀態,與門U5A的Pin2=a=0(Pin是管腳的意思),于是U5A的輸出Pin3=0。D觸發器J1的R=d=1、S=0,因此J1被清0。與門U5B的Pin5=c=0,于是U5B的輸出Pin4=0。D觸發器J2的R=d=1、S=0,因此J2也被清0。這時J1、J2的端都為1,與門U5的 Pin1=Pin6=1,
U5A和U5B都處于等待開門狀態。當進入狀態a時,Q1=a=1,U5A的Pin2=a=1。由于c=0所以J2的端仍為1,U5A的Pin1=1U5A的輸出Pin3=1。J1的R=d=0、S=1,因此J1被置1。J1的Q=1,=0。J1的Q=1,正旋標志送到了J3的D端。同時J1的端關閉了U5B。在下一個d出現之前,所有的c脈沖都不會改變J2的狀態。這就是說,J1、J3、J5組成的正旋計數鏈被打開,J2、J4、J6組成的反旋計數鏈被阻斷。U5A、U5B、J1、J2完成互鎖的功能。在進入狀態a時,J3的R=a=1、S=0,J3被清0,J5的R=a=1、S=0,J5被清0。在進入狀態c前,J3的R=a=0、S=0、D=1,J3處于待觸發狀態。J3的CLK=c,當c脈沖上升沿過后,D=1被打入J3的Q端,正旋標志送到了J5的D端。在進入狀態d前,J5的R=a=0、S=0,J5處于待觸發狀態。J5的CLK=d,當d脈沖上升沿過后,D=1被打入J5的Q端,正旋標志送到了正旋計數輸出端。正旋計數輸出端由低電平變為高電平。到此為止,完成了一次正旋計數。當由狀態d進入狀態a時,J5的R=a=1、S=0,J5被清0,正旋計數輸出端由高電平變為低電平。由此可知,當旋轉編碼器正向旋轉時,對應A相和B相的每一個完整周期,正旋計數輸出端都會產生相應的一個脈沖。
a的出現搶到了正旋計數權。只有在d重新出現后,脈沖c才可能有機會搶到反旋計數權。從而保證了一旦進入正旋計數狀態,不全完成這一過程,就進入不了反旋計數狀態。運行時有可能從狀態a返回狀態d,結果這只不過釋放正旋計數權。因這時正旋標志還只在J3輸入端上,a出現時已把J3清0。d狀態只會把0送給J5的Q端,因此不會產生誤計數。
當旋轉編碼器反向旋轉時,譯碼器輸出的狀態順序為d、c、b、a、d、c、b、a……。這種情況的分析方法與正向旋轉的分析方法相同,這里不再敘述。
這就好比接力賽。在一個只允許上一個人的封閉的環形跑道上依次均勻設d、a、b、c四個站,立四個裁判員。d點為起止點、出入口,持棒運動員沿環形跑道一站站往下跑。d裁判長的職責是:運動員往a去(順行),告示:"有人,正向";往c去(逆行),告示:"有人,反相"。其他裁判員的職責是給到達本站的運動員發簽證(計數標志),往回跑,撤銷簽證。d裁判長的計分規則是:憑其他裁判的簽證齊全加牌示,正,加一分,反,減一分,然后撤銷簽證。簽證不齊到d,則不計分,撤銷簽證。運動員在跑道內來回跑或坐時,d裁判視而不見。
例如在圖2中,當從狀態d進入狀態a時,正旋標志送到J3的D端。此后的a、b、a、b、a、b都不起作用,只是把J3和J5反復清0。當從狀態b進入狀態c時,正旋標志送到J5的D端。當從狀態c進入狀態d時,正旋標志送到正旋計數輸出端,同時J1和J2被清零。在從狀態d進入狀態c后,反旋標志送到J4的D端。同時,D=0被打入J3的Q端,這時J5的D端為零。在從狀態c回到狀態d后,反旋計數權被釋放。但是,由于J5的D端為零,雖然這里再次出現狀態d,該d脈沖不會發生計數,這就是抗抖動。
圖5為抗抖動計數電路的輸出波形。此電路計數頻率可達10MHz。A相和B相輸入前應予整形,必要時還要進行光電隔離。
本人把此電路用于對天線云臺角度的定位與測量。天線云臺有兩個旋轉角度,俯仰角從0~90度,方位角從0~354度。旋轉編碼器用的是OMRON公司的E6A2。此編碼器每轉一周,A相或B相輸出一百個脈沖。由此可得,抗抖動計數電路每輸出一個脈沖,編碼器旋轉的角度是3.6度。如果加上變速齒輪將會提高角度測量精度。把抗抖動電路的正旋計數輸出和反旋計數輸出接到單片機的中斷管腳上,其下降沿時給單片機發中斷。單片機把處理的角度信息送到顯示屏上顯示出來,從而完成了對天線云臺角度的定位與測量。這套天線角度顯示系統在實際使用中運行一直很穩定,沒有出現過誤計數現象。