基于FPGA與有限狀態(tài)機的高精度測角系統(tǒng)的設(shè)計與實現(xiàn)
激光跟蹤測量系統(tǒng)(Laser Tracker System)是工業(yè)測量系統(tǒng)中常用的一種高精度的測量儀器,是近十年發(fā)展起來的新型大尺寸空間測量儀器,不僅對靜止目標可以測量,而且對運動目標也可以進行跟蹤測量。它集合了激光測距技術(shù)、光電技術(shù)、精密機械技術(shù)、計算機及控制技術(shù)等各種先進技術(shù),對空間運動目標進行跟蹤并實時測量目標的空間三維坐標。它具有快速、動態(tài)、精度高等優(yōu)點,適合于大尺寸工件配裝測量。在航空航天、機械制造、核工業(yè)、現(xiàn)代軍事等測量領(lǐng)域得到廣泛的應(yīng)用。該系統(tǒng)的跟蹤精度在很大程度上依賴于轉(zhuǎn)臺的旋轉(zhuǎn)角度的測量精度。
本文引用地址:http://2s4d.com/article/201610/308593.htm為了提高系統(tǒng)轉(zhuǎn)臺旋轉(zhuǎn)角度測量的精度,本系統(tǒng)采用高分辨率的光電編碼器來測量角度。光電編碼器是利用光柵衍射原理實現(xiàn)位移數(shù)字變換的,光電編碼器作為一種高精度的測角傳感器已普遍應(yīng)用于伺服跟蹤系統(tǒng)中,它具有精度高、響應(yīng)快、性能穩(wěn)定可靠等優(yōu)點。光電編碼器按編碼方式主要分為兩類:增量式與絕對式。由于增量式光電編碼器成本低、測角的精度高,因此本系統(tǒng)的增量式光電編碼器選用Renishaw公司的高精度圓光柵。
然而,由于機械振動或抖動等原因,增量式編碼器的輸出脈沖會出現(xiàn)抖動毛刺的現(xiàn)象,因此需要在對編碼器輸出脈沖進行計數(shù)的過程中采取有效的方法來去掉抖動干擾。本文介紹的有限狀態(tài)機方法,在FPGA上可以有效消除抖動引起的計數(shù)干擾,提高計數(shù)的精度[1]。
1 方案設(shè)計
1.1 系統(tǒng)組成
激光跟蹤測量系統(tǒng)的核心處理模塊主要由ARM處理器,FPGA組成。為了充分利用ARM9微處理器的運算能力和FPGA的高速邏輯處理能力,在設(shè)計中對功能的實現(xiàn)進行了劃分。ARM9 用于運動控制平臺的控制并且與FPGA一起形成一個完整的應(yīng)用平臺。FPGA主要完成編碼器的精確計數(shù)功能、與ARM9處理器數(shù)據(jù)通信、與激光測距儀數(shù)據(jù)通信功能。系統(tǒng)的組成框圖如圖1所示。本文重點介紹在FPGA上實現(xiàn)編碼器的輸出脈沖計數(shù)與角度測量。
1.2 增量式編碼器原理
增量型編碼器通常有3路信號輸出:A、B和Z,每路都是差分信號,共6路信號,信號采用TTL電平,A脈沖在前,B脈沖在后,A、B脈沖相差90°,每旋轉(zhuǎn)一圈發(fā)出一個基準脈沖Z,作為參考機械零位。Z相的波形中心對準A相輸出的波形中心。利用A相B相的相位差來進行判相,A超前B 90°為正轉(zhuǎn),反之B超前A 90°為反轉(zhuǎn)。
由于增量式編碼器不帶記憶功能,因此對外界因素引起的干擾非常敏感,在實際應(yīng)用中,由于機械振動、工作環(huán)境,電機負載等都無可避免地會產(chǎn)生震動,編碼器會在某一相的脈沖邊緣的地方出現(xiàn)抖動的情況,因此有效濾掉脈沖的抖動和毛刺,是提高計數(shù)精度的關(guān)鍵技術(shù)。編碼器輸出真實信號的波形如圖2所示[2-3]。
2 理論分析與算法
2.1 有限狀態(tài)機原理
在編碼器的一個輸出周期內(nèi),A、B兩相輸出信號共產(chǎn)生4個跳變沿,在A、B方波信號的上升沿和下降沿分別計數(shù),從而實現(xiàn)四倍頻計數(shù)的操作。本文通過有限狀態(tài)機FSM,對原始信號進行四倍頻采樣控制,狀態(tài)機外加的一路高速同步時鐘信號作為狀態(tài)機的驅(qū)動時鐘信號,從而有效濾掉抖動干擾。
有限狀態(tài)機FSM(Finite State Machine)是一種時序電路,是數(shù)字系統(tǒng)中實現(xiàn)高效率可靠性邏輯控制的重要方法。標準狀態(tài)機可分為摩爾型Moore和米利型Mealy兩種類型。Mealy狀態(tài)機的輸出是當前狀態(tài)和輸入信號的函數(shù)。在本設(shè)計中,對編碼器輸出信號進行計數(shù),采用的計數(shù)器是雙向計數(shù)器,既與當前編碼器所處于的電平組合有關(guān),又與前一個狀態(tài)有關(guān)。因此本設(shè)計采用Mealy狀態(tài)機。Mealy狀態(tài)機比Moore狀態(tài)機在狀態(tài)切換時提前一個同步時鐘, 因而具有較高的實時性。A、B兩相信號轉(zhuǎn)換狀態(tài)如圖3所示[4]。
在理想情況下, 若編碼器正向旋轉(zhuǎn),A、B 電平的值為:00-10-11-01-00 ; 若編碼器反向旋轉(zhuǎn), 則A、B 電平的值為:00-01-11-10-00 。但是在實際應(yīng)用中, 輸入脈沖含有抖動和毛刺,A、B 相脈沖的電平狀態(tài)會在狀態(tài)機中有效地跳轉(zhuǎn), 抖動之后, 由于計數(shù)器能夠正反向計數(shù),因此最終的計數(shù)值會保持不變, 輸出的結(jié)果也保持不變, 達到了去抖動的效果。有限狀態(tài)機設(shè)置了5 個狀態(tài):IDLE (S0) ,ALBL (S1) ,AHBL (S2) ,AHBH (S3) ,ALBH (S4) 。其中IDLE 為初始狀態(tài), 用于初始化計數(shù)器的計數(shù)器狀態(tài)。狀態(tài)機的狀態(tài)空間跳轉(zhuǎn)圖如圖4 所示[5]。
3 系統(tǒng)設(shè)計與實現(xiàn)
3.1 軟硬件平臺
根據(jù)以上分析,編碼器輸出的原始信號經(jīng)過有限狀態(tài)機處理后,得到了四倍頻的輸出信號。本系統(tǒng)采用FPGA實現(xiàn)四倍頻控制和計數(shù)功能,與用分立器件構(gòu)成的倍頻計數(shù)電路相比,具有穩(wěn)定度高,移植性靈活,可靠性好的特點。
硬件采用Altera公司的Cyclone系列FPGA芯片EP1C12Q240,編譯環(huán)境為Quartus II 5.1集成開發(fā)環(huán)境。在Quartus II的開發(fā)環(huán)境中,可以通過兩種方法來實現(xiàn)Mealy有限狀態(tài)機。第一采用硬件描述語言,第二通過Quartus II中的狀態(tài)機編輯工具來完成。本設(shè)計采用硬件描述語言來實現(xiàn)狀態(tài)機設(shè)計。
3.2 程序設(shè)計
為了提高系統(tǒng)的實用性和穩(wěn)定性,濾掉信號上的毛刺,在A、B相信號進入狀態(tài)機前,先設(shè)計一個濾波器進行初次濾波,每個信號用4個D觸發(fā)器和1個判決器來濾波;觸發(fā)器由時鐘SCLK驅(qū)動。小于一個SCLK時鐘周期的毛刺,都被濾波器濾掉了。濾波器的原理圖如圖5所示[6-7]。
整個程序的設(shè)計是采用圖形和語言相結(jié)合的方法來實現(xiàn)的。頂層設(shè)計采用圖形文件,頂層模塊的結(jié)構(gòu)圖如圖6所示。
內(nèi)部的狀態(tài)機模塊采用VHDL語言來實現(xiàn)。頂層模塊包含兩個模塊,一個濾波器模塊,該模塊根據(jù)三選二判決的原理來濾掉毛刺;另一個模塊是狀態(tài)機模塊,最終輸出編碼器計數(shù)的結(jié)果。Input[0]和input[1]輸入引腳分別連接增量型編碼器A相和B相信號。q[31..0]為32位的計數(shù)器,輸出當前編碼器的計數(shù)值,dirout是編碼器的旋轉(zhuǎn)方向信號。
程序設(shè)計完成后,在仿真工具modelsim下進行波形仿真。仿真結(jié)果如圖7所示。從圖中看出,計數(shù)器能夠?qū)崿F(xiàn)正向與反向計數(shù),可以有效濾除脈沖上的抖動,獲得精確的計數(shù)值。
本文提出了一種基于有限狀態(tài)機的高精度測量系統(tǒng),在FPGA上用有限狀態(tài)機實現(xiàn)了編碼器輸出脈沖的去抖,并通過32位計數(shù)器實現(xiàn)精確計數(shù)。最終在ARM處理器上完成角度的計算。通過大量反復試驗,試驗結(jié)果表明本文介紹的方法具有精度高、成本低、接口兼容性高、可靠性高、可移植性好等優(yōu)點,可以有效抑制噪聲干擾,獲得高精度的角度數(shù)據(jù)。該方法已經(jīng)成功應(yīng)用在激光跟蹤測量系統(tǒng)中,該技術(shù)的推廣可以取得良好的經(jīng)濟效益,具有重要實用意義。
評論