步進電機控制系統(tǒng)_第1頁
步進電機控制系統(tǒng)_第2頁
步進電機控制系統(tǒng)_第3頁
步進電機控制系統(tǒng)_第4頁
步進電機控制系統(tǒng)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、屆 別 學(xué) 號 畢業(yè)設(shè)計基于單片機的步進電機控制系統(tǒng)設(shè)計姓 名 系 別、 專 業(yè) 導(dǎo) 師 姓 名、職 稱 完 成 時 間 I摘要 隨著微電子和計算機技術(shù)的發(fā)展,步進電機的需求量與日俱增,它廣泛用于打印機、電動玩具等消費類產(chǎn)品以及數(shù)控機床、工業(yè)機器人、醫(yī)療器械等機電產(chǎn)品中,其在各個國民經(jīng)濟領(lǐng)域都有應(yīng)用。研究步進電機的控制系統(tǒng),對提高控制精度和響應(yīng)速度、節(jié)約能源等都具有重要意義。 步進電機是一種能將電脈沖信號轉(zhuǎn)換成角位移或線位移的機電元件,步進電機控制系統(tǒng)主要由步進控制器,功率放大器及步進電機等組成。采用單片機控制,用軟件代替上述步進控制器,使得線路簡單,成本低,可靠性大大增加。軟件編程可靈活產(chǎn)生

2、不同類型步進電機勵磁序列來控制各種步進電機的運行方式。 本設(shè)計是采用STC89C52單片機對步進電機的控制,通過IO口輸出的時序方波作為步進電機的控制信號,信號經(jīng)過芯片ULN2003驅(qū)動步進電機;同時,用 4個按鍵來對電機的狀態(tài)進行控制,并用4個LED發(fā)光二極管顯示電機的轉(zhuǎn)速。 系統(tǒng)由硬件設(shè)計和軟件設(shè)計兩部分組成。其中,硬件設(shè)計包括STC89C52單片機的最小系統(tǒng)、電源模塊、鍵盤控制模塊、步進電機驅(qū)動(集成達林頓ULN2003)模塊、LED指示燈模塊。軟件采用在Keil軟件環(huán)境下編輯。 關(guān)鍵字:STC89C52、步進電機、ULN2003驅(qū)動 1 緒論1.1 課題的背景當今社會,電動機在工農(nóng)業(yè)生

3、產(chǎn)、人們?nèi)粘I钪衅鹬种匾淖饔?。步進電機是最常見的一種控制電機,在各領(lǐng)域中得到廣泛應(yīng)用。步進電機作為執(zhí)行元件,是機電一體化的關(guān)鍵產(chǎn)品之一, 廣泛應(yīng)用在各種自動化控制系統(tǒng)中。隨著微電子和計算機技術(shù)的發(fā)展,步進電機的需求量與日俱增,在各個國民經(jīng)濟領(lǐng)域都有應(yīng)用。步進電機是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。步進電機可以作為一種控

4、制用的特種電機,其優(yōu)點是結(jié)構(gòu)簡單、運行可靠、控制方便。尤其是步距值不受電壓、溫度的變化的影響、誤差不會長期積累的特點,給實際的應(yīng)用帶來了很大的方便。它廣泛用于消費類產(chǎn)品(打印機、照相機、雕刻機)、工業(yè)控制(數(shù)控機床、工業(yè)機器人)、醫(yī)療器械等機電產(chǎn)品中。研究步進電機的控制和測量方法,對提高控制精度和響應(yīng)速度、節(jié)約能源等都具有重要意義??刂坪诵牟捎肅51芯片,它以其獨特的低成本,小體積廣受歡迎,當然其易編程也是不可多得的優(yōu)點為此,本文設(shè)計了一個單片機控制步進電機的控制系統(tǒng),可以實現(xiàn)對步進電機轉(zhuǎn)動速度和轉(zhuǎn)動方向的高效控制。1.2 研究的主要內(nèi)容本設(shè)計的目的是以單片機為核心設(shè)計出一個單片機控制步進電機

5、的控制系統(tǒng)。本系統(tǒng)采用STC89C52作為控制單元,通過鍵盤實現(xiàn)對步進電機轉(zhuǎn)動方向及轉(zhuǎn)動速度的控制,并且將步進電機的轉(zhuǎn)動用四個LED燈指示。2 總體方案設(shè)計 本步進電機控制系統(tǒng),按照系統(tǒng)設(shè)計功能的要求,確定系統(tǒng)由4個模塊組成:主控制器、電機驅(qū)動模塊、LED指示燈電路、鍵盤電路。溫度無線采集報警系統(tǒng)結(jié)構(gòu)框圖如圖1所示按鍵電路電機驅(qū)動電源STC89C52單片機步進電機LED指示燈 圖1 系統(tǒng)結(jié)構(gòu)框圖2.1 方案的選擇2.1.1 主控芯片方案 方案一: 采用傳統(tǒng)的STC89C52單片機作為主控芯片。此芯片價格便宜、操作簡便,低功耗,比較經(jīng)濟實惠。 方案二: 采用TI公司生產(chǎn)的MSP430F149系列

