《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 一種基于CPLD的編碼器抗干擾電路設(shè)計
一種基于CPLD的編碼器抗干擾電路設(shè)計
來源:微型機(jī)與應(yīng)用2013年第14期
何遠(yuǎn)松, 謝明紅
(華僑大學(xué) 機(jī)電學(xué)院,福建 廈門361021)
摘要: 在交流伺服系統(tǒng)中,準(zhǔn)確可靠地獲取編碼器信號是整個閉環(huán)控制的關(guān)鍵;而編碼器信號常受外界干擾,會產(chǎn)生誤碼脈沖,給伺服控制帶來了偏差。在分析了增量式光電編碼器的原理及誤碼產(chǎn)生原因、總結(jié)編碼器信號處理方法后,設(shè)計了一種基于CPLD的具有編碼器差分信號輸入、誤碼濾除和鑒相功能的電路,提高了編碼器信號檢查的可靠性,并得到了很好的實際應(yīng)用。具體分析了濾除誤碼原理,并給出了設(shè)計原理圖和Quartus II下的仿真結(jié)果。
Abstract:
Key words :

摘  要: 在交流伺服系統(tǒng)中,準(zhǔn)確可靠地獲取編碼器信號是整個閉環(huán)控制的關(guān)鍵;而編碼器信號常受外界干擾,會產(chǎn)生誤碼脈沖,給伺服控制帶來了偏差。在分析了增量式光電編碼器的原理及誤碼產(chǎn)生原因、總結(jié)編碼器信號處理方法后,設(shè)計了一種基于CPLD的具有編碼器差分信號輸入、誤碼濾除和鑒相功能的電路,提高了編碼器信號檢查的可靠性,并得到了很好的實際應(yīng)用。具體分析了濾除誤碼原理,并給出了設(shè)計原理圖和Quartus II下的仿真結(jié)果。
關(guān)鍵詞: CPLD;增量式編碼器;干擾;誤碼 

    在伺服系統(tǒng)中,編碼器反饋信號對伺服閉環(huán)控制系統(tǒng)至關(guān)重要,不管是速度控制模式, 還是位置控制模式,實時、可靠地獲取編碼器反饋信號對整個閉環(huán)系統(tǒng)的精度和消除系統(tǒng)滯后都有著至關(guān)重要的作用。假定伺服周期為1 ms,那么需要每隔1 ms計算出編碼器反饋脈沖的個數(shù)及其方向。編碼器信號直接影響著整個控制系統(tǒng)的精度和可靠性,整個系統(tǒng)的控制精度不可能高于編碼器檢測元件的精度。
    參考文獻(xiàn)[1]在設(shè)計了編碼器信號處理時,實現(xiàn)了編碼器輸出信號的四倍頻、鑒相,但編碼器無法濾除誤碼。實際應(yīng)用中,編碼器干擾和抖動客觀存在,誤碼的產(chǎn)生影響了檢測的可靠性。在編碼器的抗干擾、誤碼濾除設(shè)計中,常出現(xiàn)只能濾除某一相誤碼或換向丟脈沖現(xiàn)象。參考文獻(xiàn)[2]給出的設(shè)計在電機(jī)高低速切換頻繁時,單穩(wěn)態(tài)觸發(fā)器的脈沖寬度難以確定,計數(shù)脈沖容易丟失。以往設(shè)計處理的編碼器輸出信號都以集電極信號為對象,而實際上編碼器輸出大多為差分信號。本文利用CPLD設(shè)計了一種可靠的用于增量式編碼器輸出信號的檢測電路,能直接處理編碼器輸出的差分信號,其結(jié)構(gòu)簡單,性能可靠,提高了控制系統(tǒng)的精度與可靠性。
