熊方 劉旭 羅茂元
摘要:本文設(shè)計(jì)了一種通過X、Y、Z三軸位移來實(shí)現(xiàn)三維運(yùn)動(dòng)的控制系統(tǒng)。該系統(tǒng)以STM32F407ZGT6為控制核心、以TB6600為步進(jìn)電機(jī)驅(qū)動(dòng)模塊來控制三軸上螺桿的旋轉(zhuǎn)。文中詳細(xì)地介紹了該系統(tǒng)的機(jī)械結(jié)構(gòu)設(shè)計(jì)、硬件電路設(shè)計(jì)和程序設(shè)計(jì),通過實(shí)驗(yàn)驗(yàn)證,系統(tǒng)實(shí)現(xiàn)了啟停、加減速、運(yùn)動(dòng)方向、復(fù)位、定位等三維運(yùn)動(dòng)狀態(tài)的控制。
關(guān)鍵詞:STM32;三維運(yùn)動(dòng);控制系統(tǒng)
中圖分類號(hào):TP273 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2020)06-0003-03
0 引言
運(yùn)動(dòng)控制器廣泛應(yīng)用于智能機(jī)器人、全自動(dòng)焊接機(jī)、點(diǎn)膠機(jī)、電纜生產(chǎn)牽引系統(tǒng)等自動(dòng)化設(shè)備中。運(yùn)動(dòng)控制正朝著高速度、高精度、開放式的方向發(fā)展,國內(nèi)外各大公司生產(chǎn)的運(yùn)動(dòng)控制器大多為通用型產(chǎn)品,普遍存在以下不足:功能強(qiáng)大、價(jià)格昂貴,在實(shí)際使用中往往只用到少數(shù)功能;封閉式的結(jié)構(gòu)很難進(jìn)行二次開發(fā),靈活性較差[1]。本文將介紹一種基于STM32的三維運(yùn)動(dòng)系統(tǒng)設(shè)計(jì)并進(jìn)行實(shí)驗(yàn)驗(yàn)證,該設(shè)計(jì)簡潔、運(yùn)行穩(wěn)定、易操作、便于二次開發(fā)。
1 三維運(yùn)動(dòng)系統(tǒng)機(jī)械結(jié)構(gòu)設(shè)計(jì)
三維運(yùn)動(dòng)系統(tǒng)的機(jī)械結(jié)構(gòu),包括三維平臺(tái)、X/Y/Z三軸上的坐標(biāo)尺、旋轉(zhuǎn)滑臺(tái)螺桿、驅(qū)動(dòng)螺桿旋轉(zhuǎn)的步進(jìn)電機(jī)MX/MY/MZ、安裝在Z軸上的控制對(duì)象,如圖1所示。X軸滑臺(tái)可以左右移動(dòng),Y軸滑臺(tái)可以前后移動(dòng),Z軸滑臺(tái)可以上下移動(dòng)。
2 三維運(yùn)動(dòng)系統(tǒng)控制總方案
三維運(yùn)動(dòng)控制系統(tǒng)中,上位機(jī)發(fā)出命令,通過串口發(fā)送給控制器STM32,STM32根據(jù)命令控制步進(jìn)電機(jī)動(dòng)作,如圖2所示。MY電機(jī)控制水平面平臺(tái)板沿Y軸運(yùn)動(dòng),將MZ電機(jī)固定在X軸電機(jī)的位移片上,從而實(shí)現(xiàn)X、Y、Z三個(gè)方向的位移。Z軸的位移可以實(shí)現(xiàn)控制對(duì)象的起落。
3 硬件電路設(shè)計(jì)
3.1 步進(jìn)電機(jī)驅(qū)動(dòng)模塊電路設(shè)計(jì)
系統(tǒng)采用TB6600驅(qū)動(dòng)模塊,它是一款專業(yè)的兩相步進(jìn)電機(jī)驅(qū)動(dòng),可實(shí)現(xiàn)正反轉(zhuǎn)控制[2]。通過S1、S2、S3三位撥碼開關(guān)選擇8檔細(xì)分控制,S4、S5、S6選擇8檔電流控制。比如:設(shè)定細(xì)分系數(shù)為4,電流控制2.0A。查看細(xì)分/電流選擇表,將S1、S2、S3分別設(shè)置為ON、OFF、OFF,S4、S5、S6分別設(shè)置為ON、OFF、OFF。驅(qū)動(dòng)模塊推薦使用24V/3A開關(guān)電源供電。驅(qū)動(dòng)模塊與控制器STM32之間共陰連接方法如圖3所示。
3.2 傳感器信號(hào)電路
在X、Y、Z三軸滑臺(tái)兩側(cè)安裝限位傳感器,防止滑塊跑出運(yùn)動(dòng)范圍。在三軸中間安裝原點(diǎn)傳感器,用于定位。當(dāng)滑塊移動(dòng)到傳感器旁邊,傳感器輸出有效低電平信號(hào);當(dāng)滑塊離開傳感器,輸出高電平無效信號(hào)。將傳感器輸出信號(hào)與STM32的GPIO口連接,如圖4所示。
3.3 串口硬件連接
串行通信廣泛應(yīng)用于STM32與PC機(jī)之間通信,USART串口通過RX(接收數(shù)據(jù))、TX(發(fā)送數(shù)據(jù))和地3個(gè)引腳與其它設(shè)備連接在一起的[3]。如果使用USART1串口,PA9是STM32的發(fā)送端,PA10是接收端。PC機(jī)通過USB口與STM32串口之間需要一個(gè)USB轉(zhuǎn)串口的芯片CH340。
4 軟件設(shè)計(jì)
4.1 步進(jìn)電機(jī)運(yùn)動(dòng)控制
如果驅(qū)動(dòng)器與控制器采用共陰極連接方法,如圖3所示??刂破鞑捎肧TM32F407ZGT6,假設(shè)采用通用兩相四線步進(jìn)電機(jī),步距角為1.8°,驅(qū)動(dòng)器細(xì)分倍數(shù)為x,一個(gè)PWM脈沖的步進(jìn)角為1.8/x。如果細(xì)分?jǐn)?shù)為4,步進(jìn)角就是0.45°。軟件設(shè)計(jì)如下:
4.1.1 轉(zhuǎn)速控制
設(shè)脈沖信號(hào)頻率為fHz,步進(jìn)電機(jī)轉(zhuǎn)速為nr/min(轉(zhuǎn)/分),則它們之間的關(guān)系為:n=360f/(360x/1.8),即:f=10xn/3。若步進(jìn)電機(jī)以300r/min運(yùn)轉(zhuǎn),細(xì)分?jǐn)?shù)為4,需要脈沖頻率為4kHz。
4.1.2 定長控制
4.1.3 啟停控制
4.1.4 方向控制
4.1.5 限位控制
4.2 串行通信程序設(shè)計(jì)
利用STM32的USART1串口,計(jì)算機(jī)通過串口發(fā)送數(shù)據(jù)給STM32,對(duì)串口的設(shè)置如下:(1)串口、GPIO口時(shí)鐘使能;(2)引腳復(fù)用映射;(3)GPIO端口模式設(shè)置,模式設(shè)置為GPIO_Mode_AF;(4)串口參數(shù)初始化;(5)開啟中斷并且初始化NVIC;(6)使能串口;(7)編寫中斷處理函數(shù);(8)串口數(shù)據(jù)接收;(9)串口傳輸狀態(tài)獲取與清除。
4.3 主函數(shù)程序設(shè)計(jì)
對(duì)上位機(jī)發(fā)送的命令進(jìn)行編號(hào),形成指令表,如0x01電機(jī)1啟動(dòng)/停止,0x02電機(jī)1反向,0x03電機(jī)1復(fù)位……在主函數(shù)中,首先對(duì)各模塊進(jìn)行初始化并開放中斷,然后再根據(jù)上位機(jī)發(fā)送的命令(指令編號(hào))進(jìn)行工作,如圖5所示。
5 結(jié)語
根據(jù)以上軟硬件設(shè)計(jì)方法,通過串口調(diào)試助手進(jìn)行調(diào)試,功能全部實(shí)現(xiàn):可以對(duì)X、Y、Z軸上的滑臺(tái)進(jìn)行啟停、加減速、反向、復(fù)位、定長、限位的控制。還可以在上位機(jī)使用C#或VB6.0等軟件開發(fā)操作界面,代替串口調(diào)試助手,對(duì)系統(tǒng)的控制更方便、直觀。該開發(fā)系統(tǒng)簡潔易懂、可靠性高,尤其適合實(shí)訓(xùn)教學(xué)。
參考文獻(xiàn)
[1] 陳亞,史釗亮,高錦宏,等.基于STM32+FPGA的六自由度機(jī)器人運(yùn)動(dòng)控制器設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與制造,2020,4(4):240-243.
[2] 劉忠強(qiáng),張立,張春曉,等.雙軸步進(jìn)電機(jī)驅(qū)動(dòng)控制系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀表,2019,34(8):29-33.
[3] 郭志勇.嵌入式技術(shù)與應(yīng)用開發(fā)項(xiàng)目教程(STM32版)[M].北京:人民郵電出版社,2019.