国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于步進電機的多軸聯(lián)動控制系統(tǒng)研究*

2020-12-14 04:08齊子昂韓元真吳真昱袁嘉惠
科學(xué)與財富 2020年30期
關(guān)鍵詞:最短路徑串口通信上位機

齊子昂 韓元真 吳真昱 袁嘉惠

摘 要:隨著社會的進步和人類水平的提高,工廠生產(chǎn)智能化的趨勢越來越明顯。而隨著工廠生產(chǎn)自動化的不斷發(fā)展,電機的多軸聯(lián)動控制也逐漸被人們所注意到,我們一般常見的運動軸可以分為X、Y、Z、Pitch和Yaw軸,而對于多軸聯(lián)動的控制方法也是多種多樣。本文著重敘述一種基于步進電機的多軸聯(lián)動控制系統(tǒng),該系統(tǒng)主要由STM32單片機作為主要處理器,步進電機作為動力裝置,再由脈沖信號的脈沖數(shù)和脈沖的周期來控制步進電機的轉(zhuǎn)動角度和轉(zhuǎn)動速度,而每個軸的速度和位置數(shù)據(jù)都通過串口發(fā)送至上位機實現(xiàn)數(shù)據(jù)可視化,而每個軸的運動都是獨立的,也就是說多個軸可以同時運動,我們將控制三個電機同時運作,同時朝著目標(biāo)方向運動,但是考慮到該機構(gòu)不與其他機構(gòu)產(chǎn)生碰撞即每兩點之間不能簡單地按照直線路徑,因此需要使用Floyd算法計算出各個點之間的最短路徑,大幅度縮短了時間,達(dá)到最好的效果。

關(guān)鍵詞:多軸聯(lián)動;串口通信;上位機;Floyd算法;最短路徑

0 引言

為了能將電機運動的時間縮短到最少時間,我們計劃采用多軸聯(lián)動的方式對步進電機進行控制。對于X、Y、Z、Pitch、Yaw幾個運動軸,若只是采取單方向直線運動的話時間無疑將會是非常長的,于是我們將控制三個電機同時運作,同時朝著目標(biāo)方向運動,同時還要考慮該機構(gòu)不與其他機構(gòu)產(chǎn)生碰撞,從而計算出其最短路徑,大幅度縮短了時間,達(dá)到最好的效果。

STM32單片機為控制系統(tǒng)的核心,處理輸入模擬信號和對外部輸出控制信號都需要它來實現(xiàn)。它可以提供控制步進電機運動的脈沖信號,同時還可以將電機的各種狀態(tài)數(shù)據(jù)通過串口傳輸給上位機,將各個運動軸的數(shù)據(jù)直觀的展現(xiàn)出來,同時可以發(fā)送控制命令給單片機來控制它的運動。

Floyd算是最常用的求兩點間最短路徑的方法,應(yīng)用在很多領(lǐng)域,送貨員送貨,郵遞員送信都需要事先考慮路途長短[1],在本系統(tǒng)中選擇最短路徑的方法既可以根據(jù)此算法來設(shè)計。

1 系統(tǒng)整體設(shè)計

為了實現(xiàn)步進電機多軸聯(lián)動的效果,需要單片機同時發(fā)出多個獨立的脈沖信號,以達(dá)到聯(lián)動的目的,然后單片機通過記錄脈沖數(shù)計算出當(dāng)前各個運動軸的當(dāng)前的位置,再通過數(shù)據(jù)的拆分進行串口發(fā)送,上位機進行數(shù)據(jù)的接收和還原來實現(xiàn)各種數(shù)據(jù)的可視化以及控制指令的發(fā)送,更加方便操作者的使用,在設(shè)定完目標(biāo)位置后,系統(tǒng)先通過Floyd算法進行最短路徑的計算,從而規(guī)劃出最優(yōu)路徑,然后在多軸聯(lián)動的情況下向著目標(biāo)方向前進。

2 單片機的信號輸出與串口通信

2.1 硬件連接

本次設(shè)計所用的為57步進電機和MD542步進電機驅(qū)動器,我們采用步進電機常用的共陰極接線法即將驅(qū)動器的地線接在一起,再由單片機的三個控制引腳來對其進行控制,這三個引腳通常為ENA、DIR和PUL,分別控制電機的使能、方向和脈沖信號。將步進電機的A,B兩相線接到驅(qū)動上面對應(yīng)的接線口,即可完成步進電機與驅(qū)動器的硬件連接。而對于單片機和驅(qū)動器之間的連線還需要有信號升壓模塊作為中介來完成連接,由于STM32單片機的控制信號通常為3.3V,而MD542步進電機驅(qū)動器的信號電壓一般為5V,所以單片機直接連接驅(qū)動器是無法驅(qū)動電機的。

2.2 脈沖信號的輸出

按照步進電機的一般控制邏輯來說,輸出脈沖信號就會用到STM32單片機的定時器的PWM輸出功能,而且還需要分別設(shè)置定時器的通道輸入捕獲功能來精準(zhǔn)的控制脈沖數(shù),這種控制方式較為麻煩。本系統(tǒng)中我們采用的是利用IO口來模擬脈沖信號的產(chǎn)生,即通過定時器中斷來使IO口的電平以一定頻率變換,從而產(chǎn)生脈沖信號驅(qū)動電機的轉(zhuǎn)動,此方法控制簡單易操作,而且脈沖數(shù)的設(shè)定可以用一個變量存放,改動方便,脈沖的周期也可以隨意的控制和改變。以下為脈沖信號的輸出程序邏輯圖:

