關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 具有停頓點的旋轉編碼器的編碼方法

        具有停頓點的旋轉編碼器的編碼方法

        作者:戚瑞民1,2(1.中電科思儀科技(安徽)有限公司,安徽蚌埠 233010;2.電子測量儀器技術蚌埠市技術創新中心,安徽蚌埠 233010) 時間:2022-03-03 來源:電子產品世界 收藏
        編者按:在數字化儀器的人機交互操作面板中,旋轉編碼器廣泛用于調整參數數值的大小。在旋轉時,旋轉編碼器產生相位相差九十度的兩路數字脈沖信號,用于判決旋轉方向及計數;一個脈沖周期內具有不同的停頓點數時,對應產生的計數也不同。本文介紹一種通用的查表編碼方法,對具有停頓點的旋轉編碼器的轉動操作進行掃描編碼。

        ,在旋轉時可以產生相位相差九十度的兩路數字脈沖信號,兩路脈沖信號相位的先后關系,可以代表旋轉方向,如圖1 所示。(a)代表順時針方向旋轉時,A 路脈沖領先于B 路脈沖,A 路脈沖的上升沿對應B 路脈沖的低電平;(b)顯示逆時針方向旋轉時,B 路脈沖領先于A 路脈沖,A 路脈沖的上升沿對應B路脈沖的高電平。

        本文引用地址:http://www.104case.com/article/202203/431647.htm
        image.png
        image.png
        (a)順時針方向旋轉(b)逆時針方向旋轉

        圖1 兩路脈沖相位關系

        通常將一個等同于兩個按鍵,利用CPU(中央處理器)或FPGA(現場可編程邏輯門陣列)掃描按鍵狀態的變化。在被掃描按鍵的一端施加低電平,從按鍵的另一端回讀電平高低,電平變化了,代表按鍵狀態發生了變化,使用者操作了按鍵;對應的兩個按鍵的組合狀態發生了變化,則表示操作了旋轉編碼器,新的組合狀態與之前的組合狀態共同指示了旋轉方向。對旋轉編碼器的轉動操作進行編碼的關鍵就是旋轉方向的判決。

        旋轉編碼器每轉一周, 兩路信號A、B 包含固定數目的脈沖周期,下面論述中將其中一路數字脈沖信號的相鄰兩個上升沿之間的部分稱為一個脈沖周期。在圖1 中, 一個脈沖周期內, 順時針方向旋轉時,對應兩路脈沖信號A、B 電平的組合編碼依次為10 → 11 → 01 → 00 → 10, 逆時針方向旋轉時, 對應兩路脈沖信號電平的組合編碼依次為11 → 10 → 00 → 01 → 11。當組合狀態發生了10 到11的變化,可知發生了順時針方向的旋轉,當組合狀態發生了11 到10 的變化,可知發生了逆時針方向的旋轉。兩路脈沖信號配合,利用相互之間的相位關系,在一個脈沖周期內最多可以在00、01、10、11 這4 個狀態位置產生掃描計數。

        1   帶的旋轉編碼器

        有的旋轉編碼器,為增強操作的手感或可控性,在一個脈沖周期內等間隔設置1、2 或4 個機械。圖2 是順時針方向旋轉時,在一個脈沖周期中具有不同的四種情況示意,(a)表示無停頓點、(b)表示一個脈沖一個停頓點、(c)表示一個脈沖兩個停頓點、(d)表示一個脈沖四個停頓點;虛豎線處為停頓點穩定位置。

        在具體應用中,一般只在停頓點穩定位置處產生有效計數。在(a)、(d)兩種情況下,在一個脈沖周期中產生四個掃描計數;(b)、(c)情況下,在一個脈沖周期中分別產生一個和兩個有效的掃描計數。有些種類的數字化儀器或裝置,會同時使用這四種旋轉編碼器中的兩種或多種。具有停頓點的旋轉編碼器,一般用于參數檔位的單步距增減;沒有停頓點的旋轉編碼器,由于旋轉阻力很小,旋轉速度可以很快,一般用于需要連續快速調整的參數。

        image.pngimage.png
        (a)無停頓點(b)每周期一個停頓點
        image.pngimage.png
        (c)每周期兩個停頓點(d)每周期四個停頓點

        圖2 停頓點位置

        2   旋轉編碼器掃描編碼的實現

        旋轉編碼器旋轉時兩路脈沖信號的4 種組合狀態,剛好是所有4 個兩比特組合數00、01、10、11,所以可以設計一個矩陣式格,根據前言中所述兩個旋轉方向下的狀態轉移規律,通過查表方式判決旋轉方向:表格行地址為兩路脈沖信號AB 的當前狀態碼,表格列地址為兩路脈沖信號的前一狀態碼;表格中的數據,‘0’代表逆時針旋轉,‘1’代表順時針旋轉,其他任一數據如‘-1’代表無操作,如表1 所示。

        1646277485330041.png

        針對上述旋轉編碼器一個脈沖周期中具有不同停頓點的四種情況,圖2(a)、圖2(d)兩種情況在四個位置產生掃描計數,直接使用表1。對于圖2(b)、圖2(c),只在當前狀態為停頓點位置時產生有效的掃描編碼。對于圖2(b),停頓點狀態為“00”,所以僅保留表1 中當前狀態碼為“00”的狀態有效,得到表2;對于圖2(c),停頓點狀態為“00”、“11”,僅保留當前狀態碼為“00”和“11”的狀態有效,得到表3。這相當于將表1 中非停頓點處的旋轉方向編碼設置為代表無操作的碼‘-1’,從而將停頓點處理功能與旋轉方向判決功能合并到同一個查詢表中。

        1646277595702442.png

        下面以具有4 個旋轉編碼器的一個項目為例簡要說明基于本文方法的旋轉編碼器掃描編碼的具體程序實現。

        4 個旋轉編碼器,其中兩個每脈沖周期具有兩個停頓點,另兩個無停頓點;根據前面論述,對應的分別為表3 和表1。據此可以編制查詢表rotCode 及編碼器類型定義表typeID。旋轉編碼器的掃描程序主要流程為:①上電獲取初始狀態作為前一狀態statHistAll(4 個旋轉編碼器,共占用8 位);②掃描旋轉編碼器狀態變化;③延遲去抖,得到當前狀態statCurrAll(4 個旋轉編碼器,共占用8 位);④查表判決旋轉方向;⑤計算編碼值;⑥將前一狀態的值替換為當前狀態的值。

        關鍵數據結構及4 個旋轉編碼器掃描編碼的程序段如下。

        1646277664207210.png

        1646277680868298.png

        當經過除抖動后確認狀態發生了變化,即使在查表時發現是無效的旋轉位置,也要將前一狀態緩存中的狀態值更新為當前狀態值,以保證查表邏輯的有效性。

        一次查表實現旋轉方向解碼及是否計數的指示,避免針對具有不同機械停頓點設置的旋轉編碼器編制繁雜的程序以判決旋轉方向及是否進行計數。

        3   結論

        根據旋轉編碼器兩路脈沖信號狀態在兩個旋轉方向上的不同變化順序,以及停頓點位置,編制旋轉編碼器掃描解碼查詢表格,能夠同時適用于具有不同機械停頓點設置的旋轉編碼器,具有邏輯靈活統一、編碼簡潔高效的特點。

        (本文來源于《電子產品世界》雜志2022年2月期)



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 长宁县| 胶南市| 中西区| 乐都县| 义马市| 龙门县| 肇州县| 酒泉市| 安康市| 新野县| 伊宁市| 安远县| 咸丰县| 平乡县| 江都市| 正阳县| 长宁县| 松桃| 繁峙县| 通州区| 长治市| 外汇| 财经| 马山县| 津市市| 柘荣县| 九龙城区| 林芝县| 文昌市| 宝清县| 六枝特区| 永修县| 西畴县| 肥西县| 砚山县| 扎兰屯市| 陆良县| 麟游县| 新巴尔虎左旗| 永嘉县| 石门县|