梁應(yīng)選,王 楠,張昌明
(1.陜西理工大學(xué) 機(jī)械工程學(xué)院,陜西 漢中 723001; 2.陜西省工業(yè)自動(dòng)化重點(diǎn)實(shí)驗(yàn)室,陜西 漢中 723001)
位移是機(jī)械設(shè)備中一個(gè)非常重要的參數(shù),位移的測(cè)量方法很多,其中光柵由于測(cè)量精度高,操作簡(jiǎn)單,被廣泛應(yīng)用在機(jī)械加工、控制等領(lǐng)域中。將光柵位移傳感器與微電子技術(shù)相結(jié)合進(jìn)行線性位移量的測(cè)量以實(shí)現(xiàn)較高的測(cè)量精度。該文采用光柵作為感知元件,經(jīng)轉(zhuǎn)換器件后變?yōu)橹芷谛宰兓碾娦盘?hào),采用軟件編程的方法對(duì)信號(hào)進(jìn)行細(xì)分與辨向,并利用從單片機(jī)下位機(jī)對(duì)其輸出脈沖進(jìn)行計(jì)數(shù)及相關(guān)數(shù)據(jù)處理,進(jìn)一步將采集數(shù)據(jù)通過并口傳至主單片機(jī),顯示采集結(jié)果 ,同時(shí)通過主單片機(jī)串口將采集數(shù)據(jù)傳至PC機(jī),實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)、顯示等功能,滿足了數(shù)據(jù)采集高速、高精度的要求。
課題組承擔(dān)的項(xiàng)目當(dāng)中,需要對(duì)工作臺(tái)移動(dòng)的微小位移進(jìn)行精確控制,故準(zhǔn)確的測(cè)出工作臺(tái)移動(dòng)距離是精確控制的前提條件。因此,在實(shí)驗(yàn)室現(xiàn)有的條件基礎(chǔ)上,開發(fā)了基于光柵位移傳感器的單片機(jī)位移測(cè)量系統(tǒng)。
在測(cè)試技術(shù)中,傳感器是實(shí)現(xiàn)自動(dòng)檢測(cè)和自動(dòng)控制的首要環(huán)節(jié),它擔(dān)負(fù)著感受和傳輸信號(hào)的重要任務(wù)。傳感器的類型是多種多樣的,其優(yōu)缺、點(diǎn)各不相同[1]。該系統(tǒng)選用實(shí)驗(yàn)室現(xiàn)有的光柵位移傳感器(50 mm/線)及其信號(hào)調(diào)理模塊,由單片機(jī)從機(jī)對(duì)其柵距進(jìn)行軟件細(xì)分,以獲得更高的分辨率要求(0.005 mm);出于對(duì)系統(tǒng)采集數(shù)據(jù)的速度的考慮,系統(tǒng)采用兩個(gè)單片機(jī),一個(gè)單片機(jī)(從機(jī))用來(lái)采集信號(hào),另一個(gè)單片機(jī)(主機(jī))用來(lái)處理信號(hào),目的在于避免數(shù)據(jù)顯示、數(shù)據(jù)處理等其他任務(wù)對(duì)采樣速度的影響,也可以減小數(shù)據(jù)的丟失,提高了系統(tǒng)的實(shí)時(shí)性;為了對(duì)采集數(shù)據(jù)進(jìn)行存儲(chǔ)、圖形顯示和進(jìn)一步處理,采用VB進(jìn)行上位機(jī)軟件編程,通過下位機(jī)(主機(jī))串口讀取采集數(shù)據(jù)。
測(cè)量系統(tǒng)硬件框圖如圖1所示。主要由單片機(jī)主機(jī)、單片機(jī)從機(jī)、信號(hào)源及處理電路、LCD顯示、報(bào)警系統(tǒng)、上位機(jī)(PC)等部分組成[2-3]。
圖1 測(cè)量系統(tǒng)框圖
光柵尺將位置信號(hào)先轉(zhuǎn)化成電壓信號(hào)輸出,經(jīng)過調(diào)理電路濾波和整流后,處理成標(biāo)準(zhǔn)的方波信號(hào)。為了節(jié)約成本本次選用實(shí)驗(yàn)室現(xiàn)有的光柵傳感器(50線/mm)及調(diào)理電路模塊[4]。
單片機(jī)從機(jī)主要對(duì)來(lái)自光柵傳感器外部的方波信號(hào)通過軟件編程進(jìn)行細(xì)分與辨向,然后再對(duì)細(xì)分后的脈沖進(jìn)行計(jì)數(shù),并通過并行口傳輸計(jì)數(shù)結(jié)果送至單片機(jī)主機(jī)上,即主要完成完成數(shù)據(jù)采集、細(xì)分辨向及采集數(shù)據(jù)并行傳輸功能。
單片機(jī)主機(jī)主要功能包括:通過并口接收單片機(jī)從機(jī)采集數(shù)據(jù),并對(duì)信號(hào)進(jìn)一步的處理從而使位移量可以實(shí)時(shí)的顯示在LCD顯示屏上;通過串口將位移量量發(fā)送給上位機(jī);通過功能按鍵、指示燈、報(bào)警系統(tǒng)程對(duì)測(cè)量進(jìn)行實(shí)時(shí)監(jiān)測(cè)與反饋。
2.3.1 主從單片機(jī)并行通信模塊
主、從單片機(jī)并行通信模塊如圖2所示。
圖2 并行通信
其數(shù)據(jù)傳送方法,從機(jī)為數(shù)據(jù)發(fā)送方,主機(jī)為數(shù)據(jù)接收方。8位端口可以使P0、P1、P2、P3中的任意一個(gè)。數(shù)據(jù)傳輸?shù)倪^程是:從機(jī)(發(fā)送方)將數(shù)據(jù)送到端口后,通過STB信號(hào)中斷主機(jī)(接收方)。主機(jī)進(jìn)入中斷并從端口讀取數(shù)據(jù),讀完后,利用BUSY信號(hào)進(jìn)行應(yīng)答。從機(jī)檢查到端口線CHK上的應(yīng)答后,就可以發(fā)送下一個(gè)數(shù)據(jù)了。
2.3.2 報(bào)警模塊
主單片機(jī)的P3口的P3.4,P3.5分別控制2個(gè)發(fā)光二極管,用以顯示當(dāng)前物體的位移狀態(tài),當(dāng)物體正向運(yùn)動(dòng)時(shí),紅燈亮;當(dāng)物體負(fù)向運(yùn)動(dòng)時(shí),綠燈亮。主單片機(jī)的P3.7口控制蜂鳴器,當(dāng)位移達(dá)到最大值是,系統(tǒng)就會(huì)自動(dòng)報(bào)警。
2.3.3 按鍵模塊
為了準(zhǔn)確讀處測(cè)量數(shù)據(jù),當(dāng)一個(gè)鍵按下時(shí),關(guān)閉中斷、停止運(yùn)算,LCD 上顯示測(cè)量數(shù)據(jù)保持不變;當(dāng)另一個(gè)按鍵按下時(shí),中斷恢復(fù),繼續(xù)計(jì)算,重新顯示測(cè)量實(shí)時(shí)值。
2.3.4 LCD顯示模塊
主要用于顯示下位機(jī)測(cè)量的結(jié)果。
軟件編程是此次設(shè)計(jì)的重點(diǎn)[5-6],現(xiàn)就編程過程介紹如下。
根據(jù)所選傳感器參數(shù)50線/mm,知其柵距為0.02 mm,為了達(dá)到測(cè)量分辨精度0.005 mm之要求,故這里采用從單片機(jī)對(duì)信號(hào)進(jìn)行軟件四細(xì)分,再將信號(hào)傳輸給主單片機(jī)進(jìn)行數(shù)據(jù)處理。因最大測(cè)量值為5.230 mm,故將1046設(shè)為置頂?shù)拿}沖數(shù),超過1046則系統(tǒng)報(bào)警,反饋量返回單片機(jī),單片機(jī)控制工作臺(tái)停止運(yùn)動(dòng)。從單片機(jī)程序流程如圖3所示。
圖3 從單片機(jī)流程圖
為了更好地說明問題,簡(jiǎn)要將軟件系分原理敘述如下:把一套光柵的兩路方波信號(hào)由從機(jī)的P1.0與P1.1輸入,如圖4所示,兩路方波信號(hào)相位相差90°,圖4中a、b、c、d分別表示一個(gè)周期兩路方波的4種狀態(tài)[7-8]。光柵尺的副尺可相對(duì)主尺做“進(jìn)”或“退”的運(yùn)動(dòng),在做運(yùn)動(dòng)之前信號(hào)的初始狀態(tài)可以是這4種狀態(tài)中的任何一種。表1是運(yùn)動(dòng)前和運(yùn)動(dòng)后的電平變化表。
圖4 光柵傳感器信號(hào)
表1 狀態(tài)變化表
通過比較起始狀態(tài)和下一個(gè)狀態(tài)的電平,可以發(fā)現(xiàn)如下規(guī)律:
由于兩路方波相位相差90°,從表1中可以看出,在一個(gè)周期內(nèi),P1.0和P1.1的電平發(fā)生4次變化,變化的相位分別在90°、180°、270°、和360°,因此只要檢測(cè)到P1.0和P1.1發(fā)生了電平變化,就計(jì)一次數(shù),在一個(gè)周期里可以計(jì)4次數(shù),從而就實(shí)現(xiàn)了4細(xì)分。當(dāng)電平發(fā)生變化時(shí),用變化前的端口(如P1.0)和變化后的端口(如P1.1)相比較,如數(shù)據(jù)相同則為“進(jìn)”,否則為“退”,從而實(shí)現(xiàn)辨向。
主單片機(jī)主要用來(lái)接收從單片機(jī)細(xì)分處理后采集的信號(hào),對(duì)信號(hào)進(jìn)行再一步的處理從而使計(jì)數(shù)值變?yōu)閷?shí)際的位移量,并實(shí)時(shí)的顯示在LCD顯示屏上,還可通過功能按鍵、指示燈、報(bào)警系統(tǒng)程序?qū)y(cè)量進(jìn)行實(shí)時(shí)監(jiān)測(cè)與反饋以及利用串口將采集數(shù)據(jù)送上位機(jī)顯示。主要包括:主程序、中斷程序、數(shù)據(jù)處理程序、按鍵選擇程序、顯示程序等。這里著重給出主程序流程圖、中斷程序流程圖、按鍵子程序流程圖。
3.2.1 主程序
圖5 主單片機(jī)流程圖
3.2.2 中斷程序
中斷程序流程圖如圖6所示。
圖6 中斷程序流程圖
首先判斷如0x00、計(jì)數(shù)器進(jìn)行加1計(jì)數(shù),如為0x01進(jìn)行減1計(jì)數(shù),再判斷是否為最大值,如是最大值,蜂鳴器報(bào)警,中斷返回[9]。為了更好說明問題,這里給出部分源程序代碼:
void main()
{
while(1)
{
x0=P1&0x03;
x1=P1&0x01;
x2=P1&0x02;
P3_0=1;
while((P1&0x03)==x0);
if((P1&0x01)==x1)
{
if(((P1&0x02)>>1)==x1) //x2右移一位與x1相比較
{
P3_0=0;//退,給主單片機(jī)發(fā)0x01
P2=0x01;
delay(100);
}
else
{
P3_0=0;//進(jìn),給主單片機(jī)發(fā)0x00
P2=0x00;
delay(100);
}
}
else
{
if(((P1&0x01)<<1)==x2) //x1左移一位與x2相比較
{
P3_0=0;//進(jìn),給主單片機(jī)發(fā)0x00
P2=0x00;
delay(100);
}
else
{
P3_0=0;//退,給主單片機(jī)發(fā)0x01
P2=0x01;
delay(100);
}
}
}
}
3.2.3 按鍵子程序
按鍵子程序流程圖如圖7所示,兩個(gè)按鍵分別與主單片機(jī)的P2.3、P2.4端口相連,當(dāng)連接端口P2.3(Key1)鍵按下時(shí),關(guān)中斷停止數(shù)據(jù)采集,當(dāng)連接端口P2.4(Key2)鍵按下時(shí),恢復(fù)中斷,繼續(xù)進(jìn)行實(shí)時(shí)數(shù)據(jù)的采集,目的在于準(zhǔn)確讀出某一點(diǎn)采集數(shù)據(jù)的位移值。
圖7 按鍵子程序流程圖
采用VB 6.0對(duì)上位機(jī)部分進(jìn)行編程,根據(jù)設(shè)計(jì)要求,界面上包括測(cè)量數(shù)據(jù)顯示窗口,工作狀態(tài)指示燈顯示,控制按鈕包括:開始、清除、結(jié)束、存儲(chǔ)等。具體編程過程在此不再贅述。
文中設(shè)計(jì)的雙單片機(jī)數(shù)據(jù)采集硬件系統(tǒng),避免數(shù)據(jù)顯示、數(shù)據(jù)處理等其他任務(wù)對(duì)采樣速度的影響,可有效地提高數(shù)據(jù)采集速度;對(duì)兩路方波信號(hào)采用軟件細(xì)分、辯向,大大簡(jiǎn)化了硬件電路,同時(shí)也提高了工作的可靠性;該測(cè)量系統(tǒng)已成功的應(yīng)用于項(xiàng)目當(dāng)中。