6、單片機作為主控芯片。此單片機是一款高性能的低功耗的16位單片機,具有非常強大的功能,且內(nèi)置高速12位ADC。但其價格比較昂貴,而且是TPFQ貼片封裝,不利于焊接,需要PCB制板,大大增加了成本和開發(fā)周期。 方案三: 采用宏晶科技有限公司的STC12C5A60S2增強型51單片機作為主控芯片。此芯片內(nèi)置ADC和SPI總線接口,且內(nèi)部時鐘不分頻,可達到1MPS。而且價格適中??紤]到此系統(tǒng)需要不用到ADC,從性能和價格上綜合考慮我們選擇方案一,即用STC89C52作為本系統(tǒng)的主控芯片。2.1.2 步進電機驅(qū)動方案方案1: 采用繼電器對電動機的開或關(guān)進行控制,通過開關(guān)的切換對小車的速度進行調(diào)整.此方案

7、的優(yōu)點是電路較為簡單,缺點是繼電器的響應(yīng)時間慢,易損壞,壽命較短,可靠性不高。方案2:采用電阻網(wǎng)絡(luò)或數(shù)字電位器調(diào)節(jié)電動機的分壓,從而達到分壓的目的。但電阻網(wǎng)絡(luò)只能實現(xiàn)有級調(diào)速,而數(shù)字電阻的元器件價格比較昂貴。更主要的問題在于一般的電動機電阻很小,但電流很大,分壓不僅會降低效率,而且實現(xiàn)很困難。方案3:采用ULN2003達林頓管電機驅(qū)動芯片,ULN2003芯片是高耐壓、大電流達林頓陣列,由7組達林頓晶體管陣列和相應(yīng)的電阻網(wǎng)絡(luò)以及鉗位二極管網(wǎng)絡(luò)構(gòu)成,具有同時驅(qū)動7組負載的能力,為單片雙極型大功率高速集成電路。功率電子電路大多要求具有大電流輸出能力,以便于驅(qū)動各種類型的負載。功率驅(qū)動電路是功率電子設(shè)

8、備輸出電路的一個重要組成部分。ULN2003芯片高壓大電流達林頓晶體管陣列產(chǎn)品屬于可控大功率器件。對步進電機控制方便靈活。因此我們選用了方案3。2.1.3 顯示模塊方案方案一: 選擇主控為ST7920的帶字庫的LCD12864來顯示信息。12864是一款通用的液晶顯示屏,能夠顯示多數(shù)常用的漢字及ASCII碼,而且能夠繪制圖片,描點畫線,設(shè)計成比較理想的結(jié)果。方案二: 采用四個LED發(fā)光二極管顯示,其成本低,簡單明了,容易顯示控制。綜合以上方案,我們選擇了經(jīng)濟實惠LED來作為速度級別顯示。3 硬件系統(tǒng)的設(shè)計與實現(xiàn) 3.1 步進電機3.1.1 步進電機概述步進電機是一種能夠?qū)㈦娒}沖信號轉(zhuǎn)換成角位移

9、或線位移的機電元件,它實際上是一種單相或多相同步電動機。單相步進電動機有單路電脈沖驅(qū)動,輸出功率一般很小,其用途為微小功率驅(qū)動。多相步進電動機有多相方波脈沖驅(qū)動,用途很廣。使用多相步進電動機,單路電脈沖信號可先通過脈沖分配器轉(zhuǎn)換為多相脈沖信號,在經(jīng)功率放大后分別送入步進電動機各相繞組。每輸入一個脈沖到脈沖分配器,電動機各相的通電狀態(tài)就發(fā)生變化,轉(zhuǎn)子會轉(zhuǎn)過一定的角度(稱為步距角)。正常情況下,步進電機轉(zhuǎn)過的總角度和輸入的脈沖數(shù)成正比;連續(xù)輸入一定頻率的脈沖時,電動機的轉(zhuǎn)速與輸入脈沖的頻率保持嚴格的對應(yīng)關(guān)系,不受電壓波動和負載變化的影響。由于步進電動機能直接接收數(shù)字量的輸入,所以特別適合于微機控制

