找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 11425|回復(fù): 4
收起左側(cè)

基于單片機的三相步進(jìn)電機控制系統(tǒng)設(shè)計分解

[復(fù)制鏈接]
ID:465317 發(fā)表于 2019-1-9 18:47 | 顯示全部樓層 |閱讀模式

摘要

1設(shè)計任務(wù)

2方案

2.1 設(shè)計思路與方案

2.2總體設(shè)計框圖

3系統(tǒng)實現(xiàn)的原理說明

3.1 步進(jìn)電機控制工作原理

3.1.1步進(jìn)電機的工作原理

3.1.2 步進(jìn)電機的啟�?刂�

3.1.3 步進(jìn)電機的轉(zhuǎn)向控制

3.2步數(shù)顯示模塊原理

4硬件設(shè)計

4.1系統(tǒng)總原理圖

4.2各部分硬件原理圖設(shè)計

4.2.1 單片機控制模塊

4.2.2按鍵選擇工作狀態(tài)模塊

4.2.3步進(jìn)電機工作模塊

4.2.4工作狀態(tài)顯示模塊

4.2.5 4位數(shù)碼管顯示步數(shù)模塊

5軟件設(shè)計

5.1系統(tǒng)總體設(shè)計

5.2步進(jìn)電機工作模塊

5.2.1步進(jìn)電機的工作方式說明

5.2.2設(shè)計說明及流程圖

5.3數(shù)碼管步數(shù)顯示模塊

6仿真調(diào)試記錄

7心得體會

參考文獻(xiàn)

附錄:程序清單


摘要

本設(shè)計詳細(xì)介紹了基于單片機的三相步進(jìn)電機控制系統(tǒng)。步進(jìn)電機通過輸入脈沖信號進(jìn)行控制,即電機的總轉(zhuǎn)動角度由輸入脈沖總數(shù)決定,因此,單片機通過向步進(jìn)電機發(fā)送控制信號就能實現(xiàn)對步進(jìn)電機的控制。

單片機實現(xiàn)的步進(jìn)電機控制系統(tǒng)具有成本低、使用靈活的特點,該系統(tǒng)采用80C51單片機作為主控芯片,來完成對步進(jìn)電機轉(zhuǎn)動及LED顯示的控制。

本設(shè)計主要由單片機80C51,3相步進(jìn)電機,7段數(shù)碼管,及一些其他相關(guān)元件設(shè)計而成,分為按鍵選擇工作狀態(tài)模塊、步進(jìn)電機工作模塊、LED二極管顯示工作狀態(tài)模塊以及4位數(shù)碼管顯示步數(shù)模塊�?梢酝ㄟ^開關(guān)來控制系統(tǒng)的啟/停工作,當(dāng)系統(tǒng)運轉(zhuǎn)時,用開關(guān)來控制方向,并使相應(yīng)的指示燈亮起,同樣由開關(guān)來選擇工作模式。運轉(zhuǎn)時,用4位7段數(shù)碼管來輸出步數(shù)。最后根據(jù)思路所設(shè)計出來的硬件圖設(shè)計相適應(yīng)的軟件。

電路結(jié)構(gòu)簡單,設(shè)計思路清晰,同時利用Proteus進(jìn)行聯(lián)調(diào)仿真,結(jié)果比較直觀。仿真結(jié)果收到了預(yù)期的效果。


1設(shè)計任務(wù)

設(shè)計三相反應(yīng)式步進(jìn)電動機脈沖分配器,接收脈沖輸入,要求三相單三拍、三相六拍運行方式控制(電平),正反轉(zhuǎn)控制(電平)。

系統(tǒng)具有如下功能:用K0-K2做為通電方式選擇鍵,K0為三相單三拍,K1為三相雙三拍,K2為三相六拍;K3為啟動/停止控制、K4方向控制;用4位LED數(shù)碼管顯示工作步數(shù)。用3個發(fā)光二極管顯示狀態(tài):正轉(zhuǎn)時紅燈亮,反轉(zhuǎn)時黃燈亮,不轉(zhuǎn)時綠燈亮;

(二)任務(wù)分析

