基于arm的步進(jìn)電機(jī)控制系統(tǒng)本科學(xué)位論文_第1頁
基于arm的步進(jìn)電機(jī)控制系統(tǒng)本科學(xué)位論文_第2頁
基于arm的步進(jìn)電機(jī)控制系統(tǒng)本科學(xué)位論文_第3頁
基于arm的步進(jìn)電機(jī)控制系統(tǒng)本科學(xué)位論文_第4頁
基于arm的步進(jìn)電機(jī)控制系統(tǒng)本科學(xué)位論文_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGE1目錄1引言 12半導(dǎo)體STM32單片機(jī)簡述 12.1STM32功能特性概述 13步進(jìn)電機(jī)的特點(diǎn) 23.1步進(jìn)電機(jī)驅(qū)動方法及軟硬件實(shí)現(xiàn) 23.2步進(jìn)電機(jī)控制原理 34.總體設(shè)計(jì)方案 44.1設(shè)計(jì)思路 44.2硬件設(shè)計(jì)方案 44.2.1ARM控制程序 54.3復(fù)位電路 54.5控制電路 64.6步進(jìn)電機(jī)驅(qū)動電路 74.7系統(tǒng)軟件程序設(shè)計(jì) 75.實(shí)習(xí)結(jié)論 8參考文獻(xiàn) 9附錄1驅(qū)動電路PCB 10附錄2主程序 11基于ARM的步進(jìn)電機(jī)細(xì)分驅(qū)動控制設(shè)計(jì)1引言步進(jìn)電機(jī)能將輸入的電脈沖信號轉(zhuǎn)換成輸出軸的角位移或直線位移。這種電機(jī)每輸入一個(gè)脈沖信號,輸出軸便轉(zhuǎn)動一定的角度或前進(jìn)一步,因此又被稱作脈沖電機(jī)或步級電機(jī)。步進(jìn)電機(jī)輸出軸的角位移量與輸入脈沖數(shù)成正比,不受電壓以及環(huán)境溫度的影響,也沒有累積的定位誤差,因此控制輸入的數(shù)字脈沖數(shù)即可實(shí)現(xiàn)電機(jī)的精確定位;而步進(jìn)電機(jī)輸出軸的轉(zhuǎn)速與輸入的脈沖頻率成正比,控制輸入的脈沖頻率就能準(zhǔn)確的控制步進(jìn)電機(jī)的轉(zhuǎn)速,可以實(shí)現(xiàn)在寬廣的范圍內(nèi)精確調(diào)速。由于步進(jìn)電機(jī)的這一特點(diǎn)正好符合數(shù)字控制系統(tǒng)的要求,同時(shí)電子技術(shù)的發(fā)展也解決了步進(jìn)電機(jī)的電源問題。因此隨著計(jì)算機(jī)技術(shù)和數(shù)字控制技術(shù)的發(fā)展,步進(jìn)電機(jī)的應(yīng)用也日益廣泛。目前,步進(jìn)電機(jī)應(yīng)用于磁盤驅(qū)動器、數(shù)控機(jī)床、軋鋼機(jī)、機(jī)器人、以及自動化儀表等方面。2半導(dǎo)體STM32單片機(jī)簡述STM32采用ARM公司最新的Cortex-M3內(nèi)核,具有運(yùn)行速度高、處理能力強(qiáng)、外設(shè)接口豐富等特點(diǎn)。由于其低廉的價(jià)格和很強(qiáng)的控制、運(yùn)算性能,被廣泛運(yùn)用于電機(jī)控制。其具體性能指標(biāo)如下:1)工作頻率:最高72MHz;工作溫度范圍:-40~+85℃;寬電壓供電:2.0~3.6V;2)128k字節(jié)的閃存存儲器和16k的SRAM;3)12位16通道AD轉(zhuǎn)換器具有雙采樣和保持功能,轉(zhuǎn)換時(shí)間最短1μs。4)3個(gè)16位通用定時(shí)器,每個(gè)定時(shí)器有多達(dá)4個(gè)通道,用于輸入捕獲/輸出比較/PWM或脈沖輸出;1個(gè)16位帶死區(qū)控制盒緊急剎車,用于電機(jī)控制的PWM高級控制定時(shí)器。2.1STM32功能特性概述STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARMCortex-M3內(nèi)核。按性能分成兩個(gè)不同的系列:STM32F103“增強(qiáng)型”系列和STM32F101“基本型”系列。增強(qiáng)型系列時(shí)鐘頻率達(dá)到72MHz,是同類產(chǎn)品中性能最高的產(chǎn)品;基本型時(shí)鐘頻率為36MHz,以16位產(chǎn)品的價(jià)格得到比16位產(chǎn)品大幅提升的性能,是16位產(chǎn)品用戶的最佳選擇。兩個(gè)系列都內(nèi)置32K到128K的閃存,不同的是SRAM的最大容量和外設(shè)接口的組合。時(shí)鐘頻率72MHz時(shí),從閃存執(zhí)行代碼,STM32功耗36mA,是32位市場上功耗最低的產(chǎn)品,相當(dāng)于0.5mA/MHz。圖1STM32B2M103X3步進(jìn)電機(jī)的特點(diǎn)步進(jìn)電機(jī)具有轉(zhuǎn)矩大、慣性小、響應(yīng)頻率高等優(yōu)點(diǎn),因此具有瞬間起動與急速停止的優(yōu)越特性。步進(jìn)電動機(jī)與一般的電動機(jī)不同,只接電源時(shí)不能轉(zhuǎn)動,每加次脈沖信號后僅轉(zhuǎn)動一定的角度。它可以精確地控制轉(zhuǎn)動的角度,還可以實(shí)現(xiàn)開控制,其控制精度也很高。而且輸出的轉(zhuǎn)角或位移精度高,誤差不會積累;更重要的是控制系統(tǒng)結(jié)構(gòu)簡單,可以直接驅(qū)動機(jī)器人的關(guān)而不需要減速裝置。因此,雖然直流電機(jī)伺服系統(tǒng)、交流電機(jī)伺服系統(tǒng)在計(jì)算機(jī)控制系統(tǒng)中被普遍地使用,步進(jìn)電機(jī)仍廣泛用于簡易數(shù)控機(jī)床、送料機(jī)構(gòu)、儀器、儀表等領(lǐng)域。3.1步進(jìn)電機(jī)驅(qū)動方法及軟硬件實(shí)現(xiàn)步進(jìn)電機(jī)驅(qū)動的組成包括變頻信號源、脈沖分配器和功率放大器部分。(1)脈沖信號:一般由時(shí)鐘芯片或單片機(jī)等產(chǎn)生,一般要求脈沖信號的頻率可變,以控制電機(jī)的轉(zhuǎn)速的變化。(2)控制信號:根據(jù)不同的步進(jìn)電機(jī)和實(shí)際需要,采用適當(dāng)?shù)目刂品绞健?3)驅(qū)動:功率放大是驅(qū)動系統(tǒng)最為重要的部分。步進(jìn)電機(jī)在一定轉(zhuǎn)速下的轉(zhuǎn)矩,取決于它的動態(tài)平均電流而非靜態(tài)電流。平均電流越大電機(jī)力矩越大,要達(dá)到平均電流大這就需要驅(qū)動系統(tǒng)盡量克服電機(jī)的反電動勢。因而不同的場合采取不同的驅(qū)動方式。在這里的驅(qū)動是基于ARM的兩相步進(jìn)電機(jī)的驅(qū)動,也就是說軟件中我們是采用ARM進(jìn)行編程從而實(shí)現(xiàn)控制電機(jī)的轉(zhuǎn)動,從GPIO口輸出脈沖,由于發(fā)出的電流等都很小,要加一個(gè)功率放大電路再接到電機(jī)上,才能驅(qū)動電機(jī)轉(zhuǎn)起來。3.2步進(jìn)電機(jī)控制原理步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。通俗一點(diǎn)講:當(dāng)步進(jìn)驅(qū)動器接收到一個(gè)脈沖信號,它就驅(qū)動步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動一個(gè)固定的角度(及步進(jìn)角)。您可以通過控制脈沖個(gè)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)您可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。步進(jìn)電機(jī)28BYJ48型四相八拍電機(jī),電壓為DC5V—DC12V。當(dāng)對步進(jìn)電機(jī)施加一系列連續(xù)不斷的控制脈沖時(shí),它可以連續(xù)不斷地轉(zhuǎn)動。每一個(gè)脈沖信號對應(yīng)步進(jìn)電機(jī)的某一相或兩相繞組的通電狀態(tài)改變一次,也就對應(yīng)轉(zhuǎn)子轉(zhuǎn)過一定的角度(一個(gè)步距角)。當(dāng)通電狀態(tài)的改變完成一個(gè)循環(huán)時(shí),轉(zhuǎn)子轉(zhuǎn)過一個(gè)齒距。四相步進(jìn)電機(jī)可以在不同的通電方式下運(yùn)行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A。。。),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。)我們用的四拍,所以接線配置為紅線接電源5V,橙色電線接PC口3腳,黃色電線接PC口2腳,粉色電線接PC口1腳,藍(lán)色接PC口0腳。由于ARM接口信號不夠大我們通過三極管放大放大電路再連接到相應(yīng)的電機(jī)接口,如下:表1電機(jī)控制相序表

