劉海權(quán) 田 露 宋立業(yè)
(1.國(guó)網(wǎng)葫蘆島市郊區(qū)供電分公司,遼寧 葫蘆島 125100; 2.遼寧技術(shù)工程大學(xué),遼寧 葫蘆島 125100)
光電編碼器是一種通過(guò)光電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移轉(zhuǎn)換為脈沖數(shù)字量或模擬量的傳感器。由于其重量輕,體積小,轉(zhuǎn)換精度高等優(yōu)勢(shì),已廣泛應(yīng)用于各種環(huán)境復(fù)雜的工業(yè)場(chǎng)合。在各種復(fù)雜的環(huán)境下工作會(huì)有很多干擾。對(duì)此相關(guān)文獻(xiàn)[1]中提出了解決方法,并且在一般情況下也得到了不錯(cuò)的效果。但是筆者通過(guò)分析發(fā)現(xiàn)其運(yùn)用場(chǎng)合存在局限性。本文重新分析了光電編碼器誤計(jì)數(shù)產(chǎn)生的原因,并指出了傳統(tǒng)抗干擾電路的缺陷,最后提出了優(yōu)化解決方案。
圖1為光電編碼器工作原理圖,碼盤旋轉(zhuǎn)時(shí), A、B 兩相輸出相位相差90°的方波。
圖1 光電編碼器波形產(chǎn)生原理
圖2為傳統(tǒng)光電編碼器計(jì)數(shù)脈沖產(chǎn)生原理,其原理就是一個(gè)D 觸發(fā)器。工作波形如圖3所示。
圖2 傳統(tǒng)光電編碼器計(jì)數(shù)脈沖產(chǎn)生原理
圖3 光電編碼器工作波形[1]
干擾脈沖千變?nèi)f化,大致可分為兩類:由于機(jī)械震動(dòng)產(chǎn)生的有一定規(guī)律的干擾;由于電磁干擾產(chǎn)生的無(wú)規(guī)律干擾。導(dǎo)致誤計(jì)數(shù)的根本原因就是A,B兩相產(chǎn)生了非正常的脈沖。
首先分析機(jī)械震動(dòng)情況下A,B 兩相產(chǎn)生的異常波形?,F(xiàn)以正向計(jì)數(shù)為例:當(dāng)編碼器發(fā)生機(jī)械震動(dòng)時(shí),其中一相反復(fù)產(chǎn)生脈沖,而另一相則始終沒有脈沖。其仿真波形如圖4所示。
圖4 機(jī)械震動(dòng)情況下A,B 兩相波形
在機(jī)械震動(dòng)情況下,結(jié)合計(jì)數(shù)器原理分析可知:每一次震動(dòng)脈沖都會(huì)在正向計(jì)數(shù)產(chǎn)生一個(gè)計(jì)數(shù)脈沖。但是實(shí)際情況應(yīng)該視為碼盤沒有發(fā)生幾何位移,即不應(yīng)該產(chǎn)生計(jì)數(shù)脈沖。這種情況下就發(fā)生了誤計(jì)數(shù),導(dǎo)致測(cè)到的數(shù)據(jù)大于實(shí)際的數(shù)據(jù)。
再分析電磁干擾產(chǎn)生的異常波形。電磁干擾產(chǎn)生的脈沖沒有任何規(guī)律,現(xiàn)取6 種典型干擾為例。其中干擾1 是在A 相脈沖之前小段時(shí)間內(nèi)產(chǎn)生的干擾,干擾4 是在A 相脈沖的過(guò)程中產(chǎn)生的干擾,難以區(qū)分。同理,干擾3 是在A 相脈沖之后產(chǎn)生的干擾,干擾6 是在A 相脈沖快要結(jié)束的時(shí)候產(chǎn)生的干擾,難以區(qū)分。干擾2 在A 相高電平期間產(chǎn)生干擾。干擾5 在A 相低電平期間產(chǎn)生干擾。如圖5所示。
圖5 電磁干擾下A,B 兩相波形
結(jié)合D 觸發(fā)器工作原理分析:在編碼器進(jìn)行正向計(jì)數(shù)時(shí),由于A 相超前B 相90°,所以每次B相上升沿到來(lái)之后Q=1,正向計(jì)數(shù)脈沖=A∩Q。即正向計(jì)數(shù)時(shí)計(jì)數(shù)脈沖跟隨A 相脈沖。電磁干擾在A相產(chǎn)生的非正常脈沖直接導(dǎo)致誤計(jì)數(shù)的發(fā)生。
由以上產(chǎn)生誤計(jì)數(shù)的原因分析可知,產(chǎn)生誤計(jì)數(shù)的原因在于計(jì)數(shù)脈沖的產(chǎn)生條件很容易滿足,且當(dāng)誤計(jì)數(shù)脈沖產(chǎn)生后沒做任何處理。借鑒傳統(tǒng)電路思想[1]:采用上升沿和下降沿組合的方式產(chǎn)生一個(gè)計(jì)數(shù)脈沖。如圖6所示。
圖6 傳統(tǒng)電路抗干擾波形
由于采用了一相(A 相或B 相)的上升沿和下降沿組合產(chǎn)生計(jì)數(shù)脈沖的方式,在碼盤發(fā)生震動(dòng)或有電磁干擾在A 相或B 相產(chǎn)生非正常脈沖時(shí),干擾脈沖在正向計(jì)數(shù)產(chǎn)生了脈沖,同時(shí)也在反向產(chǎn)生一個(gè)脈沖。由于采用的是可逆計(jì)數(shù)方式,干擾脈沖在反向產(chǎn)生的計(jì)數(shù)脈沖會(huì)抵消掉一個(gè)正向脈沖。即消去了干擾。通過(guò)仿真結(jié)果顯示這種方式在一般情況下能較好的去除大部分干擾。
但是由于干擾脈沖是毫無(wú)規(guī)律的,在某些情況下傳統(tǒng)的抗干擾電路就會(huì)暴露出一些弊端。當(dāng)圖7干擾脈沖B 與正常脈沖之間的間隔小于計(jì)數(shù)脈沖的寬度時(shí),干擾脈沖B 在正向計(jì)數(shù)上產(chǎn)生的誤計(jì)數(shù)脈沖會(huì)跟正常的計(jì)數(shù)脈沖重合到一起。同時(shí)由于干擾脈沖B 也在反向計(jì)數(shù)產(chǎn)生了一個(gè)脈沖。根據(jù)該設(shè)計(jì)的可逆計(jì)數(shù)器原理,則正向計(jì)數(shù)脈沖和反向計(jì)數(shù)脈沖會(huì)相互抵消,導(dǎo)致計(jì)數(shù)脈沖少于實(shí)際的脈沖,產(chǎn)生了誤計(jì)數(shù)。通過(guò)ISIS 仿真軟件得出誤計(jì)數(shù)時(shí)波形如圖7所示。
圖7 產(chǎn)生誤計(jì)數(shù)時(shí)的波形
在圖7中可以看到,干擾B 產(chǎn)的誤計(jì)數(shù)脈沖在正向計(jì)數(shù)跟正常計(jì)數(shù)脈沖連到了一起。在可逆計(jì)數(shù)器中反向計(jì)數(shù)的脈沖抵消掉一個(gè)正向脈沖,導(dǎo)致計(jì)數(shù)脈沖少于實(shí)際值。
從以上分析可以看出,文獻(xiàn)[1]中的改進(jìn)電路也存在限制性,產(chǎn)生該情況的主要原因是干擾脈沖產(chǎn)生時(shí)刻的不確定性,這在實(shí)際工程項(xiàng)目中會(huì)帶來(lái)很大的誤計(jì)算。針對(duì)以上的誤差原因,本文提出了以可編程邏輯器件CPLD[2-5]為控制芯片,來(lái)設(shè)計(jì)相應(yīng)抗干擾防振動(dòng)電路。
由于誤計(jì)數(shù)的產(chǎn)生原因主要是電磁干擾產(chǎn)生的干擾脈沖和機(jī)械震蕩時(shí)碼盤的來(lái)回振動(dòng)?;谝陨显?,本文先設(shè)計(jì)了一個(gè)抗干擾電路,如圖8中的AntiInterference 模塊電路,此電路主要是對(duì)輸入脈沖進(jìn)行抗干擾處理,主要是通過(guò)對(duì)輸入信號(hào)采樣來(lái)實(shí)現(xiàn)。采樣周期和采樣窗口可以通過(guò)編程來(lái)實(shí)現(xiàn)。輸入信號(hào)只有在采樣窗口內(nèi),且采樣來(lái)的信號(hào)相同時(shí)才輸出相應(yīng)的脈沖信號(hào),假設(shè),只有當(dāng)對(duì)輸入信號(hào)連續(xù)采樣到n個(gè)相同的低電平時(shí),量化輸出才認(rèn)為是低電平;連續(xù)采樣到n個(gè)高電平時(shí),量化輸出才認(rèn)為是高電平,這樣就有效地將電磁干擾產(chǎn)生的干擾噪聲去除了。其中,在抗干擾模塊的電路的設(shè)計(jì)中,主要是根據(jù)對(duì)輸入時(shí)鐘信號(hào)CLK 進(jìn)行計(jì)數(shù)的方式來(lái)對(duì)采樣周期和采樣窗口的大小進(jìn)行設(shè)置,從而達(dá)到采樣周期和采樣窗口可控的目的。經(jīng)過(guò)AntiInterference 模塊后輸出的電路仿真波形如圖9(b)和圖10(b)所示。此時(shí),輸出的脈沖是沒有電磁干擾的脈沖,但機(jī)械震動(dòng)產(chǎn)生的干擾依舊存在,所以,需要對(duì)電路進(jìn)行防震動(dòng)的設(shè)計(jì)。
圖8 優(yōu)化電路原理圖
圖10 反轉(zhuǎn)防機(jī)械震動(dòng)抗干擾波形
針對(duì)機(jī)械震動(dòng)時(shí)的波形進(jìn)行分析,分別設(shè)計(jì)了正反轉(zhuǎn)抗震動(dòng)電路,此電路是對(duì)去除干擾脈沖后的脈沖信號(hào)進(jìn)行抗震動(dòng)處理。在機(jī)械震動(dòng)情況下的電路輸出波形如圖4中所示。該電路的設(shè)計(jì)思想是分別對(duì)正轉(zhuǎn)震動(dòng)和反轉(zhuǎn)震動(dòng)是的波形進(jìn)行研究,從而得出相應(yīng)的邏輯關(guān)系式,來(lái)輸出相應(yīng)的正向計(jì)數(shù)脈沖和反向計(jì)數(shù)脈沖。以正轉(zhuǎn)機(jī)械震動(dòng)時(shí)為例,當(dāng)光電編碼器正轉(zhuǎn)時(shí)產(chǎn)生震動(dòng),此時(shí)B 相輸入脈沖一直處于低電平狀態(tài),這時(shí)候A 相輸入的是機(jī)械震動(dòng)產(chǎn)生的脈沖,則在防震動(dòng)電路的設(shè)計(jì)中,根據(jù)A 相輸入的波形,在其下降沿的時(shí)候產(chǎn)生一個(gè)小的脈沖信號(hào),這個(gè)小的脈沖信號(hào)和B 相輸入信號(hào)相與,則可消除震動(dòng)時(shí)誤計(jì)數(shù)干擾。而對(duì)正常情況下的輸入脈沖沒有影響,如圖9(a)所示,同理,光電編碼器反轉(zhuǎn)震動(dòng)時(shí)的干擾也可以通過(guò)該方法去除,輸出波形如圖10(a)所示,設(shè)計(jì)的電路模塊如圖8中的AntiShake 和AntiShakeB 所示。此外,又為了后期CPU 計(jì)數(shù)的方便,在此電路中,正轉(zhuǎn)時(shí)只有正向計(jì)數(shù)脈沖有脈沖輸出,反轉(zhuǎn)時(shí)只有反向計(jì)數(shù)脈沖有脈沖輸出。因此,在本文中設(shè)計(jì)了一個(gè)D 觸發(fā)器[4]來(lái)判斷光電編碼器的正轉(zhuǎn)和反轉(zhuǎn),最后根據(jù)D 觸發(fā)器的輸出信號(hào)來(lái)選擇輸出的是正轉(zhuǎn)抗震動(dòng)電路波形還是反轉(zhuǎn)抗震動(dòng)電路波形。最后輸入到CPU 中[2],進(jìn)行相應(yīng)的處理。D 觸發(fā)器如圖8中的DTrigger 所示。
總體電路設(shè)計(jì)如圖8所示,整體設(shè)計(jì)思想如下:電路的輸入信號(hào)是A 相脈沖、B 相脈沖以及時(shí)鐘信號(hào)CLK,首先,A、B 相脈沖經(jīng)過(guò)AntiInterference模塊電路來(lái)去除脈沖中可能存在的電磁干擾(圖5),去除電磁干擾后的脈沖信號(hào)分別輸入到AntiShake和AntiShakeB 模塊中,進(jìn)行防震動(dòng)的處理,此時(shí)輸出的分別是正轉(zhuǎn)時(shí)的正向計(jì)數(shù)脈沖和反向計(jì)數(shù)脈沖,反轉(zhuǎn)時(shí)的正向計(jì)數(shù)脈沖和反向計(jì)數(shù)脈沖。同時(shí),利用起始輸入的脈沖A、B 信號(hào),設(shè)計(jì)一個(gè)D 觸發(fā)器DTrigger,來(lái)辨別輸入信號(hào)是正轉(zhuǎn)的還是反轉(zhuǎn)的。圖8中的IN4OUT2 模塊是一個(gè)6 輸入2 輸出的選擇器。6 輸入分別是正轉(zhuǎn)時(shí)的正向計(jì)數(shù)脈沖和反向計(jì)數(shù)脈沖、反轉(zhuǎn)時(shí)的正向計(jì)數(shù)脈沖和反向計(jì)數(shù)脈沖以及D 觸發(fā)器的正反轉(zhuǎn)信號(hào),IN4OUT2 模塊根據(jù)D觸發(fā)器的輸入信號(hào)來(lái)選擇最終的輸出信號(hào)是AntiShake 模塊還是AntiShakeB 模塊的輸出信號(hào)。
該方法的優(yōu)點(diǎn)在于采用識(shí)別脈沖寬度濾除了干擾脈沖,所以有效避免了因?yàn)槊}沖寬度而導(dǎo)致的誤計(jì)數(shù)的發(fā)生。并且因?yàn)閷挾茸R(shí)別由程序設(shè)計(jì)實(shí)現(xiàn),對(duì)于各種復(fù)雜的脈沖只需改變程序閾值,即對(duì)于脈沖的寬度是可調(diào)的[4],因而該方法具有很強(qiáng)的適應(yīng)性。而對(duì)于震動(dòng)而產(chǎn)生的誤計(jì)數(shù),也在該方法中得到了有效消除。本設(shè)計(jì)邏輯實(shí)現(xiàn)均采用可編程邏輯器件CPLD。
經(jīng)過(guò)仿真結(jié)果驗(yàn)證,改進(jìn)后的電路能有效濾除各種干擾,基本無(wú)誤計(jì)數(shù)的情況發(fā)生。其工作仿真波形如圖9、圖10所示。
根據(jù)以上分析,重新設(shè)計(jì)脈沖抗干擾防震動(dòng)優(yōu)化電路,如圖8所示。
為了驗(yàn)證電路抗干擾和防震動(dòng)的效果,本文人為將6 種干擾信號(hào)輸入到CPLD 中,均沒有發(fā)現(xiàn)誤計(jì)數(shù)的情況;在平朔煤礦移動(dòng)加油車中,由于進(jìn)油量突然增大導(dǎo)致油車震動(dòng)以及電磁干擾產(chǎn)生的尖峰脈沖,會(huì)對(duì)脈沖信號(hào)產(chǎn)生誤計(jì)數(shù);本設(shè)計(jì)在此工程中應(yīng)用良好,未發(fā)現(xiàn)因震動(dòng)和干擾等因素而影響開度測(cè)量精度的情況。
本文分析了電磁干擾和機(jī)械震動(dòng)對(duì)光電編碼器計(jì)數(shù)的影響和誤差原因。并分析了文獻(xiàn)[1]中改進(jìn)電路,對(duì)該電路進(jìn)行仿真,得出了該電路不適用時(shí)的波形。分析其產(chǎn)生的原因并提出解決方案;最后提出了本文的改進(jìn)電路,并在各種干擾下對(duì)電路進(jìn)行驗(yàn)證。均為出現(xiàn)光電編碼器誤計(jì)數(shù)的情況,且本設(shè)計(jì)采用是的可編程邏輯器件CPLD[3],維護(hù)方便,適用性方面也更加廣泛。
[1] 崔曉紅,陳宏利.光電編碼器防震動(dòng)抗干擾電路的設(shè)計(jì)[J].交通與計(jì)算機(jī),2005,23(1): 110-112.
[2] 周興華,李玉麗,傅飛峰.手把手教你學(xué) CPLD/ FPGA 與單片機(jī)聯(lián)合設(shè)計(jì)[M].北京: 北京航空航天大學(xué)出版社,2010: 2010-2011.
[3] 候伯亨.VHDL 硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(修訂版) [M].西安: 西安電子科技大學(xué)出版社,1999.
[4] 劉福奇.基于VHDL 的FPGA 和Nios II 實(shí)例精煉[M].北京: 北京航天航空大學(xué)出版社,2011.
[5] 閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京: 高等教育出版社,1998.