1 增量式光電編碼器結(jié)構(gòu)及原理
    增量式編碼器因結(jié)構(gòu)簡單、響應(yīng)迅速、性價比高等優(yōu)點而被廣泛使用。增量式光電編碼器利用光電轉(zhuǎn)換原理將轉(zhuǎn)子的角信息轉(zhuǎn)換成脈沖信號,每輸出一個脈沖在對應(yīng)方向上產(chǎn)生一個增量的角度位移,通過統(tǒng)計脈沖信號的數(shù)量和方向計算旋轉(zhuǎn)的角度和位置。由于采用相對編碼,編碼器輸出的位置數(shù)據(jù)是相對的,因此,系統(tǒng)每次掉電后旋轉(zhuǎn)角度數(shù)據(jù)會丟失,需重新復(fù)位。典型的增量式光電編碼器由光源、光柵碼盤、光敏元件和信號處理電路組成。如圖1所示,碼盤上刻有3條碼道,由外向內(nèi)分別是A、B、Z。在A、B碼道上,等間距地刻有透光的縫隙(用白色表示);兩條碼道上相鄰的縫隙互錯半個縫寬(1/4節(jié)距),所以正常情況下,A相與B相是一組正交脈沖信號,即相位相差90°。在碼道Z上只開有一個縫隙,每轉(zhuǎn)輸出1個脈沖,用來表示碼盤的零位、校正每轉(zhuǎn)編碼器產(chǎn)生的脈沖個數(shù),將脈沖誤差控制在每一轉(zhuǎn)之內(nèi),避免累積誤差。軸承轉(zhuǎn)動時,光源光束交替通過碼盤上的縫隙,對應(yīng)光敏元件交替接收光源輸出的高電平或低電平信號,電信號經(jīng)編碼器內(nèi)部處理電路放大、整形后輸出脈沖序列。圖2為碼盤展開圖(黑色為不透光部分)及碼盤順時針旋轉(zhuǎn)下對應(yīng)的電信號輸出,此時A相超前B相90°,若逆時針旋轉(zhuǎn)則B相超前A相90°。由于增量式編碼器的固有結(jié)構(gòu),使得其輸出信號不能自動判別碼盤的旋轉(zhuǎn)方向,需經(jīng)硬件電路或軟件處理后才能完成鑒相工作。

    目前,大多數(shù)編碼器的輸出信號是便于遠(yuǎn)距離傳輸?shù)牟罘中盘?即A+、A-、 B+、B-、Z+、Z-),且分辨率很高。比如,安川SGMJV-08ADD6S電機(jī)編碼器輸出為20 bit脈沖信號,即電機(jī)每旋轉(zhuǎn)1圈, 編碼器每相輸出220=1 048 576個脈沖[3],運動控制器無法直接處理這些脈沖,一般將脈沖序列經(jīng)驅(qū)動器分頻并轉(zhuǎn)換成集電極信號后反饋給控制器處理。本文將在CPLD中完成差分信號轉(zhuǎn)集電極信號。
2 增量式光電編碼器誤碼的產(chǎn)生
    碼盤縫隙邊緣是編碼器輸出信號產(chǎn)生抖動誤碼脈沖的根源,這是由編碼器固有物理結(jié)構(gòu)所致。在安裝基座的機(jī)械振動下,編碼器碼盤振動或轉(zhuǎn)軸不穩(wěn)都會引起輸出誤碼;電機(jī)超低速運行或正反轉(zhuǎn)頻繁換向時,碼盤縫隙邊沿附近會產(chǎn)生小幅度晃動,也會產(chǎn)生干擾脈沖,導(dǎo)致計數(shù)錯誤。圖3為編碼器在圖2的S1、S2、S3、S3和S4處,依次出現(xiàn)寬度小于半個正常脈沖寬度的干擾波形。當(dāng)抖動產(chǎn)生時,A、B相脈沖相位不再是固定的90°關(guān)系,脈沖寬度和周期隨抖動的不同而不同。本文將從編碼器的鑒相方法入手,濾除誤碼脈沖,提取有效的計數(shù)脈沖信號。

