系統(tǒng)軟件設(shè)計
1單片機(jī)軟件部分的設(shè)計
單片機(jī)的軟件部分主要完成光柵位移傳感器的數(shù)據(jù)采集、A/D轉(zhuǎn)換、計算光柵位移傳感器的正向、反向莫爾條紋的個數(shù)、為數(shù)字電路提供CP脈沖以及完成USB的通信等工作。
① A/D轉(zhuǎn)換部分的程序設(shè)計
PIC18F4550 器件的ADC模塊有13個輸入通道。該模塊能將任意一個模擬輸入信號轉(zhuǎn)換成相應(yīng)的10位數(shù)字信號。本檢測系統(tǒng)需要把COS和SIN兩路正弦模擬信號轉(zhuǎn)換成 數(shù)字信號,同時把一路零位脈沖信號送入單片機(jī)寄存器中。因此在設(shè)計A/D轉(zhuǎn)換部分程序時,把RA0、RA3分別設(shè)為SIN和COS兩路模擬信號的輸入,把 RA5設(shè)為零位信號的數(shù)字輸入,其他模擬信號口都分別設(shè)為數(shù)字量輸出口,以便最大限度的減少單片機(jī)的外圍電路對該系統(tǒng)信號采集的影響,提高整個系統(tǒng)的抗干 擾能力和精度。
② 定時器/計數(shù)器部分的程序設(shè)計
本檢測系統(tǒng)的單片機(jī)需要把光柵位移傳感器正向移動的光柵線數(shù)和反向移動的光柵線數(shù)計算出來,然后通過USB接口送到上位機(jī),作為光柵位移長 度的計大數(shù)部分。光柵位移傳感器輸出的正弦信號經(jīng)過信號調(diào)理電路后,可以把它移動的光柵線數(shù)轉(zhuǎn)換成數(shù)字脈沖,從而可以通過計算脈沖的個數(shù)來達(dá)到計算光柵線 數(shù)的目的。因此我們可以選擇Timer0和Timer1作為計數(shù)器使用,從而計算出光柵位移傳感器正反向移動的光柵線數(shù)。
③ 比較/ 捕捉/PWM (CCP)模塊的設(shè)計
PIC18F4550具備一個16位數(shù)據(jù)和分辨率的捕捉(Capture)/比較(Compare)/PWM(Pulse Width Modulation)模塊CCP2和一個增強(qiáng)型捕捉/比較/PWM模塊CCP1。其中,增強(qiáng)型CCP1具有死區(qū)控制和故障保護(hù)輸入功能。每個CCP模塊 有一個16位寄存器,它可以用作16位捕捉寄存器、16位比較寄存器或PWM主/從占空比寄存器。因為本設(shè)計只需要一路PWM輸出,所以我們只需要使用一 個CCP2就能滿足設(shè)計要求。根據(jù)系統(tǒng)設(shè)計要求,我們使用單片機(jī)的Timer2配合單片機(jī)的CCP使用,使CCP模塊輸出4M的方波。
④ USB模塊的設(shè)計
對于單片機(jī)控制程序,目前沒有任何廠商提供自動生成固件(firmware)的工具,因此所有程序都要由自己手工編制。本系統(tǒng)的設(shè)計就是在Microchip提供的DEMO程序的基礎(chǔ)上,進(jìn)行必要的修改而完成的。
2 PC軟件部分的設(shè)計
PC的軟件部分主要用于完成上位機(jī)同下位機(jī)之間的USB通信,光柵位移傳感器位移信號的細(xì)分和顯示等功能。為了下一步的軟件開發(fā)以及與廠家的其它軟件接口,應(yīng)廠家的要求,本系統(tǒng)上位機(jī)的軟件部分采用VC++6.0來實現(xiàn)。
該設(shè)備驅(qū)動程序采用了Microchip的通用USB設(shè)備驅(qū)動程序,而接口通信程序采用了Microchip的BAPI.DLL動態(tài)鏈接庫。
計算機(jī)對最后一個正弦信號進(jìn)行細(xì)分,細(xì)分點通過計算相位程序結(jié)合正、余弦信號象限判別來獲得。為了提高精度,我們把正、余弦信號分為8個象 限,然后求出細(xì)分點的比值,然后通過求細(xì)分點反正切函數(shù)求出光柵尺的相位,再根據(jù)光柵尺相位的弧度值計算出光柵尺細(xì)分點的位移值,最后把光柵尺細(xì)分點的位 移值加上光柵尺移動的完整光柵線數(shù),從而得到光柵尺的位移值。
因為光柵尺柵線的柵距不同,為了設(shè)計的通用性,我們在編程時對三種常用的柵距(100線/mm、50線/mm、25線/mm)都分別作了處理。若使用光柵尺柵線為100線/mm,即光柵柵距為 0.01mm,對正弦信號進(jìn)行100細(xì)分,可得測距分辨率為0.1μm。
在本課題設(shè)計時,我選用MFC基于對話框的設(shè)計,數(shù)據(jù)的顯示等全用Windows的公用控件完成。