金 星, 李向廣
(長(zhǎng)春工業(yè)大學(xué)電氣與電子工程學(xué)院,吉林長(zhǎng)春 130012)
在二維平面上自由移動(dòng)是各種數(shù)控加工系統(tǒng)的重要功能,二自由度運(yùn)動(dòng)平臺(tái)在各種數(shù)控加工系統(tǒng)中的應(yīng)用也十分廣泛。單片機(jī)具有體積小、價(jià)格低、性能可靠等優(yōu)點(diǎn),步進(jìn)電機(jī)在位移控制方面有著獨(dú)到的優(yōu)勢(shì)。因此,基于單片機(jī)和步進(jìn)電機(jī)設(shè)計(jì)二自由度運(yùn)動(dòng)平臺(tái)系統(tǒng)是一種重要的方法和手段,該系統(tǒng)可以實(shí)現(xiàn)在二維平面上作高精度、高可靠性自由移動(dòng),并且有較高的實(shí)際使用價(jià)值[1]。
本運(yùn)動(dòng)平臺(tái)機(jī)械結(jié)構(gòu)如圖1所示。
包括:X平臺(tái)、Y平臺(tái)及安裝在Y平臺(tái)之上的工作臺(tái),X,Y平臺(tái)均包括步進(jìn)電機(jī)、滾珠絲杠和支撐工作臺(tái)的圓柱導(dǎo)軌。X平臺(tái)上的步進(jìn)電機(jī)轉(zhuǎn)動(dòng),帶動(dòng)滾珠絲杠旋轉(zhuǎn),Y平臺(tái)和工作臺(tái)便可在X軸向上自由移動(dòng)。同理,Y平臺(tái)上絲杠轉(zhuǎn)動(dòng)可以帶動(dòng)工作平臺(tái)在Y軸向上自由移動(dòng)。安裝在最上層的工作平臺(tái)可以在X和Y這兩個(gè)相互垂直的軸向上自由移動(dòng),所以,工作平臺(tái)能夠在二維平面上自由移動(dòng)。

圖1 平臺(tái)機(jī)械結(jié)構(gòu)
本系統(tǒng)采用閉環(huán)控制,系統(tǒng)的結(jié)構(gòu)如圖2所示。

圖2 系統(tǒng)結(jié)構(gòu)圖
包括單片機(jī)控制模塊、電機(jī)驅(qū)動(dòng)模塊、光柵尺反饋光耦限位模塊、按鍵顯示、通信模塊等。上位機(jī)通過(guò)串口發(fā)送命令,單片機(jī)輸出兩路步進(jìn)電機(jī)控制信號(hào),滾珠絲杠將步進(jìn)電機(jī)的旋轉(zhuǎn)運(yùn)動(dòng)轉(zhuǎn)換為直線(xiàn)運(yùn)動(dòng),實(shí)現(xiàn)工作平臺(tái)的二自由度平面運(yùn)動(dòng)[2]。平臺(tái)運(yùn)動(dòng),X,Y軸向的光柵尺輸出兩路脈沖信號(hào)將工作臺(tái)的絕對(duì)位置反饋給處理器。平臺(tái)的運(yùn)動(dòng)極限位置分別用4個(gè)光耦標(biāo)定X,Y軸向的零位和滿(mǎn)位,防止電機(jī)運(yùn)動(dòng)到極限位置因堵轉(zhuǎn)而損壞。在上位機(jī)無(wú)指令的情況下,可用按鍵控制平臺(tái)運(yùn)動(dòng),液晶實(shí)時(shí)顯示平臺(tái)的運(yùn)動(dòng)模式和X,Y軸的坐標(biāo)。
系統(tǒng)軟件部分由上位機(jī)軟件和下位機(jī)軟件構(gòu)成。
上位機(jī)軟件采用Visual C++6.0編寫(xiě),其主要功能是為操作人員提供一個(gè)簡(jiǎn)單便捷的操作界面,方便用戶(hù)設(shè)定平臺(tái)的運(yùn)動(dòng)模式,設(shè)置平臺(tái)運(yùn)動(dòng)參數(shù)[3]。
下位機(jī)軟件使用C語(yǔ)言編寫(xiě),其實(shí)現(xiàn)功能有:
1)與上位機(jī)通信;
2)對(duì)步進(jìn)電機(jī)實(shí)時(shí)控制并將運(yùn)動(dòng)模式和坐標(biāo)顯示到液晶上;
3)讀取光柵尺、光耦等反饋信號(hào)。
下位機(jī)軟件系統(tǒng)流程如圖3所示。

