俞 鵬 賀 順 王 永 袁 奕 陳家輝
?
基于觸摸屏技術(shù)的運(yùn)動(dòng)控制器
俞 鵬 賀 順 王 永 袁 奕 陳家輝
目前的運(yùn)動(dòng)控制器設(shè)備普遍缺乏美觀的人機(jī)界面,本文將在普通的運(yùn)動(dòng)控制器基礎(chǔ)上增加一塊觸摸屏來實(shí)現(xiàn)人機(jī)界面的優(yōu)化,并且實(shí)現(xiàn)中文指令的輸入,從而改善運(yùn)動(dòng)控制器的交互性與整體性能。
目前 ,我國是世界上經(jīng)濟(jì)發(fā)展最快的國家之一,市場上新設(shè)備的控制需求、傳統(tǒng)設(shè)備技術(shù)升級(jí)和換代對(duì)運(yùn)動(dòng)控制器的市場需求越來越大。
基于嵌入式控制芯片的運(yùn)動(dòng)控制器可以在沒有PC機(jī)的情況下使用,降低了設(shè)備成本,集成了觸摸屏和中文控制指令則可以降低用戶使用難度,在一些加工工藝較為簡單的生產(chǎn)設(shè)備上將會(huì)成為不二的選則。
本運(yùn)動(dòng)控制器采用意法半導(dǎo)體公司的stm32f103vct6作為核心處理器,外圍設(shè)備有一塊電阻式的觸摸屏,輸入輸出端口,步進(jìn)電機(jī)及驅(qū)動(dòng)設(shè)備構(gòu)成。觸摸屏用于輸入指令以及界面顯示。輸入輸出端口用于與外部其他設(shè)備的通信。而步進(jìn)電機(jī)和驅(qū)動(dòng)設(shè)備是我們的控制對(duì)象。
觸摸屏程序設(shè)計(jì)分為兩個(gè)部分,一個(gè)是觸屏程序設(shè)計(jì),一個(gè)是顯示程序設(shè)計(jì)。
觸屏的程序設(shè)計(jì)。
觸摸屏的原理簡單來講,它上面有一個(gè)XPT2046,它是一個(gè)四線制觸摸屏控制器,內(nèi)含12位分辨率125KH轉(zhuǎn)換速率逐步逼近型A/D轉(zhuǎn)換器。XPT2046能通過執(zhí)行兩次A/D轉(zhuǎn)換查出被按的屏幕位置。所以設(shè)計(jì)觸摸屏函數(shù)時(shí),就是不斷掃描屏幕是否按下,當(dāng)屏幕按下的時(shí)候,相應(yīng)按下的標(biāo)志置位,并且得到按下的點(diǎn)的坐標(biāo)。
下面我們來介紹一下如何根據(jù)上述原理在觸摸屏上做一個(gè)按鍵。我們可以先確定想要畫的按鍵位置,然后根據(jù)4個(gè)頂點(diǎn)坐標(biāo)畫一個(gè)按鍵的框,該框的坐標(biāo)值是已知的,程序中先判斷按鍵是否按下,如果按下,判斷按下的點(diǎn)是否在坐標(biāo)的范圍內(nèi),便可確定顯示屏上的這個(gè)按鍵是否按下,然后實(shí)現(xiàn)相應(yīng)的功能。
多界面的制作和切換。
由于考慮到運(yùn)動(dòng)控制器界面的復(fù)雜性,我們可能需要多個(gè)界面,那這些界面該如何切換呢?事實(shí)上,我們這里運(yùn)用了狀態(tài)機(jī)的思想。每一個(gè)界面作為一種狀態(tài),定義了一個(gè)狀態(tài)變量。在while(1)中,使用了一個(gè)switch語句,通過狀態(tài)變量來顯示相應(yīng)的界面,每個(gè)界面中都會(huì)有按鍵可以改變狀態(tài)變量,上圖中的翻頁鍵和設(shè)置鍵便是指向其他界面的鍵。
我們?cè)O(shè)計(jì)的運(yùn)動(dòng)控制器提供的指令有位移指令、延時(shí)指令、速度指令、輸入指令、輸出指令、掃描指令、跳轉(zhuǎn)指令、結(jié)束指令。與傳統(tǒng)的控制器不同的是,我們通過取模軟件取模,將所有的指令實(shí)現(xiàn)為中文,使得操作的難度大大降低。
指令的存儲(chǔ)格式
下面我們介紹下指令的格式。所有的指令都有自己的序號(hào),名稱和操作數(shù)。第一列的00~04為序號(hào),第二列的位移、時(shí)間等為指令名稱,第三列則為操作數(shù)。為了存儲(chǔ)的方便,存儲(chǔ)指令的時(shí)候?qū)嶋H上是用結(jié)構(gòu)體實(shí)現(xiàn)。定義了一個(gè)指令結(jié)構(gòu)體,該結(jié)構(gòu)體的成員為名稱和操作數(shù)。然后建立一個(gè)指令的結(jié)構(gòu)體數(shù)組,指令的名稱是一個(gè)char型字符,從0x00~0x08(包含空指令)。而指令的操作數(shù)是4位的char型數(shù)組(除了位移指令)。事實(shí)上并不是每一個(gè)指令都需要4位操作數(shù),這樣做的原因是為了程序存儲(chǔ)時(shí)數(shù)據(jù)對(duì)齊。