10、。3.1.2 步進電機的特性步進電機轉(zhuǎn)動使用的是脈沖信號,而脈沖是數(shù)字信號,這恰是計算機所擅長處理的數(shù)據(jù)類型。從20世紀80年代開始開發(fā)出了專用的IC驅(qū)動電路,今天,在打印機、磁盤器等的OA裝置的位置控制中,步進電機都是不可缺少的組成部分之一??傮w上說,步進電機有如下優(yōu)點:1不需要反饋,控制簡單。2與微機的連接、速度控制(啟停和反轉(zhuǎn))及驅(qū)動電路的設(shè)計比較簡單。3沒有角累積誤差。4停止時也可保持轉(zhuǎn)距。5沒有轉(zhuǎn)向器等機械部分,不需要保養(yǎng),故造價較低。6即使沒有傳感器,也能精確定位。7根椐給定的脈沖周期,能夠以任意速度轉(zhuǎn)動。但是,這種電機也有自身的缺點:1難以獲得較大的轉(zhuǎn)矩2.不宜用作高速轉(zhuǎn)動3在體

11、積重量方面沒有優(yōu)勢,能源利用率低。4超過負載時會破壞同步,高速工作時會發(fā)出振動和噪聲。3.1.3 步進電機的種類目前常用的步進電機有三類:表1 步進電機分類類別結(jié)構(gòu)步距力矩動態(tài)性能反應(yīng)式步進電動機(VR)采用高導(dǎo)磁材料構(gòu)成齒狀轉(zhuǎn)子和定子小小較差永磁式步進電動機(PM)轉(zhuǎn)子采用多磁極圓筒形的永磁鐵,其外側(cè)配置齒狀定子吸引和排斥力產(chǎn)生轉(zhuǎn)動大大好混合步進電動機(HB)這是PM和VR的復(fù)合產(chǎn)品,其轉(zhuǎn)子采用齒狀的稀土永磁材料,定子則為齒狀的突起結(jié)構(gòu)小大好3.1.4 永磁步進電機的控制原理在本設(shè)計以常用的永磁式步進電機為例,用單片機控制步進電機。圖2-1是CZ-2801型永磁步進電機的外形圖,圖2-2是該

12、電機的接線圖。 圖2-1 CZ-2801型永磁步進電機外形圖 圖2-2 CZ-2801型永磁步進電機接線圖從圖中可以看出,電機共有四組線圈,四組線圈的一個端點連在一起引出,這樣一共有 5根引出線。要使用步進電機轉(zhuǎn)動,只要輪流給各引出端通電即可。將 COM 端標識為C,只要 AC、BC或/AC、/BC,輪流加電就能驅(qū)動步進電機運轉(zhuǎn),加電的方式可以有多種,如果將 COM 端接正電源,那么只要用開關(guān)元件(如三極管) ,將 A、B或/A、/B輪流接地。不難設(shè)計出控制電路,因其工作電壓為 12V,因此用一塊開路輸出達林頓驅(qū)動器(這里用ULN2003,關(guān)于ULN2003將在后面介紹)作為驅(qū)動,通過 P1.

13、0、 P1.3來控制各線圈的接通與切斷。開機時,P1.0、 P1.3均為高電平,依次將 P1.0、 P1.2 (或P1.1、 P1.3反向)切換為低電平即可驅(qū)動步進電機運行。如果要改變電機的轉(zhuǎn)動速度只要改變兩次接通之間的時間。改變轉(zhuǎn)速,只要改變 P1.0、 P1.2 (或P1.1、 P1.3反向)輪流變低電平的時間即可達到要求,因為不會影響到其他功能的實現(xiàn),這個時間可以用延時來實現(xiàn),。這里以定時的方式來實現(xiàn)。下面首先計算一下定時時間。 按要求,最低轉(zhuǎn)速為 20 轉(zhuǎn)/分,而上述步進電機的步距角為 7.5,即每 48 個脈沖為 1 周,即在最低轉(zhuǎn)速時,要求為960脈沖/分,相當于 62.5ms/脈

14、沖。而在最高轉(zhuǎn)速時,要求為 100轉(zhuǎn)/分,即 48000 脈沖/分,相當于 12.5ms/脈沖??梢粤谐鱿卤恚罕?-2 步進電機轉(zhuǎn)速與定時器定時常數(shù)關(guān)系轉(zhuǎn)速單步時間(ms)TH0TL02062.51F02159.5238095229B62256.8181818233742354.347826093C592452.08333333448025504C02648.0769230852EC2746.296296359552844.642857145F499313.44086022CF9C9413.29787234D0209513.15789474D0A19613.02083333D1209712.8

