AVR單片機(jī)步進(jìn)電機(jī)_第1頁(yè)
AVR單片機(jī)步進(jìn)電機(jī)_第2頁(yè)
AVR單片機(jī)步進(jìn)電機(jī)_第3頁(yè)
AVR單片機(jī)步進(jìn)電機(jī)_第4頁(yè)
AVR單片機(jī)步進(jìn)電機(jī)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、-PAGE 1. z -. - 考試資料基于AVR單片機(jī)的步進(jìn)電機(jī)控制組長(zhǎng): 王勝杰10005041組 員: 輪11071050組 員: 少維 38072128 組 員: 冶西原 38072130班級(jí):110716-. z-. z-. z-. z基于AVR單片機(jī)的步進(jìn)電機(jī)控制摘 要這篇文章主要是講步進(jìn)電動(dòng)機(jī)的開(kāi)展,國(guó)的現(xiàn)狀和步進(jìn)電動(dòng)機(jī)未來(lái)的開(kāi)展前景。步進(jìn)電機(jī)主要由采用AVR單片機(jī)作為主控單元,L298作為驅(qū)動(dòng)芯片。詳細(xì)介紹了本調(diào)速控制系統(tǒng)的工作原理、光電編碼器接口電路、驅(qū)動(dòng)接口電路和相應(yīng)的各種控制軟件設(shè)計(jì)。繪制了原理圖和PCB板圖,撰寫(xiě)了程序源代碼。這期間主要使用protel99軟件繪制原理圖

2、和制板。最后通過(guò)硬件的調(diào)試驗(yàn)證程序代碼的實(shí)際功能,完成對(duì)控制器的設(shè)計(jì)。實(shí)驗(yàn)結(jié)果說(shuō)明,設(shè)計(jì)的調(diào)速控制器具有良好的工作性能。關(guān)鍵詞AVR單片機(jī) 步進(jìn)電動(dòng)機(jī) 控制器目 錄TOC o 1-3 h z uHYPERLINK l _Toc387875626第一章、背景知識(shí)1HYPERLINK l _Toc3878756271.1步進(jìn)電機(jī)開(kāi)展 PAGEREF _Toc387875627 h 1HYPERLINK l _Toc3878756281.2步進(jìn)電機(jī)的應(yīng)用前景 PAGEREF _Toc387875628 h 1HYPERLINK l _Toc3878756291.3設(shè)計(jì)容 PAGEREF _Toc38

3、7875629 h 1HYPERLINK l _Toc387875630第二章、任務(wù) PAGEREF _Toc387875630 h 2HYPERLINK l _Toc3878756312.1設(shè)計(jì)任務(wù) PAGEREF _Toc387875631 h 2HYPERLINK l _Toc3878756322.2 任務(wù)分工 PAGEREF _Toc387875632 h 2HYPERLINK l _Toc387875633第三章、單片機(jī)資源設(shè)置 PAGEREF _Toc387875633 h2HYPERLINK l _Toc3878756343.1 硬件設(shè)置 PAGEREF _Toc38787563

4、4 h 2HYPERLINK l _Toc3878756363.2 ICCAVR 向?qū)?duì)程序進(jìn)展初始化 PAGEREF _Toc387875636 h 3HYPERLINK l _Toc387875637第四章、程序編寫(xiě) PAGEREF _Toc387875637 h 3HYPERLINK l _Toc3878756384.1程序流程圖 PAGEREF _Toc387875638 h 3HYPERLINK l _Toc3878756414.2源代碼 PAGEREF _Toc387875641 h 4HYPERLINK l _Toc387875642第五章、實(shí)驗(yàn)結(jié)果 PAGEREF _Toc38

5、7875642 h 4HYPERLINK l _Toc3878756435.1調(diào)試過(guò)程 PAGEREF _Toc387875643 h 4HYPERLINK l _Toc3878756445.2實(shí)驗(yàn)現(xiàn)象 PAGEREF _Toc387875644 h 4HYPERLINK l _Toc387875645學(xué)習(xí)心得 PAGEREF _Toc387875645 h 5HYPERLINK l _Toc387875646參考文獻(xiàn) PAGEREF _Toc387875646 h 6第一章、背景知識(shí)1.1步進(jìn)電機(jī)開(kāi)展步進(jìn)電動(dòng)機(jī)已成為除直流電動(dòng)機(jī)和交流電動(dòng)機(jī)以外的第三類(lèi)電動(dòng)機(jī)。傳統(tǒng)電動(dòng)機(jī)作為機(jī)電能量轉(zhuǎn)換裝置,

