基于ARM的步進(jìn)電機(jī)控制課程設(shè)計(jì)_第1頁
基于ARM的步進(jìn)電機(jī)控制課程設(shè)計(jì)_第2頁
基于ARM的步進(jìn)電機(jī)控制課程設(shè)計(jì)_第3頁
基于ARM的步進(jìn)電機(jī)控制課程設(shè)計(jì)_第4頁
基于ARM的步進(jìn)電機(jī)控制課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、湖南科技大學(xué)信息與電氣工程學(xué)院基于arm的步進(jìn)電機(jī)控制課程設(shè)計(jì)報(bào)告 專 業(yè): 電子信息工程 班 級(jí): 一班 姓 名: 陳信維 學(xué) 號(hào): 0904030112 指導(dǎo)教師: 羅朝輝 目 錄1.設(shè)計(jì)目的與要求 21.1設(shè)計(jì)目的 2 1.2設(shè)計(jì)要求 2 2.方案設(shè)計(jì)與論證 2 2.1設(shè)計(jì)分析 2 2.2方案論證2 2.3方案選擇23. 硬件電路 2 3.1硬件結(jié)構(gòu)3 3.2器件連接說明 44.軟件設(shè)計(jì)55調(diào)試 76.結(jié)論與心得77.參考文獻(xiàn)7附錄 程序 81、設(shè)計(jì)的目的與要求1.1 設(shè)計(jì)目的(1)本次課程設(shè)計(jì)是在學(xué)習(xí)了深入淺出arm7lpc213x/214x課程之后綜合利用所學(xué)知識(shí)完成一個(gè)計(jì)算機(jī)應(yīng)用系

2、統(tǒng)設(shè)計(jì)并在實(shí)驗(yàn)室實(shí)現(xiàn)。(2)通過課程設(shè)計(jì),鞏固和加深了對(duì)“微機(jī)原理與接口技術(shù)”課程中所學(xué)的理論知識(shí)和實(shí)驗(yàn)?zāi)芰Γ菊莆沼?jì)算機(jī)接口應(yīng)用電路的一般設(shè)計(jì)方法,提高電子電路的設(shè)計(jì)和實(shí)驗(yàn)?zāi)芰Α#?)加深對(duì)計(jì)算機(jī)軟硬知識(shí)的理解,獲得初步的應(yīng)用經(jīng)驗(yàn),為以后從事生產(chǎn)和科研工作打下一定的基礎(chǔ)。1.2 設(shè)計(jì)要求(1)設(shè)計(jì)一個(gè)步進(jìn)電機(jī)的控制系統(tǒng)。(2)可通過鍵盤設(shè)定轉(zhuǎn)速和方向。(3)能夠顯示當(dāng)前的轉(zhuǎn)速。2、方案的設(shè)計(jì)與論證2.1 設(shè)計(jì)分析步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個(gè)脈沖信號(hào),電機(jī)則轉(zhuǎn)過一個(gè)步距角。

3、本次課程設(shè)計(jì)所設(shè)計(jì)的步進(jìn)電機(jī)的控制系統(tǒng)可通過鍵盤設(shè)定轉(zhuǎn)速和方向,并能顯示轉(zhuǎn)速。2.2 方案論證 方案一:采用arm7的脈寬調(diào)制器pwm產(chǎn)生脈沖對(duì)步進(jìn)電機(jī)進(jìn)行控制。 方案二:利用定時(shí)器定時(shí)中斷進(jìn)行步進(jìn)電機(jī)的控制。2.3 方案選擇 第一種方案中pwm技術(shù)是采用脈寬調(diào)制技術(shù),即占空比不同的方波電壓產(chǎn)生不同的平均電流使步進(jìn)電機(jī)轉(zhuǎn)動(dòng),通過調(diào)節(jié)占空比即可調(diào)節(jié)電機(jī)轉(zhuǎn)速。雖然很精確,但設(shè)置較繁瑣。 第二種方案中采用定時(shí)器定時(shí)中斷的方式,只需要幾條簡(jiǎn)單的指令就可以產(chǎn)生具有一定頻率和數(shù)目的脈沖信號(hào),而且在整個(gè)脈沖產(chǎn)生過程中,cpu 可用來處理其他工作,大大提高了系統(tǒng)的實(shí)時(shí)處理能力。 考慮到系統(tǒng)的實(shí)時(shí)性及程序的繁簡(jiǎn)

