【matlab編程代做】步進電機控制器設(shè)計_第1頁
【matlab編程代做】步進電機控制器設(shè)計_第2頁
【matlab編程代做】步進電機控制器設(shè)計_第3頁
【matlab編程代做】步進電機控制器設(shè)計_第4頁
【matlab編程代做】步進電機控制器設(shè)計_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、步進電機控制器設(shè)計報告1.緒言在本次EDA課程設(shè)計中,我們組選擇了做一個步進電機驅(qū)動程序的課題。對于步進電機我們以前并未接觸過,它的工作原理是什么,它是如何工作的,我們應(yīng)該如何控制它的轉(zhuǎn)停,這都是我們迫切需要了解的。步進電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機加一個脈沖信號,電機則轉(zhuǎn)過一個步距角。這一線性關(guān)系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領(lǐng)域用步進電機來控制變的非常的簡單。步進電機及驅(qū)動電源是互相聯(lián)系的整體。步進電機驅(qū)動電源框圖如圖

2、1所示。變頻信號源產(chǎn)生頻率可調(diào)的脈沖信號,調(diào)節(jié)步進電機的速度。脈沖分配器則根據(jù)要求把脈沖信號按一定的邏輯關(guān)系加到脈沖放大器上,使步進電機按確定的運行方式工作。感應(yīng)子式步進電機以相數(shù)可分為:二相電機、三相電機、四相電機、五相電機等。以機座號(電機外徑)可分為:42BYG(BYG 為感應(yīng)子式步進電機代號)、57BYG、86BYG 、110BYG 、(國際標(biāo)準(zhǔn)), 而像70BYG 、90BYG 、130BYG 等均為國內(nèi)標(biāo)準(zhǔn)。1.1 驅(qū)動控制系統(tǒng)組成使用、控制步進電機必須由環(huán)形脈沖,功率放大等組成的控制系統(tǒng)。1.1.1 脈沖信號的產(chǎn)生脈沖信號一般由單片機或CPU 產(chǎn)生,一般脈沖信號的占空比為0.3-

3、0.4 左右,電機轉(zhuǎn)速越高,占空比則越大。 1.1.2 信號分配感應(yīng)子式步進電機以二、四相電機為主,二相電機工作方式有二相四拍和二相八拍二種,具體分配如下:二相四拍為,步距角為1.8 度;二相八拍為,步距角為0.9 度。四相電機工作方式也有二種,四相四拍為AB-BC-CD-DA-AB,步距角為1.8 度;四相八拍為AB-B-BC-C-CD-D-AB,(步距角為0.9 度)。 2.課題要求2.1 步進電機控制器設(shè)計 要求: (1) start為”1”時,步進電機轉(zhuǎn)動。 start為”0”時,步進電機停轉(zhuǎn)。 (2) 預(yù)設(shè)step_in為常數(shù),當(dāng)clk為上升沿,load和start為”1加載時,電機

4、開始轉(zhuǎn)動,轉(zhuǎn)動step_in次后,停止轉(zhuǎn)動。當(dāng)下次符合此要求時將再次轉(zhuǎn)動。 (3) 通過load,,step_in同步或異步載入steps值。示意圖如下: 圖2如圖2所示,為步進電機控制器的輸入輸出示意圖。其中:load為加載信號 start為步進電機啟動信號en為使能信號reset為置位清零信號clk為時鐘信號step_in15.0表示輸入的十六位二進制數(shù),其數(shù)值范圍用十進制數(shù)表示為0-65535。 Coil_out3.0表示輸出,共有A,B,A,B四種狀態(tài)。 A,B,A,B四種轉(zhuǎn)動狀態(tài)可用圖3表示,電機按下圖A- B- A- B- A循環(huán)轉(zhuǎn)動,每轉(zhuǎn)過一次變換90度。當(dāng)Coil_out3.0

5、=“1000”,指針指向A;當(dāng)Coil_out3.0=“0100”,指針指向B;當(dāng)Coil_out3.0=“0010”,指針指向A;當(dāng)Coil_out3.0=“0001”,指針指向B;當(dāng)Coil_out3.0=“0000”,電機不工作。 圖32.2 通過網(wǎng)絡(luò)上收集資料,圖書館查閱書本,我們逐步了解了步進電機,了解它的基本工作原理后我們我們逐漸形成了一些驅(qū)動程序的基本構(gòu)思,我們決定利用狀態(tài)機的工作方式去編寫步進電機的驅(qū)動。3.方案設(shè)計與論證3.1 狀態(tài)機關(guān)于狀態(tài)機的一個極度確切的描述是它是一個有向圖形,由一組節(jié)點和一組相應(yīng)的轉(zhuǎn)移函數(shù)組成。狀態(tài)機通過響應(yīng)一系列事件而“運行”。每個事件都在屬于“當(dāng)前