6、在人類(lèi)的生產(chǎn)和生活進(jìn)入電氣化過(guò)程中起著關(guān)鍵的作用。為適應(yīng)這些要求,開(kāi)展了一系列新的具備控制功能的電動(dòng)機(jī)系統(tǒng),其中較有自己特點(diǎn),且應(yīng)用十分廣泛的一類(lèi)便是步進(jìn)電動(dòng)機(jī)。步進(jìn)電動(dòng)機(jī)的開(kāi)展與計(jì)算機(jī)工業(yè)密切相關(guān)。自從步進(jìn)電動(dòng)機(jī)在計(jì)算機(jī)外設(shè)備中取代小型直流電動(dòng)機(jī)以后,使其設(shè)備的性能提高,很快地促進(jìn)了步進(jìn)電動(dòng)機(jī)的開(kāi)展。1.2步進(jìn)電機(jī)的應(yīng)用前景當(dāng)前最有開(kāi)展前景的當(dāng)屬混合式步進(jìn)電動(dòng)機(jī),而混合式電動(dòng)機(jī)又向以下四個(gè)方免開(kāi)展:開(kāi)展趨勢(shì)之一,是繼續(xù)沿著小型化的方向開(kāi)展。隨著電動(dòng)機(jī)本身應(yīng)用領(lǐng)域的拓寬以及各類(lèi)整機(jī)的不斷小型化,要求與之配套的電動(dòng)機(jī)也必須越來(lái)越小,在57、42機(jī)座號(hào)的電動(dòng)機(jī)應(yīng)用了多年后,現(xiàn)在其機(jī)座號(hào)向39、35

7、、30、25方向向下延伸。瑞士ESCAP公司最近還研制出外徑僅10mm的步進(jìn)電動(dòng)機(jī)。開(kāi)展趨勢(shì)之二,是改圓形電動(dòng)機(jī)為方形電動(dòng)機(jī)。由于電動(dòng)機(jī)采用方型構(gòu)造,使得轉(zhuǎn)子有可能設(shè)計(jì)得比圓形大,因而其力矩體積比將大為提高。同樣機(jī)座號(hào)的電動(dòng)機(jī),方形的力矩比圓形的將提高3040。開(kāi)展趨勢(shì)之三,對(duì)電動(dòng)機(jī)進(jìn)展綜合設(shè)計(jì)。即把轉(zhuǎn)子位置傳感器,減速齒輪等和電動(dòng)機(jī)本體綜合設(shè)計(jì)在一起,這樣使其能方便地組成一個(gè)閉環(huán)系統(tǒng),因而具有更加優(yōu)越的控制性能。開(kāi)展趨勢(shì)之四,向三相步進(jìn)電機(jī)方向開(kāi)展。目前廣泛應(yīng)用的二相和四相電動(dòng)機(jī),其振動(dòng)和噪聲較大,而三相步進(jìn)電機(jī)具有明顯的優(yōu)勢(shì)性,而價(jià)格和二四相步進(jìn)電機(jī)相當(dāng)。 開(kāi)展趨勢(shì)之五,向多元化方向開(kāi)展。

8、為滿足多元化的市場(chǎng)需求而研發(fā)出新型步進(jìn)電機(jī)使得步進(jìn)電機(jī)的應(yīng)用圍更廣泛,應(yīng)用更簡(jiǎn)便。以運(yùn)控公司為代表,自2004年開(kāi)發(fā)出正齒輪減速偏心軸步進(jìn)電機(jī)后,又陸續(xù)開(kāi)發(fā)出斜齒輪減速步進(jìn)電機(jī),精細(xì)行星減速步進(jìn)電機(jī)、標(biāo)準(zhǔn)行星減速步進(jìn)電機(jī)、普通行星減速步進(jìn)電機(jī),2007年又開(kāi)發(fā)出直線步進(jìn)電機(jī)、防水步進(jìn)電機(jī)、配剎車(chē)的步進(jìn)電機(jī),2021年又推出配編碼器的步進(jìn)電機(jī),2021年即將推出防爆步進(jìn)電機(jī)。開(kāi)展趨勢(shì)之六,向低價(jià)格高品質(zhì)方向開(kāi)展。2003年以前步進(jìn)電機(jī)價(jià)格相對(duì)較高,于是步進(jìn)電機(jī)企業(yè)紛紛分家,眾多步進(jìn)電機(jī)廠家如雨后春筍般成立,其中一些廠商為爭(zhēng)取客戶,不惜降低品質(zhì),壓低價(jià)格,導(dǎo)致2005年到2021年期間步進(jìn)電機(jī)市場(chǎng)

