毛麗民,陳 煜,楊海萍
(常熟理工學(xué)院 電氣與自動(dòng)化工程學(xué)院,常熟 215500)
碼垛機(jī)器人是根據(jù)特定要求,完成自動(dòng)拿取、搬運(yùn)和堆垛的自動(dòng)化機(jī)器設(shè)備。在高溫、高壓、多粉塵等惡劣環(huán)境中,碼垛機(jī)器人可代替人工作業(yè),節(jié)省大量人力資源,大幅提高工作效率。
目前,面對(duì)人工成本增加、招工難的現(xiàn)象,很多制造企業(yè)希望用設(shè)備代替人工,從而實(shí)現(xiàn)無(wú)人化工廠的目標(biāo)。但是動(dòng)輒數(shù)萬(wàn)元一套的機(jī)械手或者價(jià)格昂貴的非標(biāo)設(shè)備,使得企業(yè)轉(zhuǎn)型遇到很大障礙。在這種情況下,低成本的三軸移動(dòng)平臺(tái)就有了很大的應(yīng)用前景,市場(chǎng)很多鎖螺絲機(jī)、點(diǎn)膠機(jī)、焊錫機(jī)、打標(biāo)機(jī)等都是三軸平臺(tái)的應(yīng)用。一臺(tái)三軸移動(dòng)平臺(tái),可以代替2~3人的作業(yè)。例如鎖螺絲機(jī),一個(gè)點(diǎn)位的速度可以達(dá)到0.5 s以內(nèi),比人工效率至少高3倍以上。三軸移動(dòng)平臺(tái)可以根據(jù)需求選擇不同的電機(jī)和傳動(dòng)裝置,并且工作空間相比機(jī)械臂而言更大。
本文設(shè)計(jì)的碼垛機(jī)器人由2個(gè)X軸(運(yùn)動(dòng)軸與輔助軸)、1個(gè)Y軸和1個(gè)Z軸組成,底座有鋁型材支撐架空,從而在較大范圍內(nèi)實(shí)現(xiàn)定位移動(dòng)。三軸都是由帶編碼器的步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)??刂破靼l(fā)送高低電平控制方向,發(fā)送頻率及個(gè)數(shù)都可改變的脈沖來(lái)調(diào)節(jié)3個(gè)步進(jìn)電動(dòng)機(jī)的轉(zhuǎn)速和旋轉(zhuǎn)圈數(shù)。利用加減速算法來(lái)提高系統(tǒng)的工作效率的同時(shí),滿足穩(wěn)定性的要求[1]。碼垛上裝有9個(gè)光電限位開關(guān),來(lái)配合控制器進(jìn)行行程限制以及原點(diǎn)搜索。最后通過(guò)對(duì)末端執(zhí)行器的吸取或抓取控制來(lái)實(shí)現(xiàn)對(duì)物料的整齊堆垛[2-3]。圖1為碼垛機(jī)器人結(jié)構(gòu)。
圖1 4軸龍門平臺(tái)結(jié)構(gòu)圖
X,Y,Z軸都選用相同型號(hào)的MH45導(dǎo)軌,其中Y軸長(zhǎng)1200mm(有效行程800mm)、兩個(gè)X軸長(zhǎng)1 050 mm(有效行程800 mm)、Z軸長(zhǎng)450 mm(有效行程200 mm),另外還有5個(gè)聯(lián)軸器、3個(gè)57系列步進(jìn)電動(dòng)機(jī)支架、1個(gè)T型連接板、4個(gè)地腳座、2個(gè)高腳座及1根長(zhǎng)850 mm、直徑12 mm的傳動(dòng)軸[4]。圖2為碼垛機(jī)器人控制系統(tǒng)示意圖。
圖2 碼垛機(jī)器人控制系統(tǒng)示意圖
本文控制器采用STM32,通過(guò)對(duì)通用定時(shí)器輸出比較模式下的自動(dòng)重裝載ARR與輸出比較寄存器RCC的比較情況,判斷中斷的發(fā)生并實(shí)現(xiàn)對(duì)引腳電平的翻轉(zhuǎn),從而輸出完整脈沖。系統(tǒng)的行程限制與原點(diǎn)搜索,是通過(guò)軸上的感應(yīng)片接觸到光電開關(guān)產(chǎn)生的下降沿,觸發(fā)外部中斷,在該外部中斷所定義好的中斷處理函數(shù)中改變步進(jìn)電動(dòng)機(jī)的運(yùn)行狀態(tài)。為了提升移動(dòng)定位的速度、提高移動(dòng)程序執(zhí)行的效率,在步進(jìn)電動(dòng)機(jī)的運(yùn)動(dòng)中加入實(shí)時(shí)計(jì)算的梯形加減速算法,更增加了系統(tǒng)高速運(yùn)行時(shí)的穩(wěn)定性。
本文選用目前市面主流的帶編碼器的步進(jìn)電動(dòng)機(jī),編碼器的加入可以使得電機(jī)具有反饋補(bǔ)償能力,從而使電機(jī)可以在一定程度上克服一些丟步或過(guò)沖現(xiàn)象,圖3為本文選用的帶編碼器步進(jìn)電機(jī)。由于XY軸與Z軸帶載不同,所以XY軸采用力矩2.2 N·m的步進(jìn)電動(dòng)機(jī),而Z軸是力矩1.5 N·m的步進(jìn)電動(dòng)機(jī);表1是57系列不同型號(hào)步進(jìn)電動(dòng)機(jī)的技術(shù)參數(shù)。
圖3 帶編碼器步進(jìn)電機(jī)
表1 步進(jìn)電機(jī)技術(shù)參數(shù)
一般與步進(jìn)電動(dòng)機(jī)配套的驅(qū)動(dòng)器都會(huì)采用默認(rèn)的細(xì)分?jǐn)?shù),這種默認(rèn)的細(xì)分設(shè)置是可以滿足大多數(shù)使用需求的。本文選擇一款可以兼容帶編碼器步進(jìn)電動(dòng)機(jī)的雷賽公司步進(jìn)電機(jī)驅(qū)動(dòng)器[5-6]。默認(rèn)細(xì)分?jǐn)?shù)為1 600,即1 600步為一整圈。
1.1.1 步進(jìn)電機(jī)與驅(qū)動(dòng)器的連線
電機(jī)與驅(qū)動(dòng)器的接線如圖4所示。當(dāng)編碼器所需電流Icc<50 mA時(shí),可由HBS57內(nèi)部自帶的5 V電壓直接供電,此時(shí)應(yīng)將EGND接編碼器地,E+5 V接編碼器的VCC,編碼器A+、A-、B+、B-信號(hào)依次接至驅(qū)動(dòng)器EA+、EA-、EB+、EB-端口。當(dāng)編碼器所需電流Icc>50 mA時(shí),則需外加5 V電源供電。
圖4 電機(jī)與驅(qū)動(dòng)器接線圖
1.1.2 驅(qū)動(dòng)器與控制器的接線
控制器信號(hào)輸入與步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)器的接法通常有三種:差分方式控制、共陽(yáng)接法、共陰接法。對(duì)于STM32來(lái)說(shuō),大多數(shù)I/O口輸入可以達(dá)到5 V。STM32輸出5 V有多種方法,如用三極管做開關(guān),將I/O口3.3 V的輸出給三極管去控制開斷從而輸出5 V。但實(shí)際STM32本身GPIO支持一種開漏輸出模式,它只能輸出強(qiáng)低電平,需要通過(guò)上拉電阻接到5 V才能實(shí)現(xiàn)[7]。3個(gè)驅(qū)動(dòng)器與STM32的接線如圖5所示。
圖5 驅(qū)動(dòng)器與STM32接線圖
開漏模式下,將I/O口上拉到5 V時(shí)使用2 kΩ的電阻。通過(guò)輸出比較模式產(chǎn)生的脈沖電壓有效值實(shí)際只有3 V左右,所以STM32開漏輸出串接的電阻為2 kΩ,上拉電阻的5 V電壓也由板載的MP2359降壓得到[8]。
為了避免在調(diào)試過(guò)程中撞擊極限位置,本文使用光電限位開關(guān),圖6(a)為槽形光電限位開關(guān),圖6(b)為感應(yīng)金屬片。本文使用了常開信號(hào)線。用2 kΩ的電阻接到了STM32的3.3 V電壓上,用3.3 V的電壓,就可以推挽輸出,而不需要設(shè)置為開漏模式再增加額外的上拉電阻。光電開關(guān)接線圖如圖7所示。
(a) 槽形光電限位開關(guān)
(b) 感應(yīng)金屬片圖6 槽形光電限位開關(guān)與感應(yīng)金屬片
圖7 光電開關(guān)接線圖
本文的3個(gè)移動(dòng)軸需要相互獨(dú)立工作,各個(gè)軸的極限之間不能有干擾,因此接線選擇尾部數(shù)字都不一樣的GPIO引腳:PF0、PF1、PF2、PG3、PG4、PG5、PG6、PG7、PG8,這樣在程序調(diào)用時(shí)都是不同的中斷函數(shù),運(yùn)行過(guò)程中也不會(huì)出現(xiàn)同一時(shí)刻只有一個(gè)中斷被響應(yīng)的情況。圖8為光電限位開關(guān)在三軸上實(shí)際的安裝位置。
圖8 實(shí)際安裝位置
真空泵的額定工作電壓是12 V,用三極管來(lái)控制繼電器,為避免電感類負(fù)載對(duì)電源電壓產(chǎn)生影響,本文使用光耦隔離,如圖9所示。
圖9 真空泵驅(qū)動(dòng)電路圖
步進(jìn)電動(dòng)機(jī)對(duì)于速度變化較大,尤其是加減速較為頻繁的設(shè)備,會(huì)發(fā)生力矩不足或者失步的現(xiàn)象;如果勵(lì)磁頻率選擇不當(dāng),電機(jī)就不能夠移到新的位置,會(huì)發(fā)生失步或過(guò)沖現(xiàn)象。要解決該問題,通常采用加減速的方法,即在步進(jìn)電機(jī)在起步時(shí)讓頻率逐步升高,減速時(shí)頻率逐步降低。
加速過(guò)程是由基礎(chǔ)頻率與跳變頻率組成加速過(guò)程的曲線。反之,降速過(guò)程一樣。加速曲線通常采用直線(梯形)、指數(shù)曲線或者S型曲線等。本文按直線方式(從起動(dòng)速度到目標(biāo)速度的加減速),以一定的比例進(jìn)行加速/減速,如圖10所示。
圖10 加減速運(yùn)行圖
當(dāng)程序起動(dòng)(復(fù)位后)或者步進(jìn)電動(dòng)機(jī)運(yùn)動(dòng)狀態(tài)在停止?fàn)顟B(tài)時(shí)候,程序結(jié)束。當(dāng)加速段移動(dòng)步數(shù)計(jì)算完成,新的狀態(tài)就會(huì)被置位,同時(shí)定時(shí)器的中斷也會(huì)被起動(dòng)。定位移動(dòng)程序流程如圖11所示。
圖11 移動(dòng)程序流程圖
主程序框圖如圖12所示。堆垛函數(shù)中共有6個(gè)有符號(hào)32位入口參數(shù),它們分別是:拾取下降高度、返回高度、放置點(diǎn)X與Y軸位置、再次下降高度、再次返回高度。這些變量通過(guò)二維數(shù)組stack[][]以及主程序中的循環(huán)來(lái)傳遞。
圖12 主程序流程圖
第一層的堆垛數(shù)組,每次都是寫入6個(gè)參數(shù),變量會(huì)保存每一次+1后的變量,然后與之匹配,再通過(guò)二維數(shù)組的組號(hào),去調(diào)用不同數(shù)組的參數(shù)。最后當(dāng)row加到27后,再對(duì)row的計(jì)數(shù)標(biāo)志start置零,從而完成一次完整的堆垛。圖13為堆垛程序要實(shí)現(xiàn)的堆垛圖。
(a) 堆垛側(cè)視圖
(b) 堆垛俯視圖圖13 堆垛視圖
碼垛機(jī)器人實(shí)物如圖14所示。
圖14 碼垛機(jī)器人實(shí)物圖
圖15為整個(gè)碼垛機(jī)器人堆垛過(guò)程,吸盤每次都會(huì)在傳送帶固定的地點(diǎn)吸取木塊,然后讀取數(shù)組中的坐標(biāo)位置將木塊放置在指定位置。圖15(a)為第一層第一列的堆垛;圖15(b)為第一層的堆垛;圖15(c)為第二層的堆垛;圖15(d)為堆垛結(jié)束。
(a) 第一層第一列
(b) 第一層
(c) 第二層
(d) 堆垛結(jié)束圖15 碼垛機(jī)器人堆垛過(guò)程
本文設(shè)計(jì)了一種小成本高精度的龍門碼垛平臺(tái),根據(jù)成本和定位精度選擇使用帶補(bǔ)償?shù)拈]環(huán)步進(jìn)電動(dòng)機(jī),控制器采用STM32單片機(jī),相比PLC,成本降低了很多,采用了梯形加減速,運(yùn)行良好,控制精度也滿足了要求。