基于8255的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)_第1頁
基于8255的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)_第2頁
基于8255的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)_第3頁
基于8255的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)_第4頁
基于8255的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上基于8255的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)一、實(shí)驗(yàn)設(shè)計(jì)的目的與要求通過步進(jìn)電機(jī)控制系統(tǒng)實(shí)驗(yàn)設(shè)計(jì),用8255擴(kuò)展端口控制步進(jìn)電機(jī),編寫程序輸出脈沖序列到8255的PA口,控制步進(jìn)電機(jī)正傳,反轉(zhuǎn),加速,減速。進(jìn)一步掌握微機(jī)原理與接口的理論和實(shí)際方法。培養(yǎng)和鍛煉開發(fā)控制系統(tǒng)的能力。為今后單片機(jī)的學(xué)習(xí)與應(yīng)用開發(fā)打下良好的基礎(chǔ)。要求了解步進(jìn)電機(jī)控制的基本原理,掌握控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)的編程方法,進(jìn)一步了解單片機(jī)控制外部設(shè)備的常用電路。二、步進(jìn)電機(jī)原理1.步進(jìn)電機(jī)的工作原理 該步進(jìn)電機(jī)為一四相步進(jìn)電機(jī),采用單極性直流電源供電。只要對(duì)步進(jìn)電機(jī)的各相繞組按合適的時(shí)序通電,就能使步進(jìn)電機(jī)步進(jìn)轉(zhuǎn)動(dòng)

2、。圖1是該四相反應(yīng)式步進(jìn)電機(jī)工作原理示意圖。圖1 四相步進(jìn)電機(jī)步進(jìn)示意圖開始時(shí),開關(guān)SB接通電源,SA、SC、SD斷開,B相磁極和轉(zhuǎn)子0、3號(hào)齒對(duì)齊,同時(shí),轉(zhuǎn)子的1、4號(hào)齒就和C、D相 繞組磁極產(chǎn)生錯(cuò)齒,2、5號(hào)齒就和D、A相繞組磁極產(chǎn)生錯(cuò)齒。當(dāng)開關(guān)SC接通電源,SB、SA、SD斷開時(shí),由于C相繞組的磁力線和1、4號(hào)齒之間磁力線的作用,使轉(zhuǎn)子轉(zhuǎn)動(dòng),1、4號(hào)齒和C相繞組的磁極對(duì)齊。而0、3號(hào)齒和A、B相繞組產(chǎn)生錯(cuò)齒,2、5號(hào)齒就和A、D相繞組磁極產(chǎn)生錯(cuò)齒。依次類推,A、B、C、D四相繞組輪流供電,則轉(zhuǎn)子會(huì)沿著A、B、C、D方向轉(zhuǎn)動(dòng)。四相步進(jìn)電機(jī)按照通電順序的不同,可分為單四拍、雙四拍、八拍三種工

3、作方式。單四拍與雙四拍的步距角相等,但單四拍的轉(zhuǎn)動(dòng)力矩小。八拍工作方式的步距角是單四拍與雙四拍的一半,因此,八拍工作方式既可以保持較高的轉(zhuǎn)動(dòng)力矩又可以提高控制精度。單四拍、雙四拍與八拍工作方式的電源通電時(shí)序與波形分別如圖2.a、b、c所示:圖2.步進(jìn)電機(jī)工作時(shí)序波形圖a. 單四拍                      b. 雙四拍    

4、60;               c八拍2.步進(jìn)電機(jī)的驅(qū)動(dòng)原理步進(jìn)電動(dòng)機(jī)是一種數(shù)字元件,易于數(shù)字電路接口,但一般數(shù)字電路的信號(hào)的能量遠(yuǎn)遠(yuǎn)不足以驅(qū)動(dòng)步進(jìn)電動(dòng)機(jī)。因此,必須有一個(gè)與之匹配的驅(qū)動(dòng)電路來驅(qū)動(dòng)步進(jìn)電動(dòng)機(jī)。對(duì)步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)一般有如下要求:(1) 能夠提供較快的電流上升和下降速度,使電流波形盡量接近矩形。(2) 具有供截止期間釋放電流流通的回路,以降低繞組兩端的反電動(dòng)勢(shì),加快電流衰減。(3) 具有較高的功率及效率。步進(jìn)電動(dòng)機(jī)的驅(qū)動(dòng)方式很多,如