9、平均品質(zhì)下降。經(jīng)過(guò)市場(chǎng)經(jīng)濟(jì)幾年來(lái)的的優(yōu)勝劣汰,和用戶對(duì)步進(jìn)電機(jī)品質(zhì)的認(rèn)識(shí),使得運(yùn)控等高品質(zhì)的步進(jìn)電機(jī)和驅(qū)動(dòng)器廠商得到市場(chǎng)的高度認(rèn)可。隨著高品質(zhì)步進(jìn)電機(jī)及驅(qū)動(dòng)器的大規(guī)模標(biāo)準(zhǔn)化生產(chǎn)以降低生產(chǎn)本錢(qián),未來(lái)的假設(shè)干年高品質(zhì)步進(jìn)電機(jī)及驅(qū)動(dòng)器會(huì)持續(xù)占領(lǐng)主導(dǎo)地位。1.3設(shè)計(jì)容在各類(lèi)機(jī)電系統(tǒng)中,隨著社會(huì)的快速開(kāi)展,步進(jìn)電機(jī)已廣泛運(yùn)用于工業(yè)控制、日常生活領(lǐng)域的各個(gè)方面。因此設(shè)計(jì)一種新的步進(jìn)電機(jī)控制器,它具有調(diào)速精度高、響應(yīng)速度快和耗損低等特點(diǎn)。本設(shè)計(jì)由AVR單片機(jī)、L298 驅(qū)動(dòng)器及液晶顯示構(gòu)成的步進(jìn)電機(jī)控制器。本設(shè)計(jì)具有擴(kuò)展功能:具有通信能力,可接收其他數(shù)據(jù)設(shè)備發(fā)來(lái)的命令,或?qū)⒔Y(jié)果傳送到其他數(shù)據(jù)設(shè)備,可具備與上

10、位機(jī)的通信能力,控制更給直觀、簡(jiǎn)便。第二章、任務(wù)2.1設(shè)計(jì)任務(wù)(1)根本容按鍵切換控制電機(jī)正反轉(zhuǎn),數(shù)碼管顯示電機(jī)轉(zhuǎn)速,電位計(jì)控制電機(jī)轉(zhuǎn)速。(2)擴(kuò)展容按鍵切換控制電機(jī)正反轉(zhuǎn),電機(jī)通電方式為四相雙四拍,運(yùn)行方式為位置控制,LED為速度快慢,數(shù)碼管顯示電機(jī)轉(zhuǎn)速2.2任務(wù)分工(1)根本容程序的編寫(xiě)調(diào)試以及實(shí)驗(yàn)報(bào)告的撰寫(xiě)負(fù)責(zé)人員:少維 王勝杰 (2)擴(kuò)展容程序的編寫(xiě)及調(diào)試負(fù)責(zé)人員:輪 冶西原第三章、單片機(jī)資源設(shè)置3.1硬件設(shè)置采用AVR單片機(jī)作為主控單元,L298作為驅(qū)動(dòng)芯片。L298是ST公司生產(chǎn)的一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片的主要特點(diǎn)是工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間

11、峰值電流可達(dá)3A,持續(xù)工作電2A;含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可以用來(lái)驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器、線圈等感性負(fù)載;采用標(biāo)準(zhǔn)TTL邏輯電平信號(hào)控制;具有兩個(gè)使能控制端,在不受輸入信號(hào)影響的情況下允許或制止器件工作;有一個(gè)邏輯電源輸入端,使部邏輯電路局部在低電壓下工作;可以外接檢測(cè)電阻,將變化量反應(yīng)給控制電路。步進(jìn)電機(jī)驅(qū)動(dòng)電路如圖,3.2 ICCAVR 向?qū)?duì)程序進(jìn)展初始化第四章、程序編寫(xiě)4.1程序流程圖下列圖是整個(gè)系統(tǒng)的軟件流程4.2源代碼/ICC-AVR application builder : 2021/5/15 16:56:58/ Target : M8/ Crysta