3 光電編碼器脈沖處理方法
    常用的編碼器信號處理方法有:
   (1)基于硬件電路。有觸發(fā)器、邏輯門等,比如通過74系列芯片、RC電路搭建硬件電路,實現(xiàn)脈沖的鑒相、計數(shù)。
?。?)基于軟件算法。直接將編碼器輸出信號送至微處理器,由軟件算法完成誤碼濾除、倍頻、鑒相和計數(shù)任務(wù)。    
   (3)硬件和軟件相結(jié)合。一般先由硬件完成倍頻、鑒相,再由軟件完成計數(shù)。
    基于硬件處理速度響應(yīng)快,但系統(tǒng)器件增多,抗干擾性和可靠性差。基于軟件算法雖實現(xiàn)簡單,卻對處理器要求高。例如參考文獻(xiàn)[4]利用“同一邊沿判斷原則”,采用某相上升沿和下降沿時刻根據(jù)另一相電平的變化情況來消除抖動,很好地濾除了誤碼,但這一算法需頻繁判斷上升沿和下降沿,軟件時間消耗大。參考文獻(xiàn)[5]采用“散轉(zhuǎn)地址的方法”,將所有的前一個A、B電平狀態(tài)作為散轉(zhuǎn)地址的高2 bit,所有后一個A、B電平狀態(tài)作為散轉(zhuǎn)地址的低2 bit,合成4 bit,排列組合出16種狀態(tài)。由于每種狀態(tài)對應(yīng)了編碼器的轉(zhuǎn)相和計數(shù)脈沖是否有效,因此加快了軟件執(zhí)行速度,但同時增加了存儲空間。
    本文采用軟件和硬件結(jié)合的方法,由CPLD完成信號轉(zhuǎn)換、誤碼濾除、倍頻和鑒相等工作,最終將差分編碼器信號轉(zhuǎn)換為脈沖/方向信號。CPLD具有可用門電路多、處理速度快、可靠性和性價比高等優(yōu)點;并且,將誤碼信號轉(zhuǎn)換、誤碼濾除等電路集于同一芯片,提高了系統(tǒng)的通用性和靈活性。同時,CPLD支持可編程,方便現(xiàn)場對電路進(jìn)行升級。
4 CPLD濾除編碼器抖動及仿真結(jié)果
4.1誤碼濾除原理

    由編碼器固有結(jié)構(gòu)可知,A、B相電平不能同時突變。假設(shè)以A相為計數(shù)脈沖參考, 在A相脈沖相鄰兩個跳變沿時刻,比較B相信號電平邏輯,若B相電平不同,則認(rèn)為編碼器輸出是正常計數(shù)脈沖信號,使能計數(shù)端對A相脈沖計數(shù),此時B相有誤碼不影響脈沖計數(shù);若B相電平相同,則認(rèn)為A相出現(xiàn)了誤碼,不予計數(shù)。依據(jù)A相上升沿和下降沿時刻B相電平的高低,判斷A、B相位關(guān)系,若A相上升沿處B為低電平,則A相超前B相;若A相下降沿處B相為低電平,則B相超前A相。A、B脈沖相異或產(chǎn)生倍頻脈沖,作為觸發(fā)器(上升沿觸發(fā))的時鐘信號,A相脈沖經(jīng)觸發(fā)器輸出計數(shù)A信號,如圖4所示,計數(shù)A濾除了A相中的誤碼,將其作為計數(shù)脈沖。反之,以B相為參考可得同樣結(jié)果。