5、單極性驅(qū)動(dòng)、雙極性驅(qū)動(dòng)、高低壓驅(qū)動(dòng)、斬波驅(qū)動(dòng)、細(xì)分驅(qū)動(dòng)、集成電路驅(qū)動(dòng)等。三、步進(jìn)電機(jī)的控制1. ULN2003由于集成電路集驅(qū)動(dòng)和保護(hù)于一體,作為小功率步進(jìn)電動(dòng)機(jī)的專用驅(qū)動(dòng)芯片, ULN2003 是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN 達(dá)林頓管組成。 該電路的特點(diǎn)如下: ULN2003 的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K 的基極電阻,在5V 的工作電壓下它能與TTL CMOS 電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。 ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時(shí)承受50V 的電壓,輸出還 可以在高負(fù)載電流并行運(yùn)行。ULN2003A在各

6、種控制電路中常用它作為驅(qū)動(dòng)繼電器的芯片,其芯片內(nèi)部做了一個(gè)消線圈反電動(dòng)勢(shì)的二極管。ULN2003的輸出端允許通過IC 電流200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。輸出電流大,故可以用來直接驅(qū)動(dòng)步進(jìn)電機(jī)。項(xiàng)目符號(hào)數(shù)值單位最大輸入電壓Vi(max)30V集電極-發(fā)射極電壓Vo(max)50V最大基極輸入電流IB(MAX)25mA輸出電流Io500mA貯存溫度Ts-65150結(jié)溫Tj175引線耐焊接溫度TD3002、脈沖的形成實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的控制,微機(jī)應(yīng)能輸出有一定周期的控制脈沖。 步驟是:先輸出一個(gè)高電平,延時(shí)一段時(shí)間后,再輸入一個(gè)低電平,然后再延時(shí)。改變延時(shí)時(shí)間的長(zhǎng)短

7、,即可改變脈沖的周期,脈沖的周期由步進(jìn)電機(jī)的工作頻率確定。用軟件形成環(huán)形脈沖的程序流程圖 3、正反轉(zhuǎn)控制步進(jìn)電機(jī)的旋轉(zhuǎn)方向和內(nèi)部繞組的通電順序及通電方式有密切關(guān)系。通過改變各相脈沖的先后順序,就可以改變電機(jī)的旋轉(zhuǎn)方向.4、轉(zhuǎn)速控制 控制步進(jìn)電機(jī)的運(yùn)行速度,實(shí)際上是控制系統(tǒng)發(fā)出時(shí)鐘脈沖的頻率或換相的周期,即在升速過程中,使脈沖的輸出頻率逐漸增加;在減速過程中,使脈沖的輸出頻率逐漸減少。脈沖信號(hào)的頻率可以用軟件延時(shí)和硬件中斷兩種方法來確定。 采用軟件延時(shí),一般是根據(jù)所需的時(shí)間常數(shù)來設(shè)計(jì)一個(gè)子程序,該程序包含一定的指令,設(shè)計(jì)者要對(duì)這些指令的執(zhí)行時(shí)間進(jìn)行嚴(yán)密的計(jì)算或者精確的測(cè)試,以便確定延時(shí)時(shí)間是否符