15、8659794D19B9812.75510204D2149912.62626263D28B10012.5D30表中不僅計算出了 TH0和 TL0,而且還計算出了在這個定時常數(shù)下,真實的定時時間,可以根據(jù)這個計算值來估算真實速度與理論速度的誤差值。 表中 TH0 和TL0 是根據(jù)定時時間算出來的定時初值,這里用到的晶振是 12.000M。有了上述表格,程序就不難實現(xiàn)了,使用定時/計數(shù)器 T0為定時器,定時時間到后切換輸出腳即可。3.2 步進電機控制系統(tǒng)的組成步進電機控制系統(tǒng)共分為五個模塊:單片機最小系統(tǒng)模塊、鍵盤控制模塊、LED指示模塊、步進電機驅(qū)動模塊和電源模塊。1.單片機最小系統(tǒng)主要由復(fù)位電

16、路和時鐘電路組成。復(fù)位電路為單片機系統(tǒng)提供可靠復(fù)位,使單片機能正常啟動。時鐘電路采用外部時鐘方式,保證單片機個功能部件都是以時鐘頻率為基準,有條不紊地一拍一拍地工作。2.鍵盤控制模塊包括方向控制鍵、加速鍵和減速鍵、啟停鍵,分別與單片機的P3.4、p3.5、p3.6和P3.7相連。實現(xiàn)對步進電機的控制。3.四個LED發(fā)光二極管顯示步進電機的速度等級。分成四個等級,四個LED全亮速度最快,亮一個速度最慢。4.步進電機驅(qū)動模塊選用七個NPN達林頓連接晶體管ULN2003為步進電機提供脈沖信號,驅(qū)動步進電機轉(zhuǎn)動。該模塊與單片機的P1.0P1.3相連。5.電源模塊3接5號電池4.5V分別供給驅(qū)動模塊和單

17、片機模塊。3.3 主控制模塊 單片機最小系統(tǒng)包括單片機、復(fù)位電路、時鐘電路構(gòu)成。STC89C52 單片機的工作電壓范圍:4V-5.5V,所以通常給單片機外界5V直流電源。連接方式為單片機中的40腳VCC接正極5V,而20腳VSS接電源地端。復(fù)位電路就是確定單片機的工作起始狀態(tài),完成單片機的啟動過程。單片機接通電源時產(chǎn)生復(fù)位信號,完成單片機啟動確定單片機起始工作狀態(tài)。當單片機系統(tǒng)在運行中,受到外界環(huán)境干擾出現(xiàn)程序跑飛的時候,按下復(fù)位按鈕內(nèi)部的程序自動從頭開始執(zhí)行。一般有上電自動復(fù)位和外部按鍵手動復(fù)位,單片機在時鐘電路工作以后,在RESET端持續(xù)給出2個機器周期的高電平時就可以完成復(fù)位操作。本設(shè)計

18、采用的是外部手動按鍵復(fù)位電路,需要接上上拉電阻來提高輸出高電平的值。 時鐘電路好比單片機的心臟,它控制著單片機的工作節(jié)奏。時鐘電路就是振蕩電路,是向單片機提供一個正弦波信號作為基準,決定單片機的執(zhí)行速度。XTAL1和XTAL2分別為反向放大器的輸入和輸出,該反向放大器可以配置為片內(nèi)振蕩器。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。因為一個機器周期含有6個狀態(tài)周期,而每個狀態(tài)周期為2個振蕩周期,所以一個機器周期共有12個振蕩周期,如果外接石英晶體振蕩器的振蕩頻率為12MHZ,一個振蕩周期為1/12us。 主控制最小系統(tǒng)電路如圖2所示。 圖2 單片主控電路3.3.1 STC89C52單片機簡介

19、STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。STC89C52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,STC89

20、C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。這一模塊以單片機為中心把程序代碼燒進去然后外圍接上復(fù)位電路、振蕩電路、鍵盤控制、LED顯示電路、報警電路等子模塊。3.3.2 單片機的引腳功能描述 下面對AT89C52各引腳的功能進行較為詳細的介紹:1)電源引腳Vcc和Vss Vcc(40腳):電源端為+5V Vss(20腳):接地端。 2)時鐘電路引腳XTAL1和XTAL2XTAL2(18腳):接外部晶體和

21、微調(diào)電容的一端。在單片機內(nèi)部它是振蕩電路反向放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時針電路時,該引腳輸入外時鐘脈沖。要檢查89C52的振蕩電路是否正常工作,可用示波器查看XTAL2端是否有脈沖信號輸出。XTAL1(19腳):接外部晶體和微調(diào)電容的另一端。在片內(nèi),它是振蕩電路反向放大器的輸入端。在采用外部時鐘時,該引腳必須接地。 3)控制信號腳 RST ALE PSEN 和EA。 RST(9腳):RST是復(fù)位信號輸入端,高電平有效。在此輸入端保持兩個機器周期(24個時鐘振蕩周期)的高電平時,就可以完成復(fù)位操作。ALE/PROG(30引腳):地址鎖存允許信號端。當AT89C5

