

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 單片機課程設計報告</b></p><p> 步進電機控制系統(tǒng)設計</p><p> 姓 名: </p><p> 班 級: </p><p> 指導老師: </p>&
2、lt;p> 日期: 2013.6.08~2011.6.13 </p><p><b> 設計前述</b></p><p> 步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角。這一線性關系的存在,加上步進電機
3、只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領域用步進電機來控制變的非常的簡單。步進電機的調(diào)速一般是改變輸入步進電機的脈沖的頻率來實現(xiàn)步進電機的調(diào)速,因為步進電機每給一個脈沖就轉動一個固定的角度,這樣就可以通過控制步進電機的一個脈沖到下一個脈沖的時間間隔來改變脈沖的頻率,延時的長短來具體控制步進角來改變電機的轉速,從而實現(xiàn)步進電機的調(diào)速。本設計還通過按鍵控制電機正轉與反轉。</p><p><
4、b> 二、設計任務和要求</b></p><p> 設計步進電機單片機控制系統(tǒng),其功能如下:</p><p> 1.具有對步進電機的啟停、正反轉、加減速控制; </p><p> 2.控制按鈕分別為正轉、反轉、加速、減速、以及停止鍵; ? </p><p> 3.能夠通過三位LED數(shù)碼
5、管(或液晶顯示器)顯示當前的轉動速度,并且由兩只不同顏色的發(fā)光二極管分別指示正轉和反轉,因此可以清楚的顯示當前轉動方向和轉速;</p><p> 4.要求每組選擇的步進電機控制字不同;</p><p> 5.用單片機做控制微機;</p><p><b> 三、設計原理分析</b></p><p> 1、步進工作電
6、機原理</p><p> 1.1步進電機的特點:</p><p> ?。?)一般步進電機的精度為步進角的3-5%,且不累積。。</p><p> (2)步進電機的力矩會隨轉速的升高而下降。當步進電機轉動時,電機各相繞組的電感將形成一個反向電動勢;頻率越高,反向電動勢越大。在它的作用下,電機隨頻率(或速度)的增大而相電流減小,從而導致力矩下降。</p>
7、<p> ?。?)步進電機低速時可以正常運轉,但若高于一定速度就無法啟動,并伴有嘯叫聲。步進電機有一個技術參數(shù):空載啟動頻率,即步進電機在空載情況下能夠正常啟動的脈沖頻率,如果脈沖頻率高于該值,電機不能正常啟動,可能發(fā)生丟步或堵轉。在有負載的情況下,啟動頻率應更低。如果要使電機達到高速轉動,脈沖頻率應該有加速過程,即啟動頻率較低,然后按一定加速度升到所希望的高頻(電機轉速從低速升到高速)。 </p><
8、p> 1.2步進電機的工作原理:</p><p> 步進電機是一種用電脈沖進行控制 ,將電脈沖信號轉換成相位移的電機 ,其機械位移和轉速分別與輸入電機繞組的脈沖個數(shù)和脈沖頻率成正比 ,每一個脈沖信號可使步進電機旋轉一個固定的角度.脈沖的數(shù)量決定了旋轉的總角度 ,脈沖的頻率決定了電機運轉的速度.當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(稱為“步距角”),它的旋轉是以固
9、定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調(diào)速的目的。</p><p> 四相步進電機有兩種運行方式 1.四相四拍;2.四相八拍。</p><p> ?。?)拍數(shù): 完成一個磁場周期性變化所需脈沖數(shù)或導電狀態(tài)用n表示,或指電機轉過一個齒距角所需脈沖數(shù),以四相電機為例,有四相四拍運行方
10、式即A-B-C-D-A。</p><p> ?。?)步距角: 對應一個脈沖信號,電機轉子轉過的角位移用θ表示。θ=360度(轉子齒數(shù)J*運行拍數(shù)),以常規(guī)二、四相,轉子齒為50齒電機為例。四拍運行時步距角為θ=360度/(50*4)=1.8度(俗稱整步),八拍運行時步距角為θ=360度/(50*8)=0.9度(俗稱半步)。</p><p> 計算轉速#以基本步距角1.8°的步進
11、電機為例(現(xiàn)在市場上常規(guī)的二、四相混合式步進電機基本步距角都是1.8°),四相八拍運行方式下,每接收一個脈沖信號,轉過0.9°,如果每秒鐘接收400個脈沖,那么轉速為每秒400X0.9°=360°,相當與每秒鐘轉一圈,每分鐘60轉。。 </p><p> 1.3步進電機詳細調(diào)速原理:</p><p> 步進電機的調(diào)速一般是改變輸入步進電機的脈沖的
12、頻率來實現(xiàn)步進電機的調(diào)速,因為步進電機每給一個脈沖就轉動一個固定的角度,這樣就可以通過控制步進電機的一個脈沖到下一個脈沖的時間間隔來改變脈沖的頻率,延時的長短來具體控制步進角來改變電機的轉速,從而實現(xiàn)步進電的調(diào)速。具體的延時時間可以通過軟件來實現(xiàn)。</p><p> 這就需要采用單片機對步進電機進行加減速控制,實際上就是改變輸出脈沖的時間間隔,單片機控制步進電機加減法運轉可實現(xiàn)的方法有軟件和硬件兩種 ,軟件方法
13、指的是依靠延時程序來改變脈沖輸出的頻率,其中延時的長短是動態(tài)的,軟件法在電機控制中, 要不停地產(chǎn)生控制脈沖, 占用了大量的CPU 時間,使單片機無法同時進行其他工作;硬件方法是依靠單片機內(nèi)部的定時器來實現(xiàn)的,在每次進入定時中斷后,改變定時常數(shù),從而升速時使脈沖頻率逐漸增大,減速時使脈沖頻率逐漸減小,這種方法占用CPU 時間較少,在各種單片機中都能實現(xiàn),是一種比較實用的調(diào)速方法。</p><p> 型號為MP28
14、GA的步進電機和ULN2003APG的驅動芯片 步進電機的驅動信號必須為脈沖信號,轉動的速度和脈沖的頻率成正比! 本步進電機步進角為 5.625度 . 一圈 360 度 , 需要64個脈沖完成。</p><p><b> 2、總體原理分析</b></p><p> 使用AT89C51單片機作為核心控制部件,采用12M晶體振蕩器及微小電容構成振蕩電路;采用四相雙四拍
15、步進電機作為驅動機構;用一個四位一體共陽極數(shù)碼顯示管作為顯示部分,構成步進電機控制系統(tǒng)的主體結構,配合獨立式鍵盤和外部中斷按鍵完成步進電機控制系統(tǒng)的啟動、停止、正轉、反轉、加速、減速等各項功能;兩個LCD指示燈實現(xiàn)正反轉運行狀態(tài)顯示的功能。</p><p> LED數(shù)碼顯示器采用共陽極接法以及動態(tài)掃描的形式。P0輸入輸出口輸出數(shù)據(jù)顯示段碼,P2口實現(xiàn)3個LED數(shù)碼管位選的功能;采用p3.6和p3.7口分別與二極
16、管組成的電路來驅動LCD指示燈。鍵盤控制采用獨立式按鍵,每個按鍵的一端均接地,另一端直接和P3口相連。鍵盤通過檢測輸入線的電平狀態(tài)就可以很容易地判斷哪個鍵被按下了,這種方法操作速度高而且軟件結構很簡單,比較適合按鍵較少或操作速度較高的場合。通過編寫程序使用單片機的定時計數(shù)器,以及軟件延時,中斷資源來實現(xiàn)步進電機的相關控制。</p><p> 軟件主程序主要完成程序顯示區(qū)的清零、中斷初始化(外部中斷、定時中斷)、
17、調(diào)用顯示子程序和鍵盤掃描程序構成;外部中斷子程序實現(xiàn)步進電機的加減控制;顯示子程序實現(xiàn)段碼輸送和位選的功能,</p><p> 此步進電機控制系統(tǒng)的硬件整體結構如圖1-1所示。</p><p> 圖 1-1步進電機控制系統(tǒng)的硬件結構圖</p><p><b> 四、硬件原理圖</b></p><p><b&g
18、t; 五、程序流程圖</b></p><p><b> 1、 主程序流程圖</b></p><p><b> 六、程序清單</b></p><p> #include<reg51.h></p><p> #define uchar unsigned char<
19、/p><p> #define DataPort P0 //數(shù)碼管段選控制端</p><p> #define CtrlPort P2 //數(shù)碼管位選控制端</p><p> sbit zf=P3^1; //正反轉控制;</p><p> sbit on_off=P3^0; //啟動,停止</p><p>
20、 sbit zl=P3^6;、//LCD翻轉指示燈控制口</p><p> sbit fl=P3^7; //LCD正轉指示燈控制口</p><p> uchar Speed,tem,tem_1;//速度變量定義</p><p> uchar flag;//運行狀態(tài)控制變量</p><p> uchar biao[2][4]={{0x0
21、9,0x03,0x06,0x0c},{0x0c,0x06,0x03,0x09}}; //正,反轉表格</p><p> uchar const DuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽數(shù)碼管顯示段碼值0123456789</p><p> uchar code WeiMa[]={0xf8,0xf
22、4,0xf2,0xf0};//共陽數(shù)碼管位碼</p><p> uchar TempData[3]; //存儲顯示值的全局變量,用于暫存數(shù)碼管顯示的數(shù)字</p><p> void Display(void); //數(shù)碼管顯示函數(shù)聲明</p><p> void Init_Timer0(void);//定時器0初始化 </p>&
23、lt;p> void DelayMs(uchar m);</p><p> void DelayUs2x(uchar t); //微妙延時函數(shù)聲明</p><p> /*-****************************************************</p><p><b> 主函數(shù)</b>&l
24、t;/p><p> ********************************************************/</p><p> void main()</p><p><b> {</b></p><p> uchar i; </p><p> EA=1;
25、 //全局中斷開</p><p> IT0=1; //1表示邊沿觸發(fā)</p><p> IT1=1; //1表示邊沿觸發(fā)</p><p> Init_Timer0();</p><p><b> Speed=80;</b></p><p><
26、b> while(1)</b></p><p><b> {</b></p><p> if(on_off==0)</p><p><b> { </b></p><p> TempData[0]=DuanMa[(15000/Speed)%10]; </p>
27、<p> TempData[1]=DuanMa[(1500/Speed)%10];</p><p> TempData[2]=DuanMa[(150/Speed)%10];</p><p><b> EX0=1;</b></p><p><b> EX1=1; </b></p>&l
28、t;p> if(zf==1) //正轉</p><p><b> {</b></p><p> zl=1;fl=0;</p><p> for(i=0;i<4;i++) //4相</p><p><b> {</b></p><p>
29、 P1=biao[zf][i]; //輸出對應的相 可以自行換成反轉表格</p><p> DelayMs(Speed); //改變這個參數(shù)可以調(diào)整電機轉速 ,數(shù)字越小,轉速越大</p><p> }</p><p><b> }</b></p><p> e
30、lse //反轉</p><p><b> {</b></p><p> zl=0;fl=1;</p><p> for(i=0;i<4;i++) //4相</p><p><b> {</b></p><p> P1=biao[zf][i];
31、 //輸出對應的相 可以自行換成正轉表格</p><p> DelayMs(Speed); //改變這個參數(shù)可以調(diào)整電機轉速 ,數(shù)字越小,轉速越大</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
32、t;</p><p><b> else</b></p><p><b> { </b></p><p><b> IT0=0;</b></p><p><b> IT1=0;</b></p><p> zl=0;fl=0
33、;</p><p> TempData[0]=DuanMa[0]; </p><p> TempData[1]=DuanMa[0];</p><p> TempData[2]=DuanMa[0]; </p><p><b> Speed=80;</b></p><p><b>
34、; }</b></p><p><b> }</b></p><p><b> }</b></p><p> /****************************************************************************</p><p>
35、; 外部中斷0子程序(實現(xiàn)減速)</p><p> ****************************************************************************/</p><p> void ISR_INT0(void) interrupt 0 </p><p><b> {</b><
36、/p><p><b> if(!INT0)</b></p><p> DelayMs(1);//去抖動</p><p> while(!INT0)//等待按鍵釋放</p><p><b> { </b></p><p> tem=Speed;</p>&l
37、t;p> if(tem>=150)</p><p><b> tem=tem;</b></p><p><b> else</b></p><p> tem=tem+10;</p><p><b> }</b></p><p>
38、Speed=tem; </p><p> TempData[0]=DuanMa[(15000/Speed)%10]; </p><p> TempData[1]=DuanMa[(1500/Speed)%10];</p><p> TempData[2]=DuanMa[(150/Speed)%10]; </p><p><b&g
39、t; } </b></p><p> /*****************************************************************************</p><p> 外部中斷1程序(實現(xiàn)加速功能)</p><p> *****************************************
40、************************************/</p><p> void ISR_INT1(void) interrupt 2</p><p><b> {</b></p><p><b> if(!INT1)</b></p><p> DelayMs(1);/
41、/去抖動</p><p> while(!INT1)//等待按鍵釋放</p><p><b> {</b></p><p> tem_1=Speed;</p><p> if(tem_1<=50)</p><p> tem_1=tem_1;</p><p>
42、<b> else</b></p><p> tem_1=tem_1-10;</p><p><b> }</b></p><p> Speed=tem_1;</p><p> TempData[0]=DuanMa[(15000/Speed)%10]; </p><p&
43、gt; TempData[1]=DuanMa[(1500/Speed)%10];</p><p> TempData[2]=DuanMa[(150/Speed)%10]; </p><p><b> } </b></p><p> /***************************************************
44、**************************</p><p> 定時器0初始化子程序</p><p> ****************************************************************************/</p><p> void Init_Timer0(void) </p&
45、gt;<p><b> {</b></p><p> EA=1; //全局中斷開</p><p> TMOD=0x01; //使用模式1,16位定時定時器 </p><p> ET0=1; //定時器中斷打開</p><p> TR0=1;
46、 //定時器開關打開</p><p><b> }</b></p><p> /*****************************************************************************</p><p><b> 定時器0中斷子程序</b></p&
47、gt;<p> ****************************************************************************/</p><p> void Timer0_isr(void) interrupt 1 </p><p><b> {</b></p><p> TH0=
48、(65536-2000)/256; //重新賦值 2ms</p><p> TL0=(65536-2000)%256;</p><p> PT0=1; //優(yōu)先級打開</p><p> Display();</p><p><b> }</b></p><p>
49、 /****************************************************************************</p><p><b> 數(shù)碼管顯示子程序</b></p><p> *********************************************************************
50、*******/</p><p> void Display(void)</p><p><b> {</b></p><p> static uchar k;</p><p> DataPort=0; //清空數(shù)據(jù),防止有交替重影 </p><p> for(k
51、=0;k<4;k++)</p><p><b> {</b></p><p> CtrlPort=WeiMa[k]; //取位碼</p><p> DataPort=TempData[k]; //取顯示數(shù)據(jù),段碼 </p><p> DelayUs2x(40);</p><p>&
52、lt;b> }</b></p><p><b> }</b></p><p> /*****************************************************************************</p><p> uS延時函數(shù),大致延時長度 T=t*2 uS </p>
53、;<p> ****************************************************************************/</p><p> void DelayUs2x(uchar t)</p><p><b> { </b></p><p> while(--t);<
54、;/p><p><b> }</b></p><p> /****************************************************************************</p><p><b> mS延時函數(shù)</b></p><p> *********
55、*******************************************************************/</p><p> void DelayMs(uchar m)</p><p><b> {</b></p><p> while(m--)</p><p><b>
56、{</b></p><p> DelayUs2x(250);</p><p> DelayUs2x(250);</p><p><b> }</b></p><p><b> }</b></p><p><b> 七、調(diào)試運行</b>
57、;</p><p> 1、步進電機正轉啟動,轉速為187rad/min(藍色指示燈顯示)</p><p> 2、按下減速鍵,正轉減速到125rad/min</p><p> 3、按下加速鍵,正轉加速到214rad/min</p><p> 4、按下電機正反轉向控制鍵,電機反向旋轉187rad/min(紅色指示燈顯示)</p>
58、;<p><b> 八、設計心得體會</b></p><p> 通過此次步進電機控制系統(tǒng)課程設計使我們受益匪淺,不僅使我們對說學的單邊機的理論知識有了更深刻的理解和體會,而且對步進電機的工作原理有了進一步了解(步進電機的轉向和轉速分別有電流相序和延時參數(shù)設置)。在步進電機控制系統(tǒng)的設計過程中對單邊機定時器0中斷和外部中斷的開啟、設置和應用;LED數(shù)碼管的動態(tài)顯示(LED 段
59、碼輸出、位選功能);單片機I/O端口讀取、輸出的知識有更深刻得學習;同時在程序編寫過程中鍛煉了的分模塊思考問題的思維方式和有序書寫的良好習慣。</p><p> 在此次課程設計過程使我們充分認識到認真、嚴謹、負責、團結、堅持不懈的學習工作態(tài)度的重要性,雖然在課程設計中我們會遇到某些困難但是只要不放棄,并積極的面對問題想辦法去解決,問題最終一定能得到解決。總之,此次課程的各方面能力得到了很好鍛煉。</p&g
60、t;<p><b> 九、參考文獻</b></p><p> [1]李朝青.單片機原理及接口技術[M].北京:北京航空航天大學出版社,1988. [2]李勛等.單片機實用教程[M].北京:北京航空航天大學出版社,2000</p><p> [3]王幸之等.單片機應用系統(tǒng)抗干擾技術[M]. 北京:北京航空航天大學出版社,1999</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機控制技術課程設計-計算機控制技術及工程應用步進電機控制系統(tǒng)
- 微型計算機控制技術課程設計---步進電機控制系統(tǒng)設計
- 計算機控制課程設計--步進電機角度控制
- 計算機控制課程設計---步進電機的角度控制設計
- 微機控制技術課程設計---步進電機控制系統(tǒng)設計
- 微型計算機控制技術課程設計---步進電機角度控制
- 溫度控制系統(tǒng)設計-計算機控制技術課程設計
- 溫度控制系統(tǒng)設計——計算機控制技術課程設計
- 計算機控制技術課程設計-溫度控制系統(tǒng)設計
- 計算機控制系統(tǒng)課程設計--直流伺服電機控制系統(tǒng)
- 河北工業(yè)大學計算機控制課程設計——步進電機控制系統(tǒng)設計
- 計算機控制課程設計---基于單片機的步進電機控制系統(tǒng)
- 三相步進電機的計算機控制系統(tǒng)課程設計
- 計算機控制課程設計---水位控制系統(tǒng)
- 控制系統(tǒng)設計與仿真-計算機控制技術課程設計
- 計算機控制課程設計---達林算法計算機控制系統(tǒng)設計
- 計算機控制技術溫度控制系統(tǒng)設計
- 計算機控制技術課程設計---控制系統(tǒng)的狀態(tài)空間設計
- 課程設計-- 微機步進電機控制系統(tǒng)設計
- 計算機控制技術課程設計
評論
0/150
提交評論