粉藍(lán)

1

0

0

0

1

1

0

0

0

1

0

0

0

1

1

0

0

0

1

0

0

0

1

1

0

0

0

1

1

0

0

1實(shí)驗(yàn)所用電機(jī):28BYJ-48步進(jìn)電機(jī)圖2步進(jìn)電機(jī)實(shí)物4.總體設(shè)計(jì)方案4.1設(shè)計(jì)思路在本設(shè)計(jì)系統(tǒng)內(nèi),主要利用ARM輸出信號的來控制電機(jī)的轉(zhuǎn)動,同時(shí)能夠調(diào)整轉(zhuǎn)速,控制轉(zhuǎn)向。通過改變給電機(jī)輸入脈沖信號波形的不同來改變電機(jī)的轉(zhuǎn)速;通過控制電機(jī)相序來控制電機(jī)轉(zhuǎn)向??傮w設(shè)計(jì)框圖如下:圖3總的設(shè)計(jì)框圖4.2硬件設(shè)計(jì)方案步進(jìn)電機(jī)控制系統(tǒng)共分為四個(gè)模塊:ARM模塊、控制模塊、數(shù)碼顯示模塊、步進(jìn)電機(jī)驅(qū)動模塊。ARM最小系統(tǒng)主要由復(fù)位電路和時(shí)鐘電路組成。復(fù)位電路為ARM系統(tǒng)提供可靠復(fù)位,使ARM能正常啟動。時(shí)鐘電路采用外部時(shí)鐘方式,保證ARM個(gè)功能部件都是以時(shí)鐘頻率為基準(zhǔn),有條不紊地一拍一拍地工作。步進(jìn)電機(jī)驅(qū)動模塊選用四NPN達(dá)林頓連接晶體管8050為步進(jìn)電機(jī)提供脈沖信號,驅(qū)動步進(jìn)電機(jī)轉(zhuǎn)動。4.2.1ARM控制程序程序采用定時(shí)器中斷,利用定時(shí)器中斷時(shí)間的不同來實(shí)現(xiàn)電機(jī)轉(zhuǎn)速的變化。三洋SANYO步進(jìn)電機(jī)的步距角是1.8,即有48個(gè)脈沖為一周,設(shè)定的最低轉(zhuǎn)速是每分25轉(zhuǎn),即1200個(gè)脈沖一分,相當(dāng)于50ms每個(gè)脈沖??闪谐鲋蓝〞r(shí)器的常數(shù)與步進(jìn)電機(jī)關(guān)系。設(shè)定定時(shí)器的時(shí)間常數(shù),當(dāng)定時(shí)時(shí)間到后,換到下個(gè)輸出腳。通過控制兩個(gè)引腳輸出脈沖的間隔時(shí)間,來進(jìn)行轉(zhuǎn)速的控制。4.3復(fù)位電路上電自動復(fù)位上電復(fù)位是加電瞬間電容充電來實(shí)現(xiàn)的。在通電瞬間,電容C通過電阻R充電,RST端出現(xiàn)正脈沖,用以復(fù)位。(2)手動復(fù)位復(fù)位,是通過接通一個(gè)按鈕開關(guān),使單片機(jī)進(jìn)入復(fù)位狀態(tài)。系統(tǒng)上電運(yùn)行后,需要復(fù)位,一般過手動復(fù)位實(shí)現(xiàn)。具體復(fù)位電路如下:圖3復(fù)位電路4.4振蕩電路

