楊 凱,李樹軍,金益韓,郭 鼓
(西北工業(yè)大學(xué) 機(jī)電學(xué)院,西安 710072)
三坐標(biāo)移動(dòng)測(cè)試裝置是一種可以使測(cè)量探頭在三維空間內(nèi)任意移動(dòng),并能夠精確定位的機(jī)械裝置,在工業(yè)及科研實(shí)驗(yàn)方面應(yīng)用廣泛。三坐標(biāo)移動(dòng)測(cè)試裝置的控制系統(tǒng)由“PC機(jī)+運(yùn)動(dòng)控制卡+驅(qū)動(dòng)器+伺服電機(jī)”組成,使用時(shí)控制臺(tái)通常置于室內(nèi)等距離測(cè)試現(xiàn)場(chǎng)較遠(yuǎn)的地方,如果在測(cè)試現(xiàn)場(chǎng)對(duì)裝置進(jìn)行控制,則需要通過(guò)手持控制器來(lái)完成。
本文所述的手持控制器是在具體應(yīng)用背景下完成,其設(shè)計(jì)要求為:能夠在距離室內(nèi)控制臺(tái)100m的實(shí)驗(yàn)現(xiàn)場(chǎng)工作;能夠進(jìn)行移動(dòng)測(cè)試裝置的運(yùn)動(dòng)控制,包括X、Y、Z三軸正負(fù)方向選擇、點(diǎn)動(dòng)或連續(xù)運(yùn)動(dòng)模式選擇、點(diǎn)動(dòng)模式下0.01至10.0五種步距的選擇以及連續(xù)運(yùn)動(dòng)時(shí)的啟動(dòng)停止操作;能夠?qū)崟r(shí)顯示移動(dòng)測(cè)試裝置X、Y、Z三軸的位置坐標(biāo)、正負(fù)方向及當(dāng)前運(yùn)動(dòng)模式等信息。
圖1 手持控制器原理圖
根據(jù)設(shè)計(jì)要求,該手持控制器由電源模塊、通信模塊、按鍵輸入模塊及顯示模塊四部分組成,其原理圖如圖1所示。電源模塊完成單片機(jī)及液晶顯示屏的供電;通信模塊進(jìn)行單片機(jī)與PC機(jī)的數(shù)據(jù)傳輸;按鍵輸入模塊實(shí)現(xiàn)單片機(jī)對(duì)用戶控制操作的響應(yīng);顯示模塊保證裝置實(shí)時(shí)狀態(tài)信息的顯示。
本控制器選用美國(guó)Silicon Laboratories 公司的C8051F060單片機(jī)作為主控芯片。該型號(hào)單片機(jī)上集成有與高速流水線結(jié)構(gòu)的8051兼容的CIP-51內(nèi)核,速度可達(dá)25MIPS;提供64個(gè)I/O數(shù)據(jù)端口;5個(gè)通用的16位定時(shí)/計(jì)數(shù)器;2個(gè)支持全雙工異步方式,并支持多處理器通信的串行接口。芯片性能完全符合本系統(tǒng)的要求。
移動(dòng)測(cè)試裝置各軸運(yùn)動(dòng)狀態(tài)通過(guò)顯示模塊實(shí)時(shí)反饋給用戶,手持控制器顯示模塊由單片機(jī)I/O端口連接LCM1601A單行16位液晶顯示模塊實(shí)現(xiàn)。該液晶顯示模塊內(nèi)部采用KS0066作為主控制芯片,供電電壓為DC5V,外接10K可調(diào)電阻調(diào)節(jié)對(duì)比度,RS、R/W、E控制端口與單片機(jī)3個(gè)I/O端口連接,8位數(shù)據(jù)端口與單片機(jī)8個(gè)I/O端口連接,實(shí)現(xiàn)實(shí)時(shí)位置信息的顯示。其連接電路如圖2所示。
串行通信具有數(shù)據(jù)線少、實(shí)現(xiàn)方便等優(yōu)點(diǎn),常用的串行總線包括RS232、RS422/485、USB等。其中,RS232總線的有效距離為15m,RS422總線的有效距離可達(dá)1200m,USB的有效距離僅有5m,而該手持控制器要求的通信距離至少為100m,所以采用RS422總線進(jìn)行通信。由于PC機(jī)集成有RS232串行接口,因此采用RS422/RS232轉(zhuǎn)換器進(jìn)行接口轉(zhuǎn)換,從而實(shí)現(xiàn)遠(yuǎn)距離的串行通信。
圖2 液晶顯示屏控制電路
C8051F060內(nèi)部集成有通用串行接口UART0,手持控制器工作時(shí),通過(guò)UART0接收和發(fā)送數(shù)據(jù)。由于UART0采用的是TTL信號(hào),因此采用接口芯片MAX3488完成TTL信號(hào)和RS422使用的差分信號(hào)之間的轉(zhuǎn)換。MAX3488芯片支持全雙工通信,最高傳輸速率可達(dá)250kbps,采用DC3.3V供電,其應(yīng)用電路如圖3所示。MAX3488輸出的差分信號(hào)經(jīng)RS422/RS232轉(zhuǎn)換器UT-503轉(zhuǎn)換成RS232信號(hào),由PC機(jī)接收。經(jīng)測(cè)試,該方法有效實(shí)現(xiàn)了手持控制器與PC機(jī)的遠(yuǎn)距離通信。
按鍵輸入模塊需要滿足使用者對(duì)移動(dòng)測(cè)試裝置三個(gè)軸共36種運(yùn)動(dòng)情況的控制。手持控制器設(shè)計(jì)有13個(gè)按鍵,這些按鍵組成矩陣式鍵盤,使用動(dòng)態(tài)掃描的方式進(jìn)行識(shí)別,提高了單片機(jī)I/O端口的使用效率。由于動(dòng)態(tài)掃描速度較快,單片機(jī)會(huì)對(duì)一次按鍵按下執(zhí)行多次重復(fù)響應(yīng),設(shè)計(jì)中采用了軟件判斷和延時(shí),消除了按鍵機(jī)械抖動(dòng),確保了CPU對(duì)按鍵的一次閉合僅作一次處理。
圖3 串行模塊電路圖
手持控制器中需要用到DC5V和DC3.3V分別為液晶顯示模塊和單片機(jī)、MAX3488芯片及指示燈供電。設(shè)計(jì)時(shí),利用RS232串口的1、2號(hào)針腳引入DC24V,通過(guò)DC-DC模塊電源WRB2405CS-3W實(shí)現(xiàn)DC24V向DC5V的轉(zhuǎn)換,如圖4(a)所示,再通過(guò)三段線性穩(wěn)壓器AZ1117-3.3進(jìn)行DC5V向DC3.3V的轉(zhuǎn)換,如圖4(b)所示,可滿足手持控制器內(nèi)部所有的供電需求。
圖4 手持控制器供電電路
手持控制器的軟件部分包括主程序以及按鍵掃描、液晶屏顯示和串口通信等子程序。單片機(jī)的編程通過(guò)IDE軟件開(kāi)發(fā)環(huán)境,使用C語(yǔ)言完成。手持控制器程序與PC機(jī)程序之間定義了控制信息的字符協(xié)議,如表1所示,其中點(diǎn)動(dòng)模式下分五種不同的步距。
按下電源開(kāi)關(guān)按鈕,主程序開(kāi)始執(zhí)行,各寄存器、I/O端口以及串行通信口將被初始化,液晶顯示屏顯示歡迎界面。初始化完成后,按鍵掃描子程序開(kāi)始掃描X、Y、Z三個(gè)鍵是否被按下,如果按下則表示該軸被選中,單片機(jī)將發(fā)送請(qǐng)求該軸位置的指令給PC機(jī),同時(shí)等待接收并存儲(chǔ)接收到的信息,完成后再將該軸軸代號(hào)及位置信息輸出到液晶顯示屏顯示。
表1 手持控制器與PC機(jī)的控制字符協(xié)議
如果某一個(gè)軸當(dāng)前位置需要調(diào)整,用戶可通過(guò)按鍵選擇運(yùn)動(dòng)方向,繼而選擇點(diǎn)動(dòng)或者連續(xù)運(yùn)動(dòng)方式。當(dāng)選擇點(diǎn)動(dòng)方式運(yùn)行時(shí),有0.01mm、0.05mm、0.1mm、1.0mm、10.0mm五種步距可供選擇,如選擇X軸正向點(diǎn)動(dòng)0.01mm,單片機(jī)即發(fā)送相應(yīng)的命令給PC機(jī),PC機(jī)接收后即調(diào)用相關(guān)運(yùn)動(dòng)程序驅(qū)動(dòng)X軸正向移動(dòng)0.01mm,同時(shí)將X軸最新的位置信息反饋給手持控制器,單片機(jī)接收到位置信息后再通過(guò)液晶顯示屏顯示,實(shí)現(xiàn)了位置信息的即時(shí)更新。當(dāng)選擇連續(xù)方式運(yùn)行時(shí),單片機(jī)發(fā)送相應(yīng)的命令給上位軟件即可控制該軸連續(xù)運(yùn)動(dòng),期間手持控制器每隔50ms請(qǐng)求該軸位置,接收到位置信息后通過(guò)液晶顯示屏顯示,實(shí)現(xiàn)位置的即時(shí)更新。連續(xù)運(yùn)動(dòng)過(guò)程中,程序不斷掃描停止按鍵是否被按下,若停止鍵按下,即發(fā)送停止命令給PC機(jī)控制該軸停止運(yùn)動(dòng),程序返回主程序,進(jìn)行掃描X、Y、Z按鍵步驟,不斷循環(huán)。軟件流程圖如圖5所示。
手持控制器的串口通信模塊完成單片機(jī)和PC機(jī)之間的雙向通信,單片機(jī)向PC機(jī)發(fā)送運(yùn)動(dòng)控制指令,同時(shí)接收由PC機(jī)發(fā)送的實(shí)時(shí)位置等信息。手持控制器使用單片機(jī)自帶的串行口UART0,通過(guò)串行控制寄存器SCON0和串行數(shù)據(jù)緩沖器SBUF0來(lái)實(shí)現(xiàn)UART0的控制和訪問(wèn)。讀操作時(shí),CPU通過(guò)判斷接收標(biāo)志位RI0的值判斷一個(gè)字符是否接受完成,繼而循環(huán)訪問(wèn)SBUF0中暫存的各字符信息,存入指定數(shù)組中,直至接收完成。寫操作時(shí),CPU直接通過(guò)循環(huán)將單個(gè)字符信息逐一寫入緩沖器SBUF0中,單片機(jī)自動(dòng)將信息通過(guò)串口發(fā)出。
圖5 軟件流程圖
PC機(jī)的串口通信通過(guò)VC++6.0中的Microsoft Communications Control(version6.0)控件實(shí)現(xiàn),該控件可以直接設(shè)置串口相關(guān)的屬性,如串口號(hào)、波特率、校驗(yàn)位、數(shù)據(jù)位、停止位等。MSComm控件加入到工程后,會(huì)自動(dòng)獲得一個(gè)MSComm通信類CMSComm,在MSCOMMDlg的主框架中,通過(guò)m_Comm.SetPortOpen(TRUE)函數(shù)打開(kāi)串口,m_Comm.GetCommEvent()函數(shù)接收手持控制器發(fā)送的對(duì)各個(gè)軸的控制信息,m_Comm.SetOutput()函數(shù)反饋給手持控制器各軸的實(shí)時(shí)位置信息,最后通過(guò) m_Comm.SetPortOpen(FALSE)關(guān)閉串口。
LCM1601A液晶顯示屏有11個(gè)引腳和單片機(jī)I/O端口連接,通過(guò)LCD_RS、LCD_RW、LCD_E三個(gè)標(biāo)志位控制液晶顯示屏使能、指令或數(shù)據(jù)操作、讀或?qū)懖僮?,這三個(gè)標(biāo)志位通過(guò)LCD_command()函數(shù)設(shè)置,從而實(shí)現(xiàn)顯示屏模式設(shè)置。數(shù)據(jù)操作時(shí),通過(guò)LCD_data()函數(shù)操作DB0-DB7八位數(shù)據(jù)端,最終實(shí)現(xiàn)液晶顯示屏顯示實(shí)時(shí)位置信息。
應(yīng)用C8051F060單片機(jī)設(shè)計(jì)了對(duì)三維移動(dòng)測(cè)試裝置進(jìn)行遠(yuǎn)距離控制的手持控制器,該控制器通過(guò)RS422串口與PC機(jī)通信,實(shí)現(xiàn)對(duì)三個(gè)運(yùn)動(dòng)軸在正負(fù)方向上以點(diǎn)動(dòng)或連續(xù)的36種運(yùn)動(dòng)情況進(jìn)行控制,同時(shí)能夠通過(guò)液晶顯示屏顯示各軸實(shí)時(shí)位置信息。經(jīng)試制和試驗(yàn),該手持控制器完全滿足用戶需求,具有一定的通用性和實(shí)用推廣性。手持控制器實(shí)物圖如圖6所示。
圖6 手持控制器實(shí)物圖
[1] 潘琢金.C8051F060/1/2/3/4/5/6/7混合信號(hào)ISP FLASH微控制器數(shù)據(jù)手冊(cè)[M].深圳: 新華龍電子有限公司, 2004.
[2] 張培仁, 孫力.基于C語(yǔ)言C8051F系列微控制器原理與應(yīng)用[M].北京: 清華大學(xué)出版社, 2007.
[3] 譚浩強(qiáng).C程序設(shè)計(jì)(第二版)[M].北京: 清華大學(xué)出版社,1999.
[4] 沈孝芹, 張蔚波, 于復(fù)生, 陳繼文, 魏志國(guó).三自由度機(jī)械手手持盒的研制[J].儀器儀表學(xué)報(bào), 2008, 29(4): 545-546.
[5] 姜恒, 李樹軍, 徐永新.基于C8051F060的高速凸輪測(cè)試系統(tǒng)設(shè)計(jì)[J].制造業(yè)自動(dòng)化, 2011, 8(下): 37-43.
[6] 安永如, 黎海文, 吳一輝, 宣明.基于C8051F060的微型生化分析儀高速數(shù)據(jù)采集系統(tǒng)[J].光電子技術(shù), 2007, 27(3):166-173.