4、程度我選擇了第二種方案。3、硬件電路3.1 硬件結(jié)構(gòu) (1)easyarm2138開發(fā)板是廣州周立功公司設(shè)計(jì)的easyarm系列開發(fā)套件之一,采用了philips公司基于arm7tdmi-s 核、單電源供電、lqfp64封裝的lpc2138,具有jtag仿真調(diào)試、isp編程等功能。 開發(fā)板上提供了一些鍵盤、led、蜂鳴器等常用功能部件,還具有rs232接口電路、i2c存儲(chǔ)器電路。另外,用戶也可以更換兼容的cpu進(jìn)行仿真調(diào)試,如lpc2132、lpc2138、lpc2142等。靈活的跳線組合(開發(fā)板內(nèi)使用的所有i/o均可斷開連接),還有用戶i/o接口,極大地方便了用戶進(jìn)行32位arm嵌入式系統(tǒng)的

5、開發(fā)實(shí)驗(yàn)。 (2) 定時(shí)器(3)中斷l(xiāng)pc2138 通過向量中斷控制器(vic )管理中斷。外設(shè)中斷信號(hào)需要經(jīng)過2 個(gè)開關(guān)才能 到達(dá)arm 內(nèi)核,真正產(chǎn)生異常,邏輯示意圖如下圖所示。如果在vic中使能了相應(yīng)外 設(shè)的中斷,外設(shè)中斷才能到達(dá)vic并向內(nèi)核發(fā)送中斷請(qǐng)求;只有使能了內(nèi)核中斷irq或者 fiq,內(nèi)核才能真正產(chǎn)生異常。硬件圖如下中斷的過程示意圖如下:(4)按鍵的連接圖不按下時(shí)為高電平,按下時(shí)變?yōu)榈碗娖健#?) uart0 特性:管腳描述:(6) 步進(jìn)電機(jī)接口 由于lpc2138的gpio驅(qū)動(dòng)能力有限,必須通過uln2003達(dá)林頓集成驅(qū)動(dòng)芯片驅(qū)動(dòng)步進(jìn)電機(jī),在步進(jìn)電機(jī)和驅(qū)動(dòng)電路間連接了電阻,防

6、止控制紊亂而造成的電機(jī)損壞。3.2 器件連接說明(1)在easyarm2138開發(fā)板上,當(dāng)跳線jp6分別選擇txd0和rxd0端時(shí)方可進(jìn)行uart0通信實(shí)驗(yàn)。(2)key1連接p0.16;key2連接p0.17;key3連接p0.18, key4連接p0.19, key5連接p0.20,key6連接p0.21。(3)步進(jìn)電機(jī)的四個(gè)輸入端口分別接easyarm2138開發(fā)板上p2.2p2.5四個(gè)端口。4、軟件設(shè)計(jì)系統(tǒng)軟件采用c語言編程,程序詳情請(qǐng)參見附錄。程序的流程圖如下: 開始初始化參數(shù):設(shè)置spi管腳連接,p0.30連接到ad0.3,p125:16連接gpio,設(shè)置bjdj_qd控制口為輸出

7、,初始化spi,irq中斷使能,定時(shí)器0初始化,啟動(dòng)定時(shí)器,設(shè)置并啟動(dòng)定時(shí)器0中斷irq 。步進(jìn)電機(jī)進(jìn)入最近一次設(shè)定的模式(初始時(shí)為模式0)是否有按鍵按下否進(jìn)入模式0:八拍正轉(zhuǎn)。在數(shù)碼管上顯示0,同時(shí)在上位機(jī)上顯示轉(zhuǎn)速。是key1按 下?是進(jìn)入模式1:八拍反轉(zhuǎn)。在數(shù)碼管上顯示1,同時(shí)在上位機(jī)上顯示轉(zhuǎn)速。key2按 下?否是進(jìn)入模式2:雙四拍正轉(zhuǎn)。在數(shù)碼管上顯示2,同時(shí)在上位機(jī)上顯示轉(zhuǎn)速。key3按 下?否 是key4按 下?否進(jìn)入模式3:雙四拍反轉(zhuǎn)。在數(shù)碼管上顯示3,同時(shí)在上位機(jī)上顯示轉(zhuǎn)速。 是否進(jìn)行減速。在數(shù)碼管上顯示5,同時(shí)在上位機(jī)上顯示轉(zhuǎn)速。key5按 下? 是 否進(jìn)行加速。在數(shù)碼管上顯

