摘 要: 本文應(yīng)用單片機、步進電機驅(qū)動芯片、字符型LCD和鍵盤陣列,構(gòu)建了集步進電機控制器和驅(qū)動器為一體的步進電機控制系統(tǒng)。二維工作臺作為被控對象通過步進電機驅(qū)動滾珠絲桿在X/Y軸方向聯(lián)動。文中討論了一種以最少參數(shù)確定一條圓弧軌跡的插補方法和步進電機變頻調(diào)速的方法。步進電機控制系統(tǒng)的開發(fā)采用了軟硬件協(xié)同仿真的方法,可以有效地減少系統(tǒng)開發(fā)的周期和成本。最后給出了步進電機控制系統(tǒng)的應(yīng)用實例。
關(guān)鍵詞: 步進電機控制系統(tǒng),插補算法,變頻調(diào)速,軟硬件協(xié)同仿真
1 引言
作為一種數(shù)字伺服執(zhí)行元件,步進電機具有結(jié)構(gòu)簡單、運行可靠、控制方便、控制性能好等優(yōu)點,廣泛應(yīng)用在數(shù)控機床、機器人、自動化儀表等領(lǐng)域。為了實現(xiàn)步進電機的簡易運動控制,一般以單片機作為控制系統(tǒng)的微處理器,通過步進電機專用驅(qū)動芯片實現(xiàn)步進電機的速度和位置定位控制。
2 圓弧插補改進算法
逐點比較插補算法因其算法簡單、易實現(xiàn)且最大誤差不超過一個脈沖當(dāng)量,在步進電機的位置控制中應(yīng)用的相當(dāng)廣泛[1]。圓弧插補中,為了確定一條圓弧的軌跡,可采用:給出圓心坐標(biāo)、起點坐標(biāo)和終點坐標(biāo);給出半徑、起點和終點坐標(biāo);給出圓弧的三點坐標(biāo)等。在算法實現(xiàn)時這些參數(shù)若要存放在單片機內(nèi)部資源有限的數(shù)據(jù)存儲器(RAM)中,如果要經(jīng)過復(fù)雜的運算才能確定一段圓弧,不但給微處理器帶來負(fù)擔(dān),而且要經(jīng)過多步運算,往往會影響到算法的精確度。因此選取一種簡單且精確度高的插補算法是非常必要的。本文提出了一種改進算法:在圓弧插補中,無論圓弧在任何位置,是順圓或是逆圓,都以此圓弧的圓心作為原點來確定其他坐標(biāo)。因此只須給出圓弧的起點坐標(biāo)和圓弧角度就可以確定該圓弧。如果一個軸坐標(biāo)用4個字節(jié)存儲(如12.36),而角度用2個字節(jié)存儲(如45°),則只需要10個字節(jié)即可確定一段二維的圓弧。較之起其他方法,最多可節(jié)省14個存儲單元,F(xiàn)以第I象限逆圓弧為例,計算其終點坐標(biāo)。如圖1所示,(X0,Y0)為圓弧的起點坐標(biāo),(Xe,Ye)為圓弧的終點坐標(biāo),θ為圓弧的角度。
圖1 圓弧軌跡示意圖
圓弧半徑: ,
終點坐標(biāo):
終點坐標(biāo)相對X軸的角度:
本系統(tǒng)要求輸入的角度精確到1度,輸入坐標(biāo)的分辨率是0.01,單片機C語言的浮點運算能精確到0.000001,按照上面的公式算出的終點坐標(biāo),雖存在誤差,但這個誤差小于1%,能夠滿足所要求的精確度。
3 步進電機的變頻調(diào)速
雖然步進電機具有快速啟停能力強、精度高、轉(zhuǎn)速容易控制的特點,但是在實際運行過程中由于啟動和停止控制不當(dāng),步進電機仍會出現(xiàn)啟動時抖動和停止時過沖的現(xiàn)象,從面影響系統(tǒng)的控制精度。尤其是步進電機工作在頻繁啟動和停止時,這種現(xiàn)象就更為明顯[2]。為此本文提出了一種基于單片機控制的步進電機加減速離散控制方法。加減速曲線如圖2 所示,縱坐標(biāo)是頻率 f,單位為脈沖/秒或步/秒。橫坐標(biāo)時間 t,單位為秒。步進電機以 f0 啟動后加速至 t1 時刻達到最高運行頻率 f,然后勻速運行,至 t2 時刻開始減速,在 t5 時刻電機停轉(zhuǎn),總的步數(shù)為 N。其中電機從靜止加速至最高運行頻率和從最高運行頻率至停止至是步進電機控制的關(guān)鍵,通常采用勻加速和勻減速方式。
圖2 時間與頻率的函數(shù)圖
圖3 離散化的時間變頻圖
采用單片機對步進電機進行加減速控制,實際上就是改變輸出脈沖的時間間隔,可采用軟件和硬件兩種方法。軟件方法依靠延時程序來改變脈沖輸出的頻率,其中延時的長短是動態(tài)的,該方法因為要不停地產(chǎn)生控制脈沖,占用了大量的CPU時間;硬件方法是依靠單片機內(nèi)部的定時器來實現(xiàn)的,在每次進入定時中斷后,改變定時常數(shù)(定時器裝載值),從而升速時使脈沖頻率逐漸增大,減速時使脈沖頻率逐漸減小。這種方法占用CPU時間較少,是一種效率比較高的步進電機調(diào)速方法。考慮到單片機資源(字長)和編程的方便,不需要每步都計算定時器裝載值。如圖3所示,采用離散方法將加減速曲線離散化。離散化后速度是分臺階上升的,而且每上升一個臺階都要在該臺階保持一段時間,以克服由于步進電機轉(zhuǎn)子轉(zhuǎn)動慣量所引起的速度滯后。只有當(dāng)實際運行速度達到預(yù)設(shè)值后才能急速加速,實際上也是局部速度誤差的自動糾正。
4 系統(tǒng)軟硬件協(xié)同設(shè)計
對于51系列單片機的軟件開發(fā),傳統(tǒng)的方法是在PC機上采用Keil等開發(fā)工具進行程序設(shè)計、編譯、調(diào)試,待程序調(diào)試通過之后生成目標(biāo)文件下載至單片機硬件電路再進行硬件調(diào)試[3]。這種方法只有硬件電路完成之后才能進行系統(tǒng)功能測試,若此時發(fā)現(xiàn)硬件電路存在設(shè)計問題且必須進行修改時就會顯著影響系統(tǒng)開發(fā)的成本和周期。為此,本文采用了系統(tǒng)軟硬件協(xié)同仿真的開發(fā)方法,使得硬件電路實現(xiàn)前的功能測試成為可能。同時硬件電路的軟件化仿真為硬件電路的設(shè)計與實現(xiàn)提供了有力的保障。其中在Keil uVision2集成開發(fā)環(huán)境下,實現(xiàn)步進電機控制系統(tǒng)的程序設(shè)計、編譯、調(diào)試,并最終生成目標(biāo)文件 *.hex,而由英國Proteus Labcenter electronics公司所提供的EDA工具Proteus則利用該目標(biāo)文件 *.hex 實現(xiàn)對步進電機控制系統(tǒng)硬件電路功能的測試。
圖4 步進電機控制系統(tǒng)硬件電路仿真
如圖4所示,單片機AT89C55司職步進電機控制器,通過運行在Keil uVision2 環(huán)境下所開發(fā)的程序來控制兩個步進電機驅(qū)動芯片L298,從而實現(xiàn)對AXIS_X / AXIS_Y兩軸步進電機的聯(lián)動控制。L298驅(qū)動芯片的步進脈沖輸入信號來自AT89C55 P0端口,使能信號ENABLE A與ENABLE B并聯(lián)接到AT89C55的P3.0、P3.1口,由程序控制實現(xiàn)步進電機的使能,從而避免電機線圈處于短路狀態(tài)而燒壞驅(qū)動芯片。4 x 4鍵盤陣列接AT89C55的P1端口,通過程序設(shè)計定義每個按鍵的具體功能。LCD的數(shù)據(jù)端口DB0~DB7接AT89C55的P2端口,控制端口RS, RW, E分別接單片機的P3.5, P3.6, P3.7口。相關(guān)的參數(shù)值、X/Y軸坐標(biāo)值可以通過LCD以文本方式顯示。本文采用軟硬件協(xié)同仿真的方法經(jīng)過設(shè)計à測試à修正à再測試一次次迭代開發(fā),在制作控制系統(tǒng)硬件電路之前即可實現(xiàn)對系統(tǒng)整機功能的測試。待系統(tǒng)程序和硬件電路設(shè)計方案最終完善之后便可以實際制作如圖5所示的硬件電路。顯然該種方法可以顯著提高系統(tǒng)軟硬件開發(fā)的成功率,從而有效降低系統(tǒng)的開發(fā)周期和開發(fā)成本。
5 應(yīng)用實例
圖5即是根據(jù)圖4進行硬件電路仿真的最終結(jié)果所制作的步進電機控制系統(tǒng)電路板。該電路驅(qū)動X/Y軸步進電機通過滾珠絲桿帶動二維工作臺作聯(lián)動,并由一只鉛筆模擬加工刀具將所要加工的二維軌跡描繪出來。
圖5步進電機控制系統(tǒng)硬件電路
圖6 二維模擬工作平臺運動軌跡
6 結(jié)束語
本文在分析了傳統(tǒng)的逐點比較插補原理的基礎(chǔ)上提出了一種以最少的參數(shù)確定一條圓弧軌跡的插補方法。實現(xiàn)了一種有效的步進電機變頻調(diào)速的方法。采用系統(tǒng)軟硬件協(xié)同仿真的開發(fā)方法,使硬件電路實現(xiàn)前的功能測試成為現(xiàn)實,從而顯著改善系統(tǒng)開發(fā)的成本和周期。該種方法同樣也可以應(yīng)用于其它類型控制系統(tǒng)的開發(fā)。