步進(jìn)電動機是一種用電脈沖信號進(jìn)行控制,并將電脈沖信號轉(zhuǎn)換成相應(yīng)的角位移的執(zhí)行器,每一個脈沖信號可使步進(jìn)電機旋轉(zhuǎn)一個固定的角度,這個角度稱為步距角。由于受脈沖的控制,其轉(zhuǎn)子的角位移量和速度嚴(yán)格地與輸入脈沖的數(shù)量和脈沖頻率成正比。



三相反應(yīng)式步進(jìn)電動機結(jié)構(gòu)如圖1.8所示。電機定子有六個磁極,相對的磁極為同一繞組勵磁,整個電機有三個繞組,按Y形接法接線。轉(zhuǎn)自為軟磁材料,無繞組。若繞組通電順序為Ⅰ-Ⅱ-Ⅲ-Ⅰ-Ⅱ-Ⅲ-…,則電動機逆時針轉(zhuǎn)動;若繞組通電順序為Ⅰ-Ⅲ-Ⅱ-Ⅰ-Ⅲ-Ⅱ-…,則電動機順時針轉(zhuǎn)動。此種控制方式稱為三相單三拍方式。 若通電順序為Ⅰ-ⅠⅡ-Ⅱ-ⅡⅢ-Ⅲ-ⅢⅠ-…(逆時針),稱為三相六拍方式。


步進(jìn)電機控制裝置發(fā)出運行方式、旋轉(zhuǎn)方向和旋轉(zhuǎn)角度(步數(shù)),前兩項一般由電平表示,后一項用脈沖個數(shù)表示。脈沖分配器根據(jù)步進(jìn)電機控制裝置發(fā)來的命令(電平信號和脈沖)使步進(jìn)電機按照要求的工作方式、旋轉(zhuǎn)方向及步數(shù)旋轉(zhuǎn)。步進(jìn)電機磁極的旋轉(zhuǎn)有速率限制,如果過快,電動機會出現(xiàn)失步現(xiàn)象(轉(zhuǎn)自跟不上磁極的旋轉(zhuǎn)),特別是在電動機的起停階段,要求有脈沖速率限制措施。

(三)系統(tǒng)硬件原理圖



(四)系統(tǒng)軟件設(shè)計

為防止輸入脈沖頻率過快導(dǎo)致電動機失步,可將輸入脈沖在單片機緩存,之后在進(jìn)行脈沖分配,分配時注意脈沖速率。脈沖輸入模塊在每個輸入脈沖到來時,將緩存單元進(jìn)行加1計數(shù);脈沖分配模塊時刻掃描緩存單元,當(dāng)緩存單元不為零時,使步進(jìn)電機旋轉(zhuǎn)一步,之后緩存單元減1,減到0時停止分配脈沖。為使三相電平同時變化,程序中應(yīng)予以考慮。非同步分配脈沖可能導(dǎo)致電機錯轉(zhuǎn)。

為使電動機以最快速度運行,脈沖分配速率應(yīng)按照梯形曲線分配,如圖1.10所示。圖示的含義是:開始時(零轉(zhuǎn)速)脈沖分配要慢,當(dāng)電動機旋轉(zhuǎn)起來后,脈沖速率逐漸加快,并達(dá)到最高速率;當(dāng)要停止時,也不可馬上停止,必須先降低脈沖速率,最后降到零,電動機停轉(zhuǎn)。


圖1.10 脈沖速率分配


2方案

2.1 設(shè)計思路與方案

本次設(shè)計是一個對于三相步進(jìn)電機的控制系統(tǒng),而單片機實現(xiàn)的步進(jìn)電機控制系統(tǒng)具有成本低、使用靈活的特點,此系統(tǒng)選用51單片機即可。

根據(jù)要求整個設(shè)計大體可分為四塊:

一是5個按鍵K0~K4將用戶所需來選擇步進(jìn)電機的工作狀態(tài)。我們將開關(guān)連入單片機的P1口,通過按鍵開關(guān)的高低電平狀態(tài)來讀入我們所需的控制信號。硬件上直接把開關(guān)分別接在單片機的接口上,通過查詢端口信號來動作,將控制信號處理。在設(shè)計開關(guān)部分時,還考慮到機械抖動的影響,采取硬件方式—并聯(lián)電容來去抖。

