湯 攀,張厚武,何 勇
(貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽(yáng) 550025)
光柵位移傳感器是精密的光柵測(cè)量系統(tǒng),適用于大量程的精密測(cè)量,并在醫(yī)療設(shè)備、儀器制造、機(jī)械生產(chǎn)、武器研制等方面起著重要作用[1]。隨著精密加工技術(shù)與超精密加工技術(shù)的發(fā)展,對(duì)測(cè)量精度的要求越來(lái)越高,而常用的50線/毫米經(jīng)濟(jì)型的光柵傳感器,它的精度為20 μm,難以達(dá)到精密測(cè)量的要求。因此需要對(duì)光柵傳感器輸出的信號(hào)進(jìn)行細(xì)分來(lái)提高測(cè)量的精度。
朱維娜等[2]提出了一種基于DSP的光柵細(xì)分技術(shù),以DSP為主芯片,實(shí)現(xiàn)對(duì)25線光柵尺不低于10倍細(xì)分計(jì)數(shù);胡曉東等[3]提出運(yùn)用FPGA為主芯片,既提高了解位移算法的正確性,也提高了運(yùn)算速度;李懷瓊等[4]提出了一種采用數(shù)字信號(hào)處理與軟件計(jì)算的細(xì)分方法,實(shí)現(xiàn)莫爾條紋八細(xì)分;王冠雅等[5]提出對(duì)采集到的信號(hào)進(jìn)行分析時(shí),使用軟件細(xì)分的方法,實(shí)現(xiàn)了光柵信號(hào)的80倍細(xì)分。但是以上的細(xì)分方法都是基于硬件實(shí)現(xiàn)的,實(shí)現(xiàn)起來(lái)復(fù)雜,并且很難對(duì)其進(jìn)行擴(kuò)展。
目前主流的細(xì)分技術(shù)主要有:四細(xì)分、電阻鏈移相細(xì)分、鎖相倍頻細(xì)分、幅值分割細(xì)分、神經(jīng)網(wǎng)絡(luò)細(xì)分[6-7]。將以上五種細(xì)分方法從細(xì)分倍數(shù)、優(yōu)點(diǎn)、缺點(diǎn)以及應(yīng)用方面進(jìn)行分析對(duì)比,選擇出適合的細(xì)分方法。對(duì)比分析如表1所示。
表1 光柵信號(hào)細(xì)分方法的對(duì)比分析
光柵傳感器輸出的四路相位相差90°的正弦信號(hào)送至差動(dòng)放大電路,既可以消除偶次諧波的影響,也能消除直流電平帶來(lái)的誤差,然后得到兩路相位相差90°的正弦信號(hào),再送至整形電路將原始光柵信號(hào)轉(zhuǎn)換成方波信號(hào),將方波信號(hào)送入FPGA進(jìn)行四細(xì)分、辨向和可逆計(jì)數(shù),完成大數(shù)計(jì)數(shù)的功能,單片機(jī)讀取FPGA計(jì)數(shù)器的值,并運(yùn)用串口COM6傳給后臺(tái);與此同時(shí),送至AD模塊進(jìn)行AD采樣,然后傳給串口COM7,后臺(tái)直接讀取串口COM7的AD值,送入神經(jīng)網(wǎng)絡(luò)細(xì)分程序完成小數(shù)細(xì)分。最后結(jié)合大數(shù)值和小數(shù)值計(jì)算出總位移量。
選用50線/mm的經(jīng)濟(jì)型光柵尺,光柵尺移動(dòng)一條刻線相當(dāng)于光柵信號(hào)移動(dòng)一個(gè)周期(一個(gè)周期的正弦信號(hào)),即移動(dòng)了20 μm。通過FPGA將整形后得到與光柵信號(hào)周期一致的方波信號(hào)進(jìn)行計(jì)數(shù),即可求得所測(cè)的大數(shù)值,實(shí)現(xiàn)硬件四細(xì)分。設(shè)不足1/4個(gè)周期的位移值表示為d,則具體位移可表示為:
(1)
其中,k為大數(shù)計(jì)數(shù)值;s為不足1/4周期的微位移值;w為光柵的柵距。
為了獲得精位移值s,需對(duì)不足1/4個(gè)周期的小數(shù)部分進(jìn)行高倍細(xì)分。只能運(yùn)用光柵輸出的正余弦信號(hào)才能進(jìn)行高倍細(xì)分。由于光柵傳感器輸出的正余弦信號(hào)幅值較小,若直接運(yùn)用細(xì)分效果不佳,故需先對(duì)光柵輸出的四路相位相差900的正弦信號(hào)進(jìn)行放大處理,得到近似正弦和余弦信號(hào):
(2)
(3)
從公式中可以看出,電信號(hào)和光柵位移存在一定的函數(shù)關(guān)系,即光柵傳感器移動(dòng)的位移x可通過測(cè)量的電壓U值計(jì)算得出。精細(xì)分就是運(yùn)用光柵信號(hào)的電壓幅值與位移值之間的數(shù)學(xué)關(guān)系,通過對(duì)信號(hào)進(jìn)行A/D采樣轉(zhuǎn)換,再運(yùn)用查表或者數(shù)學(xué)關(guān)系式計(jì)算出微位移[8]。文中的精細(xì)分是運(yùn)用神經(jīng)網(wǎng)絡(luò)算法實(shí)現(xiàn)的。由于正、余弦信號(hào)線性度不好,特別是在峰值附近時(shí),只有光柵尺的位移變化量較大才能產(chǎn)生一個(gè)微小的電壓變化,如果直接將采集的正余弦信號(hào)作為網(wǎng)絡(luò)輸入,則從細(xì)分原理上會(huì)帶來(lái)很大誤差。設(shè)計(jì)用式4作為輸入量:
(4)
根據(jù)以上分段函數(shù)圖像的對(duì)稱性,|Asinθ|-|Acosθ|>0時(shí)的微位移值仍可用(0,π/4]訓(xùn)練的模型得出,故只需對(duì)(0,π/4]區(qū)間內(nèi)的樣本進(jìn)行訓(xùn)練,得到網(wǎng)絡(luò)模型。具體關(guān)系如表2所示,其中x表示神經(jīng)網(wǎng)絡(luò)的直接輸出量。
表2 Asinθ|-|Acosθ|、網(wǎng)絡(luò)輸入、輸出量的關(guān)系
郭雨梅等[9]提出只有一個(gè)隱層的三層神經(jīng)網(wǎng)絡(luò),只要隱節(jié)點(diǎn)足夠多,就可以以任意精度逼近一個(gè)非線性函數(shù)。故文中選取三層BP神經(jīng)網(wǎng)絡(luò)對(duì)光柵信號(hào)進(jìn)行精細(xì)分。當(dāng)然隱層節(jié)點(diǎn)數(shù)并不是越多越好,根據(jù)實(shí)驗(yàn)誤差最小,選取最合適的隱層節(jié)點(diǎn)數(shù)。
為了消除幅值不穩(wěn)定性帶來(lái)的影響,選取[P,S]作為訓(xùn)練樣本的輸入,P為上一節(jié)介紹的分段函數(shù)。實(shí)際的樣本數(shù)據(jù)由精度較高的光柵位移系統(tǒng)測(cè)出。光柵傳感器輸出的兩路互補(bǔ)正弦信號(hào)經(jīng)A/D轉(zhuǎn)換后,判斷|Asinθ|-|Acosθ|的正負(fù),確定網(wǎng)絡(luò)的輸入量,再送入神經(jīng)網(wǎng)絡(luò)子程序,經(jīng)過神經(jīng)網(wǎng)絡(luò)程序,得出對(duì)應(yīng)1/4周期內(nèi)的微位移量。每1/4周期對(duì)應(yīng)的區(qū)間依次為(0°,90°)、(90°,180°)、(180°,270°)、(270°,360°),根據(jù)分段函數(shù)P的對(duì)稱性,可將(0°,90°)、(90°,180°)、(180°,270°)、(270°,360°)四個(gè)區(qū)間通過區(qū)間(0°,45°)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行計(jì)算。根據(jù)系統(tǒng)要求,可確定采用一個(gè)輸入一個(gè)輸出的神經(jīng)網(wǎng)絡(luò)模型。第1層為輸入層;第2層為隱含層,傳遞函數(shù)選取S型“tansig”;第3層為輸出層,傳遞函數(shù)選取“purelin”[10-12]。BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程復(fù)雜,耗時(shí)時(shí)間長(zhǎng),故文中設(shè)計(jì)將樣本數(shù)據(jù)在MATLAB中運(yùn)用neff函數(shù)創(chuàng)建一個(gè)名為net的BP神經(jīng)網(wǎng)絡(luò)模型,并運(yùn)用train函數(shù)進(jìn)行訓(xùn)練,得出各層的權(quán)值和閾值。將這些權(quán)值和閾值作為初始值存入寄存器,然后再編寫神經(jīng)網(wǎng)絡(luò)細(xì)分子程序進(jìn)行運(yùn)算,得出最終細(xì)分結(jié)果。在編寫神經(jīng)網(wǎng)絡(luò)子程序時(shí)需要用到以下公式:
(5)
(6)
y=f(s2)
(7)
其中,LW1j、bj、IWj1、oj分別為輸入層到中間層的權(quán)值、中間層各神經(jīng)元閾值、中間層到輸出層的權(quán)值、輸出層各神經(jīng)元閾值。
隱含層的傳遞函數(shù)為S型激活函數(shù),輸出層的傳遞函數(shù)為線性函數(shù),故得到式8:
(8)
BP神經(jīng)網(wǎng)絡(luò)的隱含層節(jié)點(diǎn)數(shù),根據(jù)經(jīng)驗(yàn)可以參照以下公式進(jìn)行設(shè)計(jì)。
(9)
其中,h為隱含層節(jié)點(diǎn)數(shù);a為輸入節(jié)點(diǎn)數(shù);b為輸出節(jié)點(diǎn)數(shù);c為1~10之間的調(diào)節(jié)常數(shù)。由此可知隱含層節(jié)點(diǎn)數(shù)范圍為[2,12]。
不同節(jié)點(diǎn)數(shù)的網(wǎng)絡(luò)訓(xùn)練誤差如表3所示。
表3 不同節(jié)點(diǎn)數(shù)的網(wǎng)絡(luò)訓(xùn)練誤差
從表3可以看出,隱含層節(jié)點(diǎn)數(shù)越多,網(wǎng)絡(luò)性能并非越好。當(dāng)隱含層節(jié)點(diǎn)數(shù)從9增加到12時(shí),誤差反而增大。而隱含層節(jié)點(diǎn)數(shù)為3時(shí)誤差最小。故選用一個(gè)隱層節(jié)點(diǎn)數(shù)為3的三層網(wǎng)絡(luò)模型。
由于BP神經(jīng)網(wǎng)絡(luò)算法本身的原因,學(xué)習(xí)過程可能收斂于局部極小點(diǎn)。而遺傳算法是一種自適應(yīng)全局優(yōu)化概率搜索算法[13-16]。該算法從很多點(diǎn)開始并行工作,不是局限于一點(diǎn),故能有效防止搜索過程收斂于局部最優(yōu)解。前面介紹了網(wǎng)絡(luò)結(jié)構(gòu)最優(yōu)的設(shè)計(jì),在此基礎(chǔ)上,再運(yùn)用遺傳算法的全局搜索能力,搜索到最優(yōu)的網(wǎng)絡(luò)權(quán)值和閾值。遺傳算法主要包括染色體編碼與解碼,個(gè)體適應(yīng)度的檢測(cè)評(píng)估,選擇,交叉,變異等。遺傳算法可描述為:
(1)確定種群的大小N為40,交叉概率設(shè)為0.7,變異概率設(shè)為0.01;根據(jù)網(wǎng)絡(luò)結(jié)構(gòu),產(chǎn)生N個(gè)(LW,IW),通過二進(jìn)制編碼,將(LW,IW)中每一個(gè)權(quán)值轉(zhuǎn)換成二進(jìn)制編碼,然后組合構(gòu)成一個(gè)完整的染色體。產(chǎn)生N個(gè)權(quán)值的取值范圍為[-20,20],閾值的取值范圍為[-10,10]的染色體,將得到由N個(gè)染色體構(gòu)成的初始群體C。
(2)計(jì)算出每個(gè)個(gè)體的適應(yīng)度f(wàn)i,再按賭輪盤法進(jìn)行優(yōu)質(zhì)個(gè)體的選擇,產(chǎn)生新種群。
(3)根據(jù)算術(shù)交叉方式以及確定的交叉概率,把部分基因進(jìn)行交換,形成新個(gè)體。
(4)通過基因中的某一位變異,可以防止種群陷入超平面,根據(jù)設(shè)置的變異概率進(jìn)行變異操作。
(5)重復(fù)步驟2~4,直到誤差對(duì)連續(xù)幾代種群趨于穩(wěn)定或不超過某一閾值,則進(jìn)化計(jì)算結(jié)束。經(jīng)過上述方法優(yōu)化,獲得一個(gè)接近最優(yōu)的權(quán)值和閾值,再運(yùn)用BP算法再次尋優(yōu),采用梯度下降法,得到網(wǎng)絡(luò)最優(yōu)解。
該系統(tǒng)硬件主要包括差分放大電路、整形電路、粗細(xì)分模塊和AD模塊。FPGA主要實(shí)現(xiàn)四細(xì)分、辨向、計(jì)數(shù)以及神經(jīng)網(wǎng)絡(luò)子程序、綜合數(shù)據(jù)處理等功能。
文中選用ALTERA公司的Cyclone IV系列芯片,型號(hào)為EP4CE6F17C8,是256腳的FBGA封裝。這款FPGA可以利用其擴(kuò)展口直接連接到ADDA模塊、攝像頭、4.3寸液晶屏、音頻模塊等等,使用起來(lái)極其方便。
光柵每移動(dòng)一個(gè)柵距輸出一個(gè)正弦波。粗細(xì)分就是將這一個(gè)正弦波分為4段,即四細(xì)分。四細(xì)分主要是通過辨向與計(jì)數(shù)的原理來(lái)實(shí)現(xiàn)的。光柵尺輸出的信號(hào),經(jīng)過前端模擬電路的處理,將得到兩路互補(bǔ)的方波信號(hào)進(jìn)行計(jì)數(shù),這兩路方波信號(hào)分別經(jīng)過兩個(gè)D觸發(fā)器,第一個(gè)觸發(fā)器D與第二個(gè)觸發(fā)器D延時(shí)一個(gè)時(shí)鐘周期。電平狀態(tài)按照0010-1011-1101-0100順序循環(huán)變化時(shí),進(jìn)行加計(jì)數(shù)操作,即光柵尺正向運(yùn)動(dòng);電平狀態(tài)按照0001-0111-1110-1000順序循環(huán)變化時(shí),進(jìn)行減計(jì)數(shù)操作,即光柵尺反向運(yùn)動(dòng)。
光柵輸出的正弦信號(hào)有漂移值,而漂移值會(huì)影響精度的提高,故文中設(shè)計(jì)用兩個(gè)四運(yùn)放LM324N對(duì)光柵信號(hào)進(jìn)行處理。
光柵輸出信號(hào)經(jīng)過預(yù)處理電路處理(由于篇幅有限,不再詳細(xì)介紹),得到兩路互補(bǔ)正弦信號(hào)U1和U2。AD模塊部分采用了兩片ADI公司的AD9226將模擬信號(hào)轉(zhuǎn)換成12 bit的數(shù)字信號(hào),文中運(yùn)用兩片AD芯片能同時(shí)對(duì)以上兩路信號(hào)進(jìn)行處理,減小了AD轉(zhuǎn)換需等待的誤差。經(jīng)過預(yù)處理電路后的信號(hào)電壓變化在-5~5 V之間,而AD9226芯片其電壓輸入范圍為1.0~3.0 V,故文中運(yùn)用衰減電路來(lái)實(shí)現(xiàn)上述要求,轉(zhuǎn)換公式為:Vout=1/5Vin+2。AD922的數(shù)據(jù)轉(zhuǎn)換速率最高為65 MHz,光柵尺的截止頻率f=v/w,文中選用的光柵尺速度v不超過120 m/min,柵距為0.02 mm。假設(shè)信號(hào)周期為100 kHz,根據(jù)采樣定理,采樣頻率至少大于200 kHz,實(shí)驗(yàn)中采樣頻率設(shè)置為50 MHz,滿足設(shè)計(jì)要求。經(jīng)過AD轉(zhuǎn)換后得到數(shù)字信號(hào),以給FPGA處理。AD采樣模塊程序運(yùn)用Verilog HDL語(yǔ)言實(shí)現(xiàn)。
將光柵尺最終測(cè)得的位移值通過串口通信發(fā)送給PC端。硬件設(shè)計(jì)采用Silicon Labs CP2102GM芯片作為USB和UART電平轉(zhuǎn)換的橋梁,USB接口采用Micro USB接口。引腳RXD接FPGA的M2腳,引腳TXD接FPGA的N1腳,引腳RXD是從PC發(fā)送給FPGA的串行數(shù)據(jù),引腳TXD是從FPGA發(fā)送給PC的串行數(shù)據(jù)。通訊主要采取串行數(shù)據(jù)傳輸方式,消息幀主要由起始位、數(shù)據(jù)位、校驗(yàn)位等組成。串口發(fā)送程序包含3個(gè)程序:時(shí)鐘產(chǎn)生程序clkdiv.v、串口發(fā)送程序uarttx.v和串口發(fā)送測(cè)試程序。這三個(gè)程序都是用Verilog HDL語(yǔ)言建模實(shí)現(xiàn)的。
細(xì)分系統(tǒng)的硬件設(shè)計(jì)完成后,還需對(duì)其進(jìn)行軟件設(shè)計(jì)。在Quartus II開發(fā)環(huán)境下,運(yùn)用Verilog HDL語(yǔ)言編程。光柵信號(hào)經(jīng)過一系列的硬件電路處理后,由FPGA完成四細(xì)分并對(duì)AD模塊進(jìn)行采樣,通過兩個(gè)串口分別將計(jì)數(shù)器的值和采集的值傳給上位機(jī),然后由上位機(jī)讀取串口的數(shù)據(jù),判斷細(xì)分方法的選擇,最后得出相應(yīng)細(xì)分方法測(cè)得的位移值。FPGA和上位機(jī)的軟件流程分別如圖1和圖2所示。
圖1 FPGA軟件程序流程
圖2 上位機(jī)軟件程序流程
根據(jù)上述細(xì)分方案,編寫上位機(jī)測(cè)控軟件,采集非樣本點(diǎn)的數(shù)據(jù)進(jìn)行位移理論計(jì)算,實(shí)驗(yàn)數(shù)據(jù)如表4所示。從表中可以看出,實(shí)際位移值和理論值的絕對(duì)誤差遠(yuǎn)小于10-2數(shù)量級(jí)范圍,滿足系統(tǒng)要求。改進(jìn)后的神經(jīng)網(wǎng)絡(luò)細(xì)分算法測(cè)量值的絕對(duì)誤差比未改進(jìn)的測(cè)量值的絕對(duì)誤差小,說明改進(jìn)算法提高了光柵測(cè)量的精度,驗(yàn)證了文中細(xì)分算法的可行性,提高了系統(tǒng)的穩(wěn)定性和細(xì)分倍數(shù)。
表4 理論值與實(shí)際值對(duì)比
μm
文中詳細(xì)論述了如何運(yùn)用軟硬件相結(jié)合的細(xì)分方法(硬件細(xì)分采用四細(xì)分,軟件細(xì)分采用BP神經(jīng)網(wǎng)絡(luò)細(xì)分)來(lái)提高光柵的細(xì)分倍數(shù),并對(duì)神經(jīng)網(wǎng)絡(luò)算法進(jìn)行了改進(jìn)。通過采集非樣本點(diǎn)數(shù)據(jù)進(jìn)行測(cè)試,驗(yàn)證了該細(xì)分方法的可行性,并可簡(jiǎn)化硬件結(jié)構(gòu),提高系統(tǒng)的可靠性和抗干擾能力,具有一定的實(shí)用價(jià)值。該神經(jīng)網(wǎng)絡(luò)軟件細(xì)分技術(shù)具有一定的創(chuàng)新性,同時(shí)也對(duì)硬件實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)細(xì)分算法較復(fù)雜的問題提供了新的解決途徑,但目前只是初步完成了提高細(xì)分倍數(shù)的目的,還未對(duì)光柵測(cè)量系統(tǒng)進(jìn)行優(yōu)化。未來(lái)的研究重點(diǎn)是對(duì)其誤差進(jìn)行自動(dòng)補(bǔ)償。
參考文獻(xiàn):
[1] 李金艷.基于幅值采樣技術(shù)的光柵信號(hào)細(xì)分的研究[D].哈爾濱:哈爾濱理工大學(xué),2013.
[2] 朱維娜.基于DSP2812的光柵細(xì)分技術(shù)研究[D].成都:西南交通大學(xué),2012.
[3] 胡曉東.基于FPGA與單片機(jī)的高精度電子經(jīng)緯儀光電信號(hào)處理系統(tǒng)研制[D].南京:南京理工大學(xué),2004.
[4] 李懷瓊,陳 錢,王 鈺.新型光柵信號(hào)數(shù)字細(xì)分技術(shù)及其誤差分析[J].計(jì)量學(xué)報(bào),2001,22(4):281-283.
[5] 張金杰.鑒相法光柵位移測(cè)量系統(tǒng)的研究[D].沈陽(yáng):沈陽(yáng)工業(yè)大學(xué),2008.
[6] 于 耕,馬曉梅,郭華鵬.圓光柵測(cè)角系統(tǒng)信號(hào)細(xì)分電路設(shè)計(jì)[J].電子設(shè)計(jì)工程,2012,20(15):99-102.
[7] 金建新.輸出正交正弦波的光柵尺在位移測(cè)量中的脈沖細(xì)分原理[J].自動(dòng)化儀表,2002,23(1):17-19.
[8] SANCHEZ-BREA L M,MORLANES T.Metrological errors in optical encoders[J].Measurement Science and Technology,2008,19(11):115104.
[9] 郭雨梅,關(guān) 蕊,鐘 媛.基于徑向基神經(jīng)網(wǎng)絡(luò)的光柵細(xì)分方法[J].沈陽(yáng)工業(yè)大學(xué)學(xué)報(bào),2011,33(2):193-197.
[10] 丁 旭,李彬華,楊曉晗.一種基于FPGA的光柵信號(hào)細(xì)分方法[J].傳感技術(shù)學(xué)報(bào),2016,29(6):846-853.
[11] HU Haijiang, ZHANG Fengdeng. Advanced bidirectional subdivision algorithm for orthogonal fringes in precision optical measurement instruments[J].International Journal for Light and Electron Optics,2012,123(15):1322-1325.
[12] 關(guān) 蕊.基于神經(jīng)網(wǎng)絡(luò)的莫爾條紋信號(hào)細(xì)分方法與應(yīng)用[D].沈陽(yáng):沈陽(yáng)工業(yè)大學(xué),2010.
[13] 雷英杰,張善文,李續(xù)武,等.遺傳算法工具箱及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2005.
[14] SUN Q,CHE W G,WANG H L.Bayesian regularization BP neural network model for the stock price prediction[M]//Foundations and applications of intelligent systems.Berlin:Springer,2014:521-531.
[15] GURESEN E,KAYAKUTLU G,DAIM T U.Using artificial neural network models in stock market index prediction[J].Expert Systems with Applications,2011,38(8):10389-10397.
[16] ROVITHAKIS G A,CHALKIADAKIS I,ZERVAKIS M E.High-order neural network structure selection for function approximation applications using genetic algorithms[J].IEEE Transactions on Systems,Man and Cybernetics,2004,34(1):150-158.