4.2 編碼器鑒相和濾除誤碼設(shè)計
    根據(jù)以上分析,采用圖形與語言結(jié)合的方法進(jìn)行設(shè)計,內(nèi)部的邏輯子模塊采用VHDL語言實現(xiàn)。頂層模塊結(jié)構(gòu)如圖5所示,信號A+、A-和B+、B-經(jīng)DIFF4_2模塊轉(zhuǎn)換為A、B集電極信號,B信號經(jīng)2個D觸發(fā)器在A信號上升沿和下降沿處相“異或”,“異或”結(jié)果作為Counter的使能端并配合兩個“與門”完成A、B相位的判斷;A、B信號直接“異或”產(chǎn)生倍頻時鐘信號,濾除誤碼恢復(fù)正常的A相脈沖,提供可靠計數(shù)脈沖。Counter模塊用于控制脈沖輸入方向,其輸出為編碼器旋轉(zhuǎn)方向信號和計數(shù)脈沖信號。

    A與B分別是 A1、A2和B1、B2差分轉(zhuǎn)換后的集電極信號,DIR和PULSE_OUT為編碼器旋轉(zhuǎn)方向和計數(shù)脈沖輸出。根據(jù)DIR可判斷編碼器正反轉(zhuǎn),當(dāng)A超前B時,DIR為低電平;當(dāng)B超前A時,DIR始終為高電平。PULSE_OUT輸出為濾除誤碼后的A相波形,作為計數(shù)脈沖。主要VHDL程序如下:
    comb1<=A1&A2;
    comb2<=B1&B2;
    comb<=EN&CLR;
    begin
        case comb1 is
            when "10" => A<=′1′;
            when "01" => A<=′0′;        
            when others=> A<=′Z′;
        end case;        
        case comb2 is
        when "10" => B<=′1′;
            when "01" => B<=′0′;        
            when others=> B<=′Z′;
        end case;  
    case comb is
    when"11"=> DIR<=′0′;PULSE_OUT<=′0′;
    when "10" =>
        IF rising_edge(CLK) AND AB<=′1′
               THEN DIR<=′0′; PULSE_OUT <= CLK;
             END IF;
            IF rising_edge(CLK) AND BA<=′1′ 
            THEN DIR<=′0′; PULSE_OUT <= CLK;
       END IF;
    when others => DIR<=′Z′; PULSE_OUT <=′Z′;
    end case;
4.3實驗結(jié)果
    本文CPLD芯片選用與編碼器輸出電平兼容的Altera公司MAX3000A系列EPM7128A,編譯環(huán)境采用QuartusⅡ。其仿真分析結(jié)果如圖6所示,差分信號A1、A2和B1、B2轉(zhuǎn)換為了A、B相集電極信號;在A、B相信號出現(xiàn)干擾的情況下,輸出信號PULSE_OUT很好地恢復(fù)了正常A相脈沖信號,為后續(xù)處理器檢查提供了可靠脈沖源。

 

    本文分析了編碼器誤碼產(chǎn)生原因,比較了編碼器信號處理方法,應(yīng)用CPLD設(shè)計了一種具有編碼器差分信號轉(zhuǎn)換、誤碼濾除和鑒相功能的可靠電路,并在交流伺服系統(tǒng)中得到了很好的驗證。在系統(tǒng)出現(xiàn)較大抖動和干擾時,仍能獲得可靠的計數(shù)脈沖,提高了位置檢測精度和速度可靠性。
參考文獻(xiàn)
[1] 姬巖鵬,劉衛(wèi)東,徐建寧,等.交流伺服控制系統(tǒng)中脈沖抗干擾算法研究[J]. 微電機(jī),2007,40(2):62-65.
[2] 崔曉紅,陳宏利.光電編碼器抗干擾防振動電路的設(shè)計[J].交通與計算機(jī),2005,23(1):110-112.
[3] 株式會社. AC伺服驅(qū)動器∑-Ⅴ系列用戶手冊[S].安川電機(jī),SIPC S800000 45C, 2009.
[4] 趙哲身. 光電旋轉(zhuǎn)編碼器的軟件鑒相及其使用技巧[J].自動化儀表,1998,19(2):17-18.
[5] 王子博. 編碼器四倍頻電路的單片機(jī)高速算法設(shè)計[J].控制與檢測,2007(11):73-74.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。