二是3個LED發(fā)光二極管的顯示步進(jìn)電機工作狀態(tài)模塊。在設(shè)計要求中步進(jìn)電機正轉(zhuǎn)是紅燈亮,反轉(zhuǎn)是黃燈亮,停止不轉(zhuǎn)是綠燈亮。設(shè)計中將3個發(fā)光二極管分別接到單片機P3口,受到單片機的輸出信號控制。

三是步進(jìn)電機的工作模塊。要想步進(jìn)電機按照我們想要的方式運轉(zhuǎn),將步進(jìn)電機一端接到+12V的電源,一端接到單片機P3口,受單片機的輸出信號控制。

四是4位數(shù)碼管顯示步數(shù)的模塊。設(shè)計中主要是利用軟件編程的算法來實現(xiàn)步數(shù)的累計和顯示,同樣,4位數(shù)碼管接到單片機的P0口和P2口受單片機輸出信號的控制,在硬件上使用的是動態(tài)顯示的接法。

由此可知所需要設(shè)計一個系統(tǒng),可以通過不同按鍵來選擇步進(jìn)電機的工作方式,且有LED發(fā)光二極管來顯示電機對應(yīng)的工作狀態(tài),除此之外還能在數(shù)碼管上顯示出步進(jìn)電機轉(zhuǎn)動的步數(shù)。

2.2總體設(shè)計框圖

此系統(tǒng)主要由單片機、步進(jìn)電機、步數(shù)顯示模塊、工作狀態(tài)控制與顯示模塊組成。整體框圖如圖1。



圖1 系統(tǒng)整體框圖

3系統(tǒng)實現(xiàn)的原理說明
3.1 步進(jìn)電機控制工作原理
3.1.1步進(jìn)電機的工作原理

步進(jìn)電機的不同驅(qū)動方式,都是在工作時,脈沖信號按一定順序輪流加到三相繞組上,從而實現(xiàn)不同的工作狀態(tài)。由于通電順序不同,其運行方式有三相單三相拍、三相雙三拍和三相單、雙六拍三種(注意:上面“三相單三拍”中的“三相”指定子有三相繞組;“拍”是指定子繞組改變一次通電方式;“三拍”表示通電三次完成一個循環(huán)�!叭嚯p三拍”中的“雙”是指同時有兩相繞組通電)。

1.2.1三相單三拍運行方式:下頁圖所示為反應(yīng)式步進(jìn)電動機工作原理圖,若通過脈沖分配器輸出的第一個脈沖使A相繞組通電,B,C相繞組不通電,在A相繞組通電后產(chǎn)生的磁場將使轉(zhuǎn)子 上產(chǎn)生反應(yīng)轉(zhuǎn)矩,轉(zhuǎn)子的1、3齒將與定子磁極對齊,如果圖(a)所示。第二個脈沖到來,使B相繞組通電,而A、C相繞組不通電;B相繞組產(chǎn)生的磁場將 使轉(zhuǎn)子的2、4齒與B相磁極對齊,如圖(b)所示,與圖(a)相比,轉(zhuǎn)子逆時針方向轉(zhuǎn)動了一個角度。第三個脈沖到來后,是C相繞組通電,而 A、B相不通電,這時轉(zhuǎn)子的1、3齒會與C組對齊,轉(zhuǎn)子的位置如圖(c)所示,與圖(b)比較,又逆時針轉(zhuǎn)過了一個角度。

圖1.1  反應(yīng)式步進(jìn)電機工作原理圖

當(dāng)脈沖不斷到來時,通過分配器使定子的繞組按著A相--B相--C相--A相……的規(guī)律不斷地接通與斷開,這時步進(jìn)電動機的轉(zhuǎn)子就連續(xù)不停地一步步的逆時 針方向轉(zhuǎn)動。如果改變步進(jìn)電動機的轉(zhuǎn)動方向,只要將定子各繞組通電的順序改為A相--C相--B相--A相,轉(zhuǎn)子轉(zhuǎn)動方向即改為順時針方向。

    單三拍分配方式時,步進(jìn)電動機由A相通電轉(zhuǎn)換到B相通電,步進(jìn)電動機的轉(zhuǎn)子轉(zhuǎn)過一個角度,稱為一步。這時轉(zhuǎn)子轉(zhuǎn)過的角度是30度。步進(jìn)電動機每一步轉(zhuǎn)過的角度稱為步距角。

