張 鋒,彭正輝,任 強,朱今祥,林曙光
(中國電波傳播研究所,山東 青島266107)
光電編碼器是一種集光、機、電為一體的傳感器;編碼器是把角位移或直線位移轉(zhuǎn)換成電信號的一種裝置,它以高精度計量光柵作為檢測元件,通過光電轉(zhuǎn)換技術(shù),將輸入的位移等物理量轉(zhuǎn)變?yōu)閿?shù)字脈沖信號,通過計算脈沖的個數(shù),實現(xiàn)精確的位移測量;具有精度高、測量范圍廣、響應(yīng)快、體積小、重量輕、性能穩(wěn)定可靠、易于維護、性價比高等優(yōu)點[1,2]。目前,光電編碼器廣泛應(yīng)用于雷達、電梯、伺服電機、地面指揮儀、機器人、數(shù)控機床等自動化精密設(shè)備中。
本文提出了一種應(yīng)用于探地雷達、可靈活控制測距精度的基于現(xiàn)場可編程門陣列(FPGA)平臺的設(shè)計方案,通過FPGA 平臺的工作,實現(xiàn)了在探地雷達實驗中準確的脈沖計數(shù)和顯示距離。
增量式編碼器是一種通過光電轉(zhuǎn)換將輸出軸上的機械幾何位移轉(zhuǎn)換成周期性的電信號,再把這個電信號轉(zhuǎn)變成計數(shù)脈沖,用脈沖的個數(shù)表示位移的大小。它由光柵盤和光電檢測裝置組成,光柵盤是在一定直徑的圓板上等分地開通若干個長方形孔。由于光電碼盤與電動機同軸,電動機旋轉(zhuǎn)時,光柵盤與電動機同速旋轉(zhuǎn),經(jīng)發(fā)光二極管等電子元件組成的檢測裝置檢測輸出若干脈沖信號,編碼盤上涂有兩道相差90°黑白相同的柵欄,分別稱之為A 道和B 道,其輸出脈沖也是相差90°。當編碼器正向旋轉(zhuǎn)時,A 相比B相超前90°,當編碼器反向旋轉(zhuǎn)時,A 相比B 相滯后90°。正常情況下,編碼器的正轉(zhuǎn)和反轉(zhuǎn)輸出波形分別如圖1 和圖2所示。
圖1 編碼器正轉(zhuǎn)時序圖Fig 1 Timing diagram of encoder positive rotation
圖2 編碼器反轉(zhuǎn)時序圖Fig 2 Timing diagram of encoder reverse rotation
基于FPGA技術(shù)的光電編碼器系統(tǒng),采用Xilinx公司的Spartan—6 系列XC6SLX16 芯片作為主芯片,完成對編碼器的輸出信號采集、辨向、分頻、計數(shù)、鎖存、傳輸?shù)裙δ埽?]。
探地雷達工作時,按照測距輪觸發(fā),每一個測距輪脈沖完成一次雷達發(fā)射觸發(fā)和接收回波信號;雷達具有不同的重復(fù)周期,為滿足雷達不同工作模式的需求,利用FPGA 對雷達信號的處理和光電編碼器時序進行合理的設(shè)計,需要設(shè)計不同的編碼器分頻數(shù),滿足雷達的時序要求;本研究的光電編碼器選用每轉(zhuǎn)1000 個脈沖,對應(yīng)輪子直徑為1 m,故每個測距輪的精度為1 mm;根據(jù)雷達的使用情況,雷達運行速度要求不低于2 km/h,即每個脈沖對應(yīng)的時間要求為1.8 ms,雷達的重復(fù)周期為7 ms,為滿足每個測距輪內(nèi)至少有一個雷達回波信號,故至少四分頻,以四分頻為例,對應(yīng)的每個測距輪脈沖時間為7.2 ms,即測距輪精度為4 mm;滿足探地雷達對小目標探測的工作需要。若改變探地雷達對探測目標類型的需求,可利用硬件描述語言實現(xiàn)不同的分頻,從而實現(xiàn)雷達對測量精度的變化,滿足探地雷達的需求。
增量式光電編碼器本質(zhì)上是一種旋轉(zhuǎn)式角位移檢測裝置,它根據(jù)軸所轉(zhuǎn)動的角度,輸出一系列的脈沖,將機械轉(zhuǎn)角轉(zhuǎn)變?yōu)殡娒}沖,其輸出信號如圖1、圖2 所示。A,B 兩相信號是相位相差90°的正交方波脈沖序列,每一個脈沖都代表被測對象旋轉(zhuǎn)了一定的角度,A,B 之間的相位關(guān)系則反映出被測對象的旋轉(zhuǎn)方向,即當A 相超前B 相,轉(zhuǎn)動方向為正轉(zhuǎn);當B 相超前A 相,轉(zhuǎn)動方向則為反轉(zhuǎn)[4,5]。
在脈沖周期T 內(nèi)A,B 兩相信號共產(chǎn)生了4 次變化,盡管T 不確定,但由于A,B 兩相方位信號之間相位關(guān)系確定,使這4 次變化在相位上平均分布。
當光柵正向移動時,光柵輸出的A 相信號的相位超前B 相90°,則在一個周期T 內(nèi),兩相信號共有4 次相對變化:a→b→c→d,對應(yīng)二進制編碼為00→10→11→01→00。此時,運動方向為正轉(zhuǎn),這樣,如果每發(fā)生一次變化,可逆計數(shù)器便實現(xiàn)一次加計數(shù)。
當光柵反向移動時,光柵輸出的A 相信號的相位滯后B 相90°,則在一個周期T 內(nèi),兩相信號共有4 次相對變化:a→b→c→d,對應(yīng)二進制編碼為00→01→11→10→00。此時,運動方向為反轉(zhuǎn),同理,如果每發(fā)生一次變化,可逆計數(shù)器便實現(xiàn)一次減計數(shù)。
根據(jù)編碼器的特點,對A,B 兩相的信號編碼為4 種狀態(tài),從而完成對測距輪正、反轉(zhuǎn)的判別;FPGA 具體Verilog HDL 主要代碼如下[6]:
ChipScope 是Xilinx 推出的一種在線調(diào)試軟件,主要功能是通過JTAG 口、在線實時地讀出FPGA 的內(nèi)部信號?;驹硎抢肍PGA 中未使用的BlockRAM,根據(jù)用戶設(shè)定的觸發(fā)條件將信號實時地保存到BlockRAM 中,然后通過JTAG 口傳送到PC,顯示出時序波形。Chipscope 本身是一個邏輯分析儀,主要用于在板上測試過程中采集并觀察芯片內(nèi)部信號,以便于調(diào)試。
圖3 ~圖6 截圖是采用ChipScope 軟件,實時對輸出管腳觀察的結(jié)果;其中,F(xiàn)LAGA_IBUF 和FLAGB_IBUF 分別是A 相和B 相編碼器經(jīng)過采集后的信號,圖3 顯示A 相提前B 相90°,代表編碼器正轉(zhuǎn);圖4 顯示A 相滯后B 相90°,代表編碼器反轉(zhuǎn);o_clk_a 和o_clk_b 分別是對A,B 相原始采集的編碼器經(jīng)過四分頻后的兩相信號,XLXI_188/flag_out是經(jīng)過信號處理后辨向的標志位、當變化:0→1→0→1,即低位flag_out(0)有脈沖,表示正轉(zhuǎn),當變化:0→2→0→2,即高位flag_out(1)有脈沖,表示反轉(zhuǎn);當正轉(zhuǎn)時,按照遞增計數(shù),如圖5 的ZFZ_COUNT_管腳顯示的結(jié)果:CA→CB→CC→CD(十六進制表示的數(shù)值)遞增;當反轉(zhuǎn)時,按照遞減計數(shù),如圖6 的count_jian_管腳顯示的結(jié)果51→50→4F→4E(十六進制表示的數(shù)值)遞減;通過ChipScope 實時監(jiān)測的結(jié)果,當測距輪正、反轉(zhuǎn)時,雷達能實時接收編碼器的距離信息,進行雷達的正常工作。
圖3 編碼器正轉(zhuǎn)實時檢測輸出結(jié)果圖Fig 3 Output result of encoder positive rotation real time detection
圖4 編碼器反轉(zhuǎn)實時檢測輸出結(jié)果圖Fig 4 Output result of encoder reverse rotation real time detection
圖7 、圖8 是通過USB 接口,把經(jīng)過FPGA 采集處理后的光電編碼器的測距輪信號實時傳送給上位機,然后通過Matlab 對采集的信號畫圖顯示的結(jié)果。驗證了距離的正確性。圖7 是正轉(zhuǎn)時的測距輪正轉(zhuǎn)顯示結(jié)果,從10.5 m 行進到20.8 m;圖8 是反轉(zhuǎn)時的測距輪反轉(zhuǎn)顯示結(jié)果,從10 m后退到18.9 m。
圖5 編碼器正轉(zhuǎn)實時遞增輸出結(jié)果圖Fig 5 Real time incremental output result of encoder positive rotation
圖6 編碼器正轉(zhuǎn)實時遞減輸出結(jié)果圖Fig 6 Real time decreasing output result of encoder positive rotation
圖8 測距輪反轉(zhuǎn)顯示結(jié)果Fig 8 Display results of inverse rotation
本文提出了探地雷達增量式光電編碼器使用的一種解決方案,并同時給出了基于FPGA 的高精度光電編碼器實現(xiàn)方法;將待測量雙路信號轉(zhuǎn)換成測量光電編碼器旋轉(zhuǎn)的轉(zhuǎn)數(shù)和對應(yīng)的位移,經(jīng)過四分頻和鎖存電路實時應(yīng)用于探地雷達中,實測試驗結(jié)果證明:該方案能夠?qū)崿F(xiàn)準確的脈沖計數(shù)、顯示距離;實現(xiàn)了小型、高集成的高頻率數(shù)據(jù)傳輸,并通過USB 接口與上位機通信;而且FPGA 可以根據(jù)探地雷達不同工作需要,任意的改變參數(shù),維護方便、可靠性高。
[1] 姜何 勇,范永坤,王 濤,等.基于FPGA 的增量式光電編碼器計數(shù)電路設(shè)計[J].儀器儀表用戶,2008,15(3):90-92.
[2] 馬永杰,董秀娟,王 軻.基于FPGA 的高精度光電編碼器接口電路的設(shè)計[J].西北師范大學(xué)學(xué)報,2011,47(4):43-47.
[3] 張寶宜,邱宏安,蘇文濤,等.基于CPLD 的高精度位移測量電路的設(shè)計與實現(xiàn)[J].儀表技術(shù)與傳感器,2006(7):41-43.
[4] 孫敬先,李長星,鄭 敏,等.基于FPGA 的光電編碼器信號的處理方法[J].計量與測試技術(shù),2011,38(1):62-64.
[5] 張九才,王文祥,楊顯志,等.增量式編碼器抗抖動性研究[J].自動化儀表,2005,26(10):38-39.
[6] 薛小剛,葛毅敏.Xinlix ISE 9.X FPGA/CPLD 設(shè)計指南[M].北京:人民郵電出版社,2007.