指令名稱 代號(hào) 指令參數(shù) 用途空指令 0x00 無 不做任何輸出位移指令 0x01 位移、速度、加速時(shí)間 移動(dòng)相應(yīng)距離延時(shí)指令 0x02 延時(shí)時(shí)間 延時(shí)相應(yīng)時(shí)間輸入指令 0x03 輸入端口X1~X8,輸入電平程序暫停,直到輸入端口為相應(yīng)電平繼續(xù)執(zhí)行輸出指令 0x04 輸出端口Y1~Y8,輸出電平 Y口輸出相應(yīng)電平掃描指令 0x05當(dāng)端口為相應(yīng)狀態(tài)后,執(zhí)行a~b之間的程序。跳轉(zhuǎn)指令 0x06 跳轉(zhuǎn)的程序序號(hào) 程序跳轉(zhuǎn)到相應(yīng)的序號(hào)處掃描端口,電平狀態(tài),起始序號(hào)a,結(jié)束序號(hào)b循環(huán)指令 0x07 起始序號(hào)a、結(jié)束序號(hào)b、循環(huán)次數(shù)c執(zhí)行a~b序號(hào)之間的程序,執(zhí)行次數(shù)為c結(jié)束指令 0x08 無 程序結(jié)束
指令的解釋和運(yùn)行
在運(yùn)行之前,需要對(duì)指令做解釋。解釋的總體思路是根據(jù)指令內(nèi)部存儲(chǔ)代號(hào)來分別解釋,將4位的操作數(shù)轉(zhuǎn)換為有效的參數(shù)。按順序讀入指令,判斷其代號(hào),然后送入相應(yīng)的函數(shù)做解釋得到指令參數(shù)。
指令運(yùn)行時(shí),程序中有一個(gè)變量j初始化為0,然后讀取數(shù)組第一條指令的代號(hào),判斷是哪種指令,執(zhí)行相應(yīng)的函數(shù),并將上述由操作數(shù)做解釋后的指令參數(shù)作為形參傳入。執(zhí)行完一條程序后返回,j自加1,讀取第二個(gè)指令的名稱,繼續(xù)執(zhí)行,直到讀取到結(jié)束指令時(shí)停止。
我們先簡單的介紹下步進(jìn)電機(jī)。由于我們使用了相應(yīng)的驅(qū)動(dòng),這里只需要對(duì)該驅(qū)動(dòng)輸入相應(yīng)的脈沖和方向便可控制電機(jī)。步進(jìn)電機(jī)是每發(fā)一個(gè)脈沖走一個(gè)角度,所以它的速度取決于發(fā)送脈沖的頻率。
本文采用定時(shí)器的PWM模式,設(shè)定占空比為50%,使能定時(shí)器的溢出中斷。步進(jìn)電機(jī)的啟動(dòng)參數(shù)為加減速時(shí)間,速度最大值,脈沖個(gè)數(shù)。本文所使用的加減速為直線加減速。加減速過程分為兩種情況,一種由于速度值設(shè)置過大,脈沖個(gè)數(shù)小,使得運(yùn)行達(dá)不到最大速度,只有加速和減速過程,速度曲線大致為三角形。另一種便是既有加減速又有勻速運(yùn)行狀態(tài),速度曲線大致為梯形。
具體實(shí)現(xiàn)時(shí),先計(jì)算中點(diǎn)P=N/2,定時(shí)器每發(fā)出一個(gè)脈沖便會(huì)進(jìn)入溢出中斷,并對(duì)脈沖個(gè)數(shù)進(jìn)行計(jì)數(shù),并且根據(jù)式子(1)和(2)計(jì)算出下一個(gè)脈沖的速度,根據(jù)速度改變定時(shí)器的頻率。當(dāng)個(gè)數(shù)小于P時(shí),逐脈沖進(jìn)行比較,當(dāng)前速度是否達(dá)到最大速度,如果達(dá)到,記錄下當(dāng)前的脈沖個(gè)數(shù)P1, P1~(N-P1)階段為勻速階段,而到(N-P1)時(shí)電機(jī)進(jìn)入減速階段,這時(shí)的加速曲線為梯形。如果到中點(diǎn)P時(shí)還未達(dá)到最大速度,說明設(shè)置的參數(shù)達(dá)不到,此時(shí)在中點(diǎn)開始減速,加速曲線變?yōu)槿切巍F渲?/p>
加速過程中使用的公式為:

減速過程中使用的公式為:

經(jīng)過多次實(shí)驗(yàn),確定本運(yùn)動(dòng)控制器啟動(dòng)運(yùn)行平穩(wěn),最高速度能達(dá)到10K,能正確完成各項(xiàng)指令,能緊急停止,穩(wěn)定性很高。本文的運(yùn)動(dòng)控制器能夠用于多種場合,例如送料系統(tǒng)、幕布的起降系統(tǒng)等。而且因?yàn)槭侵形闹噶睿幊屉y度顯著下降。本運(yùn)動(dòng)控制器在工業(yè)領(lǐng)域的應(yīng)用具有一定的意義。
俞 鵬 賀 順 王 永 袁 奕 陳家輝
俞鵬,男,江蘇南通人,就讀于南京工程學(xué)院,2013級(jí)本科,自動(dòng)化數(shù)控專業(yè),目前研究單片機(jī)、嵌入式等方向。
基金類別:江蘇省大學(xué)生實(shí)踐創(chuàng)新訓(xùn)練計(jì)劃資助項(xiàng)目(201511276057X);江蘇省大學(xué)生創(chuàng)新訓(xùn)練計(jì)劃資助項(xiàng)目(201511276002Z)
10.3969/j.issn.1001-8972.2016.11.029