22、2上電正常工作后,ALE引腳不斷向外輸出正脈沖信號。此頻率為振蕩器頻率fosc的1/6,當CPU訪問片外存儲器時,ALE輸出信號作為鎖存低8位地址的控制信號。在CPU訪問片外數(shù)據(jù)存儲時,每取值一次(一個機器周期)會丟失一個脈沖。平時不訪問片外存儲時,ALE端也以1/6的振蕩頻率固定輸出正脈沖,因而ALE信號可以用作對外輸出時鐘或定時信號。如果你想看一下AT89C52芯片的好壞,可用示波器查看ALE端是否有脈沖信號輸出,如有脈沖信號輸出,則AT89C52基本上是好的。ALE的負載驅(qū)動能力為8個LS型TTL(低功耗高速TTL)。 PSEN(29腳);程序存儲允許輸出信號引腳,在訪問片外程序存儲器時

23、,此端定時輸出負脈沖作為讀片外存儲器的選通信號。此引腳接ERROM的OE端。PSEN端有效,即允許讀出ERROM/ROM中的指令碼。CPU在從外部ERROM/ROM取指令期間,每個周期PSEN兩次有效。不過,在訪問片外RAM時,要少產(chǎn)生兩次PSEN負脈沖信號。要檢查一個AT89C52小系統(tǒng)上電后CPU能否正常到ERROM/ROM中讀取指令碼,也可用于示波器看PSEN端有無脈沖輸出。如有,說明基本上工作正常。EA/VPP(31腳):外部程序存儲器地址允許輸入端/固化編程電壓輸入端。當EA引腳接高電平時,CPU只訪問片內(nèi)ERROM/ROM并執(zhí)行內(nèi)部程序存儲器中的指令。但在PC(程序計數(shù)器)的值超過

24、OFFFH(對8751/8051為4k)時,將自動轉(zhuǎn)向執(zhí)行片外存儲器的程序。當出入信號EA引腳接低電平(接地)時,CPU只訪問外部ERROM/ROM并執(zhí)行外部程序存儲器中的指令,而不管是否有片內(nèi)程序存儲器。對于無芯片內(nèi)的ROM的8031或8032,須外擴ERROM,此時必須將EA引腳接地。如果使用有片內(nèi)ROM的AT89C52,外擴ERROM也是可以的,但也要使EA接地。4)I/O(輸入/輸出端口,P0,P1,P2,P3)P0口:P0口是一個漏極開路的8位準雙向I/O端口。P1口:8位準雙向I/O端口。P2口:即可以做地址總線輸出地址高8位,也可以做普通I/O用,(此時為準雙向口)。P3口:雙功

25、能口,即可以做普通I/O口用(此時為準向口,也可以按每位定義實現(xiàn)第二功能操作)。見表1。表1 P3口的第二功能表引腳第二功能P3.0RXD (串行輸入口)P3.1TXD (串行輸出口)P3.2INT0(外部中斷0)P3.3INT1(外部中斷1)P3.4T0(定時器0外部中斷)P3.5T1(定時器1外部中斷)P3.6WR(外部存儲器寫選通)P3.7RD(外部存儲器讀寫通)3.3.3 單片機的時鐘電路與復(fù)位電路設(shè)計 本系統(tǒng)采用stc系統(tǒng)列單片機,相比其他系列單片機具有很多優(yōu)點。本系統(tǒng)采用內(nèi)部方式的時鐘電路和加電自復(fù)位的復(fù)位電路,如下圖3圖4所示:圖3 時鐘電路圖4 復(fù)位電路由于單片機P0口內(nèi)部不含

26、上拉電阻,為高阻態(tài),不能正常地輸出高/低電平,因而該組I/O口在使用時必須外接上拉電阻R6。3.4 電源電路設(shè)計 供電電源采用3接1.5V干電池給傳感器,單片機供電。電路如圖5所示。P2為電源接線端,SW1為電源總開關(guān)。D4為電源指示燈。圖5 電源電路 3.5 步進電機驅(qū)動電路 步進電機采用ULN2003驅(qū)動,驅(qū)動原理圖如圖6。圖6 蜂鳴器報警電路圖 3.6 按鍵電路系統(tǒng)采用了4個,一個啟動鍵,一個停止鍵,一個速度調(diào)節(jié)鍵,一個正反轉(zhuǎn)切換鍵。電路如圖7。圖7 按鍵電路3.7 速度等級指示燈電路 速度等級采用LED指示燈指示。接口電路如圖8所示圖8 指示電路4 軟件系統(tǒng)的設(shè)計與系統(tǒng)功能實現(xiàn)4.1

