增量編碼器的測速及辨向處理
一、增量編碼器簡介編碼器一般有5根線,分別是VCC,GND,A相,B相,Z相。有500線,1024線等等,線數(shù)即編碼盤刻的槽數(shù),線數(shù)越多,測速越準確。A,B兩相均為測速脈沖,但他們相差90度相位,我們可以利用這90度相位差來實習辨向,具體作法請看下面。Z相是機械零位,編碼器轉一周,Z相輸出一個脈沖,所以一般用它來測編碼器轉了幾周或者告知微處理器已經回到機械零位。
二、如何辨向
有些單片機本身具有正交解碼功能,如飛思卡爾K60,STM32,可以直接把A,B相 接入正交解碼模塊,然后軟件就可以處理了。對于沒有正交解碼模塊的單片機,可以這樣處理進行處理,將A相的下降沿作為中斷觸發(fā)端,當中斷發(fā)生時判斷B相的電平。如B想為高電平,則編碼器正轉(或反,看你自己怎么定義正反),若B相為低電平,則編碼器反轉。
三、如何計轉速
測轉速就一句話,辨向中有提到,PULSEL_1(對應A相)一方面接到單片機的IO口上(配置其為下降沿觸發(fā)),另一方便接在D觸發(fā)器的1D腳上,為什么要這樣呢?原因就是接到單片機上要測速,測速即測在一定時間內測出脈沖的個數(shù),脈沖個數(shù)/一段時間,就是轉速。如何測脈沖,將A相所接引腳配置為下降沿觸發(fā),如果說編碼器是500線的,那么編碼器轉一圈產生500個下降沿脈沖。如何產生定時,用定時器即可。
舉個例子來說,500線的編碼器,100ms的定時,下降沿觸發(fā),單片機里定義整形變量pulse。正轉時,每產生一個下降沿脈沖,pulse++;反轉時,每產生一個下降沿脈沖,pulse--。定時100ms時間到,讀取變量pulse的個數(shù),換算之后即可得到轉速。
四、單位換算
經過以上幾步就可以得到一個這樣的單位,脈沖數(shù)/一段時間。那么如何得到轉速單位 r/s 呢?
編碼器一轉(1 r)產生500個脈沖,當100 ms定時時間到,讀取到pulse = 50000 時,說明100 ms時間內編碼器正轉了50000/500 = 100轉(r),即 100
r/100 ms,也即 1 r/ms = 1000 r/s。