8、合要求。每當(dāng)延時(shí)子程序結(jié)束后,可以執(zhí)行下面的操作,也可用輸出指令輸出一個(gè)信號(hào)作為定時(shí)輸出。采用軟件定時(shí), CPU一直被占用,因此CPU利用率低??删幊痰挠布〞r(shí)器直接對(duì)系統(tǒng)時(shí)鐘脈沖或某一固定頻率的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)值則由編程決定。當(dāng)計(jì)數(shù)到預(yù)定的脈沖數(shù)時(shí),產(chǎn)生中斷信號(hào),得到所需的延時(shí)時(shí)間或定時(shí)間隔。由于計(jì)數(shù)的初始值由編程決定,因而在不改動(dòng)硬件的情況下,只通過程序變化即可滿足不同的定時(shí)和計(jì)數(shù)要求,因此使用很方便。五、硬件連接圖專心-專注-專業(yè)六、 程序設(shè)計(jì)1、程序流程圖 開始8255初始化設(shè)初始延時(shí)值輸出一拍脈沖(A)延時(shí)輸出下一個(gè)脈沖(B)延時(shí)輸出下個(gè)脈沖(C)輸出下一個(gè)脈沖(D)延時(shí)延時(shí)值

9、減小是否提速是否最快否是2、程序代碼:;*;本程序能實(shí)現(xiàn)步進(jìn)電機(jī)的正反轉(zhuǎn)與加速,具體過程如下: ;正轉(zhuǎn)加速一段時(shí)間,然后停止5秒,然后反向加速一段時(shí)間,然后再正轉(zhuǎn),如此循環(huán)往復(fù).;能實(shí)現(xiàn)正-停-反,也能實(shí)現(xiàn)正-反-停.;*MODE EQU 080H ;8255方式控制字CTL EQU 8000H ;8255端口A地址CONTRL EQU 8003H ;8255控制寄存器地址A EQU 01HB EQU 02HC EQU 04HD EQU 08HQS EQU 300 ;步進(jìn)電機(jī)轉(zhuǎn)過的圈數(shù)DATA SEGMENT DLY_C DW 0 ;DLY_C用以控制延時(shí)的長(zhǎng)短以實(shí)現(xiàn)步進(jìn)電機(jī)的加速 SOURC

10、E DB A,A+B,B,B+C,C,C+D,D,D+A ;步序表,使電機(jī)的工作方式為單/雙8拍DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA ;初始化數(shù)據(jù)段 MOV DS,AX ;* ;初始化8255,使8255的A口輸出.;* MOV DX,CONTRL ;8255的控制寄存器地址送DX MOV AL,MODE ;8255的A口輸出,故初始化控制字為80H OUT DX,AL ;將控制字從8255輸出以配置8255的工作方式 MOV DX,CTL ;將A口地址送DX MOV AL,0 ;將0送AL OUT DX,A

11、L ;8255的端口寫0以實(shí)現(xiàn)初始化 MOV DLY_C,300H ;延時(shí)初始值 MOV CX,QS ;將步進(jìn)電機(jī)的圈數(shù)300送CX ;*;以下程序段實(shí)現(xiàn)的功能是讓電機(jī)正向加速,速度達(dá)到最大值后勻速轉(zhuǎn)動(dòng).;*ZZ:MOV BX,0 ;將0送BX,讓電機(jī)的初始步為ANEXT1:MOV DX,CTL ;將8255的A口地址送DX MOV AL,SOURCEBX ;將電機(jī)的步序送AL OUT DX,AL ;將步序表中的第一個(gè)步序通過A口輸出 CALL DELAY ;調(diào)用延時(shí)子程序,用來控制電機(jī)轉(zhuǎn)速 INC BX ;BX加1,為取下一個(gè)步序做準(zhǔn)備 CMP BX,7 JBE NEXT1 ;判斷電機(jī)是否已

12、經(jīng)走完8拍 PUSH CX ;保存CX的值,因?yàn)橄旅孢€要用到CX MOV CX,DLY_C ;將DLY_C的值送CX DEC CX ;CX(即DLY_C)減1以實(shí)現(xiàn)加速 CMP CX,100H ;CX與100H比較,判斷電機(jī)轉(zhuǎn)速是否已經(jīng)達(dá)到最大值 JNE NN1 ;若電機(jī)轉(zhuǎn)速尚未達(dá)到最大值,則轉(zhuǎn)向NN1 INC CX ;若電機(jī)轉(zhuǎn)速已經(jīng)達(dá)到最大值,則CX加1以實(shí)現(xiàn)電機(jī)勻速轉(zhuǎn)動(dòng)NN1:MOV DLY_C,CX ;將CX的值送DLY_C以實(shí)現(xiàn)在一個(gè)循環(huán) POP CX ;恢復(fù)CX LOOP ZZ ;CX減1,讓電機(jī)轉(zhuǎn)下一圈 ;*;以下代碼段調(diào)用5次延時(shí)子程序以實(shí)現(xiàn)延時(shí)5秒.正式調(diào)試時(shí)時(shí)間稍大于5秒,;