27、軟件設(shè)計原則及編程思路應(yīng)用系統(tǒng)中的應(yīng)用軟件是根據(jù)系統(tǒng)功能要求設(shè)計的,應(yīng)穩(wěn)定正確的實現(xiàn)系統(tǒng)的各種功能。在本系統(tǒng)中,軟件設(shè)計要求做到以下幾點:1. 軟件結(jié)構(gòu)清晰,簡捷,流程合理。2. 各功能程序?qū)崿F(xiàn)模塊化。這樣,即便于調(diào)試,鏈接,又便于移植,修改。3. 程序存儲區(qū),數(shù)據(jù)存儲區(qū)要合理規(guī)劃,既能節(jié)約內(nèi)存容量,又使操作方便。4. 運行狀態(tài)實現(xiàn)標志化管理。各個功能程序運行狀態(tài),運行結(jié)果以及運行要求都要設(shè)置狀態(tài)標志以便查詢,程序轉(zhuǎn)移,控制都可通過狀態(tài)標志條件來控制。4.2 程序設(shè)計前期準備4.2.1 程序設(shè)計平臺考慮到程序的易讀性和簡練,程序設(shè)計采用C語言。程序編輯平臺采用Keil。圖3-1 Keil軟件界

28、面4.2.2 程序設(shè)計思路步進電機控制系統(tǒng)的軟件需要同時完成讀取鍵盤、處理鍵盤、控制步進電機轉(zhuǎn)動、控制數(shù)碼管動態(tài)顯示等任務(wù),這就必須通過中斷技術(shù)來實現(xiàn)。在本設(shè)計中,主程序采用查詢方式掃描鍵盤端口,檢測按鍵動作是否發(fā)生,若有按鍵動作則處理鍵盤,根據(jù)按鍵值修改相應(yīng)參數(shù)值,實現(xiàn)鍵盤的實時處理功能。定時器0中斷服務(wù)程序控制步進電機的轉(zhuǎn)動:根據(jù)當前顯示的速度進行鍵盤手動改變T0定時時間常數(shù),設(shè)置TH0和TL0的值,達到對轉(zhuǎn)速精確控制的目的;根據(jù)轉(zhuǎn)動方向控制位的值,控制脈沖信號循環(huán)移動的方向,達到對轉(zhuǎn)動方向控制的目的。說明如下:1.單片機接受鍵盤信息,改變系統(tǒng)內(nèi)部變量值。2.單片機輸出脈沖信號,控制步進電

29、機轉(zhuǎn)動。3.單片機根據(jù)步進電機實際轉(zhuǎn)動值,控制數(shù)碼管顯示。4.3 程序流程圖4.3.1 主程序流程圖步進電機控制系統(tǒng)的主程序在對整個系統(tǒng)初始化后主要完成讀鍵盤和處理鍵盤的功能,如圖3-2所示:圖3-2 步進電機控制系統(tǒng)主程序流程圖系統(tǒng)上電復(fù)位后,先調(diào)用初始化子程序,對步進電機各端口,相關(guān)參數(shù)進行初始化,設(shè)置T0工作方式控制時間常數(shù)。初始化完成后,步進電機處于停止狀態(tài),T0定時器處于關(guān)閉狀態(tài)。然后循環(huán)調(diào)用讀鍵盤子程序和鍵盤處理子程序,等待中斷,以便實現(xiàn)步進電機轉(zhuǎn)動控制。4.3.2 讀鍵盤子程序流程圖首先初始化實際鍵值參數(shù)為0FH,然后掃描P2口,與初始值比較,相等則說明沒有鍵按下,不相等則軟件消

30、抖,以便確認是否真的有鍵按下。延時10ms后再次掃描P2口,第二次與初始值比較,若相等則表明前一次比較不相等是由抖動產(chǎn)生;如果相等則表明確實有鍵按下。執(zhí)行鍵盤之程序里的指令,將相應(yīng)的變量值改變,為鍵盤處理子程序做準備。啟動否是否有鍵按下處理鍵盤子程序是圖3-3 掃描鍵盤字程序流程圖4.3.3 鍵盤處理子程序流程圖按鍵處理子程序流程圖如圖3-3所示:初始化變量開始P2.3是否按下P2.2是否按下P2.0是否按下P2.1是否按下退出TR0取反,通過啟停T0啟停步進電機取反方向控制為,改變電機轉(zhuǎn)動方向修改速度參數(shù)值,減速修改速度參數(shù)值,加速 是是是是圖3-3鍵盤處理子程序流程圖步進電機的啟??刂仆ㄟ^