8、示6,同時(shí)在上位機(jī)上顯示轉(zhuǎn)速。key6按 下?是 4、調(diào)試按照器件連接說明連接好easyarm2131開發(fā)板上的跳線,然后將步進(jìn)電機(jī)與easyarm2131開發(fā)板連接上。運(yùn)行程序,開始調(diào)試。在一開始的時(shí)候,由于用定時(shí)器設(shè)置的中斷時(shí)間太長(zhǎng)導(dǎo)致看不見電機(jī)有明顯的轉(zhuǎn)動(dòng)。通過修改定時(shí)時(shí)間,漸漸地電機(jī)轉(zhuǎn)動(dòng)變得明顯了。然后測(cè)試按鍵功能時(shí)發(fā)現(xiàn),案件的檢測(cè)不夠靈敏,有時(shí)候需要按幾下才能檢測(cè)到,后來經(jīng)過修改延時(shí)消抖的時(shí)間,將其變短且在每次按下按鍵時(shí)不急于松開而保持一會(huì)兒,這樣按鍵檢測(cè)變得較為靈敏了。在調(diào)試中發(fā)現(xiàn):?jiǎn)坞p八拍和雙四拍要比單四拍的轉(zhuǎn)動(dòng)更加有效。單四拍模式的時(shí)候電機(jī)只是震動(dòng)并沒有轉(zhuǎn)動(dòng),用肉眼觀察不到轉(zhuǎn)速

9、的快慢,故最后舍棄了這種模式。 調(diào)試的最終結(jié)果是:程序開始時(shí)電機(jī)進(jìn)入模式0,如果沒有按鍵按下則一直保持模式0。當(dāng)有按鍵按下時(shí),且按鍵為key1key4則電機(jī)根據(jù)不同按鍵的按下進(jìn)入不同的轉(zhuǎn)動(dòng)模式(key1對(duì)應(yīng)模式0:八拍正轉(zhuǎn),key2對(duì)應(yīng)模式1:八拍反轉(zhuǎn),key3對(duì)應(yīng)模式2:雙四拍正轉(zhuǎn),key4對(duì)應(yīng)模式3:雙四拍反轉(zhuǎn))。當(dāng)按鍵key5按下時(shí),電機(jī)轉(zhuǎn)速變慢,且隨著key5按下次數(shù)的增多電機(jī)逐漸變慢直至停止;當(dāng)按鍵key6按下時(shí),電機(jī)轉(zhuǎn)速變快,且隨著key5按下次數(shù)的增多電機(jī)逐漸變快。同時(shí)在上位機(jī)上可以看見當(dāng)前的轉(zhuǎn)速。5、課程設(shè)計(jì)體會(huì)一方面,通過這一周的課程設(shè)計(jì),我對(duì)課本上關(guān)于lpc2138的硬件結(jié)

10、構(gòu)的知識(shí)有了更加深刻的理解,而且對(duì)其用法掌握得更加熟練。在課程設(shè)計(jì)過程中,能夠不斷地發(fā)現(xiàn)問題,并想辦法解決,如此提高了我自己解決問題的能力。在編寫程序方面,我對(duì)arm7編程結(jié)構(gòu)和技巧也有了深刻的理解和領(lǐng)會(huì)。此次課程設(shè)計(jì)還讓我知道什么是實(shí)時(shí)系統(tǒng)以及如何構(gòu)建一個(gè)簡(jiǎn)單的實(shí)時(shí)系統(tǒng)。現(xiàn)在我已經(jīng)基本掌握了構(gòu)建實(shí)時(shí)系統(tǒng)的方法。還有我明白了流程圖的重要性,以前在編程的時(shí)候,我從不寫流程圖,直接開始寫程序,這樣出現(xiàn)了不該出現(xiàn)的問題。但這次課程設(shè)計(jì)時(shí),我試著先寫出流程圖然后按照流程圖編寫程序,結(jié)果錯(cuò)誤少了很多,即使有錯(cuò)誤只要根據(jù)流程圖一查就知道錯(cuò)在哪里,這讓我節(jié)省了大量的時(shí)間和精力。所以我認(rèn)識(shí)到,以后要編寫程序時(shí)