1.2.2三相雙三拍運行方式三相雙三拍運行方式:每次都有兩個繞組通電,通電方式是AB--BC--CA--AB……,如果通電順序改為AB--CA--BC--AB……則步進(jìn)電機反轉(zhuǎn)。雙三拍分配方式時,步進(jìn)電動機的步距角也是30度

   1.2.3三相單,雙六拍運行方式:三相六拍分配方式就是每個周期內(nèi)有六個通電狀態(tài)。這六中通電狀態(tài)的順序可以使A--AB--B--BC--C--CA--A……或者A-- CA--C--BC--B--AB--A……六拍通電方式中,有一個時刻兩個繞組同時通電,這時轉(zhuǎn)子齒的位置將位于通電的兩相的中間位置。在三相六拍分配 方式下,轉(zhuǎn)子每一步轉(zhuǎn)過的角度只是三相三拍方式下的一半,步距角是15度。

單三拍運行的突出問題是每次只有一相繞組通電,在轉(zhuǎn)換過程中,一相繞組斷電,另一相繞組通電,容易發(fā)生失步;另外單靠一相繞組通電吸引轉(zhuǎn)子,穩(wěn)定性不好,容易在平衡位置附近震蕩,故用的較少。

    雙三拍運行的特點是每次都有兩相繞組通電,且在轉(zhuǎn)換過程中始終有一相繞組保持通電狀態(tài),因此工作穩(wěn)定,且步距角與單三拍相同。

    六拍運行方式轉(zhuǎn)換時始終有一相繞組通電,且步距角較小,故工作穩(wěn)定性好,但電源較復(fù)雜,實際應(yīng)用較多。

3.1.2 步進(jìn)電機的啟�?刂�

步進(jìn)電機由于其電氣特性,運轉(zhuǎn)時會有步進(jìn)感 ,即振動感。為了使電機轉(zhuǎn)動平滑 ,減小振動 ,可在步進(jìn)電機控制脈沖的上升沿和下降沿采用細(xì)分的梯形波 ,可以減小步進(jìn)電機的步進(jìn)角 ,提高電機運行的平穩(wěn)性。在步進(jìn)電機停轉(zhuǎn)時 ,為了防止因慣性而使電機軸產(chǎn)生順滑 ,則需采用合適的鎖定波形 ,產(chǎn)生鎖定磁力矩 ,鎖定步進(jìn)電機的轉(zhuǎn)軸 ,使步進(jìn)電機的轉(zhuǎn)軸不能自由轉(zhuǎn)動。

3.1.3 步進(jìn)電機的轉(zhuǎn)向控制

如果給定工作方式正序換相通電 ,步進(jìn)電機正轉(zhuǎn)。若步進(jìn)電機的勵磁方式為三相六拍 ,即 A-AB-B-BC-C-CA。如果按反序通電換相 ,即則電機就反轉(zhuǎn)。其他方式情況類似。

3.2步數(shù)顯示模塊原理

步數(shù)顯示模塊和工作狀態(tài)顯示模塊,都是通過單片機輸出信號控制發(fā)光二極管LED的亮滅。其中步數(shù)顯示模塊中LED構(gòu)成數(shù)碼管,要求顯示4位十進(jìn)制數(shù),故用到4位數(shù)碼管。要控制多位的顯示電路,需要有字段控制和字位控制�?刂品绞椒譃殪o態(tài)顯示方式和動態(tài)顯示方式。靜態(tài)顯示方式,每一位的顯示器都需要配一個8位輸出口來輸出該字位的七段碼,需要片外擴展輸出口。而動態(tài)顯示方式將各數(shù)碼管的對應(yīng)字段的引腳都并聯(lián)在一起,線路簡單,減少接口,不需片外擴展。這里選用動態(tài)顯示方式。


4硬件設(shè)計
4.1系統(tǒng)總原理圖

圖3 系統(tǒng)總原理圖

根據(jù)設(shè)計要求用PROTEUS所做的硬件連線圖如圖3。

4.2各部分硬件原理圖設(shè)計
4.2.1 單片機控制模塊

