顧曉威,胡 毅,占瑜毅
(合肥工業(yè)大學(xué) 儀器科學(xué)與光電工程學(xué)院,合肥 230009)
關(guān)節(jié)臂坐標(biāo)測量機(jī)為一類應(yīng)用廣泛的三坐標(biāo)測量機(jī),其測量范圍不受導(dǎo)軌、標(biāo)尺和工作臺尺寸限制,具有測量空間開闊的特點,更容易深入到正交坐標(biāo)測量機(jī)不易深入的工件部位去測量,并且具有靈活、便攜、經(jīng)濟(jì)、采集數(shù)據(jù)速度快等優(yōu)點,適宜于車間現(xiàn)場使用,深受業(yè)界人士的好評,其中對多路光柵傳感器輸出信號進(jìn)行處理和傳輸?shù)难芯渴呛苤匾囊环矫?。傳統(tǒng)多光柵采集系統(tǒng)多使用分立的邏輯電路和芯片,即把每路信號分別放在一片專用芯片中處理,再加上通信接口芯片等電路元件,容易造成系統(tǒng)結(jié)構(gòu)復(fù)雜,可靠性和通用性差,不利于調(diào)試,處理速度慢等缺點。如果在一片F(xiàn)PGA芯片上集成多路光柵信號的處理與傳輸功能,可以抗干擾,減少系統(tǒng)的復(fù)雜度,從而提高系統(tǒng)的可靠性和速度。由于單片芯片體積小,還可以嵌入到其他系統(tǒng)中。而且FPGA芯片設(shè)計周期短,成本低,靈活性高,可以方便地對電路進(jìn)行修改,必要的時候可以加入其它模塊[1],比如在各種不同總線的系統(tǒng)中使用時,對于數(shù)據(jù)傳輸?shù)慕涌?,不會再受到專用芯片接口單一且固定的限制,可以隨時增加或修改接口模塊以適應(yīng)不同總線數(shù)據(jù)傳輸?shù)男枰?/p>
圖1 光柵輸出信號特征Fig.1 Grating output signal characteristics
圖2 系統(tǒng)整體結(jié)構(gòu)Fig.2 Overall structure of the system
在坐標(biāo)測量機(jī)的設(shè)計中,測頭定向位置由3個關(guān)節(jié)6個圓光柵傳感器確定,對圓光柵輸出脈沖計數(shù)可實現(xiàn)角度的測量[2]。本設(shè)計采用FPGA芯片EP4CE6F17C8作為核心控制器,實現(xiàn)對關(guān)節(jié)式坐標(biāo)測量機(jī)光柵信號數(shù)據(jù)采集處理系統(tǒng),以取代價格貴、功能單一的專用芯片。光柵信號首先通過前置差分處理電路,再由FPGA進(jìn)行整形、細(xì)分辨向、計數(shù)處理,最終串口通信發(fā)送到上位機(jī)軟件,并根據(jù)FPGA模塊化的特點,后期可實現(xiàn)多個光柵角度的采集。
增量式圓光柵編碼器一般有A相、B相及Z相3個輸出。A相、B相信號包含了圓光柵編碼器的旋轉(zhuǎn)方向、旋轉(zhuǎn)速率等信息[3]。每移動一個柵距,就會輸出兩路相位相差90°的A、B脈沖方波信號(如圖1),只需準(zhǔn)確記錄這些脈沖的數(shù)目,就能夠精確計算出相對位移以及方向。除了A、B信號外,還有一個Z脈沖信號,這個脈沖信號作為參考點,用于異步清零,可以矯正系統(tǒng)的計數(shù)數(shù)據(jù),避免累計誤差,確保了計數(shù)的準(zhǔn)確度[4]。
本系統(tǒng)本質(zhì)上就是實現(xiàn)對AB脈沖數(shù)的采集以及AB相位判斷,其整體結(jié)構(gòu)如圖2所示,系統(tǒng)分為整形、細(xì)分辨向、計數(shù)、串口通信4大模塊。整形模塊主要是為了濾除高頻干擾對系統(tǒng)的影響;細(xì)分辨向模塊主要完成4倍頻和辨向功能;通信模塊主要作用是把角度信息上傳到上位機(jī),便于后續(xù)處理。
圖3 整形模塊電路Fig.3 Shaping module circuit
信號整形模塊主要的作用是完成光柵信號的整形,防止一些信號毛刺的干擾,本質(zhì)上是一個實現(xiàn)去抖濾波的數(shù)字濾波器(RTL電路如圖3)。其核心功能是用時鐘信號CLK_50M檢驗輸入方波信號的脈沖寬度,將小于3個CLK周期的窄脈沖視為抖動干擾加以過濾。一般情況下,時鐘信號CLK_50M頻率遠(yuǎn)大于光柵信號頻率。因此,可以用時鐘信號的邊沿去采樣光柵輸出信號電平狀態(tài)。穩(wěn)定的光柵信號會在一定時間內(nèi)電平保持一致,也即脈沖寬度會大于一定時間。因此,若設(shè)置一個3位的寄存器數(shù)據(jù)類型值,每一個時鐘上升沿采樣當(dāng)前光柵信號電平狀態(tài)送入寄存器內(nèi),連續(xù)3個時鐘周期內(nèi)采樣值均一致,則可認(rèn)為當(dāng)前為有效信號,并輸出相應(yīng)電平值,否則輸出信號電平狀態(tài)保持不變。
光柵正向運動時的A、B電平總是以(0,1),(0,0),(1,0),(1,1)循環(huán)變換,而反向運動時電平變化又是以(1,0),(0,0),(0,1),(1,1)循環(huán)變換。每個周期內(nèi)都能檢測到4次電平跳變,因此可以輸出4次計數(shù)脈沖,實現(xiàn)四細(xì)分,且由于運動方向不同,每兩次跳變轉(zhuǎn)換都是不同的,若檢測每一次產(chǎn)生跳變時的前后電平狀態(tài),就可以在固定的循環(huán)中對應(yīng)上當(dāng)前的運動方向信息??紤]到一般使用情況下,時鐘信號頻率仍可作為采樣信號,用其上升沿去采樣每個周期內(nèi)的4次電平跳變,存入寄存器內(nèi),比較當(dāng)前值與前一狀態(tài)值,狀態(tài)不變,暫不輸出脈沖,狀態(tài)跳變,根據(jù)多種電平狀態(tài)變化,輸出對應(yīng)增減脈沖,用于后續(xù)處理。該模塊RTL級電路如圖4所示,輸入端時鐘信號CLK_50M,光柵輸入信號a、b,輸出端增計數(shù)up,減計數(shù)down。
圖4 細(xì)分辨向模塊電路Fig.4 Fine resolution to module circuit
圖5 計數(shù)模塊電路Fig.5 Counting module circuits
可逆計數(shù)器模塊將前一模塊產(chǎn)生的增減計數(shù)作為觸發(fā)信號,每檢測到一個增或減計數(shù)脈沖上升沿,就先在兩個計數(shù)器中獨立地進(jìn)行計數(shù)。最終計數(shù)值通過比較增減計數(shù)值得到,當(dāng)增計數(shù)值大于減計數(shù)值,即正轉(zhuǎn)角度多于反轉(zhuǎn)角度時,最終計數(shù)值為增減計數(shù)值絕對差值;當(dāng)減計數(shù)值大于增計數(shù)值,即反轉(zhuǎn)角度大于正轉(zhuǎn)角度時,最終計數(shù)值為光柵最大脈沖數(shù)同減計數(shù)值的絕對差值再合上增計數(shù)值,RTL電路如圖5所示。rst為復(fù)位輸入,up,down為增減脈沖輸入,z為零位信號輸入,d為計算出的脈沖數(shù),angle為換算得到的角度信息。
本論文中,光柵傳感器采用的是Mercury 3000系列編碼器,轉(zhuǎn)滿一圈輸出的最大脈沖數(shù)為524288,經(jīng)過軟件四細(xì)分后可達(dá)2097152。理論上,21位以上的計數(shù)器能滿足要求,因而采用22位可逆計數(shù)器。
圖6 串口發(fā)送示意圖Fig.6 Serial sending diagram
通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter,簡稱UART)是一種異步收發(fā)傳輸器,其將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)以便傳輸;將接收到的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)。它包括了RS232、RS449、RS423、RS422和RS485等接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范,即UART是異步串行通信口的總稱。UART串口通信的數(shù)據(jù)包以幀為單位,常用的幀結(jié)構(gòu)為:1位起始位+8位數(shù)據(jù)位+1位奇偶校驗位(可選)+1位停止位,通信原理如圖6所示。將一個字節(jié)一位一位地通過串行總線按照一定的頻率(波特率)發(fā)送出去,該模塊主要作用是與上位機(jī)通訊,將光柵采集到的數(shù)據(jù)發(fā)送到上位機(jī),RTL電路如圖7所示。
圖7 串口發(fā)送模塊電路Fig.7 Serial sending module circuit
圖8 整形模塊仿真Fig.8 Simulation of shaping module
圖9 細(xì)分辨向模塊仿真Fig.9 Detailed resolution module simulation
圖10 計數(shù)模塊仿真Fig.10 Counting module simulation
圖11 串口發(fā)送模塊仿真Fig.11 Serial transmission module simulation
完成以上設(shè)計后,編寫testbench仿真文件并用Modelsim進(jìn)行仿真驗證。整形模塊Testbench仿真結(jié)果如圖8所示,圖中可以看出,連續(xù)3個時鐘周期內(nèi)采樣值均一致,則可認(rèn)為當(dāng)前為有效信號,并輸出相應(yīng)電平值,噪聲可能引起的誤計數(shù)很大程度上可以被消除,否則輸出信號電平狀態(tài)保持不變。圖3可以看出輸入信號u1,u2的毛刺在對應(yīng)的輸出a,b中已經(jīng)濾除。
圖9為四細(xì)分辨向電路模塊的testbench仿真結(jié)果,當(dāng)信號a滯后于b時,表示光柵傳感器正在反向運動,則該模塊會在每個電平跳變處輸出一個減計數(shù)脈沖;當(dāng)信號a超前b時,表示光柵傳感器正在正向運動,則該模塊會在每個電平跳變處輸出一個增計數(shù)脈沖,實現(xiàn)辨向目的。
圖10為計數(shù)模塊Testbench仿真,當(dāng)復(fù)位鍵按下后,可以檢測到復(fù)位信號下降沿,并對增減計數(shù)值清零。正轉(zhuǎn)時,計數(shù)值增加,反之減少。當(dāng)正轉(zhuǎn)過零時,零位信號自動置位,增減計數(shù)值清零;當(dāng)反轉(zhuǎn)過零時,零位信號也自動置位,計數(shù)值變?yōu)楣鈻艂鞲衅鳚M圈的最大脈沖數(shù)。
圖11為串口發(fā)送模塊的仿真結(jié)果,由于角度為360°大于串口一幀發(fā)送的8位最大值255,因而一次發(fā)送兩幀數(shù)據(jù),待發(fā)送數(shù)據(jù)為0xAAAA時,UART_TX分兩次從高電平開始,依次發(fā)送起始位0,01010101(由低到高),以及停止位。待發(fā)數(shù)據(jù)為0x5555時,UART_TX則分兩次從高電平開始,依次發(fā)送起始位0,10101010(由低到高),以及停止位,皆符合設(shè)計要求。
本文針對關(guān)節(jié)臂坐標(biāo)測量機(jī),以FPGA為平臺設(shè)計了一種光柵編碼器信號采集系統(tǒng),克服了使用專用集成電路帶來的通用性差、電路復(fù)雜、實時性差等問題。該采集系統(tǒng)設(shè)計主要由4個模塊構(gòu)成,分別為濾波模塊、細(xì)分辨向模塊、可逆計數(shù)模塊、串口通信模塊。仿真結(jié)果表明,該采集方案在保證精度的同時,能夠有效消除干擾和抖動現(xiàn)象,準(zhǔn)確無誤地進(jìn)行脈沖計數(shù),并且用Verilog硬件描述語言設(shè)計電路,改變電路,只需要修改程序即可,比較方便和靈活。相比傳統(tǒng)采用單片機(jī)的設(shè)計方法,該方法結(jié)構(gòu)簡單、集成度高、可移植性強(qiáng)、功耗低、抗干擾強(qiáng)、所用器件數(shù)目少,適用于各種需要光柵編碼器測量速度和位置的領(lǐng)域,目前該程序已成功下載到實驗平臺,并對系統(tǒng)進(jìn)行了硬件仿真驗證,運行情況良好。