2.3 上位機的設(shè)計

本系統(tǒng)的上位機是基于軟件Visual Studio的Windows窗體的應(yīng)用程序工程平臺來編寫的,并使用C#語言編程,創(chuàng)建一個典型的Windows的應(yīng)用程序應(yīng)該包括以下幾個基本步驟:創(chuàng)建一個適當(dāng)?shù)拇绑w;向窗體中增加控件;最后增加響應(yīng)用戶事件代碼[2]。單片機在收集到各個步進電機的數(shù)據(jù)后將數(shù)據(jù)拆分成一個一個的字節(jié),打包成數(shù)據(jù)包在通過串口傳輸給上位機,而上位機在接收到數(shù)據(jù)后將數(shù)據(jù)進行處理計算即可以得出各個運動軸的位置以及電機的轉(zhuǎn)速信息,并將這些數(shù)據(jù)傳遞到各個控件中,使操作者通過上位機就可以獲得該系統(tǒng)中各個運動軸的數(shù)據(jù)信息。同時操作者也可以通過上位機修改各個軸的數(shù)據(jù),這些數(shù)據(jù)將通過串口發(fā)給單片機從而實現(xiàn)對各個步進電機的控制,更方便的達(dá)到控制目的。

3 基于Floyd算法的最短路徑計算

在該系統(tǒng)中,當(dāng)步進電機多軸聯(lián)動朝著目標(biāo)點移動的過程中,在其運動路徑中可能會有其他機構(gòu)的阻擋而造成機構(gòu)之間的碰撞,即在兩個節(jié)點之間不一定存在直達(dá)的道路。當(dāng)然在這種時候為了避免碰撞的發(fā)生,我們需要找到一條最短的線路來最快的到達(dá)目標(biāo)位置。這是我們想到了Floyd算法,這是一種常用的最短路徑算法,具體操作方法如下。

我們先將該系統(tǒng)中需要到達(dá)的位置劃分成N個目標(biāo)節(jié)點,我們需要做的是找出這N個目標(biāo)節(jié)點之間任意兩個位置之間的最短路線,考慮到并不是每兩點之間都存在道路故不能簡單地將兩點之間的直線距離來當(dāng)做最短路徑。我們令任意的節(jié)點i到節(jié)點j之間的最短距離為Wij,可以列出一個距離矩陣dis=(Wij)N×N,其中若是兩點之間沒有直接的道路即用inf代替即表示無窮大。同時我們再令任意的節(jié)點i到節(jié)點j之間的最短距離為dij。Floyd算法的基本步驟如下圖所示:

由上圖的邏輯計算過后,可以計算出最短距離矩陣D=(dij)N×N以及任意兩個目標(biāo)節(jié)點之間的最短路徑所經(jīng)過的節(jié)點。

4 結(jié)語

本系統(tǒng)利用單片機對步進電機的控制和上位機數(shù)據(jù)的采集以及最短運動路線的計算,為工業(yè)智能生產(chǎn)提供了一種簡潔、高效、可靠的控制方式。

參考文獻(xiàn):

[1] 呂靜毅, 常賽賽, 聶佳琦, 等. 基于Floyd算法的交巡警服務(wù)平臺管轄范圍設(shè)計[J]. 電腦知識與技術(shù), 2017, 13(10): 202-203.

[2] 董忠, 尤良方. C#Windows應(yīng)用程序開發(fā)實例[J]. 天水師范學(xué)院學(xué)報, 2003(02): 59-60+62.

[3]陳香, 李璞, 劉嘯澤. 交巡警服務(wù)平臺的設(shè)置與調(diào)度[J].電子測試, 2014(04): 155-157.

*基金項目:本文是桂林電子科技大學(xué)2020年自治區(qū)級大學(xué)生創(chuàng)業(yè)訓(xùn)練項目“一種基于視覺匹配的智能鞋柜”的項目成果,項目編號:202010595077

猜你喜歡
最短路徑串口通信上位機
基于Qt和Flash的嵌入式Linux軟件架構(gòu)設(shè)計
論網(wǎng)絡(luò)通信技術(shù)
Dijkstra算法設(shè)計與實現(xiàn)
串口通信在智能家居監(jiān)控系統(tǒng)中的應(yīng)用
基于云的短波發(fā)射機機房中央空調(diào)自動控制系統(tǒng)的設(shè)計與實現(xiàn)
基于Dijkstra算法的優(yōu)化研究
圖論最短路徑算法的圖形化演示及系統(tǒng)設(shè)計
基于OpenCV的室內(nèi)照明智能控制系統(tǒng)設(shè)計與實現(xiàn)
凉山| 鸡东县| 玛曲县| 托里县| 嘉黎县| 化州市| 赤峰市| 湄潭县| 石门县| 呼图壁县| 英德市| 西乌| 凌源市| 余江县| 福安市| 绥棱县| 鄂尔多斯市| 津市市| 九龙县| 大足县| 嘉禾县| 枣强县| 会理县| 鱼台县| 车致| 榆林市| 福清市| 榆中县| 绩溪县| 天水市| 邹平县| 庄浪县| 五寨县| 菏泽市| 边坝县| 砀山县| 博白县| 武安市| 昌吉市| 吉林市| 霸州市|