11、,先寫流程圖是很有必要的。另一方面,我感覺這一周的課程設(shè)計(jì)我自己的效率太低。有時(shí)候被一些問題困惑了很久,但經(jīng)過老師的指點(diǎn),我才恍然大悟,原來只要換個(gè)方式思考問題就能想到很好的方法。6、 參考文獻(xiàn)1 周立功.深入淺出arm7lpc213x/214x(上冊(cè))m.北京:北京航空航天大學(xué)出版社,2008:146-175,226-240,275-286.2 周立功.arm嵌入式系統(tǒng)實(shí)驗(yàn)教程(三)m.北京:北京航空航天大學(xué)出版社,2005:134-140.3 冷洪濱,鄔義杰.基于計(jì)數(shù)器/定時(shí)器的步進(jìn)電機(jī)可編程控制接口電路設(shè)計(jì)j北京:組合機(jī)床與自動(dòng)化加工技術(shù),2004.4 周明德.微型計(jì)算機(jī)硬件軟件及其應(yīng)用

12、.北京:清華大學(xué)出版社 ,1993.附錄:實(shí)訓(xùn)程序#include config.h#define hc595_cs (1 29) / p0.29口為74hc595的片選#define led1 118 /p1.18#define led2 119 /p1.19#define led3 120 /p1.20#define led4 121 /p1.21#define bj_qd 0x0f 22 /步進(jìn)電機(jī)驅(qū)動(dòng)腳p1.22p1.25uint32 bj8=1 22,3 22,1 23,3 23,1 24,3 24,1 25,9 22;/0a, 1ab 2b3bc4c 5cd 6d7daconst

13、uint32 key1 = 1 16;/ p0.16連接key1const uint32 key2 = 1 17;/ p0.17連接key1const uint32 key3 = 1 18;/ p0.18連接key1const uint32 key4 = 1 19;/ p0.19連接key1const uint32 key5 = 1 20;/ p0.20連接key1const uint32 key6 = 1 0; dly-) for(i=0; i= 80)x = 0;y+;/* 函數(shù)名稱:mspi_init()* 函數(shù)功能:初始化spi接口,設(shè)置為主機(jī)。* 入口參數(shù):無* 出口參數(shù):無*/vo

