梁應選,王 楠,張昌明
(1.陜西理工大學 機械工程學院,陜西 漢中 723001; 2.陜西省工業自動化重點實驗室,陜西 漢中 723001)
位移是機械設備中一個非常重要的參數,位移的測量方法很多,其中光柵由于測量精度高,操作簡單,被廣泛應用在機械加工、控制等領域中。將光柵位移傳感器與微電子技術相結合進行線性位移量的測量以實現較高的測量精度。該文采用光柵作為感知元件,經轉換器件后變為周期性變化的電信號,采用軟件編程的方法對信號進行細分與辨向,并利用從單片機下位機對其輸出脈沖進行計數及相關數據處理,進一步將采集數據通過并口傳至主單片機,顯示采集結果 ,同時通過主單片機串口將采集數據傳至PC機,實現數據存儲、顯示等功能,滿足了數據采集高速、高精度的要求。
課題組承擔的項目當中,需要對工作臺移動的微小位移進行精確控制,故準確的測出工作臺移動距離是精確控制的前提條件。因此,在實驗室現有的條件基礎上,開發了基于光柵位移傳感器的單片機位移測量系統。
在測試技術中,傳感器是實現自動檢測和自動控制的首要環節,它擔負著感受和傳輸信號的重要任務。傳感器的類型是多種多樣的,其優缺、點各不相同[1]。該系統選用實驗室現有的光柵位移傳感器(50 mm/線)及其信號調理模塊,由單片機從機對其柵距進行軟件細分,以獲得更高的分辨率要求(0.005 mm);出于對系統采集數據的速度的考慮,系統采用兩個單片機,一個單片機(從機)用來采集信號,另一個單片機(主機)用來處理信號,目的在于避免數據顯示、數據處理等其他任務對采樣速度的影響,也可以減小數據的丟失,提高了系統的實時性;為了對采集數據進行存儲、圖形顯示和進一步處理,采用VB進行上位機軟件編程,通過下位機(主機)串口讀取采集數據。
測量系統硬件框圖如圖1所示。主要由單片機主機、單片機從機、信號源及處理電路、LCD顯示、報警系統、上位機(PC)等部分組成[2-3]。

圖1 測量系統框圖
光柵尺將位置信號先轉化成電壓信號輸出,經過調理電路濾波和整流后,處理成標準的方波信號。為了節約成本本次選用實驗室現有的光柵傳感器(50線/mm)及調理電路模塊[4]。
單片機從機主要對來自光柵傳感器外部的方波信號通過軟件編程進行細分與辨向,然后再對細分后的脈沖進行計數,并通過并行口傳輸計數結果送至單片機主機上,即主要完成完成數據采集、細分辨向及采集數據并行傳輸功能。
單片機主機主要功能包括:通過并口接收單片機從機采集數據,并對信號進一步的處理從而使位移量可以實時的顯示在LCD顯示屏上;通過串口將位移量量發送給上位機;通過功能按鍵、指示燈、報警系統程對測量進行實時監測與反饋。
2.3.1 主從單片機并行通信模塊
主、從單片機并行通信模塊如圖2所示。

圖2 并行通信
其數據傳送方法,從機為數據發送方,主機為數據接收方。8位端口可以使P0、P1、P2、P3中的任意一個。數據傳輸的過程是:從機(發送方)將數據送到端口后,通過STB信號中斷主機(接收方)。主機進入中斷并從端口讀取數據,讀完后,利用BUSY信號進行應答。從機檢查到端口線CHK上的應答后,就可以發送下一個數據了。
2.3.2 報警模塊
主單片機的P3口的P3.4,P3.5分別控制2個發光二極管,用以顯示當前物體的位移狀態,當物體正向運動時,紅燈亮;當物體負向運動時,綠燈亮。主單片機的P3.7口控制蜂鳴器,當位移達到最大值是,系統就會自動報警。
2.3.3 按鍵模塊
為了準確讀處測量數據,當一個鍵按下時,關閉中斷、停止運算,LCD 上顯示測量數據保持不變;當另一個按鍵按下時,中斷恢復,繼續計算,重新顯示測量實時值。
2.3.4 LCD顯示模塊
主要用于顯示下位機測量的結果。
軟件編程是此次設計的重點[5-6],現就編程過程介紹如下。
根據所選傳感器參數50線/mm,知其柵距為0.02 mm,為了達到測量分辨精度0.005 mm之要求,故這里采用從單片機對信號進行軟件四細分,再將信號傳輸給主單片機進行數據處理。因最大測量值為5.230 mm,故將1046設為置頂的脈沖數,超過1046則系統報警,反饋量返回單片機,單片機控制工作臺停止運動。從單片機程序流程如圖3所示。

