本發(fā)明屬于信號處理領域,涉及一種編碼器輸出信號處理方法。
背景技術:
編碼器作為一個機械與電子相結合的精密測量器件,外部有一個可以左右旋轉同時又可按下的旋鈕,很多設備(如顯示器、示波器等)用它作為人機交互接口。旋轉編碼器信號輸出通道分為單路輸出和雙路輸出兩種。單路輸出是指旋轉編碼器的輸出是一組脈沖,而雙路輸出的旋轉編碼器輸出兩組存在A/B相位差的脈沖,通過這兩組脈沖不僅可以測量轉速,還可以判斷旋轉的方向。一般情況下,雙路編碼器旋轉時,A相和B相各會發(fā)出一個脈沖信號,可通過A相還是B相在前判斷編碼器的旋轉方向,通過A相或B相變化的次數(shù)可以得出旋鈕旋轉的次數(shù)。在嵌入式系統(tǒng)中,多采用中斷方式來處理編碼器輸出信號。一般情況下,設置A相和B相為上升沿和下降沿均觸發(fā)中斷,等中斷到來,再檢測另外一相的信號狀態(tài),從而確定編碼器的旋轉方向。
現(xiàn)有技術中,如上所述的編碼器輸入信號處理方法中存在的問題:雖然這種方法可以確定編碼器的正轉和反轉,但在實際應用過程中,由于工作環(huán)境,編碼器本身等因素影響,加在旋轉編碼器上的振動,往往會成為誤脈沖發(fā)生的原因,每轉發(fā)生的脈沖數(shù)越多,越易受到振動的影響,在低速旋轉或停止時,加在軸或本體上的振動使旋轉槽圓盤抖動,可能會發(fā)生抖動誤碼脈沖,將會引起誤計數(shù),旋轉方向誤判等測量錯誤,因此需要急需一種方法,能夠有效解決編碼器輸出信號處于低電平或下降沿的一段時間內抖動誤碼脈沖較大不能準確判斷編碼器上旋鈕旋轉方向的問題。
技術實現(xiàn)要素:
本發(fā)明的目的在于克服上述現(xiàn)有技術的缺點,提供了一種編碼器輸出信號處理方法,該方法能夠有效解決編碼器輸出信號處于低電平或下降沿的一段時間內抖動誤碼脈沖較大不能準確判斷編碼器上旋鈕旋轉方向的問題。
為達到上述目的,本發(fā)明所述的編碼器輸出信號處理方法包括以下步驟:
將編碼器輸出信號A相對應引腳及B相對應引腳均設置為上升沿觸發(fā)中斷,然后等待編碼器所有引腳的中斷到來;
當編碼器輸出信號A相對應引腳中斷到來時,檢測編碼器輸出信號B相對應引腳的電平,當編碼器輸出信號B相對應引腳為低電平時,則說明編碼器輸出信號A相對應引腳誤中斷;當編碼器輸出信號B相對應引腳為高電平時,則再次檢測編碼器輸出信號A相對應引腳的電平,當本次編碼器輸出信號A相對應引腳為低電平時,則說明編碼器輸出信號A相有抖動;當本次編碼器輸出信號A相對應引腳為高電平時,則延遲N毫秒,然后再檢測當前編碼器輸出信號A相對應引腳的電平,當當前編碼器輸出信號A相對應引腳為低電平時,則認為編碼器輸出信號A相有抖動;當當前編碼器輸出信號A相對應引腳為高電平時,則說明編碼器上旋鈕的旋轉方向為右旋;
當編碼器輸出信號B相對應引腳中斷到來時,檢測編碼器輸出信號A相對應引腳的電平,當編碼器輸出信號A相對應引腳為低電平時,則認為編碼器輸出信號B相對應引腳誤中斷;當編碼器輸出信號A相對應引腳為高電平時,則再次檢測編碼器輸出信號B相對應引腳的電平,當本次編碼器輸出信號B相對應引腳為低電平時,則認為編碼器輸出信號B相有抖動;當本次編碼器輸出信號B相對應引腳為高電平時,則延遲N毫秒,然后再檢測當前編碼器輸出信號B相對應引腳的電平,當當前編碼器輸出信號B相對應引腳為低電平時,則認為編碼器輸出信號B相有抖動;當當前編碼器輸出信號B相對應引腳為高電平時,則說明編碼器上旋鈕的旋轉方向為左旋。
N等于1。
本發(fā)明具有以下有益效果:
本發(fā)明所述的編碼器輸出信號處理方法在具體操作時,通過兩次檢測中斷引腳的電平,避免因為中斷相對應為低電平時,當噪聲較大產(chǎn)生錯誤中斷,確保中斷為一次正確的上升沿中斷,在實際操作中,以最快的速度旋轉編碼器上旋鈕時,由于抖動信號的時間小于旋轉編碼器上旋鈕時中斷引腳的高電平持續(xù)時間,本發(fā)明采用延時檢測編碼器中斷引腳的電平,有效提高判定編碼器旋轉方向的準確性,從而有效的解決編碼器輸出信號處于低電平或下降沿的一段時間內抖動誤碼脈沖較大不能準確判斷編碼器上旋鈕旋轉方向的問題。
附圖說明
圖1為有干擾信號時編碼器的輸出波形圖;
圖2為本發(fā)明中編碼器輸出信號的時序圖;
圖3為本發(fā)明中編碼器輸出信號A相中斷處理的流程圖。
具體實施方式
下面結合附圖對本發(fā)明做進一步詳細描述:
參考圖1,本發(fā)明所述的編碼器輸出信號處理方法包括以下步驟:
將編碼器輸出信號A相對應引腳及B相對應引腳均設置為上升沿觸發(fā)中斷,然后等待編碼器所有引腳的中斷到來;
當編碼器輸出信號A相對應引腳中斷到來時,檢測編碼器輸出信號B相對應引腳的電平,當編碼器輸出信號B相對應引腳為低電平時,則說明編碼器輸出信號A相對應引腳誤中斷;當編碼器輸出信號B相對應引腳為高電平時,則再次檢測編碼器輸出信號A相對應引腳的電平,當本次編碼器輸出信號A相對應引腳為低電平時,則說明編碼器輸出信號A相有抖動;當本次編碼器輸出信號A相對應引腳為高電平時,則延遲1毫秒,然后再檢測當前編碼器輸出信號A相對應引腳的電平,當當前編碼器輸出信號A相對應引腳為低電平時,則認為編碼器輸出信號A相有抖動;當當前編碼器輸出信號A相對應引腳為高電平時,則說明編碼器上旋鈕的旋轉方向為右旋;
當編碼器輸出信號B相對應引腳中斷到來時,檢測編碼器輸出信號A相對應引腳的電平,當編碼器輸出信號A相對應引腳為低電平時,則認為編碼器輸出信號B相對應引腳誤中斷;當編碼器輸出信號A相對應引腳為高電平時,則再次檢測編碼器輸出信號B相對應引腳的電平,當本次編碼器輸出信號B相對應引腳為低電平時,則認為編碼器輸出信號B相有抖動;當本次編碼器輸出信號B相對應引腳為高電平時,則延遲1毫秒,然后再檢測當前編碼器輸出信號B相對應引腳的電平,當當前編碼器輸出信號B相對應引腳為低電平時,則認為編碼器輸出信號B相有抖動;當當前編碼器輸出信號B相對應引腳為高電平時,則說明編碼器上旋鈕的旋轉方向為左旋。
本發(fā)明通過兩次檢測中斷引腳的電平,其因為在于當中斷引腳為低電平時,如果噪聲較大,會產(chǎn)生錯誤中斷。另外,本發(fā)明通過延時1毫秒后再次檢測中斷引腳上的電平,其原因在于以最快速度旋轉編碼器上的旋鈕時,編碼器輸出的抖動信號較多,但抖動信號不會超過1ms,然而中斷引腳上高電平的持續(xù)時間總長于1ms,因此通過延時1ms后再次檢測中斷引腳上的電平,從而有效過濾該抖動信號,進而有效提高判定編碼器上旋鈕旋轉方向的準確性。