專利名稱:一種簡(jiǎn)單可靠的增量式編碼器計(jì)數(shù)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于編碼器技術(shù)領(lǐng)域,特別涉及一種增量式編碼器計(jì)數(shù)方法。
背景技術(shù):
目前,旋轉(zhuǎn)編碼器廣泛應(yīng)用于高級(jí)音響的音量控制、高檔汽車用于檢測(cè)方向盤的 轉(zhuǎn)動(dòng)角度和一些設(shè)備的調(diào)整、設(shè)置等?,F(xiàn)在的旋轉(zhuǎn)編碼器主要有絕對(duì)值式編碼器和增量式 編碼器,從傳感器劃分又可以分為機(jī)械式、光電式和磁感式。對(duì)于增量式的編碼器他們的主 要用途就是將編碼器旋轉(zhuǎn)的角度或位移以電信號(hào)的方式表現(xiàn)出來(lái)。增量式的編碼器因?yàn)榻Y(jié) 構(gòu)簡(jiǎn)單,價(jià)格較低被大量的應(yīng)用?,F(xiàn)有技術(shù)中,增量式編碼器在使用過(guò)程中常會(huì)出現(xiàn)一些問(wèn)題,比如因?yàn)榛蝿?dòng)(編 碼器有旋轉(zhuǎn)或移動(dòng)的趨勢(shì),但是旋轉(zhuǎn)或移動(dòng)的量很小不到一個(gè)單位)造成的誤碼;因?yàn)樾?轉(zhuǎn)速度快慢不一定造成的誤碼;針對(duì)廉價(jià)的機(jī)械式旋轉(zhuǎn)編碼器還會(huì)因?yàn)榻佑|不良造成誤 碼。使用本發(fā)明的代碼就能夠很好的解決這些問(wèn)題,對(duì)于廉價(jià)的機(jī)械式旋轉(zhuǎn)編碼器效果尤 其突出。
現(xiàn)在對(duì)于消除增量式編碼器的誤碼主要有兩種方法一是采用復(fù)雜的監(jiān)相和計(jì)數(shù) 電路來(lái)實(shí)現(xiàn);二是用單片機(jī)來(lái)實(shí)現(xiàn)計(jì)數(shù)。對(duì)于第一種方法因?yàn)殡娐窂?fù)雜、成本高很少被采 用?,F(xiàn)在編碼器計(jì)數(shù)一般都是采用單片機(jī)實(shí)現(xiàn)。單片機(jī)實(shí)現(xiàn)的典型方法是將編碼器的公共 端接地,兩個(gè)輸出端其中的一個(gè)接單片機(jī)的中斷端口,并將相應(yīng)的中斷設(shè)置為下降沿觸發(fā)。 另外一個(gè)輸出端接單片機(jī)的任意端口。當(dāng)編碼器移動(dòng)或旋轉(zhuǎn)時(shí)就會(huì)觸發(fā)單片機(jī)的中斷,這 時(shí)只要判斷編碼器的另外一個(gè)數(shù)據(jù)輸出端的電平就可以知道編碼器的旋轉(zhuǎn)或移動(dòng)方向。具 體實(shí)現(xiàn)方式見(jiàn)附圖1。在理想的情況下用附圖1中方法就可以檢測(cè)編碼的移動(dòng)或旋轉(zhuǎn)方向。很顯然在附圖1的流程中對(duì)于抖動(dòng)沒(méi)有做任何處理,如果因?yàn)槎秳?dòng)觸發(fā)了中斷, 而編碼器又回到原點(diǎn)的話將會(huì)產(chǎn)生一次誤碼。為了解決抖動(dòng)的問(wèn)題一般還會(huì)在數(shù)據(jù)輸出端口并聯(lián)一個(gè)小電容或者用軟件延時(shí) 的方法進(jìn)行防止抖動(dòng)的處理。這方法實(shí)際上只是解決了抖動(dòng)的問(wèn)題或者說(shuō)是機(jī)械式編碼器 接觸不良的問(wèn)題,不能解決編碼器晃動(dòng)的問(wèn)題。而且還會(huì)帶來(lái)另外的問(wèn)題就是因?yàn)檠訒r(shí)的 作用會(huì)對(duì)高速旋轉(zhuǎn)或移動(dòng)造成少計(jì)數(shù)或誤計(jì)數(shù),對(duì)于低速旋轉(zhuǎn)或移動(dòng)當(dāng)一個(gè)處理工程完成 以后中斷端口因?yàn)殡娙莸某潆娮饔檬怪袛喽丝谌匀惶幱谙陆笛?,單片機(jī)再次產(chǎn)生中斷造成 重復(fù)計(jì)數(shù)。而且這種方法還會(huì)造成編碼器旋轉(zhuǎn)速度過(guò)快或過(guò)慢。
發(fā)明內(nèi)容
本發(fā)明為了解決現(xiàn)有技術(shù)中存在的問(wèn)題,特別提出了一種增量式編碼器計(jì)數(shù)方法。本發(fā)明技術(shù)方案如下一種簡(jiǎn)單可靠的增量式編碼器的計(jì)數(shù)方法,包括編碼器及單片機(jī),其中編碼器第一輸出端口與單片機(jī)的中斷端口相連,第二輸出端口與單片機(jī)任一端口相連,編碼器的公 共端接地,所述編碼器的計(jì)數(shù)過(guò)程包含如下步驟A.設(shè)置所述第一輸出端口的波形為下降沿時(shí),觸發(fā)所述單片機(jī)關(guān)閉所述中斷端 口;B.所述單片機(jī)根據(jù)所述第二輸出端口的波形判斷所述編碼器旋轉(zhuǎn)方向;C.所述單片機(jī)等待所述第一輸出端口的波形為高電平時(shí),確認(rèn)所述編碼器旋轉(zhuǎn)方 向;D.確認(rèn)步驟B與步驟C中編碼器旋轉(zhuǎn)方向相同,則所述單片機(jī)進(jìn)行計(jì)數(shù),否則,執(zhí) 行步驟F;Ε.所述單片機(jī)確認(rèn)所述第一端口及所述第二端口同為高電平時(shí),執(zhí)行步驟F;F.所述單片機(jī)打開所述中斷端口,完成一次計(jì)數(shù)。其中,所述步驟B中,所述單片機(jī)進(jìn)行如下判斷所述第一輸出端口的波形與所述第二輸出端口的波形同為低電平時(shí),則所述編碼 器旋轉(zhuǎn)方向?yàn)轫槙r(shí)針;所述第一輸出端口的波形為低電平,所述第二輸出端口的波形為高電平時(shí),則所 述編碼器旋轉(zhuǎn)方向?yàn)槟鏁r(shí)針。一個(gè)實(shí)施例是,所述步驟D中,所述編碼器旋轉(zhuǎn)方向?yàn)轫槙r(shí)針,則所述計(jì)數(shù)器加1。另一個(gè)實(shí)施例是,所述步驟D中,所述編碼器旋轉(zhuǎn)方向?yàn)槟鏁r(shí)針,則所述計(jì)數(shù)器減1.采用本發(fā)明的方法,能夠很好的解決抖動(dòng)造成的這些問(wèn)題,編碼器不會(huì)因?yàn)榛蝿?dòng) 而產(chǎn)生錯(cuò)誤的計(jì)數(shù),而且不會(huì)出現(xiàn)編碼器重復(fù)計(jì)數(shù)的問(wèn)題,對(duì)于廉價(jià)的機(jī)械式旋轉(zhuǎn)編碼器 效果尤其突出。另外,使用這種方法根本不會(huì)對(duì)編目器旋轉(zhuǎn)速度產(chǎn)生影響,也就不會(huì)出現(xiàn)編 碼器旋轉(zhuǎn)快慢造成的誤碼。
圖1為現(xiàn)有技術(shù)編碼器計(jì)數(shù)的流程圖;圖2為本發(fā)明的電路連接示意圖;圖3為本發(fā)明編碼器輸出的波形圖;圖4為本發(fā)明編碼器技術(shù)的流程圖。
具體實(shí)施例方式下面通過(guò)附圖及實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。如圖3所示是編碼器波形圖。從圖中可以看出編碼器的兩個(gè)輸出端(即圖中ΕΝ_Ι 與EN_D兩個(gè)輸出端)的波形相位相差90度。當(dāng)編碼器移動(dòng)或旋轉(zhuǎn)時(shí),即中斷的端口(EN_ I)處于下降沿的時(shí)候,數(shù)據(jù)輸出端口(EN_D)的電平順時(shí)針為“0”,逆時(shí)針為“1”。當(dāng)編碼器 繼續(xù)移動(dòng)或旋轉(zhuǎn)時(shí),即中斷的端口(EN_I)處于上升沿的時(shí)候,數(shù)據(jù)輸出端口(EN_D)的電平 順時(shí)針為“1”,逆時(shí)針為“0”。當(dāng)一個(gè)周期結(jié)束時(shí)下一個(gè)周期開始前編碼器的兩個(gè)輸出端口 都為高電平。實(shí)施例
如圖5是本方法的具體實(shí)施方法在圖上,101端口為EN_I中斷端口,102端口為 EN_D輸出端口。根據(jù)圖5,實(shí)現(xiàn)方法如下當(dāng)編碼器中斷端口(EN_I中斷端口)被下降沿觸發(fā)后,進(jìn)入該計(jì)數(shù)方法。第一步,將編碼器的外中斷關(guān)閉(即將101端口置0);第二步,判斷編碼器的旋轉(zhuǎn)方向,這時(shí)會(huì)存在兩種情況②如果101端口值為0并 且102端口值為1,則為逆時(shí)針旋轉(zhuǎn);③其它情況則打開外中斷(即將101端口置1)。第三步,1)假設(shè)我們按照上述發(fā)生①順時(shí)針旋轉(zhuǎn)的情況,①如果101端口和102端口同時(shí) 為0,則為順時(shí)針旋轉(zhuǎn)。則該程序開始等待當(dāng)編碼器中斷端口為高電平(即等待101端口 為1)時(shí),確認(rèn)旋轉(zhuǎn)方向是否為順時(shí)針,方法是通過(guò)將102端口輸出的值與1進(jìn)行比較。如 果102端口值為1,則為順時(shí)針?lè)较?,將?jì)數(shù)器加1,然后等待編碼器的一個(gè)周期完成(即當(dāng) 101端口和102端口值同時(shí)為1時(shí)),最后打開外中斷(即將101端口置1)。如果不是順時(shí) 針?lè)较颍苯哟蜷_外中斷(即將101端口置1)。2)在第三步中,假設(shè)我們按照發(fā)生②逆時(shí)針旋轉(zhuǎn)的情況,則該程序開始等待當(dāng)編 碼器中斷端口為高電平(即等待101端口為1)時(shí),確認(rèn)旋轉(zhuǎn)方向是否為逆時(shí)針,方法是通 過(guò)將103端口輸出的值與0進(jìn)行比較。如果102端口值為0,則為逆時(shí)針?lè)较?,將?jì)數(shù)器加 1,然后等待編碼器的一個(gè)周期完成(即當(dāng)101端口和102端口值同時(shí)為1時(shí)),最后打開外 中斷(即將101端口置1)。如果不是逆時(shí)針?lè)较?,直接打開外中斷(即將101端口置1)。采用本發(fā)明的方法,能夠很好的解決抖動(dòng)造成的這些問(wèn)題,編碼器不會(huì)因?yàn)榛蝿?dòng) 而產(chǎn)生錯(cuò)誤的計(jì)數(shù),而且不會(huì)出現(xiàn)編碼器重復(fù)計(jì)數(shù)的問(wèn)題,對(duì)于廉價(jià)的機(jī)械式旋轉(zhuǎn)編碼器 效果尤其突出。另外,使用這種方法根本不會(huì)對(duì)編目器旋轉(zhuǎn)速度產(chǎn)生影響,也就不會(huì)出現(xiàn)編 碼器旋轉(zhuǎn)快慢造成的誤碼。通過(guò)以上實(shí)施例對(duì)本發(fā)明進(jìn)行了進(jìn)一步揭示,但是本發(fā)明的范圍并不局限于此, 在不偏離本發(fā)明構(gòu)思的條件下,以上各實(shí)現(xiàn)步驟可用所屬技術(shù)領(lǐng)域人員了解的相似或等同 實(shí)現(xiàn)步驟來(lái)替換。
權(quán)利要求
一種簡(jiǎn)單可靠的增量式編碼器的計(jì)數(shù)方法,包括編碼器及單片機(jī),其中編碼器第一輸出端口與單片機(jī)的中斷端口相連,第二輸出端口與單片機(jī)任一端口相連,其特征在于計(jì)數(shù)過(guò)程包含如下步驟A、設(shè)置所述第一輸出端口的波形為下降沿時(shí),觸發(fā)所述單片機(jī)關(guān)閉所述中斷端口;B、所述單片機(jī)根據(jù)所述第二輸出端口的波形判斷所述編碼器旋轉(zhuǎn)方向;C、所述單片機(jī)等待所述第一輸出端口的波形為高電平時(shí),確認(rèn)所述編碼器旋轉(zhuǎn)方向;D、確認(rèn)步驟B與步驟C中編碼器旋轉(zhuǎn)方向相同,則所述單片機(jī)進(jìn)行計(jì)數(shù),否則,執(zhí)行步驟F;E、所述單片機(jī)確認(rèn)所述第一端口及所述第二端口同為高電平時(shí),執(zhí)行步驟F;F、所述單片機(jī)打開所述中斷端口,完成一次計(jì)數(shù)。
2.根據(jù)權(quán)利要求1所述的計(jì)數(shù)方法,其特征在于所述步驟B中,所述單片機(jī)進(jìn)行如下判斷所述第一輸出端口的波形與所述第二輸出端口的波形同為低電平時(shí),則所述編碼器旋 轉(zhuǎn)方向?yàn)轫槙r(shí)針;所述第一輸出端口的波形為低電平,所述第二輸出端口的波形為高電平時(shí),則所述編 碼器旋轉(zhuǎn)方向?yàn)槟鏁r(shí)針。
3.根據(jù)權(quán)利要求2所述的計(jì)數(shù)方法,其特征在于,所述步驟D中,所述編碼器旋轉(zhuǎn)方向 為順時(shí)針,則所述計(jì)數(shù)器加1。
4.根據(jù)權(quán)利要求2所述的計(jì)數(shù)方法,其特征在于,所述步驟D中,所述編碼器旋轉(zhuǎn)方向 為逆時(shí)針,則所述計(jì)數(shù)器減1。
全文摘要
本發(fā)明公開了一種增量式編碼器計(jì)數(shù)方法,所述方法通過(guò)編碼器和單片機(jī)相連接,執(zhí)行一系列代碼對(duì)編碼器兩個(gè)輸出端口的波形在一個(gè)周期內(nèi)分別作脈沖上升沿和下降沿的判斷,然后通過(guò)計(jì)數(shù)器對(duì)其進(jìn)行加減計(jì)算。采用這種計(jì)數(shù)方法,能夠解決增量式編碼器在使用過(guò)程中出現(xiàn)的一些問(wèn)題,比如編碼器旋轉(zhuǎn)速度快慢、晃動(dòng)造成的誤碼,接觸不良造成的誤計(jì)數(shù)等等。而且該方法簡(jiǎn)單可靠,易實(shí)現(xiàn)。尤其對(duì)廉價(jià)的機(jī)械式旋轉(zhuǎn)編碼器效果更加突出。
文檔編號(hào)G06M1/27GK101833690SQ200910079890
公開日2010年9月15日 申請(qǐng)日期2009年3月13日 優(yōu)先權(quán)日2009年3月13日
發(fā)明者黃喜榮 申請(qǐng)人:北京同步科技有限公司