31、啟停定時器T0來實現(xiàn),因為定時器T0控制著脈沖信號的輸出,關(guān)閉定時器T0也就阻止了脈沖信號的輸出。4.3.4 電機控制中斷程序流程圖定時器中斷0服務(wù)程序流程圖如圖3-4所示: 圖3-4 定時器中斷0服務(wù)程序流程圖定時器中斷0服務(wù)程序的中斷時間由當前的轉(zhuǎn)速決定。進入中斷程序后,首先要保護現(xiàn)場,再根據(jù)當前值設(shè)置TH0和TL0的值。然后判斷轉(zhuǎn)動方向控制位的值,如果是0則控制脈沖信號P1.0、P1.2輸出,如果是1則控制脈沖信號P1.1、P1.3輸出。最后恢復(fù)現(xiàn)場,返回,等待下次中斷。通過用當前轉(zhuǎn)速控制中斷時間,控制了脈沖的輸出頻率,也就到達了控制步進電機轉(zhuǎn)動速度的目的;通過檢測方向控制位的電平,選擇

32、脈沖信號P1.0、P1.2與P1.1、P1.3間的切換,控制了步進電機各引出端的接通順序,也就到實現(xiàn)了步進電機轉(zhuǎn)動方向的控制。各模塊控制的詳細程序附于最后。28 5 調(diào)試與改進5.1 調(diào)試與改進在系統(tǒng)完成后測試系統(tǒng),檢查硬件和軟件是否能夠協(xié)調(diào)運行,并對系統(tǒng)出現(xiàn)的情況進行分析,看是否能夠達到系統(tǒng)創(chuàng)作之初所設(shè)想的效果,如達不到則重新修改系統(tǒng)的硬件結(jié)構(gòu)或者修改軟件的程序部分,直到達到設(shè)計需要為止。本系統(tǒng)的設(shè)計思路為:首先從整體上劃分出各功能模塊,然后硬件和軟件同時進行依次完成各個功能模塊,最后將各個模塊聯(lián)系起來完成整個系統(tǒng)。在硬件調(diào)試的過程中,遇到了很多問題。主要有:1. 確定步進電機的使用方法,和

33、控制模式。此處尤為重要,這是整個系統(tǒng)的基礎(chǔ),也是確定軟件是否能控制步進電機思路的開端。2.鍵盤設(shè)計完成后,在多次運行過程中發(fā)現(xiàn)按鍵是否按下難以直觀準確判斷。軟件測試的時候也有些問題,主要有:1.軟件去抖方式,和時間的控制。2.控制步進電機轉(zhuǎn)動的程序段完成后,調(diào)試發(fā)現(xiàn)對步進電機速度的控制范圍過小,查閱資料后發(fā)現(xiàn)設(shè)計思路不太合理,原先的設(shè)計思路是用主程序控制步進電機轉(zhuǎn)動,采用延時方式控制步進電機速度,由定時器處理鍵盤;改進程序,主程序用來處理鍵盤,由定時器控制步進電機轉(zhuǎn)動,步進電機轉(zhuǎn)動速度由定時器定時時間決定。問題得到解決,不僅擴大了步進電機速度的控制范圍,也使得單片機對步進電機速度的控制更加精確

34、。5.2 運行結(jié)果連接好硬件電路,上電復(fù)位,程序開始運行。1.此時步進電機不轉(zhuǎn)動,LED不顯示;按下啟停鍵,步進電機開始轉(zhuǎn)動,LED數(shù)碼管顯示數(shù)值當前數(shù)值,即當前步進電機的轉(zhuǎn)速為25轉(zhuǎn)/分;2.此時每按下加速鍵一次,LED亮的個數(shù)值加1,步進電機轉(zhuǎn)動速度相應(yīng)增加;此時每按下減速鍵一次,LED亮的個數(shù)值減1,步進電機轉(zhuǎn)動速度相應(yīng)減少;此時若按下方向控制鍵,步進電機立即向相反方向轉(zhuǎn)動,轉(zhuǎn)動速度保持不變。總 結(jié)經(jīng)過老師耐心細致的指導(dǎo),經(jīng)過近一個月的努力,本次畢業(yè)設(shè)計課題步進電機控制系統(tǒng)告一段落。步進電機控制系統(tǒng)主要分為硬件設(shè)計和軟件設(shè)計兩個部分:硬件設(shè)計主要是把單片機最小系統(tǒng)、鍵盤控制模塊、步進電機