單片機選用最經(jīng)典的80C51,其4個I/O口都要用到, P3接步進(jìn)電機驅(qū)動電路及工作狀態(tài)顯示模塊,P0和P2分別接步數(shù)顯示中對數(shù)碼管的字段控制及數(shù)碼管片選,P1接工作狀態(tài)控制電路,,時鐘用內(nèi)部方式需外接晶體振蕩器。硬件圖如圖4所示。


圖4 單片機模塊原理圖

此設(shè)計中接的是12MHZ的晶振,故一個機器周期為1/12us。根據(jù)經(jīng)驗數(shù)據(jù),與晶振一起的兩個電容設(shè)為15PF。單片機的VCC和GROUD都隱藏了,已自動接好,VCC應(yīng)設(shè)為+5V。

4.2.2按鍵選擇工作狀態(tài)模塊

首先我們來考慮所有機械觸點式按鍵在狀態(tài)輸出時的共性問題就是按鍵抖動問題,由于機械觸點的彈性振動,按鍵在按下時不會馬上穩(wěn)定地接通而在彈起時也不能一下子完全地斷開,因而在按鍵閉合和斷開的瞬間均會出現(xiàn)一連串的抖動,這稱為按鍵的抖動干擾。

這種抖動可能會造成按一次鍵產(chǎn)生的開關(guān)狀態(tài)被CPU誤讀幾次。為了使CPU能正確地讀取按鍵狀態(tài),本次設(shè)計中我們采用并聯(lián)電容消抖法,利用電容的放電延時來實現(xiàn)。

如圖5所示,這是唯一的一塊輸入模塊的設(shè)計。5個按鍵開關(guān)一端通過電阻接高電平,另一端全部接到地,其中接高電平的一端對應(yīng)也接到單片機的P1口分別為P1.0~P1.4。當(dāng)開關(guān)斷開,就是輸入到單片機對應(yīng)端口高電平,而開關(guān)閉合,是使端口接地,輸入低電平。所以這個設(shè)計中開關(guān)斷開時才是有效的。各按鍵功能:

(1)K0-K2為工作模式控制開關(guān),KO接電時,為步進(jìn)電機單三拍工作模式;K1接電時,為步進(jìn)電機雙三拍工作模式;K2接電時,步進(jìn)電機工作模式為三相六拍。

(2)K3為啟/�?刂崎_關(guān),控制整個系統(tǒng)的開啟和關(guān)閉。

(3)K4為正/反轉(zhuǎn)控制開關(guān),控制步進(jìn)電機的轉(zhuǎn)向。


圖5 按鍵模塊原理圖

4.2.3步進(jìn)電機工作模塊

將三相步進(jìn)電機三個端口直接接到單片機P3.0~P3.2即可,另三個端口接到+12V的高電平給步進(jìn)電機供電。只需在軟件編寫上控制算法便可以調(diào)節(jié)這三個端口的高低電平來控制步進(jìn)電機的開啟與停止,正反轉(zhuǎn)以及工作模式。步進(jìn)電機硬件接線圖如圖6所示。


圖6 步進(jìn)電機模塊原理圖

4.2.4工作狀態(tài)顯示模塊

LED發(fā)光二極管顯示步進(jìn)電機的工作狀態(tài),它們分別接到單片機的P3.3~P3.5。如圖7,讓單片機輸出通過一個反相器再接到LED陰極,LED陽極接VCC。這樣可以提高電流,有利于二極管的導(dǎo)通,我們可以通過控制P3口的數(shù)據(jù),實現(xiàn)LED的亮滅。


圖7 工作狀態(tài)顯示模塊原理圖

4.2.5 4位數(shù)碼管顯示步數(shù)模塊

LED數(shù)碼管實際上是由七個發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點就是8個。這些段分別由字母a,b,c,d,e,f,g,dp來表示。當(dāng)數(shù)碼管特定的段加上電壓后,這些特定的段就會發(fā)亮,以形成我們眼睛看到的字樣了。通過分時輪流控制各個LED數(shù)碼管的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。

P0口和P2口的前四個分別接步數(shù)顯示中對數(shù)碼管的字段控制及數(shù)碼管片選,如圖8所示,這里主要是由軟件算法來實現(xiàn)單片機輸出的控制。



