齊子昂 韓元真 吳真昱 袁嘉惠
摘 要:隨著社會的進(jìn)步和人類水平的提高,工廠生產(chǎn)智能化的趨勢越來越明顯。而隨著工廠生產(chǎn)自動化的不斷發(fā)展,電機(jī)的多軸聯(lián)動控制也逐漸被人們所注意到,我們一般常見的運(yùn)動軸可以分為X、Y、Z、Pitch和Yaw軸,而對于多軸聯(lián)動的控制方法也是多種多樣。本文著重敘述一種基于步進(jìn)電機(jī)的多軸聯(lián)動控制系統(tǒng),該系統(tǒng)主要由STM32單片機(jī)作為主要處理器,步進(jìn)電機(jī)作為動力裝置,再由脈沖信號的脈沖數(shù)和脈沖的周期來控制步進(jìn)電機(jī)的轉(zhuǎn)動角度和轉(zhuǎn)動速度,而每個軸的速度和位置數(shù)據(jù)都通過串口發(fā)送至上位機(jī)實(shí)現(xiàn)數(shù)據(jù)可視化,而每個軸的運(yùn)動都是獨(dú)立的,也就是說多個軸可以同時運(yùn)動,我們將控制三個電機(jī)同時運(yùn)作,同時朝著目標(biāo)方向運(yùn)動,但是考慮到該機(jī)構(gòu)不與其他機(jī)構(gòu)產(chǎn)生碰撞即每兩點(diǎn)之間不能簡單地按照直線路徑,因此需要使用Floyd算法計算出各個點(diǎn)之間的最短路徑,大幅度縮短了時間,達(dá)到最好的效果。
關(guān)鍵詞:多軸聯(lián)動;串口通信;上位機(jī);Floyd算法;最短路徑
0 引言
為了能將電機(jī)運(yùn)動的時間縮短到最少時間,我們計劃采用多軸聯(lián)動的方式對步進(jìn)電機(jī)進(jìn)行控制。對于X、Y、Z、Pitch、Yaw幾個運(yùn)動軸,若只是采取單方向直線運(yùn)動的話時間無疑將會是非常長的,于是我們將控制三個電機(jī)同時運(yùn)作,同時朝著目標(biāo)方向運(yùn)動,同時還要考慮該機(jī)構(gòu)不與其他機(jī)構(gòu)產(chǎn)生碰撞,從而計算出其最短路徑,大幅度縮短了時間,達(dá)到最好的效果。
STM32單片機(jī)為控制系統(tǒng)的核心,處理輸入模擬信號和對外部輸出控制信號都需要它來實(shí)現(xiàn)。它可以提供控制步進(jìn)電機(jī)運(yùn)動的脈沖信號,同時還可以將電機(jī)的各種狀態(tài)數(shù)據(jù)通過串口傳輸給上位機(jī),將各個運(yùn)動軸的數(shù)據(jù)直觀的展現(xiàn)出來,同時可以發(fā)送控制命令給單片機(jī)來控制它的運(yùn)動。
Floyd算是最常用的求兩點(diǎn)間最短路徑的方法,應(yīng)用在很多領(lǐng)域,送貨員送貨,郵遞員送信都需要事先考慮路途長短[1],在本系統(tǒng)中選擇最短路徑的方法既可以根據(jù)此算法來設(shè)計。
1 系統(tǒng)整體設(shè)計
為了實(shí)現(xiàn)步進(jìn)電機(jī)多軸聯(lián)動的效果,需要單片機(jī)同時發(fā)出多個獨(dú)立的脈沖信號,以達(dá)到聯(lián)動的目的,然后單片機(jī)通過記錄脈沖數(shù)計算出當(dāng)前各個運(yùn)動軸的當(dāng)前的位置,再通過數(shù)據(jù)的拆分進(jìn)行串口發(fā)送,上位機(jī)進(jìn)行數(shù)據(jù)的接收和還原來實(shí)現(xiàn)各種數(shù)據(jù)的可視化以及控制指令的發(fā)送,更加方便操作者的使用,在設(shè)定完目標(biāo)位置后,系統(tǒng)先通過Floyd算法進(jìn)行最短路徑的計算,從而規(guī)劃出最優(yōu)路徑,然后在多軸聯(lián)動的情況下向著目標(biāo)方向前進(jìn)。
2 單片機(jī)的信號輸出與串口通信
2.1 硬件連接
本次設(shè)計所用的為57步進(jìn)電機(jī)和MD542步進(jìn)電機(jī)驅(qū)動器,我們采用步進(jìn)電機(jī)常用的共陰極接線法即將驅(qū)動器的地線接在一起,再由單片機(jī)的三個控制引腳來對其進(jìn)行控制,這三個引腳通常為ENA、DIR和PUL,分別控制電機(jī)的使能、方向和脈沖信號。將步進(jìn)電機(jī)的A,B兩相線接到驅(qū)動上面對應(yīng)的接線口,即可完成步進(jìn)電機(jī)與驅(qū)動器的硬件連接。而對于單片機(jī)和驅(qū)動器之間的連線還需要有信號升壓模塊作為中介來完成連接,由于STM32單片機(jī)的控制信號通常為3.3V,而MD542步進(jìn)電機(jī)驅(qū)動器的信號電壓一般為5V,所以單片機(jī)直接連接驅(qū)動器是無法驅(qū)動電機(jī)的。
2.2 脈沖信號的輸出
按照步進(jìn)電機(jī)的一般控制邏輯來說,輸出脈沖信號就會用到STM32單片機(jī)的定時器的PWM輸出功能,而且還需要分別設(shè)置定時器的通道輸入捕獲功能來精準(zhǔn)的控制脈沖數(shù),這種控制方式較為麻煩。本系統(tǒng)中我們采用的是利用IO口來模擬脈沖信號的產(chǎn)生,即通過定時器中斷來使IO口的電平以一定頻率變換,從而產(chǎn)生脈沖信號驅(qū)動電機(jī)的轉(zhuǎn)動,此方法控制簡單易操作,而且脈沖數(shù)的設(shè)定可以用一個變量存放,改動方便,脈沖的周期也可以隨意的控制和改變。以下為脈沖信號的輸出程序邏輯圖:
2.3 上位機(jī)的設(shè)計
本系統(tǒng)的上位機(jī)是基于軟件Visual Studio的Windows窗體的應(yīng)用程序工程平臺來編寫的,并使用C#語言編程,創(chuàng)建一個典型的Windows的應(yīng)用程序應(yīng)該包括以下幾個基本步驟:創(chuàng)建一個適當(dāng)?shù)拇绑w;向窗體中增加控件;最后增加響應(yīng)用戶事件代碼[2]。單片機(jī)在收集到各個步進(jìn)電機(jī)的數(shù)據(jù)后將數(shù)據(jù)拆分成一個一個的字節(jié),打包成數(shù)據(jù)包在通過串口傳輸給上位機(jī),而上位機(jī)在接收到數(shù)據(jù)后將數(shù)據(jù)進(jìn)行處理計算即可以得出各個運(yùn)動軸的位置以及電機(jī)的轉(zhuǎn)速信息,并將這些數(shù)據(jù)傳遞到各個控件中,使操作者通過上位機(jī)就可以獲得該系統(tǒng)中各個運(yùn)動軸的數(shù)據(jù)信息。同時操作者也可以通過上位機(jī)修改各個軸的數(shù)據(jù),這些數(shù)據(jù)將通過串口發(fā)給單片機(jī)從而實(shí)現(xiàn)對各個步進(jìn)電機(jī)的控制,更方便的達(dá)到控制目的。
3 基于Floyd算法的最短路徑計算
在該系統(tǒng)中,當(dāng)步進(jìn)電機(jī)多軸聯(lián)動朝著目標(biāo)點(diǎn)移動的過程中,在其運(yùn)動路徑中可能會有其他機(jī)構(gòu)的阻擋而造成機(jī)構(gòu)之間的碰撞,即在兩個節(jié)點(diǎn)之間不一定存在直達(dá)的道路。當(dāng)然在這種時候?yàn)榱吮苊馀鲎驳陌l(fā)生,我們需要找到一條最短的線路來最快的到達(dá)目標(biāo)位置。這是我們想到了Floyd算法,這是一種常用的最短路徑算法,具體操作方法如下。
我們先將該系統(tǒng)中需要到達(dá)的位置劃分成N個目標(biāo)節(jié)點(diǎn),我們需要做的是找出這N個目標(biāo)節(jié)點(diǎn)之間任意兩個位置之間的最短路線,考慮到并不是每兩點(diǎn)之間都存在道路故不能簡單地將兩點(diǎn)之間的直線距離來當(dāng)做最短路徑。我們令任意的節(jié)點(diǎn)i到節(jié)點(diǎn)j之間的最短距離為Wij,可以列出一個距離矩陣dis=(Wij)N×N,其中若是兩點(diǎn)之間沒有直接的道路即用inf代替即表示無窮大。同時我們再令任意的節(jié)點(diǎn)i到節(jié)點(diǎn)j之間的最短距離為dij。Floyd算法的基本步驟如下圖所示:
由上圖的邏輯計算過后,可以計算出最短距離矩陣D=(dij)N×N以及任意兩個目標(biāo)節(jié)點(diǎn)之間的最短路徑所經(jīng)過的節(jié)點(diǎn)。
4 結(jié)語
本系統(tǒng)利用單片機(jī)對步進(jìn)電機(jī)的控制和上位機(jī)數(shù)據(jù)的采集以及最短運(yùn)動路線的計算,為工業(yè)智能生產(chǎn)提供了一種簡潔、高效、可靠的控制方式。
參考文獻(xiàn):
[1] 呂靜毅, 常賽賽, 聶佳琦, 等. 基于Floyd算法的交巡警服務(wù)平臺管轄范圍設(shè)計[J]. 電腦知識與技術(shù), 2017, 13(10): 202-203.
[2] 董忠, 尤良方. C#Windows應(yīng)用程序開發(fā)實(shí)例[J]. 天水師范學(xué)院學(xué)報, 2003(02): 59-60+62.
[3]陳香, 李璞, 劉嘯澤. 交巡警服務(wù)平臺的設(shè)置與調(diào)度[J].電子測試, 2014(04): 155-157.
*基金項(xiàng)目:本文是桂林電子科技大學(xué)2020年自治區(qū)級大學(xué)生創(chuàng)業(yè)訓(xùn)練項(xiàng)目“一種基于視覺匹配的智能鞋柜”的項(xiàng)目成果,項(xiàng)目編號:202010595077