圖3 系統(tǒng)軟件流程圖
上電后系統(tǒng)進(jìn)行初始化,初始化結(jié)束后等待上位機(jī)命令。下位機(jī)接收上位機(jī)命令后,確定運(yùn)動(dòng)方式、運(yùn)行參數(shù)后驅(qū)動(dòng)電機(jī)做相應(yīng)運(yùn)動(dòng),并通過(guò)光柵尺反饋信號(hào)進(jìn)行精確定位和控制。任務(wù)結(jié)束后,可以重新設(shè)定運(yùn)行模式和參數(shù),也可以通過(guò)按鍵使平臺(tái)回到X,Y零位,即回到坐標(biāo)原點(diǎn)。
平臺(tái)每行進(jìn)一步都要進(jìn)行:判別偏差、進(jìn)給坐標(biāo)、計(jì)算新偏差和終點(diǎn)判別4個(gè)步驟。
系統(tǒng)采用的是改進(jìn)的逐點(diǎn)比較直線(xiàn)插補(bǔ)算法,以避免單片機(jī)進(jìn)行較復(fù)雜的數(shù)學(xué)運(yùn)算。現(xiàn)以第一象限為例求其偏差公式。
直線(xiàn)插補(bǔ)過(guò)程如圖4所示。

圖4 直線(xiàn)插補(bǔ)過(guò)程
設(shè)平臺(tái)沿直線(xiàn)OA運(yùn)動(dòng),以原點(diǎn)O為起點(diǎn),以A為終點(diǎn),P(xi,yi)為工作點(diǎn),設(shè)偏差判別函數(shù)為:

通過(guò)式(1)計(jì)算Fi,j的值就可以判別P點(diǎn)與的相對(duì)位置,從而運(yùn)動(dòng)臺(tái)作出相應(yīng)的反應(yīng)趨向,每前進(jìn)一步判別一次Fi,j,然后控制運(yùn)動(dòng)臺(tái)向靠近,逐點(diǎn)比較,逐步前進(jìn),逐點(diǎn)靠近[4]。當(dāng)?shù)竭_(dá)A點(diǎn)后,發(fā)出信號(hào),停止運(yùn)動(dòng)。由于平臺(tái)每前進(jìn)一步都要進(jìn)行偏差判別、進(jìn)給坐標(biāo),計(jì)算新偏差和終點(diǎn)判別,按照式(1)的思想進(jìn)行下位機(jī)軟件設(shè)計(jì),要進(jìn)行乘法和減法計(jì)算,同時(shí)單片機(jī)還要讓液晶實(shí)時(shí)顯示坐標(biāo),其運(yùn)算量較大,嚴(yán)重影響系統(tǒng)的實(shí)時(shí)性和精度。因此本設(shè)計(jì)采用改進(jìn)的插補(bǔ)算法,用前一步的偏差計(jì)算本次偏差:
若Fi,j≥0時(shí),平臺(tái)需向+x方向前進(jìn)一步,平臺(tái)從(xi,yj)到達(dá)新點(diǎn)P(xi+1,yj),新點(diǎn)坐標(biāo)為xi+1=xi+1,yj=y(tǒng)j,因此新點(diǎn)P(xi+1,yj)的偏差值為:

若Fi,j<0,則平臺(tái)需向+y方向前進(jìn)一步,新點(diǎn)坐標(biāo)為xi=xi,yj+1=y(tǒng)j+1,新點(diǎn)P(xi,yj+1)的偏差值為:

由式(2)和式(3)可以看出,后一點(diǎn)的坐標(biāo)偏差可以由前一點(diǎn)的偏差值計(jì)算得出,只需做簡(jiǎn)單的加減法,對(duì)于適合做加減法的單片機(jī)而言,此方法比其它直線(xiàn)插補(bǔ)算法運(yùn)算簡(jiǎn)單、程序編寫(xiě)容易且不失精度[5]。
圓的軌跡運(yùn)動(dòng)核心思想是把點(diǎn)到圓心的距離和此圓的半徑進(jìn)行比較來(lái)反映運(yùn)行偏差。下面以第一象限逆圓弧為例求偏差計(jì)算公式[6]。
圓弧插補(bǔ)過(guò)程如圖5所示。

圖5 圓弧插補(bǔ)過(guò)程

求Fi,j的過(guò)程中含有4個(gè)平方計(jì)算,非常不便于單片機(jī)的軟件設(shè)計(jì),系統(tǒng)響應(yīng)慢,實(shí)時(shí)性低,為了降低運(yùn)算的復(fù)雜性,需要對(duì)偏差判別式進(jìn)行簡(jiǎn)化來(lái)計(jì)算新的運(yùn)行偏差。
設(shè)P(xi,yj)在圓弧外側(cè)或圓弧上,則偏差為Fi,j≥0,x坐標(biāo)需向負(fù)向前進(jìn)一步,移到新點(diǎn)P(xi+1,yj),此時(shí)新點(diǎn)橫坐標(biāo)為xi-1,縱坐標(biāo)值仍為yi,新點(diǎn)P(xi+1,yj)的運(yùn)動(dòng)偏差為:

