<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 步進電機一體化控制系統(tǒng)的設計

          步進電機一體化控制系統(tǒng)的設計

          作者: 時間:2016-10-25 來源:網絡 收藏

            1 引言

          本文引用地址:http://www.ex-cimer.com/article/201610/311791.htm

            作為一種數(shù)字伺服執(zhí)行元件,具有結構簡單、運行可靠、控制方便、控制性能好等優(yōu)點,廣泛應用在數(shù)控機床、機器人、自動化儀表等領域。為了實現(xiàn)的簡易運動控制,一般以單片機作為控制系統(tǒng)的微處理器,通過專用驅動芯片實現(xiàn)步進電機的速度和位置定位控制。

            2 圓弧插補改進算法

            逐點比較插補算法因其算法簡單、易實現(xiàn)且最大誤差不超過一個脈沖當量,在步進電機的位置控制中應用的相當廣泛[1>。圓弧插補中,為了確定一條圓弧的軌跡,可采用:給出圓心坐標、起點坐標和終點坐標;給出半徑、起點和終點坐標;給出圓弧的三點坐標等。在算法實現(xiàn)時這些參數(shù)若要存放在單片機內部資源有限的數(shù)據(jù)存儲器(RAM)中,如果要經過復雜的運算才能確定一段圓弧,不但給微處理器帶來負擔,而且要經過多步運算,往往會影響到算法的精確度。因此選取一種簡單且精確度高的插補算法是非常必要的。本文提出了一種改進算法:在圓弧插補中,無論圓弧在任何位置,是順圓或是逆圓,都以此圓弧的圓心作為原點來確定其他坐標。因此只須給出圓弧的起點坐標和圓弧角度就可以確定該圓弧。如果一個軸坐標用4個字節(jié)存儲(如12.36),而角度用2個字節(jié)存儲(如45°),則只需要10個字節(jié)即可確定一段二維的圓弧。較之起其他方法,最多可節(jié)省14個存儲單元。現(xiàn)以第I象限逆圓弧為例,計算其終點坐標。如圖1所示,(X0,Y0)為圓弧的起點坐標,(Xe,Ye)為圓弧的終點坐標,θ為圓弧的角度。

            

           

            圖1 圓弧軌跡示意圖

            圓弧半徑:

          ,

           

            終點坐標:

           

            終點坐標相對X軸的角度:

           

            本系統(tǒng)要求輸入的角度精確到1度,輸入坐標的分辨率是0.01,單片機C語言的浮點運算能精確到0.000001,按照上面的公式算出的終點坐標,雖存在誤差,但這個誤差小于1%,能夠滿足所要求的精確度。

            3 步進電機的變頻調速

            雖然步進電機具有快速啟停能力強、精度高、轉速容易控制的特點,但是在實際運行過程中由于啟動和停止控制不當,步進電機仍會出現(xiàn)啟動時抖動和停止時過沖的現(xiàn)象,從面影響系統(tǒng)的控制精度。尤其是步進電機工作在頻繁啟動和停止時,這種現(xiàn)象就更為明顯[2>。為此本文提出了一種基于單片機控制的步進電機加減速離散控制方法。加減速曲線如圖2 所示,縱坐標是頻率 f,單位為脈沖/秒或步/秒。橫坐標時間 t,單位為秒。步進電機以 f0 啟動后加速至 t1 時刻達到最高運行頻率 f,然后勻速運行,至 t2 時刻開始減速,在 t5 時刻電機停轉,總的步數(shù)為 N。其中電機從靜止加速至最高運行頻率和從最高運行頻率至停止至是步進電機控制的關鍵,通常采用勻加速和勻減速方式。

            

           

            圖2 時間與頻率的函數(shù)圖

            

           

            圖3 離散化的時間變頻圖

            采用單片機對步進電機進行加減速控制,實際上就是改變輸出脈沖的時間間隔,可采用軟件和硬件兩種方法。軟件方法依靠延時程序來改變脈沖輸出的頻率,其中延時的長短是動態(tài)的,該方法因為要不停地產生控制脈沖,占用了大量的CPU時間;硬件方法是依靠單片機內部的定時器來實現(xiàn)的,在每次進入定時中斷后,改變定時常數(shù)(定時器裝載值),從而升速時使脈沖頻率逐漸增大,減速時使脈沖頻率逐漸減小。這種方法占用CPU時間較少,是一種效率比較高的步進電機調速方法??紤]到單片機資源(字長)和編程的方便,不需要每步都計算定時器裝載值。如圖3所示,采用離散方法將加減速曲線離散化。離散化后速度是分臺階上升的,而且每上升一個臺階都要在該臺階保持一段時間,以克服由于步進電機轉子轉動慣量所引起的速度滯后。只有當實際運行速度達到預設值后才能急速加速,實際上也是局部速度誤差的自動糾正。

            4 系統(tǒng)軟硬件協(xié)同設計

            對于51系列單片機的軟件開發(fā),傳統(tǒng)的方法是在PC機上采用Keil等開發(fā)工具進行程序設計、編譯、調試,待程序調試通過之后生成目標文件下載至單片機硬件電路再進行硬件調試[3>。這種方法只有硬件電路完成之后才能進行系統(tǒng)功能測試,若此時發(fā)現(xiàn)硬件電路存在設計問題且必須進行修改時就會顯著影響系統(tǒng)開發(fā)的成本和周期。為此,本文采用了系統(tǒng)軟硬件協(xié)同仿真的開發(fā)方法,使得硬件電路實現(xiàn)前的功能測試成為可能。同時硬件電路的軟件化仿真為硬件電路的設計與實現(xiàn)提供了有力的保障。其中在Keil uVision2集成開發(fā)環(huán)境下,實現(xiàn)步進電機控制系統(tǒng)的程序設計、編譯、調試,并最終生成目標文件 *.hex,而由英國Proteus Labcenter electronics公司所提供的EDA工具Proteus則利用該目標文件 *.hex 實現(xiàn)對步進電機控制系統(tǒng)硬件電路功能的測試。

            

           

            圖4 步進電機控制系統(tǒng)硬件電路仿真

            如圖4所示,單片機AT89C55司職步進電機控制器,通過運行在Keil uVision2 環(huán)境下所開發(fā)的程序來控制兩個步進電機驅動芯片L298,從而實現(xiàn)對AXIS_X / AXIS_Y兩軸步進電機的聯(lián)動控制。L298驅動芯片的步進脈沖輸入信號來自AT89C55 P0端口,使能信號ENABLE A與ENABLE B并聯(lián)接到AT89C55的P3.0、P3.1口,由程序控制實現(xiàn)步進電機的使能,從而避免電機線圈處于短路狀態(tài)而燒壞驅動芯片。4 x 4鍵盤陣列接AT89C55的P1端口,通過程序設計定義每個按鍵的具體功能。LCD的數(shù)據(jù)端口DB0~DB7接AT89C55的P2端口,控制端口RS, RW, E分別接單片機的P3.5, P3.6, P3.7口。相關的參數(shù)值、X/Y軸坐標值可以通過LCD以文本方式顯示。本文采用軟硬件協(xié)同仿真的方法經過設計à測試à修正à再測試一次次迭代開發(fā),在制作控制系統(tǒng)硬件電路之前即可實現(xiàn)對系統(tǒng)整機功能的測試。待系統(tǒng)程序和硬件電路設計方案最終完善之后便可以實際制作如圖5所示的硬件電路。顯然該種方法可以顯著提高系統(tǒng)軟硬件開發(fā)的成功率,從而有效降低系統(tǒng)的開發(fā)周期和開發(fā)成本。

            5 應用實例

            圖5即是根據(jù)圖4進行硬件電路仿真的最終結果所制作的步進電機控制系統(tǒng)電路板。該電路驅動X/Y軸步進電機通過滾珠絲桿帶動二維工作臺作聯(lián)動,并由一只鉛筆模擬加工刀具將所要加工的二維軌跡描繪出來。

            

           

            圖5步進電機控制系統(tǒng)硬件電路

            

           

            圖6 二維模擬工作平臺運動軌跡



          關鍵詞: 步進電機

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();