楊 凱,李樹軍,金益韓,郭 鼓
(西北工業大學 機電學院,西安 710072)
三坐標移動測試裝置是一種可以使測量探頭在三維空間內任意移動,并能夠精確定位的機械裝置,在工業及科研實驗方面應用廣泛。三坐標移動測試裝置的控制系統由“PC機+運動控制卡+驅動器+伺服電機”組成,使用時控制臺通常置于室內等距離測試現場較遠的地方,如果在測試現場對裝置進行控制,則需要通過手持控制器來完成。
本文所述的手持控制器是在具體應用背景下完成,其設計要求為:能夠在距離室內控制臺100m的實驗現場工作;能夠進行移動測試裝置的運動控制,包括X、Y、Z三軸正負方向選擇、點動或連續運動模式選擇、點動模式下0.01至10.0五種步距的選擇以及連續運動時的啟動停止操作;能夠實時顯示移動測試裝置X、Y、Z三軸的位置坐標、正負方向及當前運動模式等信息。

圖1 手持控制器原理圖
根據設計要求,該手持控制器由電源模塊、通信模塊、按鍵輸入模塊及顯示模塊四部分組成,其原理圖如圖1所示。電源模塊完成單片機及液晶顯示屏的供電;通信模塊進行單片機與PC機的數據傳輸;按鍵輸入模塊實現單片機對用戶控制操作的響應;顯示模塊保證裝置實時狀態信息的顯示。
本控制器選用美國Silicon Laboratories 公司的C8051F060單片機作為主控芯片。該型號單片機上集成有與高速流水線結構的8051兼容的CIP-51內核,速度可達25MIPS;提供64個I/O數據端口;5個通用的16位定時/計數器;2個支持全雙工異步方式,并支持多處理器通信的串行接口。芯片性能完全符合本系統的要求。
移動測試裝置各軸運動狀態通過顯示模塊實時反饋給用戶,手持控制器顯示模塊由單片機I/O端口連接LCM1601A單行16位液晶顯示模塊實現。該液晶顯示模塊內部采用KS0066作為主控制芯片,供電電壓為DC5V,外接10K可調電阻調節對比度,RS、R/W、E控制端口與單片機3個I/O端口連接,8位數據端口與單片機8個I/O端口連接,實現實時位置信息的顯示。其連接電路如圖2所示。
串行通信具有數據線少、實現方便等優點,常用的串行總線包括RS232、RS422/485、USB等。其中,RS232總線的有效距離為15m,RS422總線的有效距離可達1200m,USB的有效距離僅有5m,而該手持控制器要求的通信距離至少為100m,所以采用RS422總線進行通信。由于PC機集成有RS232串行接口,因此采用RS422/RS232轉換器進行接口轉換,從而實現遠距離的串行通信。

圖2 液晶顯示屏控制電路
C8051F060內部集成有通用串行接口UART0,手持控制器工作時,通過UART0接收和發送數據。由于UART0采用的是TTL信號,因此采用接口芯片MAX3488完成TTL信號和RS422使用的差分信號之間的轉換。MAX3488芯片支持全雙工通信,最高傳輸速率可達250kbps,采用DC3.3V供電,其應用電路如圖3所示。MAX3488輸出的差分信號經RS422/RS232轉換器UT-503轉換成RS232信號,由PC機接收。經測試,該方法有效實現了手持控制器與PC機的遠距離通信。
按鍵輸入模塊需要滿足使用者對移動測試裝置三個軸共36種運動情況的控制。手持控制器設計有13個按鍵,這些按鍵組成矩陣式鍵盤,使用動態掃描的方式進行識別,提高了單片機I/O端口的使用效率。由于動態掃描速度較快,單片機會對一次按鍵按下執行多次重復響應,設計中采用了軟件判斷和延時,消除了按鍵機械抖動,確保了CPU對按鍵的一次閉合僅作一次處理。

圖3 串行模塊電路圖
手持控制器中需要用到DC5V和DC3.3V分別為液晶顯示模塊和單片機、MAX3488芯片及指示燈供電。設計時,利用RS232串口的1、2號針腳引入DC24V,通過DC-DC模塊電源WRB2405CS-3W實現DC24V向DC5V的轉換,如圖4(a)所示,再通過三段線性穩壓器AZ1117-3.3進行DC5V向DC3.3V的轉換,如圖4(b)所示,可滿足手持控制器內部所有的供電需求。