13、可見用軟件延時(shí)不能實(shí)現(xiàn)精確延時(shí).;*TZ:MOV DX,CTL ;將8255的A口地址送DX MOV AL,0 ;將0送AL OUT DX,AL ;將0從A口輸出,使電機(jī)靜止不轉(zhuǎn) CALL DELAY1S ;調(diào)用5次延時(shí)1秒子程序,總共延時(shí)5秒 CALL DELAY1S CALL DELAY1S CALL DELAY1S CALL DELAY1S ;*;反轉(zhuǎn)加速一段時(shí)間,過程與正向加速類似,速度達(dá)到最大值后勻速轉(zhuǎn)動(dòng).;* MOV DLY_C,300H ;延時(shí)初始值 MOV CX,QS ;將步進(jìn)電機(jī)的圈數(shù)送CX,使電機(jī)反轉(zhuǎn)300圈FZ:MOV BX,7 ;將7送BX使電機(jī)反轉(zhuǎn)的初始相序?yàn)镈+AN

14、EXT2: MOV DX,CTL ;將8255的A口地址送DX MOV AL,SOURCEBX ;將電機(jī)的步序送AL OUT DX,AL ;將步序表中的第八個(gè)步序通過A口輸出,以控制電機(jī)反轉(zhuǎn) CALL DELAY ;調(diào)用延時(shí)子程序,用來控制電機(jī)轉(zhuǎn)速 DEC BX ;BX減1,為取下一個(gè)步序做準(zhǔn)備 CMP BX,0 JGE NEXT2 ;判斷電機(jī)是否已經(jīng)反向走完8拍 PUSH CX ;保存CX的值,因?yàn)橄旅孢€要用到CX MOV CX,DLY_C ;將DLY_C的值送CX DEC CX ;CX(即DLY_C)減1以實(shí)現(xiàn)加速 CMP CX,100H ;CX與100H比較,判斷電機(jī)轉(zhuǎn)速是否已經(jīng)達(dá)到最大

15、值 JNE NN2 ;若電機(jī)轉(zhuǎn)速尚未達(dá)到最大值,則轉(zhuǎn)向NN1 INC CX ;若電機(jī)轉(zhuǎn)速已經(jīng)達(dá)到最大值,則CX加1以實(shí)現(xiàn)電機(jī)勻速轉(zhuǎn)動(dòng)NN2: MOV DLY_C,CX ;將CX的值送DLY_C以實(shí)現(xiàn)在一個(gè)循環(huán) POP CX ;恢復(fù)CX LOOP FZ ;CX減1,讓電機(jī)轉(zhuǎn)下一圈 JMP START ;無條件轉(zhuǎn)到START處以實(shí)現(xiàn)下一個(gè)循環(huán);*;該延時(shí)子程序用于控制電機(jī)轉(zhuǎn)速若DLY_C減少,則延時(shí)時(shí)間將減少,則電機(jī)轉(zhuǎn)速增加,;反之亦然.;*DELAY PROC NEAR PUSH CX ;保存CX,因?yàn)橄旅孢€要用到CX MOV CX,DLY_C ;將DLY_C的值送CX以控制延時(shí)的長(zhǎng)短DD1:N