圖8 數(shù)碼管顯示模塊原理圖


5軟件設(shè)計5.1系統(tǒng)總體設(shè)計


圖9 系統(tǒng)總流程圖

設(shè)計說明:首先是數(shù)碼管顯示清零,單片機再讀入P1口輸入的按鍵狀態(tài),先判斷是否啟動,如果沒有啟動則是綠燈亮并再判斷,如果啟動了,就接著判斷所需的電機工作模式,再讀入P1口狀態(tài)判斷電機的轉(zhuǎn)向,輸出控制信號為正轉(zhuǎn)紅燈亮,反轉(zhuǎn)黃燈亮,由此可以讓步進(jìn)電機按照指定的方式運轉(zhuǎn),并且累計步數(shù)再顯示到數(shù)碼管上。最后檢驗P1口是否狀態(tài)改變,如果改變則步數(shù)清零重新開始判斷,不改變則繼續(xù)轉(zhuǎn)動。

5.2步進(jìn)電機工作模塊
5.2.1步進(jìn)電機的工作方式說明

(1)三相單三拍工作方式

在這種工作方式下,A、B、C三相輪流通電,電流切換三次,磁場旋轉(zhuǎn)一周,轉(zhuǎn)子向前轉(zhuǎn)過一個齒距角。因此這種通電方式叫做三相單三拍工作方式。這時步距角(度)為:
                                                        

式中:m──定子相數(shù); z ──轉(zhuǎn)子齒數(shù)

表1 單三拍的相位控制


步序

             控制位

工作
狀態(tài)

控制
模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
0
1
A
01H
2
0
0
0
0
0
0
1
0
B
02H
3
0
0
0
0
0
1
0
0
C
04H

(2)三相雙三拍工作方式

這種工作方式每次都是有兩相導(dǎo)通,兩相繞組處在相同電壓之下,以AB─BC─CA─AB (或反之)方式通電,故稱為雙三拍工作方式。以這種方式通電,轉(zhuǎn)子齒所處的位置相當(dāng)于六拍控制方式中去掉單三拍后的三個位置。它的步距角計算公式與單三拍時的公式相同。


表2 雙三拍的相位控制


步序

控制位

工作
狀態(tài)

控制
模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
1
1
AB
03H
2
0
0
0
0
0
1
1
0
BC
06H
3
0
0
0
0
0
1
0
1
CA
05H

(3)三相六拍工作方式

在這種工作方式下,繞組以A—AB—B—BC—C—CA—A時序(或反時序)轉(zhuǎn)換6次,磁場旋轉(zhuǎn)一周,轉(zhuǎn)子前進(jìn)一個齒距,每次切換均使轉(zhuǎn)子轉(zhuǎn)動1. 5°,故這種通電方式稱為三相六柏工作方式。其步距角為:
                                               

表3 六拍的數(shù)學(xué)模型


步序

控制位

工作
狀態(tài)

控制
模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
0
1
A
01H
2
0
0
0
0
0
0
1
1
AB
03H
3
0
0
0
0
0
0
1
0
B
02H
4
0
0
0
0
0
1
1
0
BC
06H
5
0
0
0
0
0
1
0
0
C
04H
6
0
0
0
0
0
1
0
1
CA
05H

5.2.2設(shè)計說明及流程圖

設(shè)計說明:在此設(shè)計中,采用的是三相步進(jìn)電機,對于步進(jìn)電機模塊的程序設(shè)計采用循環(huán)程序設(shè)計方法。先把正反轉(zhuǎn)向的控制模型存放在內(nèi)存單元中,然后再逐一從單元中取出控制模塊并輸出。首先啟動,通過P1口讀入所需的工作方式,即選擇步進(jìn)電機的拍數(shù),然后讀入正反轉(zhuǎn)的控制,再來輸出對應(yīng)的控制模型來驅(qū)動步進(jìn)電機轉(zhuǎn)動。

   三相步進(jìn)電機工作的流程圖:


圖10 三相步進(jìn)電機工作流程圖

5.3數(shù)碼管步數(shù)顯示模塊