OSCIN和OSCOUT分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。有余輸入至內(nèi)部時(shí)鐘信號要通過一個(gè)二分頻觸發(fā)器,因此對外部時(shí)鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。圖5振蕩電路4.5控制電路利用按鍵來控制電機(jī)的啟停,正反轉(zhuǎn),加減速。當(dāng)一個(gè)按鍵接通后,I/O口出現(xiàn)一個(gè)負(fù)脈沖,通過內(nèi)部程序的設(shè)置,實(shí)現(xiàn)電機(jī)轉(zhuǎn)向、速度的控制。圖6按鍵電路4.6步進(jìn)電機(jī)驅(qū)動電路本系統(tǒng)采用三極管放大電路對步進(jìn)電機(jī)進(jìn)行驅(qū)動。由于我們使用的電機(jī)是線圈式的在從運(yùn)行狀態(tài)突然轉(zhuǎn)換到停止?fàn)顟B(tài)和從順時(shí)針狀態(tài)突然轉(zhuǎn)換到逆時(shí)針狀,態(tài)時(shí)會形成很大的反向電流,在電路中加入二極管的作用就是在產(chǎn)生反向電流的時(shí)候進(jìn)行泄流,保護(hù)芯片的安全。圖7分立驅(qū)動電路4.7系統(tǒng)軟件程序設(shè)計(jì)本設(shè)計(jì)采用通用性高的C語言程序編寫,根據(jù)程序編寫思路畫出如圖8圖8程序流程圖實(shí)習(xí)結(jié)論經(jīng)過老師耐心細(xì)致的指導(dǎo),經(jīng)過近二個(gè)星期的努力,本次畢業(yè)設(shè)計(jì)課題步進(jìn)電機(jī)控制系統(tǒng)告一段落。步進(jìn)電機(jī)控制系統(tǒng)主要分為硬件設(shè)計(jì)和軟件設(shè)計(jì)兩個(gè)部分:硬件設(shè)計(jì)主要是把ARM最小系統(tǒng)、控制模塊、步進(jìn)電機(jī)驅(qū)動模塊、等各個(gè)硬件功能模塊及其它元件合理搭配并連接起來使其能夠?yàn)檐浖\(yùn)行提供一個(gè)硬件平臺。軟件設(shè)計(jì)主要是通過編寫程序代碼,實(shí)現(xiàn)對整個(gè)系統(tǒng)的控制。在系統(tǒng)上電復(fù)位后程序自動運(yùn)行,通過接受查詢外部的按鍵參數(shù)值,控制步進(jìn)電機(jī)的啟停,以及轉(zhuǎn)速的增減和轉(zhuǎn)動方向的改變;本系統(tǒng)具有相當(dāng)?shù)膶?shí)用功能,能基本符合實(shí)際應(yīng)用需求,通過這次課程設(shè)計(jì),我從一開始對系統(tǒng)的不太熟悉,到能開發(fā)一個(gè)簡單的系統(tǒng),在這整個(gè)過程中我學(xué)到了很多東西,掌握了一些常用的開發(fā)技能,也發(fā)現(xiàn)了大量的問題,有些在設(shè)計(jì)過程中已經(jīng)解決,有些還有待今后慢慢學(xué)習(xí)。只要學(xué)習(xí)就會有更多的問題,有更多的難點(diǎn),但也會有更多的收獲。最后,在這次設(shè)計(jì)中,感謝老師對我們論文的指導(dǎo)和修改,感謝同學(xué)的幫助,感謝我的父母對我的無微培養(yǎng),在此表示衷心的感謝!參考文獻(xiàn)[1]周立工.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社.2008[2]劉寶廷.步進(jìn)電動機(jī)及其驅(qū)動控制系統(tǒng)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社.1997。[3]陸春.步進(jìn)電機(jī)細(xì)分調(diào)速系統(tǒng)的研究[M].北京:北京交通大學(xué)碩士畢業(yè)論文.2003[4]松井信行.控制用電機(jī)入門[M].北京:科學(xué)出版社.2000[5]朱志堅(jiān).三種典型的步進(jìn)電動機(jī)驅(qū)動電路特性分析[J].新疆工學(xué)院學(xué)報(bào).步進(jìn)電機(jī)驅(qū)動,1999,(26):12-15.[6]王鴻鈺.步進(jìn)電機(jī)控制技術(shù)入門[M].上海:同濟(jì)大學(xué)出版社.1996