同理,當(dāng)點(diǎn)p(xi,yj)在圓弧的內(nèi)側(cè)時(shí),F(xiàn)i,j<0,那么,縱坐標(biāo)需向正方向前進(jìn)一步,移到新點(diǎn)p(xi,yj+1),此時(shí)新點(diǎn)的橫坐標(biāo)不變?nèi)詾閤i,縱坐標(biāo)則變?yōu)閥j+1,新點(diǎn)p(xi,yj+1)的運(yùn)動(dòng)偏差為:

由式(5)和式(6)可知,通過(guò)前一點(diǎn)運(yùn)動(dòng)偏差可以避開(kāi)復(fù)雜的平方運(yùn)算,輕松得到當(dāng)前點(diǎn)的運(yùn)動(dòng)偏差,且不失精度。
本項(xiàng)目采用的終點(diǎn)判別方法是設(shè)置一個(gè)終點(diǎn)減法計(jì)數(shù)器E,插補(bǔ)運(yùn)算開(kāi)始前記入該程序x及y坐標(biāo)的加工總長(zhǎng)(即x和y的位移總步數(shù)),在插補(bǔ)過(guò)程中,x或y向每走一步,就從總步數(shù)中減去1,直至E中存數(shù)被減為零,表示到達(dá)終點(diǎn)。
選用的步進(jìn)電機(jī)型號(hào)為56BYG250D步進(jìn)角為1.8°,采用2細(xì)分步進(jìn)電機(jī)驅(qū)動(dòng)器[7-8],滾珠絲杠螺距為4 mm;光柵尺型號(hào)為SR-4N-T-5X-350-0-0,平臺(tái)在X或Y軸向上每移動(dòng)1 mm產(chǎn)生250個(gè)脈沖,經(jīng)過(guò)倍頻電路后產(chǎn)生500個(gè)脈沖。通過(guò)上位機(jī)設(shè)置起止點(diǎn)坐標(biāo),平臺(tái)按“矩形-斜線(xiàn)-圓”軌跡運(yùn)動(dòng),測(cè)得試驗(yàn)結(jié)果如圖6所示。

圖6 試驗(yàn)結(jié)果
由試驗(yàn)結(jié)果可以看出,即使將試驗(yàn)畫(huà)筆的機(jī)械誤差疊加上,平臺(tái)在連續(xù)動(dòng)作后的累積誤差也保持在0.5 mm以?xún)?nèi),這樣的精度對(duì)于高可靠性、低成本的單片機(jī)控制的二維自由運(yùn)動(dòng)平臺(tái)來(lái)說(shuō)已是很高。
由于采用如此高精度的光柵尺來(lái)定位平臺(tái)運(yùn)動(dòng)的絕對(duì)位置,可以避免電機(jī)因平臺(tái)過(guò)重導(dǎo)致的失步而使精度下降的問(wèn)題。高精度的機(jī)械結(jié)構(gòu)加上改進(jìn)的逐點(diǎn)比較插補(bǔ)算法,可以確保整個(gè)平臺(tái)的高精度運(yùn)行。
[1] 董永謙,狄希遠(yuǎn),張志耀,等.高速精密運(yùn)動(dòng)平臺(tái)研制[J].電子工藝技術(shù),2011,32(3):173-176.
[2] 王曉明.電動(dòng)機(jī)的單片機(jī)控制[M].北京:北京航空航天大學(xué)出版社,2002.
[3] 于建清,龔德俊,徐永平,等.步進(jìn)電動(dòng)機(jī)控制二維運(yùn)動(dòng)平臺(tái)系統(tǒng)的軟件設(shè)計(jì)[J].電機(jī)與控制應(yīng)用,2008,35(3):18-20.
[4] 唐慧鋒.改進(jìn)逐點(diǎn)比較法圓弧插補(bǔ)的研究與仿真[J].微計(jì)算機(jī)信息,2006,22(15):240-241.
[5] 楊威,應(yīng)保勝.逐點(diǎn)比較直線(xiàn)算法的優(yōu)化[J].武漢科技大學(xué)學(xué)報(bào):自然科學(xué)版,2012,35(3):222-224.
[6] 浦艷敏.關(guān)于數(shù)據(jù)采樣圓弧插補(bǔ)算法的研究[J]. 2009,15(5):54-56.
[7] 安志勇,楊帆,曹秒,等.STC單片機(jī)和絕對(duì)式編碼器的步進(jìn)電機(jī)控制算法[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2013,34(1):64-68.
[8] 鄭振華,郭慶,吳國(guó)鋮.基于插補(bǔ)算法的二維數(shù)控平臺(tái)研究與設(shè)計(jì)[J].測(cè)控技術(shù),2010,29(6):58-61.