段可,王彩霞,牟暢,劉鵬,姜浩
(1.長(zhǎng)春理工大學(xué) 電子信息工程學(xué)院,長(zhǎng)春 130022;2.中國(guó)華錄·松下電子信息有限公司,大連 116023)
隨著科技的進(jìn)步,社會(huì)的發(fā)展,人類(lèi)測(cè)量技術(shù)也隨之變強(qiáng),而作為先進(jìn)測(cè)量技術(shù)之一的光電位移測(cè)量技術(shù)也在不斷地進(jìn)步,光柵編碼器、光柵尺等高精度的測(cè)量?jī)x器也在隨之不斷地開(kāi)發(fā)、完善[1]。而在不同的平臺(tái)中均有對(duì)絕對(duì)式光柵尺與增量式光柵尺相關(guān)性能參數(shù)的對(duì)比研究調(diào)查,那么如何能夠精確無(wú)誤的通過(guò)增量式光柵尺實(shí)現(xiàn)絕對(duì)式光柵尺的功能,就成了一個(gè)頗具研究?jī)r(jià)值的問(wèn)題[2-3]。
光柵尺由光源、透鏡、光柵(標(biāo)尺光柵和指示光柵)、光敏元件四大部分組成,光柵尺是基于莫爾條紋進(jìn)行工作的。將光柵常數(shù)完全一致的標(biāo)尺光柵和指示光柵疊合在一起,并使兩者的柵線間有一微小夾角,當(dāng)光線照射時(shí),由于干涉作用在兩光柵的刻線重合處就會(huì)形成亮帶,在兩光柵的刻線錯(cuò)開(kāi)處會(huì)形成暗帶,這種亮帶和暗帶就是明暗相間的莫爾條紋[4],如圖1所示。
圖1 莫爾條紋
若設(shè)相鄰莫爾條紋的間距是B,則表達(dá)式為:
式中,w為光柵常數(shù),θ為兩光柵刻線的夾角。
光柵尺即利用光敏元件將莫爾條紋移動(dòng)所產(chǎn)生的光強(qiáng)變化轉(zhuǎn)化為近似正弦的電信號(hào)輸出[5],從而間接測(cè)量位移量。
本課題采用了長(zhǎng)春光機(jī)數(shù)顯技術(shù)有限責(zé)任公司的SGC4N型光柵尺,如圖2所示,其為一種典型的增量式光柵尺,該尺體長(zhǎng)度為400mm,柵距為0.02mm,參考標(biāo)記間隔為50mm,全量程任意位置設(shè)置一個(gè)絕對(duì)位置參考點(diǎn)(ABS),對(duì)于這種光柵尺常規(guī)的做法是將上電位置作為每次測(cè)量的相對(duì)零點(diǎn),每次測(cè)量的位移量均為相對(duì)的,而本課題則利用這種尺體中的參考標(biāo)記來(lái)作為尋零的一個(gè)基準(zhǔn),從而在增量式光柵尺之上實(shí)現(xiàn)絕對(duì)式光柵尺尋零測(cè)距的功能。
圖2 SGC4N型光柵尺
本課題采用光柵尺接口為傳統(tǒng)的DB9接口,使用了前五個(gè)接頭,分別為:VCC(5V)、GND、A、B、Z,后三路為光柵尺輸出的TTL方波信號(hào),高電平為5V,低電平為0V。其常規(guī)波形如圖3所示。
在讀數(shù)頭正向移動(dòng)的過(guò)程,A、B兩路輸出的波形中,A波形相位超前B波形90度,而在負(fù)向的移動(dòng)過(guò)程當(dāng)中B波形相位會(huì)超前A波形90度,而這也是本課題中辨向的基礎(chǔ),讀數(shù)頭每移動(dòng)0.02mm,A、B兩路會(huì)輸出一個(gè)周期的完整方波,作為測(cè)距的基礎(chǔ)。Z波形脈沖則對(duì)應(yīng)著光柵尺中的參考標(biāo)記點(diǎn),讀數(shù)頭每移動(dòng)到一個(gè)標(biāo)記點(diǎn),Z路會(huì)輸出一個(gè)脈沖,其脈寬為A波形周期的一半,常規(guī)的該脈沖用于矯正誤差,而本課題則將其作為尋零的基準(zhǔn)點(diǎn)。
圖3 光柵尺三路信號(hào)輸出波形圖
針對(duì)本課題的需求,設(shè)計(jì)了如圖4所示的一個(gè)系統(tǒng)來(lái)實(shí)現(xiàn)尋零、測(cè)距、辨向以及顯示等功能。
圖4 系統(tǒng)總體結(jié)構(gòu)框圖
表1 EP2C5Q208C8芯片資源圖
本課題采用的核心處理芯片為Altera公司的Cyclone II系列EP2C5Q208C8的FPGA芯片,其資源豐富,足以滿足需求,且價(jià)格適中,該芯片使用手冊(cè)中的資源表[6]如表1所示。
根據(jù)所需實(shí)現(xiàn)功能,系統(tǒng)硬件電路主要部分可以根據(jù)功能分為兩個(gè)大模塊,將信號(hào)預(yù)處理的部分作為一個(gè)模塊,即包括輸入信號(hào)處理,尋零以及細(xì)分辨向等主要功能,而將測(cè)距顯示控制集成為另一個(gè)大模塊,其RTL仿真圖,如圖5所示。
圖5 RTL仿真示意圖
光柵尺輸出信號(hào)為T(mén)TL電平,高電平5V、低電平為0V,這里需要做一下特殊的說(shuō)明,由于FPGA為3.3V TTL信號(hào),而光柵尺輸出為5V,需要做一個(gè)電平轉(zhuǎn)換,將5V TTL轉(zhuǎn)換為3.3V TTL電平,在實(shí)驗(yàn)中,利用了TLP521-N系列的光耦芯片,主要有TL521-1、TL521-2以及TL521-4等等,N代表了該芯片光耦通路的個(gè)數(shù),原理圖如圖6所示。
圖6 輸入信號(hào)處理電路原理圖
該電路中,D1為發(fā)光二極管,以便觀察輸入信號(hào)是否有誤,R1,R2,R3主要起一個(gè)限流的作用,可以根據(jù)實(shí)際需求來(lái)調(diào)整阻值的大小,需要特殊說(shuō)明的是,本電路輸出波形為原輸入電路的反相波形,因此在后續(xù)FPGA處理信號(hào)時(shí),需要在輸入的地方額外添加一個(gè)反相器,再進(jìn)行輸入信號(hào)消抖處理。
如圖7所示,在本課題采用的光柵尺中設(shè)有7個(gè)參考點(diǎn),與其相應(yīng)的每個(gè)參考點(diǎn)上在Z路波形中會(huì)有一個(gè)脈沖,其脈寬為尺頭移動(dòng)一個(gè)柵距的時(shí)間,即假設(shè)尺頭在某電機(jī)的作用下做勻速運(yùn)動(dòng)速度為v,則:
其中,τ就是脈沖的脈寬,d則是光柵尺所采用的莫爾條紋的柵距,也就是說(shuō),在人為移動(dòng)尺頭的情況下,如果在經(jīng)過(guò)該參考點(diǎn)位時(shí),尺頭沒(méi)有移動(dòng)一個(gè)完整的柵距,則Z信號(hào)會(huì)在高電平停留。因此在后續(xù)的處理當(dāng)中以處理上升沿為核心算法,以避免人為操作過(guò)程中的各種偶然因素。而對(duì)于邊沿的處理采用了Verilog中提取邊沿的經(jīng)典算法——布爾運(yùn)算[7],其運(yùn)算過(guò)程如表2所示。
圖7 相對(duì)式光柵尺參考零點(diǎn)示意圖
表2 布爾運(yùn)算真值表
上表中信號(hào)ZL2H運(yùn)算公式為:
由此可知,在上升沿出現(xiàn)的時(shí)鐘周期內(nèi),會(huì)輸出一個(gè)脈寬為一時(shí)鐘周期的脈沖,本課題中采用50MHz的晶振,故而其脈寬為20ns,部分代碼如下:
由于需要一個(gè)絕對(duì)位置的零點(diǎn),故而選擇圖7中4號(hào)參考點(diǎn)位作為絕對(duì)零點(diǎn),那么尺頭的起始位置無(wú)論是左邊還是右邊,只要查詢(xún)計(jì)數(shù)器的狀態(tài),當(dāng)存儲(chǔ)數(shù)據(jù)為3'd4時(shí)即認(rèn)為找到了該尺的絕對(duì)零點(diǎn),在產(chǎn)生相應(yīng)的提示后,開(kāi)始進(jìn)行測(cè)距操作。需要特殊說(shuō)明的是,在本課題中,恰好采用了奇數(shù)個(gè)數(shù)參考點(diǎn)的光柵尺。如果采用偶數(shù)個(gè)數(shù)參考點(diǎn)的光柵尺,比如說(shuō)采用了8個(gè)參考點(diǎn)的光柵尺,而光柵尺參考點(diǎn)之間的間隔是固定的,假設(shè)為D,那么在尋找到無(wú)論從左亦或者從右開(kāi)始移動(dòng)的第四個(gè)參考點(diǎn)以后,開(kāi)啟測(cè)距模式,當(dāng)距離寄存器存儲(chǔ)數(shù)據(jù)為時(shí),該點(diǎn)即為絕對(duì)零點(diǎn),之后做相應(yīng)的提示,并清零距離寄存器,再開(kāi)始進(jìn)行測(cè)距操作。而計(jì)數(shù)部分只要將上述程序中的isChangeZ_L作為計(jì)數(shù)使能信號(hào)即可進(jìn)行計(jì)數(shù),原理相同。
圖8 Z信號(hào)計(jì)數(shù)仿真圖
上圖為Modelsim的波形仿真圖,其中RSTn為復(fù)位信號(hào),CLK為時(shí)鐘信號(hào),Wav_Z為模擬輸入的Z信號(hào),ZL2H為Z信號(hào)計(jì)數(shù)使能信號(hào),Count_Z為Z信號(hào)上升沿的計(jì)數(shù)寄存器。由上圖中可以看出,Z信號(hào)的上升沿均被提取出來(lái),且計(jì)數(shù)器正常計(jì)數(shù),在計(jì)數(shù)器狀態(tài)為3'd4時(shí)以后停止計(jì)數(shù)并進(jìn)行相關(guān)操作。
首先來(lái)解釋一下什么叫做四細(xì)分:
圖9 四細(xì)分辨向計(jì)數(shù)示意圖
在圖9中,截取了兩個(gè)周期的波形,四細(xì)分的核心思想就是,在A、B信號(hào)的每個(gè)邊沿,都讓計(jì)數(shù)脈沖去觸發(fā)一個(gè)脈寬為一時(shí)鐘周期的脈沖,A、B信號(hào)對(duì)應(yīng)的周期為兩個(gè)完整柵距即一對(duì)黑白條紋的移動(dòng)時(shí)間,與讀數(shù)頭的移動(dòng)速度相關(guān),因此A、B信號(hào)一個(gè)周期的信號(hào),對(duì)應(yīng)著測(cè)距中的兩個(gè)柵距,那么這里假設(shè)使用的光柵尺柵距為d,在不細(xì)分的情況下,一周期對(duì)應(yīng)距離為2d,而在上圖中,兩個(gè)周期對(duì)應(yīng)距離則為4d,而上圖中讀數(shù)頭兩個(gè)周期的移動(dòng)距離,有八個(gè)計(jì)數(shù)脈沖,也就是說(shuō),每一單位計(jì)數(shù)對(duì)應(yīng)著距離為:
這里需要做一下說(shuō)明,計(jì)數(shù)脈沖脈寬并不像圖中這樣,該脈寬與Z信號(hào)計(jì)數(shù)脈沖脈寬一樣,均為一時(shí)鐘周期20ns。
接下來(lái)闡釋一下該模塊的辨向功能,如圖9中所示一樣,正、負(fù)向移動(dòng)A、B信號(hào)狀態(tài)的區(qū)別主要為相位超前或者滯后的問(wèn)題,當(dāng)讀數(shù)頭正向移動(dòng)時(shí),B信號(hào)相位滯后A信號(hào)相位90度,當(dāng)讀數(shù)頭負(fù)向移動(dòng)時(shí),B信號(hào)相位超前A信號(hào)相位90度,那么利用這個(gè)特性,在每個(gè)A的上升沿時(shí),檢測(cè)B的電平狀態(tài),當(dāng)讀數(shù)頭正向移動(dòng)時(shí),B為低電平;當(dāng)讀數(shù)頭負(fù)向移動(dòng)時(shí),B為高電平。
表3 正向移動(dòng)時(shí)A、B信號(hào)狀態(tài)
表4 負(fù)向移動(dòng)時(shí)A、B信號(hào)狀態(tài)
結(jié)合上面兩張表可以得出,只要在采集到A信號(hào)上升沿的同時(shí),判斷B的電平狀態(tài),就可以得出讀數(shù)頭的運(yùn)動(dòng)方向,即低電平對(duì)應(yīng)正向移動(dòng)狀態(tài),高電平對(duì)應(yīng)負(fù)向移動(dòng)狀態(tài),相關(guān)代碼如下:
上述代碼中Number_Lc信號(hào)表示運(yùn)動(dòng)方向,正向運(yùn)動(dòng)為低電平0,負(fù)向運(yùn)動(dòng)為高電平1。
圖10 辨向波形仿真圖
本次仿真,對(duì)A波形進(jìn)行了兩次延時(shí),從圖10中可以看出,辨向信號(hào)初始化為高電平1,在A波形的第一個(gè)上升沿時(shí)進(jìn)行了第一次的辨向信號(hào)狀態(tài)變更,此時(shí),辨向電平狀態(tài)變更為0,B波形的相位滯后于A波形從表3中可以看出,此時(shí)運(yùn)動(dòng)狀態(tài)為正向,在一個(gè)周期后,對(duì)A波形進(jìn)行了第一次延時(shí),之后進(jìn)行了第二次的辨向電平狀態(tài)變更,由圖10中可以看出,此時(shí)B波形的相位超前于A波形,故而此時(shí)運(yùn)動(dòng)狀態(tài)為負(fù)向,辨向電平狀態(tài)變更為1,之后兩個(gè)周期以后,對(duì)A波形進(jìn)行了第二次的延時(shí),同樣的可以看出,此時(shí)運(yùn)動(dòng)狀態(tài)變更為正向,辨向電平狀態(tài)變?yōu)?。
接下來(lái)介紹計(jì)數(shù)部分,由于要實(shí)現(xiàn)絕對(duì)式光柵尺的功能,因此可以將整個(gè)尺體看成一個(gè)數(shù)軸,因此除了運(yùn)動(dòng)方向,還要得出讀數(shù)頭的位移方向,但是由于Verilog中并沒(méi)有負(fù)數(shù)這個(gè)概念,只是在寄存器中,最高位可以作為符號(hào)位來(lái)看待,但是當(dāng)該寄存器的數(shù)據(jù)作為操作數(shù)時(shí),只是一個(gè)單純的操作數(shù),并沒(méi)有正負(fù)數(shù)的概念,那么數(shù)軸相對(duì)位移加減出現(xiàn)負(fù)數(shù)以后就會(huì)出現(xiàn)較大的問(wèn)題,因此,設(shè)置一個(gè)用于對(duì)比的數(shù)據(jù)寄存器,本次實(shí)驗(yàn)中初始化為50000,那么在當(dāng)該狀態(tài)寄存器的數(shù)值大于50000時(shí),位移方向?yàn)檎?,?dāng)該數(shù)值小于50000時(shí)位移方向?yàn)樨?fù)向,根據(jù)公式(3)可以知道一單位代表的距離是0.5d,那么位移距離即為:
式中,S1即為位移的大小,其中N代表對(duì)比數(shù)據(jù)寄存器的數(shù)值。
在實(shí)際的Verilog程序中,由于相關(guān)邏輯較為復(fù)雜,導(dǎo)致這個(gè)部分程序偏長(zhǎng),考慮到篇幅問(wèn)題不在這里例舉程序段,而在這里闡述一個(gè)在研究過(guò)程當(dāng)中較為典型的問(wèn)題,在實(shí)驗(yàn)當(dāng)中發(fā)現(xiàn)部分光柵尺輸入信號(hào)在跳變邊沿存在一定程度的抖動(dòng),而這個(gè)抖動(dòng)對(duì)于計(jì)數(shù)的影響非常大。因此,在程序設(shè)計(jì)當(dāng)中設(shè)置了一個(gè)1us的跳變保護(hù)模塊,基本的思想就是,在采集到一個(gè)跳變以后,會(huì)開(kāi)始一個(gè)1us的計(jì)時(shí)器,當(dāng)1us內(nèi)沒(méi)有出現(xiàn)電平跳變,才認(rèn)定此次跳變可以作為測(cè)距計(jì)數(shù)的使能,否則該電平跳變采集無(wú)效,等待下次跳變采集。
圖11 計(jì)數(shù)模塊仿真波形圖
簡(jiǎn)要介紹一下整個(gè)系統(tǒng)的操作流程與系統(tǒng)驗(yàn)證結(jié)果。
(1)系統(tǒng)上電,數(shù)碼管顯示五個(gè)8,用于檢測(cè)數(shù)碼管是否工作正常;
(2)讀數(shù)頭從最左端或者最右端開(kāi)始移動(dòng),分別移動(dòng)到第1、2、3個(gè)參考點(diǎn)是分別顯示五個(gè)相應(yīng)的數(shù)字,例如第一個(gè)點(diǎn)顯示五個(gè)1;
(3)當(dāng)讀數(shù)頭移動(dòng)到第四個(gè)參考點(diǎn)也就是本實(shí)驗(yàn)的絕對(duì)零點(diǎn)時(shí),先顯示5個(gè)4,保持1s以后顯示變?yōu)?個(gè)0,表示可以開(kāi)始進(jìn)行測(cè)距操作;
(4)移動(dòng)讀數(shù)頭進(jìn)行測(cè)距,5位數(shù)字分別表示厘米、毫米、百微米和十微米,最高位表示位移的方向,額外還有一個(gè)運(yùn)動(dòng)方向的指示燈正向運(yùn)動(dòng)時(shí)亮,負(fù)向運(yùn)動(dòng)時(shí)滅。
實(shí)驗(yàn)操作中的部分操作過(guò)程如圖12所示(其實(shí)際距離是利用50分格游標(biāo)卡尺,通過(guò)讀數(shù)頭上三角標(biāo)的位移前后距離得到)。
圖12 測(cè)試過(guò)程中數(shù)碼管顯示的各種狀態(tài)
從上面的圖d和圖e中可以看出,在絕對(duì)零點(diǎn)的兩側(cè),最高位分別顯示了0和1,正確表示了位移方向的正負(fù),且位移距離與實(shí)際位移距離基本相同(由于測(cè)試時(shí)使用了50分格的游標(biāo)卡尺,其精確度為0.02mm,測(cè)距系統(tǒng)最小精度為0.01mm,故而只存在±0.02mm的誤差)。
本課題利用FPGA的對(duì)波形處理能力優(yōu)越,并行處理架構(gòu)等特性,選用Cyclone II系列EP2C5 Q208C8為核心處理芯片,在增量式光柵編碼器之上實(shí)現(xiàn)絕對(duì)式尋零測(cè)距的功能,同時(shí)在此基礎(chǔ)上,成功通過(guò)四細(xì)分辨向的思想,將測(cè)距裝置測(cè)試精度提高了四倍,精度高,誤差小,達(dá)到設(shè)計(jì)初衷,并通過(guò)實(shí)際驗(yàn)證,結(jié)果顯示該系統(tǒng)可以將誤差控制在±0.02mm的數(shù)量級(jí)之內(nèi)。該系統(tǒng)在很多工程應(yīng)用中具有很強(qiáng)的現(xiàn)實(shí)意義,譬如,令測(cè)試頭由相關(guān)的伺服電機(jī)來(lái)控制,可以在樓宇或者交通工程中去進(jìn)行相關(guān)的測(cè)量工作,且具有較高的精確度。