6、” 節(jié)點的轉(zhuǎn)移函數(shù)的控制范圍內(nèi),其中函數(shù)的范圍是節(jié)點的一個子集。函數(shù)返回“下一個”(也許是同一個)節(jié)點。這些節(jié)點中至少有一個必須是終態(tài)。當(dāng)?shù)竭_終態(tài),狀態(tài)機停止。包含一組狀態(tài)集(states)、一個起始狀態(tài)(start state)、一組輸入符號集(alphabet)、一個映射輸入符號和當(dāng)前狀態(tài)到下一狀態(tài)的轉(zhuǎn)換函數(shù)(transition function)的計算模型。當(dāng)輸入符號串,模型隨即進入起始狀態(tài)。它要改變到新的狀態(tài),依賴于轉(zhuǎn)換函數(shù)。在有限狀態(tài)機中,會有有許多變量,例如,狀態(tài) 機有很多與動作(actions)轉(zhuǎn)換(Mealy機)或狀態(tài)(摩爾機)關(guān)聯(lián)的動作,多重起始狀態(tài),基于沒有輸入符號的轉(zhuǎn)換

7、,或者指定符號和狀態(tài)(非定有 限狀態(tài)機)的多個轉(zhuǎn)換,指派給接收狀態(tài)(識別者)的一個或多個狀態(tài)等等。傳統(tǒng)應(yīng)用程序的控制流程基本是順序的:遵循事先設(shè)定的邏輯,從頭到尾地執(zhí)行。很少有事件能改變標(biāo)準(zhǔn)執(zhí)行流程;而且這些事件主要涉及異常情況?!懊钚袑嵱贸绦颉笔沁@種傳統(tǒng)應(yīng)用程序的典型例子。另一類應(yīng)用程序由外部發(fā)生的事件來驅(qū)動換言之,事件在應(yīng)用程序之外生成,無法由應(yīng)用程序或程序員來控制。具體需要執(zhí)行的代碼取決于接收到的事件,或者它相對于其他事件的抵達時間。所以,控制流程既不能是順序的,也不能是事先設(shè)定好的,因為它要依賴于外部事件。事件驅(qū)動的GUI應(yīng)用程序是這種應(yīng)用程序的典型例子,它們由命令和選擇(也就是用戶

8、造成的事件)來驅(qū)動。3.2 設(shè)計論證利用狀態(tài)機的工作原理來設(shè)計步進電機的控制程序。本課題要求需要輸出五種狀態(tài),其中有四種轉(zhuǎn)動狀態(tài),電機即按照此四種狀態(tài)旋轉(zhuǎn),還有一種狀態(tài)是用于保護電機,避免電機因通電過長而燒壞。3.3 最初設(shè)計:按照由易及難的原則,即將steps值固定,使電機轉(zhuǎn)動步數(shù)恒定,每次觸發(fā)旋轉(zhuǎn)則按照固定steps值轉(zhuǎn),轉(zhuǎn)動steps值后停轉(zhuǎn)。二次修改:在設(shè)計好最初的目標(biāo)程序后,我們有對程序進行改進,即增加了steps預(yù)設(shè)功能,在進行波形仿真的時候,可修改輸入信號step_in的值(16位二進制數(shù)),從而改變步進電機的轉(zhuǎn)動步數(shù)。更高要求:(1)在電機停轉(zhuǎn)之后,應(yīng)使輸出為零,即保持電機的電

9、路電流為零,從而達到保護電機不被燒毀的目的。(2)在電機停轉(zhuǎn)之后,若再次啟動旋轉(zhuǎn),則從上次停止的位置繼續(xù)旋轉(zhuǎn),這是符合實際情況的仿真。(3)在電機停轉(zhuǎn)之后,利用PWM技術(shù)對電路進行控制。 3.4鑒于以上要求,我們組經(jīng)過一周左右時間利用VHDL語言設(shè)計出了符合課題要求的步進電機控制器程序(見附錄)。如下圖4所示,為步進電機控制仿真波形圖:圖4圖4中顯示的是step_in值分別為10,8,12三種情況(16進制表示)時,Coil_out的輸出情況,結(jié)果表明波形仿真與設(shè)計要求相符。4. 總結(jié)與體會在編寫程序的過程中我們出現(xiàn)了很多這樣那樣的困難,但我們并沒有氣餒,而是認(rèn)真的探討研究,終于將其一一解決。