附錄1驅(qū)動電路附錄2主程序/********************************************************************************文件名: main.c**版本: 1.0**工作環(huán)境: RealViewMDK-ARM4.20**作者: lifang**生成日期: 2013-3-28*******************************************************************************/*包含頭文件******************************************************************************/#include"stm32f10x.h"#include"key_led.h"#include"delay.h"/*類型聲明*//*宏定義*//*變量*/voidmotor_IS_STOP(void);voidmotor_TURN_EVEN(void);voidmotor_TURN_RISE(void);voidmotor_TURN_DROP(void);voidmotor_INVERTED_EVEN(void);voidmotor_INVERTED_RISE(void);voidmotor_INVERTED_DROP(void);/*******************************************************************************@函數(shù)名稱 main*@函數(shù)說明主函數(shù)*@輸入?yún)?shù)無*@輸出參數(shù)無*@返回參數(shù)無*****************************************************************************/intmain(void){ LED_GPIO_Config(); KEY_GPIO_Config(); RED_OFF; BLUE_OFF; YALLOW_OFF; ORANGE_OFF;while(1){if(KEY1_VALUE==0){ motor_IS_STOP(); KEY1_VALUE=1;}elseif(KEY2_VALUE==0){if(KEY4_VALUE==0) //反轉(zhuǎn) {if(KEY5_VALUE==0) //反轉(zhuǎn)加速 motor_INVERTED_RISE(); elseif(KEY6_VALUE==0) //反轉(zhuǎn) motor_INVERTED_DROP(); else //勻速反轉(zhuǎn) motor_INVERTED_EVEN(); } elseif(KEY3_VALUE==0) //正轉(zhuǎn) {if(KEY5_VALUE==0) //正轉(zhuǎn)加速 motor_TURN_RISE(); elseif(KEY6_VALUE==0) //正轉(zhuǎn)減速 motor_TURN_DROP(); else //勻速正轉(zhuǎn) motor_TURN_EVEN(); } }}}#ifdefUSE_FULL_ASSERT/*******************************************************************************@函數(shù)名稱 assert_failed*@函數(shù)說明報(bào)告在檢查參數(shù)發(fā)生錯(cuò)誤時(shí)的源文件名和錯(cuò)誤行數(shù)*@輸入?yún)?shù)file:源文件名 line:錯(cuò)誤所在行數(shù)*@輸出參數(shù)無*@返回參數(shù)無*****************************************************************************/voidassert_failed(uint8_t*file,uint32_tline){while(1){}}#endifvoidmotor_IS_STOP(void) //停{while(1){RED_OFF; BLUE_OFF; YALLOW_OFF; ORANGE_OFF;} }voidmotor_TURN_RISE(void) //正轉(zhuǎn)加速 {intpulseCount; for(pulseCount=200;pulseCount>=0;pulseCount=pulseCount-20) { ORANGE_ON; Delay_nms(100+pulseCount); ORANGE_OFF; YALLOW_ON; Delay_nms(100+pulseCount); YALLOW_OFF; RED_ON; Delay_nms(100+pulseCount); RED_OFF; BLUE_ON; Delay_nms(100+pulseCount); BLUE_OFF; } }voidmotor_TURN_EVEN(void) {intj; for(j=0;j<=100;j++) {ORANGE_ON; Delay_nms(100); ORANGE_OFF; YALLOW_ON; Delay_nms(100); YALLOW_OFF; RED_ON; Delay_nms(100); RED_OFF; BLUE_ON; Delay_nms(100); BLUE_OFF; } }voidmotor_TURN_DROP(void) //減速 {intpulseCount; for(pulseCount=10;pulseCount<=100;pulseCount=pulseCount+10) { ORANGE_ON; Delay_nms(10+pulseCount); ORANGE_OFF; YALLOW_ON; Delay_nms(10+pulseCount); YALLOW_OFF; RED_ON; Delay_nms(10+pulseCount); RED_OFF; BLUE_ON; Delay_nms(10+pulseCount); BLUE_OFF; } }voidmotor_INVERTED_RISE(void) //反轉(zhuǎn)加速 {intpulseCount; for(pulseCount=200;pulseCount>=0;pulseCount=pulseCount-10) {BLUE_ON; Delay_nms(10+pulseCount); BLUE_OFF; RED_ON; Delay_nms(10+pulseCount); RED_OFF; YALLOW_ON; Delay_nus(10+pulseCount); YALLOW_OFF; ORANGE_ON; Delay_nus(10+pulseCount); ORANGE_OFF;

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論