16、OP ;空操作,用于延時(shí),可以用NOP指令的數(shù)目控制延時(shí)的長(zhǎng)短 NOP NOP NOP NOP NOP NOP LOOP DD1 ;CX減1,若不為0則轉(zhuǎn)向DD1,否則跳出循環(huán) POP CX ;恢復(fù)CX RET ;子程序返回DELAY ENDP;*;8086延時(shí)1S子程序,用執(zhí)行PUSHF和POPF指令來延時(shí);之所以選擇這兩條指令,主要是由于這兩條指令執(zhí)行時(shí)間比較長(zhǎng);*DELAY1S PROC NEAR PUSHF ;把標(biāo)志寄存器的內(nèi)容保存到堆棧中去 PUSH BX ;保存BX PUSH CX ;保存CX MOV BX,3E8H ;將3E8H送BX,用于控制外循環(huán)次數(shù)LP2: MOV CX,0

17、BAH ;將0BAH送CX,用于控制內(nèi)循環(huán)次數(shù)LP1: PUSHF ;把標(biāo)志寄存器的內(nèi)容保存到堆棧中去 POPF ;將保護(hù)的FLAG內(nèi)容恢復(fù),這兩條指令主要是用于延時(shí) LOOP LP1 ;CX減1,不為0則轉(zhuǎn)至LP1處執(zhí)行 DEC BX ;BX減1 JNZ LP2 ;不為0則轉(zhuǎn)至LP2處執(zhí)行 POP CX ;恢復(fù)CX POP BX ;恢復(fù)BX POPF ;將保護(hù)的FLAG內(nèi)容恢復(fù) RET ;子程序返回DELAY1S ENDPCODE ENDS END START3、 實(shí)驗(yàn)的實(shí)現(xiàn) 1、連接計(jì)算機(jī)與實(shí)驗(yàn)箱,按電路圖將實(shí)驗(yàn)箱內(nèi)部各個(gè)芯片和接口連接。 2、然后打開計(jì)算機(jī),執(zhí)行WAVE集成調(diào)試軟件,設(shè)置

18、8086硬件仿真器。 3、新建文件,編寫程序,并以.ASM擴(kuò)展名保存。 4、對(duì)程序進(jìn)行匯編,匯編無誤后,單擊全速執(zhí)行,然后查看運(yùn)行結(jié)果。 5、若步進(jìn)電機(jī)運(yùn)行不正常,則需檢查程序的功能是否有誤,直至達(dá)到期望結(jié)果為止。七、實(shí)驗(yàn)設(shè)計(jì)總結(jié)這是一個(gè)綜合性實(shí)驗(yàn),也是我做得比較成功的一個(gè)微機(jī)接口實(shí)驗(yàn)之一。通過做該實(shí)驗(yàn),使我受益匪淺,特別是對(duì)用8086 CPU去控制步進(jìn)電機(jī)有了進(jìn)一步的認(rèn)識(shí),對(duì)步進(jìn)電機(jī)的原理也有了比較深的了解。主要表現(xiàn)在以下幾個(gè)方面: 1、對(duì)控制步進(jìn)電機(jī)(比如正轉(zhuǎn),反轉(zhuǎn),停止,加速,減速)有了初步的認(rèn)識(shí)。步進(jìn)電機(jī)并不像普通的直流電機(jī),交流電機(jī)那樣在常規(guī)下使用, 步進(jìn)電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響。因此,用8086控制步進(jìn)電機(jī)不能像控制其它電機(jī)一樣。以前在雜志上看到,電腦的軟驅(qū)就是用步進(jìn)電機(jī)帶動(dòng)軟盤轉(zhuǎn)動(dòng)的,我也親手拆下過里面的步進(jìn)電機(jī),但是對(duì)步進(jìn)電機(jī)的工作原理,以及計(jì)算機(jī)是怎么控制步進(jìn)電機(jī)的并不了解。通過做這個(gè)綜合性實(shí)驗(yàn),我對(duì)這些有了一個(gè)初步的認(rèn)識(shí)。 2、實(shí)驗(yàn)大部分的源代碼都是我自己寫的,花了大概一個(gè)晚上的時(shí)間。在做實(shí)驗(yàn)之前多已經(jīng)把源代碼輸入計(jì)算機(jī)并在WAVE上通過軟件仿真的形式調(diào)試通過。這樣,在正式做實(shí)驗(yàn)時(shí)我擁有了充

溫馨提示

  • 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)論