14、id mspi_init(void) pinsel0 = (pinsel0 & (0xff 8) | (0x55 8) ; spccr = 0x52; / 設(shè)置spi時(shí)鐘分頻 spcr = (0 3) |/ cpha = 0, 數(shù)據(jù)在sck 的第一個(gè)時(shí)鐘沿采樣 (1 4) |/ cpol = 1, sck 為低有效 (1 5) |/ mstr = 1, spi 處于主模式 (0 6) |/ lsbf = 0, spi 數(shù)據(jù)傳輸msb (位7)在先 (0 7);/ spie = 0, spi 中斷被禁止/* 函數(shù)名稱:mspi_senddata()* 函數(shù)功能:向spi總線發(fā)送數(shù)據(jù)* 入口參數(shù):

15、data待發(fā)送的數(shù)據(jù)* 出口參數(shù):返回值為讀取的數(shù)據(jù)*/uint8 mspi_senddata(uint8 data) ioclr = hc595_cs; / 片選74hc595 spi_spdr = data; while( 0 = (spi_spsr & 0x80);/ 等待spif置位,即等待數(shù)據(jù)發(fā)送完畢 ioset = hc595_cs; return(spi_spdr);/* 此表為led0f以及l(fā)、p的字模 */uint8 const disp_tab10 = / 0 1 2 3 4 5 6 7 8 9 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8

16、, 0x80,0x90 ;/* 函數(shù)名稱:qudong()* 函數(shù)功能:驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)* 入口參數(shù):無* 出口參數(shù):無*/void qudong()io1set=0x0f22;/不輸出switch ( bj_mod)case 0: /八拍正轉(zhuǎn)io1clr=bjcnt%8;break;case 1:/八拍反轉(zhuǎn)io1clr=bj7-(cnt%8);break;case 2:/雙四拍正轉(zhuǎn)io1clr=bj(cnt%4)*2+1;break;case 3:/雙四拍反轉(zhuǎn)io1clr=bj7-(cnt%4)*2;break;default:break;t0ir = 0x01;/* 清除中斷標(biāo)志*/vic

17、vectaddr = 0x00;/* 通知vic中斷處理結(jié)束*/* 函數(shù)名稱 :irq_timer0()* 函數(shù)功能 :定時(shí)器0中斷服務(wù)程序,定時(shí)調(diào)用qudong()程序,使步進(jìn)電機(jī)按節(jié)拍轉(zhuǎn)動(dòng)。* 入口參數(shù) :無* 出口參數(shù) :無*/void _irq irq_timer0 (void) t+; cnt+; qudong();mspi_senddata(disp_tabi);/ 發(fā)送顯示t0ir = 0x01;/* 清除中斷標(biāo)志*/vicvectaddr = 0x00;/* 通知vic中斷處理結(jié)束*/* 函數(shù)名稱 :main()* 函數(shù)功能 :程序初始化,ad采樣和按鍵調(diào)節(jié)電機(jī)轉(zhuǎn)速,通過串口向

18、上位機(jī)發(fā)送顯示數(shù)據(jù)。* 調(diào)試說明 :需要將跳線jp6分別選擇txd0和rxd0端* key1key6連接p0.16p0.21,步進(jìn)電機(jī)四個(gè)輸入端分別接p1.22p1.25。*/uint8 rcv_data; int main (void) uint32 adc_data,temp,zhuansu=100,zhuansu1=100,zhuansu2=200; uint32 bapaizhengzhuan,bapaifanzhuan,shsipaizhengzhuan,shsipaifanzhuan; char str20;pinsel0 = 0x00005505; / 設(shè)置spi管腳連接 pin

19、sel1 = 0x10000000; /pinsel1 = 1 28;/ p0.30連接到ad0.3 iodir = hc595_cs; pinsel2 = pinsel2 & (0x08);/ p125:16連接gpioio1dir =bj_qd;/ 設(shè)置bjdj_qd控制口為輸出 uart0_init(); mspi_init();/ 初始化spiirqenable();/* irq中斷使能*/* 定時(shí)器0初始化 */t0tc = 0;/* 定時(shí)器設(shè)置為0*/t0pr = 0;/* 時(shí)鐘不分頻*/t0mcr = 0x03; /* 設(shè)置t0mr0匹配后復(fù)位t0tc,并產(chǎn)生中斷標(biāo)志*/t0mr

20、0 = fpclk /zhuansu;/* 0.5秒鐘定時(shí)*/t0tcr = 0x01;/* 啟動(dòng)定時(shí)器*/* 設(shè)置定時(shí)器0中斷irq */vicintselect = 0x00;/* 所有中斷通道設(shè)置為irq中斷*/vicvectcntl0 = 0x20 | 0x04;/* 設(shè)置定時(shí)器0中斷通道分配最高優(yōu)先級(jí)*/vicvectaddr0 = (uint32)irq_timer0;/* 設(shè)置中斷服務(wù)程序地址*/vicintenable = 1 0x04;/* 使能定時(shí)器0中斷*/while (1) if(io0pin & key1) = 0) /key1 mide0 delayns(10);

21、if(io0pin & key1) = 0) bj_mod=0; i=0; mspi_senddata(disp_tab0);/ 發(fā)送到數(shù)碼管顯示 bapaizhengzhuan = 3*zhuansu/20;sprintf(str, bapaizhengzhuan:%4d,bapaizhengzhuan);/ 發(fā)送到上位機(jī)顯示 isendstr(0,4,0x30,str); while(io0pin & key1) = 0); if(io0pin & key2) = 0) /key2 mode1 delayns(10); if(io0pin & key2) = 0) bj_mod=1; i=

22、2; mspi_senddata(disp_tabi);/ 發(fā)送到數(shù)碼管顯示 bapaifanzhuan=3*zhuansu/20; sprintf(str, bapaifanzhuan:%4d,bapaifanzhuan);/ 發(fā)送到上位機(jī)顯示 isendstr(0,6,0x30,str); while(io0pin & key2) = 0); if(io0pin & key3) = 0) /key3 mode2 delayns(10); if(io0pin & key3) = 0) bj_mod=2; i=3; mspi_senddata(disp_tabi);/ 發(fā)送到數(shù)碼管顯示 shsipaizhengzhuan=3*zhuansu/10; sprintf(str, shsipaizhengzhuan:%4d,shsipaizhengzhuan);/ 發(fā)送到上位機(jī)顯示 isendstr(0,8,0x30,str); while(io0pin & key3) = 0); if(io0pin & key4) = 0) /key3 mode3 delayns(10); if(io0pin & key4) = 0) bj_mod=3; i=4; mspi_sen

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論