12、l: 11.059Mhz*include *include *includeg7289.h*define AB() (PORTB = 0B00001010)*define BC() (PORTB = 0B00001100)*define CD() (PORTB = 0B00010100)*define DA() (PORTB = 0B00010010)*define PCA() (PORTC = 0B11111110) /定義電機(jī)運(yùn)行的8個(gè)通電相序*define PCB() (PORTC = 0B11111101)*define PCC() (PORTC = 0B11111011)*defin

13、e PCD() (PORTC = 0B11110111)*define PCAB() (PORTC = 0B11111100)*define PCBC() (PORTC = 0B11111001)*define PCCD() (PORTC = 0B11110011)*define PCDA() (PORTC = 0B11110110)int temp,a,dir_mot=0,step=0,sum=0,step1=0;int c,b=0;void port_init(void) PORTB = 0*00; DDRB = 0*1E; PORTC = 0*00; /m103 output only

14、DDRC = 0*0F; PORTD = 0*00; DDRD = 0*E0;/TIMER0 initialize - prescale:1024/ desired value: 100Hz/ actual value: 100.933Hz (0.9%)void timer0_init(void) TCCR0 = 0*00; /stop a=10799.8*2/temp; TT0 = 256-a; /set count TCCR0 = 0*05; /start timer*pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVFvoid timer

15、0_ovf_isr(void) a=10799.8*2/temp; TT0 = 256-a;/reload counter value b=4*temp; if(cb) c+; if(dir_mot = 0)/電機(jī)正轉(zhuǎn) sum=1732;if(step = 0) AB();else if(step = 1) BC(); else if(step =2) CD(); else if(step = 3) DA(); else if(dir_mot = 1)/電機(jī)反轉(zhuǎn)sum=0732;if(step = 0) AB();else if(step = 1) DA(); else if(step =2)

16、 CD(); else if(step = 3) BC(); step+;if(step = 4) step = 0;else if( c = b)sum=0000;G7289_SendByte(0*a4); Show_num(sum);/TIMER1 initialize - prescale:1024/ WGM: 0) Normal, TOP=0*FFFF/ desired value: 5Hz/ actual value: 5.002Hz (0.0%)void timer1_init(void) TCCR1B = 0*00; /stop TT1H = 0*F7; /setup TT1L

17、= 0*91; OCR1AH = 0*08; OCR1AL = 0*6F; OCR1BH = 0*08; OCR1BL = 0*6F; ICR1H = 0*08; ICR1L = 0*6F; TCCR1A = 0*00; TCCR1B = 0*05; /start Timer*pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVFvoid timer1_ovf_isr(void) /TIMER1 has overflowed TT1H = 0*F7; /reload counter high value TT1L = 0*91; /reload

18、counter low value if(dir_mot = 0)/電機(jī)正轉(zhuǎn) if(step1 = 0) PCA(); else if(step1= 1) PCAB(); else if(step1 = 2) PCB(); else if(step1= 3) PCBC(); else if(step1= 4) PCC(); else if(step1= 5) PCCD(); else if(step1= 6) PCD(); else if(step1= 7) PCDA(); else if(dir_mot = 1)/電機(jī)反轉(zhuǎn) if(step1= 0) PCDA(); else if(step1

19、 = 1) PCD(); else if(step1 = 2) PCCD(); else if(step1 = 3) PCC(); else if(step1 = 4) PCBC(); else if(step1 = 5) PCB(); else if(step1= 6) PCAB(); else if(step1 = 7) PCA(); step1+; if(step1=8)step1=0;/ADC initialize/ Conversion time: 150uSvoid adc_init(void) ADCSR = 0*00; /disable adc ADMU* = 0*07; /s

20、elect adc input 0ACSR = 0*80; ADCSR = 0*EF;*pragma interrupt_handler adc_isr:iv_ADCvoid adc_isr(void) /conversion plete, read value (int) using. / value=ADCL; /Read 8 low bits first (important) / value|=(int)ADCH 8; /read 2 high bits and shift into top byte temp=ADCL; temp|=(int)ADCH8;*pragma interr

21、upt_handler int0_isr:iv_INT0void int0_isr(void) /e*ternal interupt on INT0dir_mot=0; c=0;*pragma interrupt_handler int1_isr:iv_INT1void int1_isr(void) /e*ternal interupt on INT1 dir_mot=1; c=0;/call this routine to initialize all peripheralsvoid init_devices(void) /stop errant interrupts until set u