圖3 從單片機流程圖
為了更好地說明問題,簡要將軟件系分原理敘述如下:把一套光柵的兩路方波信號由從機的P1.0與P1.1輸入,如圖4所示,兩路方波信號相位相差90°,圖4中a、b、c、d分別表示一個周期兩路方波的4種狀態[7-8]。光柵尺的副尺可相對主尺做“進”或“退”的運動,在做運動之前信號的初始狀態可以是這4種狀態中的任何一種。表1是運動前和運動后的電平變化表。

圖4 光柵傳感器信號

表1 狀態變化表
通過比較起始狀態和下一個狀態的電平,可以發現如下規律:
由于兩路方波相位相差90°,從表1中可以看出,在一個周期內,P1.0和P1.1的電平發生4次變化,變化的相位分別在90°、180°、270°、和360°,因此只要檢測到P1.0和P1.1發生了電平變化,就計一次數,在一個周期里可以計4次數,從而就實現了4細分。當電平發生變化時,用變化前的端口(如P1.0)和變化后的端口(如P1.1)相比較,如數據相同則為“進”,否則為“退”,從而實現辨向。
主單片機主要用來接收從單片機細分處理后采集的信號,對信號進行再一步的處理從而使計數值變為實際的位移量,并實時的顯示在LCD顯示屏上,還可通過功能按鍵、指示燈、報警系統程序對測量進行實時監測與反饋以及利用串口將采集數據送上位機顯示。主要包括:主程序、中斷程序、數據處理程序、按鍵選擇程序、顯示程序等。這里著重給出主程序流程圖、中斷程序流程圖、按鍵子程序流程圖。
3.2.1 主程序


圖5 主單片機流程圖
3.2.2 中斷程序
中斷程序流程圖如圖6所示。

圖6 中斷程序流程圖
首先判斷如0x00、計數器進行加1計數,如為0x01進行減1計數,再判斷是否為最大值,如是最大值,蜂鳴器報警,中斷返回[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;//退,給主單片機發0x01
P2=0x01;
delay(100);
}
else
{
P3_0=0;//進,給主單片機發0x00
P2=0x00;
delay(100);
}
}
else
{
if(((P1&0x01)<<1)==x2) //x1左移一位與x2相比較
{
P3_0=0;//進,給主單片機發0x00
P2=0x00;
delay(100);
}
else
{
P3_0=0;//退,給主單片機發0x01
P2=0x01;
delay(100);
}
}
}
}
3.2.3 按鍵子程序
按鍵子程序流程圖如圖7所示,兩個按鍵分別與主單片機的P2.3、P2.4端口相連,當連接端口P2.3(Key1)鍵按下時,關中斷停止數據采集,當連接端口P2.4(Key2)鍵按下時,恢復中斷,繼續進行實時數據的采集,目的在于準確讀出某一點采集數據的位移值。

圖7 按鍵子程序流程圖
采用VB 6.0對上位機部分進行編程,根據設計要求,界面上包括測量數據顯示窗口,工作狀態指示燈顯示,控制按鈕包括:開始、清除、結束、存儲等。具體編程過程在此不再贅述。
文中設計的雙單片機數據采集硬件系統,避免數據顯示、數據處理等其他任務對采樣速度的影響,可有效地提高數據采集速度;對兩路方波信號采用軟件細分、辯向,大大簡化了硬件電路,同時也提高了工作的可靠性;該測量系統已成功的應用于項目當中。