35、驅(qū)動模塊、數(shù)碼顯示模塊、測速模塊各個硬件功能模塊及其它元件合理搭配并連接起來使其能夠為軟件運行提供一個硬件平臺。軟件設(shè)計主要是通過編寫程序代碼,實現(xiàn)對整個系統(tǒng)的控制。在系統(tǒng)上電復(fù)位后程序自動運行,通過接受外部的鍵盤操作修改系統(tǒng)參數(shù)值,控制步進電機的啟停,以及轉(zhuǎn)速的增減和轉(zhuǎn)動方向的改變;定時器T0根據(jù)系統(tǒng)參數(shù)控制步進電機的轉(zhuǎn)動;實現(xiàn)步進電機轉(zhuǎn)動速度的動態(tài)顯示。本系統(tǒng)具有相當?shù)膶嵱霉δ?兩片單片機分別實現(xiàn)步進電機控制和測速,能基本符合實際應(yīng)用需求,本次設(shè)計由于設(shè)計時間較短,個人能力以及精力等因素的限制,加之設(shè)計經(jīng)驗的不足,該系統(tǒng)還有許多不盡如人意的地方。該系統(tǒng)未能完全的實現(xiàn)設(shè)計的所有功能。如:利用

36、鍵盤輸入轉(zhuǎn)速值實現(xiàn)轉(zhuǎn)速的控制,動態(tài)設(shè)置最低轉(zhuǎn)速和最高轉(zhuǎn)速等。在把理論設(shè)計轉(zhuǎn)換成實物的整個過程,如:電路設(shè)計、分析計算、畫電路圖、焊接電路、檢查調(diào)試、軟件流程控制設(shè)計分析、編寫調(diào)試軟件、燒寫軟件到整個軟硬件系統(tǒng)的調(diào)試,最后直到系統(tǒng)完成。其中整個系統(tǒng)的前期準備是首先必須做到位的,如控制什么、用什么控制、得到什么結(jié)果,進而對各部分應(yīng)選擇具體的芯片作進一步的考慮,以使系統(tǒng)得到最優(yōu)的表現(xiàn)。致 謝本論文是在*老師的精心指導(dǎo)下完成的。在做畢業(yè)設(shè)計的整個過程中,得到了*老師的耐心指導(dǎo),特別是在設(shè)計的初始階段,*老師在需求分析方面給了我很大的幫助,在老師幫助和指導(dǎo)下,使我能很快地就確定了系統(tǒng)的目的和開發(fā)方案,在

37、后來的確定步進電機結(jié)構(gòu)和性能方面*老師給了很大的幫助,使后來的程序?qū)崿F(xiàn)方面使我少走了很多彎路,并提高了我的效率。這對于我以后的工作和學(xué)習(xí)都有很大的幫助,在此衷心感謝老師的耐心輔導(dǎo)。同時感謝那些在設(shè)計中給予幫助的同學(xué),因為有充分的、默契的合作才有更順利的結(jié)果。 參考文獻1.宋錦河,步進電機控制系統(tǒng)的快速實現(xiàn)J.鄂州大學(xué)學(xué)報,2004.10:46.2.黃堅,自動控制原理及其應(yīng)用M.北京:高等教育出版社,2004:124126.3.徐薇莉,曹柱中.控制理論與設(shè)計M.上海:上海交通大學(xué)出版社,2003:8788.4.盧超,單片機與PC機的通信設(shè)計J.工礦自動化,2007(5):116118.5.王幸之

38、,鐘愛琴.AT89系列單片機原理及接口技術(shù)M.北京:北京航天大學(xué)出版社,2004.6.王曉明,電動機的單片機控制M.北京:北京航空航天大學(xué)出版社,2002:4447.7.先鋒工作室.單片機程序設(shè)計實例M.北京:清華大學(xué)出版社,2003:1316.8.康華光,陳大欽.模擬電子電路M.北京:高等教育出版社,2004:7376.9.馬潮,詹衛(wèi)前等,ATMega8原理及應(yīng)用手冊M.北京:清華大學(xué)出版社,2003:3435.10.李華.MCS-51系列單片機實用接口技術(shù)M.北京:北京航空航天大學(xué)出版社,2001:4244.附錄1:整體原理圖附錄2:程序源代碼#include <reg52.h>

39、;#define uchar unsigned char /無符號字符型 宏定義變量范圍0255#define uint unsigned int /無符號整型 宏定義變量范圍065535unsigned char code zheng4=0x08,0x04,0x02,0x01;/正轉(zhuǎn)表格unsigned char code fan4=0x01,0x02,0x04,0x08;/反轉(zhuǎn)表格uchar flag_start ; /啟動標志位 1為起動步進電機 否則關(guān)閉電機uchar flag_z_f; /正反標志位 0為順時鐘 1為逆時史上轉(zhuǎn)uchar flag_shudu; /4種速度 0,1,2,3,uint flag_shudu_value = 400;void Delay(unsig

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論