22、p CLI(); /disable all interrupts port_init(); timer0_init(); timer1_init(); adc_init(); MCUCR = 0*0A; GICR = 0*C0; TIMSK = 0*05; /timer interrupt sources SEI(); /re-enable interrupts /all peripherals are now initialized/void main(void) init_devices(); /insert your functional code here.*include *incl

23、ude *includeg7289.h /驅(qū)動(dòng)數(shù)碼管顯示程序*includedelay.h /延時(shí)程序*define ADC_Filter_Num 10 /濾波次數(shù)*define A() (PORTB = 0B00000010) /定義電機(jī)運(yùn)行的8個(gè)通電相序*define B() (PORTB = 0B00001000)*define C() (PORTB = 0B00000100)*define D() (PORTB = 0B00010000)*define AB() (PORTB = 0B00001010)*define BC() (PORTB = 0B00001100)*define C

24、D() (PORTB = 0B00010100)*define DA() (PORTB = 0B00010010)int dir_flag =0; /轉(zhuǎn)向標(biāo)志認(rèn)為0為正轉(zhuǎn),1為反轉(zhuǎn)char step = 0; /電機(jī)通電相序的控制量unsigned int digtemp,temp; /用于存儲(chǔ)ADC的10位數(shù)字量int num=0;float sum=0;float f=0;char count=0;void port_init(void) /端口初始化,由軟件直接生成 PORTB = 0*00; DDRB = 0*1E; PORTC = 0*00; /m103 output only DD

25、RC = 0*0F; PORTD = 0*00; DDRD = 0*E0;/TIMER1 initialize - prescale:1024/ WGM: 0) Normal, TOP=0*FFFF/ desired value: 50Hz/ actual value: 50.232Hz (0.5%)void timer1_init(void)/定時(shí)器1的初始化 TCCR1B = 0*00; /stop TT1H = 0*FF; /setup TT1L = 0*29; OCR1AH = 0*00; OCR1AL = 0*D7; OCR1BH = 0*00; OCR1BL = 0*D7; ICR

26、1H = 0*00; ICR1L = 0*D7; TCCR1A = 0*00; TCCR1B = 0*05; /start Timer*pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVFvoid timer1_ovf_isr(void)/定時(shí)中斷程序 TT1H = 0*FF; /reload counter high value TT1L = count; /reload counter low value if(dir_flag = 0)/電機(jī)正轉(zhuǎn) if(step = 0) A(); else if(step = 1) AB(); else

27、 if(step = 2) B(); else if(step = 3) BC(); else if(step = 4) C(); else if(step = 5) CD(); else if(step = 6) D(); else if(step = 7) DA(); else if(dir_flag = 1)/電機(jī)反轉(zhuǎn) if(step = 0) DA(); else if(step = 1) D(); else if(step = 2) CD(); else if(step = 3) C(); else if(step = 4) BC(); else if(step = 5) B();

28、else if(step = 6) AB(); else if(step = 7) A(); step+;if(step = 8) step = 0;/ADC initialize/ Conversion time: 75uSvoid adc_init(void)/ADC初始化 ADCSR = 0*00; /disable adc ADMU* = 0*07; /select adc input 7ACSR = 0*80; ADCSR = 0*EE;*pragma interrupt_handler adc_isr:iv_ADCvoid adc_isr(void) digtemp=ADCL; d

29、igtemp|=(int)ADCH8; /conversion plete, read value (int) using. / value=ADCL; /Read 8 low bits first (important) / value|=(int)ADCH 800)/旋轉(zhuǎn)電位計(jì)輸出大小對(duì)應(yīng)LED燈亮滅個(gè)數(shù)PORTC=0*f0;else if(digtemp600)PORTC=0*01;else if(digtemp400)PORTC=0*03;else if(digtemp200)PORTC=0*07;elsePORTC=0*ff; *pragma interrupt_handler in

30、t0_isr:iv_INT0void int0_isr(void)/電機(jī)正轉(zhuǎn) dir_flag =0;/e*ternal interupt on INT0*pragma interrupt_handler int1_isr:iv_INT1void int1_isr(void)/電機(jī)反轉(zhuǎn) dir_flag =1;/e*ternal interupt on INT1/call this routine to initialize all peripheralsvoid init_devices(void) /stop errant interrupts until set up CLI(); /disable all interrupts port_init(); timer1_init(); adc_init(); MCUCR = 0*0A; GICR = 0*C0; TIMSK = 0*04; /timer interru

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論