10、在編程的開始我們就遇到了麻煩,輸入端口step_in是輸入了一個16位的二進制數(shù),為了下面計數(shù)簡單一點需要將其轉(zhuǎn)換為十進制數(shù)。開始我們打算用數(shù)據(jù)類型轉(zhuǎn)換函數(shù)TO_INTEGER將STD_LOGIC_VECTOR轉(zhuǎn)換成INTEGER,這需要調(diào)用DATAIO庫,可在編譯的時候提示找不到DATAIO庫,我們只有放棄這一思路,另謀出入。在一次翻閱圖書館資料的時候我無意中發(fā)現(xiàn)了一個新思路,就是在實體的說明語句中直接將step_in定義為step_in:IN INTEGER RANGE 65535 TO 0,這樣電腦可以將輸入的二進制自動轉(zhuǎn)換為十進制的。步進值輸入了,那就要開始計數(shù),本來我們想用加法從0開

11、始計數(shù),但在編程實現(xiàn)這一想法的時候我們發(fā)現(xiàn)這樣做需要考慮的因素太多了,實現(xiàn)起來也比較困難。所以有人提議我們試著用減法計數(shù),我們照著做了,結(jié)果發(fā)現(xiàn)這樣編確實很簡單,而且程序也簡潔明了。在老師檢查我們的程序的時候,老師發(fā)現(xiàn)了一個嚴(yán)重的漏洞,就是在轉(zhuǎn)動steps停轉(zhuǎn)后電機仍保持著當(dāng)前狀態(tài),這樣長時間通電會導(dǎo)致電機燒壞。我們思考了一會決定給狀態(tài)機增加一個狀態(tài),就是停轉(zhuǎn)的時候不給電機通電,在停轉(zhuǎn)的時候給電機這樣一個狀態(tài)可以起到保護的作用。在第二次給檢查的時候,老師又發(fā)現(xiàn)了要改進的地方,那就是在轉(zhuǎn)了一個步進值之后又給電機一個加載信號,使電機進行二次工作,此時應(yīng)緊接著上一次的狀態(tài)繼續(xù)工作,而我們的卻從“10

12、00”狀態(tài)重新開始的。經(jīng)過反復(fù)思考,我們決定增加一個變量before_state,使之保留當(dāng)前狀態(tài),即當(dāng)current_state處于s0狀態(tài)時, next_state=s1,before_state=s0。這樣我們就解決了這一問題。在這次編程中還有一個最令人頭痛的問題,我們這個課題有很多的輸入,要使電機轉(zhuǎn)動有很多的條件,這就用到很多的if語句,可是在嵌套使用的過程中總是有問題,電腦顯示太復(fù)雜,經(jīng)過無數(shù)次的調(diào)整,最后也被我們克服了。在這次課程設(shè)計中,我們學(xué)到了關(guān)于EDA的很多其他知識點,對EDA有了更深的認(rèn)識,擴展了知識面。同時我們也有很多的體會,課程設(shè)計是四人一組的,這就需要我們有著良好的團

13、隊合作意識,正是我們四個人的通力合作才順利完成了本次課程設(shè)計,每個人在這次課程設(shè)計中都扮演著重要的角色,每段程序都凝結(jié)著我們智慧的結(jié)晶,正所謂“三個臭皮匠頂上一個諸葛亮”。我們遇到困難時,并沒有退卻,而是勇敢的面對,正是這種不怕困難的精神克服了一個又一個難點。老師在選題時曾說過,步進電機是比較有難度的,但這并未成為我們的阻力,反而成了我們不斷超越的動力!總而言之,本次課程設(shè)計讓我們受益匪淺!5.參考文獻5.1 VHDL電路設(shè)計技術(shù) 王道憲主編。5.2 電子技術(shù)基礎(chǔ)實驗 陳大欽等著。5.3 EDA技術(shù)及應(yīng)用(第二版) 譚會生、張昌凡編著。附錄:VHDL源程序代碼LIBRARY IEEE;USE

14、IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY stepmotor ISPORT(reset,clk,load,en,start:IN STD_LOGIC; step_in:IN INTEGER RANGE 65535 TO 0; coil_out:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END stepmotor;ARCHITECTURE ART OF stepmotor ISTYPE FWM1 IS(s0,s1,s2,s3,s4);SIGNAL current_state,next_state,before_state:FWM1;BEGINPROCESS(load,clk,en,start)ISVARIABLE count:INTEGER RANGE 65535 TO 0;BEGINIF(load=1)THENcount:=step_in+1;ELSIF(reset=1)THENcurrent_state0 AND start=1)THEN count:=count-1; IF(en=1)THEN current_state=next_state; END IF; IF(count=0)THEN current_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論