圖4 手持控制器供電電路
手持控制器的軟件部分包括主程序以及按鍵掃描、液晶屏顯示和串口通信等子程序。單片機的編程通過IDE軟件開發環境,使用C語言完成。手持控制器程序與PC機程序之間定義了控制信息的字符協議,如表1所示,其中點動模式下分五種不同的步距。
按下電源開關按鈕,主程序開始執行,各寄存器、I/O端口以及串行通信口將被初始化,液晶顯示屏顯示歡迎界面。初始化完成后,按鍵掃描子程序開始掃描X、Y、Z三個鍵是否被按下,如果按下則表示該軸被選中,單片機將發送請求該軸位置的指令給PC機,同時等待接收并存儲接收到的信息,完成后再將該軸軸代號及位置信息輸出到液晶顯示屏顯示。

表1 手持控制器與PC機的控制字符協議
如果某一個軸當前位置需要調整,用戶可通過按鍵選擇運動方向,繼而選擇點動或者連續運動方式。當選擇點動方式運行時,有0.01mm、0.05mm、0.1mm、1.0mm、10.0mm五種步距可供選擇,如選擇X軸正向點動0.01mm,單片機即發送相應的命令給PC機,PC機接收后即調用相關運動程序驅動X軸正向移動0.01mm,同時將X軸最新的位置信息反饋給手持控制器,單片機接收到位置信息后再通過液晶顯示屏顯示,實現了位置信息的即時更新。當選擇連續方式運行時,單片機發送相應的命令給上位軟件即可控制該軸連續運動,期間手持控制器每隔50ms請求該軸位置,接收到位置信息后通過液晶顯示屏顯示,實現位置的即時更新。連續運動過程中,程序不斷掃描停止按鍵是否被按下,若停止鍵按下,即發送停止命令給PC機控制該軸停止運動,程序返回主程序,進行掃描X、Y、Z按鍵步驟,不斷循環。軟件流程圖如圖5所示。
手持控制器的串口通信模塊完成單片機和PC機之間的雙向通信,單片機向PC機發送運動控制指令,同時接收由PC機發送的實時位置等信息。手持控制器使用單片機自帶的串行口UART0,通過串行控制寄存器SCON0和串行數據緩沖器SBUF0來實現UART0的控制和訪問。讀操作時,CPU通過判斷接收標志位RI0的值判斷一個字符是否接受完成,繼而循環訪問SBUF0中暫存的各字符信息,存入指定數組中,直至接收完成。寫操作時,CPU直接通過循環將單個字符信息逐一寫入緩沖器SBUF0中,單片機自動將信息通過串口發出。

圖5 軟件流程圖
PC機的串口通信通過VC++6.0中的Microsoft Communications Control(version6.0)控件實現,該控件可以直接設置串口相關的屬性,如串口號、波特率、校驗位、數據位、停止位等。MSComm控件加入到工程后,會自動獲得一個MSComm通信類CMSComm,在MSCOMMDlg的主框架中,通過m_Comm.SetPortOpen(TRUE)函數打開串口,m_Comm.GetCommEvent()函數接收手持控制器發送的對各個軸的控制信息,m_Comm.SetOutput()函數反饋給手持控制器各軸的實時位置信息,最后通過 m_Comm.SetPortOpen(FALSE)關閉串口。
LCM1601A液晶顯示屏有11個引腳和單片機I/O端口連接,通過LCD_RS、LCD_RW、LCD_E三個標志位控制液晶顯示屏使能、指令或數據操作、讀或寫操作,這三個標志位通過LCD_command()函數設置,從而實現顯示屏模式設置。數據操作時,通過LCD_data()函數操作DB0-DB7八位數據端,最終實現液晶顯示屏顯示實時位置信息。
應用C8051F060單片機設計了對三維移動測試裝置進行遠距離控制的手持控制器,該控制器通過RS422串口與PC機通信,實現對三個運動軸在正負方向上以點動或連續的36種運動情況進行控制,同時能夠通過液晶顯示屏顯示各軸實時位置信息。經試制和試驗,該手持控制器完全滿足用戶需求,具有一定的通用性和實用推廣性。手持控制器實物圖如圖6所示。

圖6 手持控制器實物圖
[1] 潘琢金.C8051F060/1/2/3/4/5/6/7混合信號ISP FLASH微控制器數據手冊[M].深圳: 新華龍電子有限公司, 2004.
[2] 張培仁, 孫力.基于C語言C8051F系列微控制器原理與應用[M].北京: 清華大學出版社, 2007.
[3] 譚浩強.C程序設計(第二版)[M].北京: 清華大學出版社,1999.
[4] 沈孝芹, 張蔚波, 于復生, 陳繼文, 魏志國.三自由度機械手手持盒的研制[J].儀器儀表學報, 2008, 29(4): 545-546.
[5] 姜恒, 李樹軍, 徐永新.基于C8051F060的高速凸輪測試系統設計[J].制造業自動化, 2011, 8(下): 37-43.
[6] 安永如, 黎海文, 吳一輝, 宣明.基于C8051F060的微型生化分析儀高速數據采集系統[J].光電子技術, 2007, 27(3):166-173.