設(shè)計說明:步數(shù)顯示模塊是整個程序里的一個子程序。其是用4位八段數(shù)碼管來顯示工作步數(shù)。先將要顯示的數(shù)化為10進(jìn)制數(shù),每位分別儲存,從P0口輸出顯示碼,P2口輸入位選碼,需要一定的延時,讓此位數(shù)字顯示閃爍出來。然后修改數(shù)組地址,求下一位位選碼繼續(xù)顯示,直至輸出四位數(shù)。這個掃描過程重復(fù)50次,保證人眼能觀察到步數(shù)顯示。

流程圖如圖11:



圖11 數(shù)碼管顯示模塊流程圖


6仿真調(diào)試記錄

如圖12所示,當(dāng)選擇電機工作在單三拍,反轉(zhuǎn)的模式下,K0斷開,K1、K2、K4、閉合,系統(tǒng)啟動,K3斷開,電機開始轉(zhuǎn)動。LED四位顯示屏顯示工作步數(shù),LED指示燈黃燈亮顯示電機反轉(zhuǎn)的狀態(tài)。


圖12 仿真圖

如圖13所示,此種工作方式下步進(jìn)電機的旋轉(zhuǎn)角度:


圖13 步進(jìn)電機旋轉(zhuǎn)角度

7心得體會

本次課設(shè)為期一周,所以時間比較緊張,給課設(shè)的順利完成增加了難度。單片機原理是一門應(yīng)用性很強綜合性很強的學(xué)科,在這次課設(shè)中,我充分感受到了這一點,在老師給的課題之中,是來自于各個方面各個領(lǐng)域的應(yīng)用,不得不說,計算機控制很強大,確實改變了我們的生活。

課設(shè)里最困難的部分就是編寫程序和仿真調(diào)試,也許硬件連接沒問題,程序運行沒問題,但是,當(dāng)把程序?qū)耄l(fā)現(xiàn)電動機就是不轉(zhuǎn),燈就是不亮,數(shù)碼管就是亂跳,這是很考驗?zāi)托牡臅r候,一遍一遍地去調(diào)試程序,修改連接部分,有時真的看著很崩潰,但是當(dāng)你不放棄地調(diào)試,才有仿真成功的可能,在這種反復(fù)中,對我們自身的能力是提高很多的。另一個收獲就是關(guān)于軟件的使用了。PROTEUS,KEIL51,以前好像也用過,但是平時較少接觸,這次的課設(shè)讓我比較熟練的掌握了這兩個學(xué)習(xí)軟件強大的功能,而且發(fā)現(xiàn)從PROTEUS里導(dǎo)出來的電路圖特別漂亮和清晰。

單片機原理一直是自己比較喜歡的一門學(xué)科,拿到課程設(shè)計的題目也想著可以好好檢驗自己的學(xué)習(xí)成果,一直認(rèn)為,期末考試是所謂的應(yīng)試教育,而課程設(shè)計似乎更加地考驗所學(xué)的知識,所謂實踐與理論相結(jié)合就是這個道理吧。課程設(shè)計總能讓我有一種我站在山面前的感覺,看上去比較陌生高大,但是攀登的技巧早已在平時的學(xué)習(xí)中習(xí)得,不斷地去攀登,不斷地在回味課堂上老師講的東西,書本上的東西,這是一種奇妙的體驗。

我明白遇到的電路或者課題并不一定在你的知識范圍之內(nèi),而面對新的東西,我們要冷靜地去尋求解決之道,去搜尋網(wǎng)絡(luò)資源,圖書館資源以及和同學(xué)們的討論之中,再結(jié)合自己所學(xué)過的知識來吃透理解那些未知的東西,擴寬知識面,這樣就會覺得學(xué)到了遠(yuǎn)遠(yuǎn)超過課堂的東西,但是卻源于課堂,想必這就是課設(shè)的意義吧,很有收獲。


