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