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

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

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

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

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

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

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

    A與B分別是 A1、A2和B1、B2差分轉(zhuǎn)換后的集電極信號(hào),DIR和PULSE_OUT為編碼器旋轉(zhuǎn)方向和計(jì)數(shù)脈沖輸出。根據(jù)DIR可判斷編碼器正反轉(zhuǎn),當(dāng)A超前B時(shí),DIR為低電平;當(dāng)B超前A時(shí),DIR始終為高電平。PULSE_OUT輸出為濾除誤碼后的A相波形,作為計(jì)數(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實(shí)驗(yàn)結(jié)果
    本文CPLD芯片選用與編碼器輸出電平兼容的Altera公司MAX3000A系列EPM7128A,編譯環(huán)境采用QuartusⅡ。其仿真分析結(jié)果如圖6所示,差分信號(hào)A1、A2和B1、B2轉(zhuǎn)換為了A、B相集電極信號(hào);在A、B相信號(hào)出現(xiàn)干擾的情況下,輸出信號(hào)PULSE_OUT很好地恢復(fù)了正常A相脈沖信號(hào),為后續(xù)處理器檢查提供了可靠脈沖源。

 

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

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