單片機源碼:

  1. #include<reg51.h>
  2. #include<stdio.h>
  3. void delay1(void);
  4. void delay2(void);
  5. void display(int);
  6. int bs=0;
  7. main()
  8.   { char  a,b,c,d,j,*q,
  9.           done1[8]={0x01,0x02,0x04,0x00,0x01,0x04,0x02,0x00},
  10.           done2[8]={0x03,0x06,0x05,0x00,0x03,0x05,0x06,0x00},        done3[14]={0x01,0x03,0x02,0x06,0x04,0x05,0x00,0x01,0x05,0x04,0x06,0x02,0x03,0x00};
  11.               L:  a=P1;   
  12.                    while(!(a&0x08))    //判斷是否啟動,若沒啟動則重新判斷
  13.                             {  P3=0x08;
  14.                           delay1();
  15.                   a=P1; }
  16.      //...............................................判斷工作模式
  17.               if(a&0x01)                     //方式1模型
  18.               q=done1;
  19.               else if(a&0x02)                 //方式2模型
  20.               q=done2;
  21.               else if(a&0x04)                 //方式3模型
  22.               q=done3;
  23.      //...............................................判斷電機轉(zhuǎn)向
  24.               if(a&0x10)                 //判斷電機是否要正轉(zhuǎn)
  25.               { P3=0x10;                //P1.4口為1,電機正轉(zhuǎn),紅燈亮
  26.                  b=0;}
  27.               else
  28.               { P3=0x20;               //P1.4口為0,電機反轉(zhuǎn),黃燈亮
  29.                  if(a&0x04)b=7;         //反轉(zhuǎn)時將b置數(shù),使指針指到數(shù)組反相序部分
  30.            else b=4; }
  31.    //....................................................
  32. d=b;
  33.                 while(1)
  34.                 { c=*(q+b);               //判斷電機步數(shù)是否走完
  35.                  if(c==0)b=d;               //步數(shù)走完,電機重新再走
  36.                  else
  37.                  {  P3=c;                 //從P3輸出電機控制信號
  38.                               b++;
  39.                               bs++;                 //總步數(shù)加1
  40.                               display(bs);              //顯示步數(shù)
  41.                               j=a;
  42.                               a=P1;
  43.                               if(a!=j)                     //判斷P1口狀態(tài)信號是否改變
  44.                               {              if(!(a&0x08))bs=0;         //若為停止信號,總步數(shù)清零
  45.                               goto L; }           //狀態(tài)信號改變,返回到開始,重新對電機控制
  46.                               }
  47.                             }
  48.               }            
  49. void delay1()      //延時5ms子程序
  50.               { int i,j;
  51.                  for(i=0;i<200;i++)
  52.                  for(j=0;j<300;j++);
  53.                                }
  54. void delay2()    //延時50us子程序
  55.               {   int i,j;
  56.                    for(i=0;i<10;i++)
  57.                             for(j=0;j<60;j++);
  58.                             }
  59. void display(int n)
  60.               {unsigned char tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
  61.                 unsigned char i,k,t,num[4];
  62.                 num[0]=n%10;                //將總步數(shù)的各位分別存在num數(shù)組中
  63.                 num[1]=(n/10)%10;
  64.                 num[2]=(n/100)%10;
  65.                 num[3]=(n/1000)%10;
  66.                 for(t=0;t<50;t++)             //掃描50次
  67.                 {  k=0x08;                //位選碼指向最左一位,第四位
  68.                  for(i=0;i<4;i++)
  69.                 {  P2=k;                    //從P2口輸入位選碼
  70.                    P0=~(tab[num[i]]);      //取出顯示碼,并從P0口輸出顯示碼
  71.                             k=k>>1;                //求下一個位選碼
  72.                             delay2();
  73.                 }
  74.                 }
  75. }
復(fù)制代碼
完整的Word格式文檔51黑下載地址:

基于單片機的三相步進(jìn)電機控制系統(tǒng)設(shè)計分解.doc (759.01 KB, 下載次數(shù): 76)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:214796 發(fā)表于 2019-3-19 17:04 | 顯示全部樓層
非常感謝樓主的分享,解了燃眉之急。
回復(fù)

使用道具 舉報

ID:298008 發(fā)表于 2020-2-15 15:53 | 顯示全部樓層
謝謝樓主分享�。�!
回復(fù)

使用道具 舉報

ID:298008 發(fā)表于 2020-2-15 20:16 | 顯示全部樓層
謝謝樓主分享!�。�!
回復(fù)

使用道具 舉報

ID:756512 發(fā)表于 2020-6-8 08:56 來自觸屏版 | 顯示全部樓層
想問一下仿真文件和其他文件可以發(fā)嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表