導航:首頁 > 操作系統 > 步進電機的單片機控制

步進電機的單片機控制

發布時間:2023-05-03 16:17:14

單片機控制步進電動機的運動的原理及單片機程序

51單片步進電機控制原理與控制設計程序
51單片步進電機是數字控制電機,它將脈沖信號轉變成角位移,即給一個脈沖信號,步進電機就轉動一個角度,因此非常適合於單片機控制。步進電機可分為反應式步進電機(簡稱vr)、永磁式步進電機(簡稱pm)和混合式步進電機(簡稱hb)。
51單片步進電機區別於其他控制電機的最大特點是,它是通過輸入脈沖信號來進行控制的,即電機的總轉動角度由輸入脈沖數決定,而電機的轉速由脈沖信號頻率決定。
51單片步進電機的驅動電路根據控制信號工作,控制信號由單片機產生。其基本原理作用如下:
(1)控制換相順序
通電換相這一過程稱為脈沖分配。例如:三相步進電機的三拍工作方式,其各相通電順序為a-b-c-d,通電控制脈沖必須嚴格按照這一順序分別控制a,b,c,d相的通斷。
(2)控制步51單片進電機的轉向
如果給定工作方式正序換相通電,步進電機正轉,如果按反序通電換相,則電機就反轉。
(3)控制51單片步進電機的速度
如果給步進電機發一個控制脈沖,它就轉一步,再發一個脈沖,它會再轉一步。兩個脈沖的間隔越短,步進電機就轉得越快。調整單片機發出的脈沖頻率,就可以對步進電機進行調速。步進電機是機電控制中一種常用的執行機構,它的用途是將電脈沖轉化為角位移,通俗地說:當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(及步進角)。通過控制脈沖個數即可以控制角位移量,從而達到准確定位的目的;同時通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。

❷ 步進電機用單片機控制轉動

#include "reg52.h"sbit P00=P0^0;sbit P01=P0^1;sbit P02=P0^2;sbit P03=P0^3;sbit P07=P0^7; void main(){ P00=1; P01=1; P03=1; P02=1; P07=1; TMOD=0x01; TH0=(-1500/256); TL0=(-1500%256); TR0=1; for(;;){ TH0=(-1500/256); TL0=(-1500%256); do{}while(!TF0); P07=!P07; TF0=0; }}
這個是我以前弄得一個步進電機的驅動程序,應該很好看懂,不是很深,關鍵你是要先搞清楚步進電機的原理,這樣你只要在對應那對引腳上面給電,他就可以轉動啦。

❸ 如何使用單片機精確控制步進電機

如何用單片機控制步進電機
步進電機是機電控制中一種常用的執行機構,它的用途是將電脈沖轉化為角位移,通俗地說:當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(及步進角)。通過控制脈沖個數即可以控制角位移量,從而達到准確定位的目的;同時通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。
一、步進電機常識
常見的步進電機分三種:永磁式(PM),反應式(VR)和混合式(HB),永磁式步進一般為兩相,轉矩和體積較小,步進角一般為7.5度或15度;反應式步進一般為三相,可實現大轉矩輸出,步進角一般為1.5度,但雜訊和振動都很大。在歐美等發達國家80年代已被淘汰;混合式步進是指混合了永磁式和反應式的優點。它又分為兩相和五相:兩相步進角一般為1.8度而五相步進角一般為0.72度。這種步進電機的應用最為廣泛。
二、永磁式步進電機的控制
下面以電子愛好者業余製作中常用的永磁式步進電機為例,來介紹如何用單片機控制步進電機。圖1是35BY型永磁步進電機的外形圖,圖2是該電機的接線圖,從圖中可以看出,電機共有四組線圈,四組線圈的一個端點連在一起引出,這樣一共有5根引出線。要使用步進電機轉動,只要輪流給各引出端通電即可。將COM端標識為C,只要AC、C、BC、C,輪流加電就能驅動步進電機運轉,加電的方式可以有多種,如果將COM端接正電源,那麼只要用開關元件(如三極體),將A、B、輪流接地。列出了該電機的一些典型參數:表135BY48S03型步機電機參數型號步距角相數電壓電流電阻最大靜轉距定位轉距轉動慣量35BY48S03 7.5 4 12 0.26 47 180 65 2.5 有了這些參數,不難設計出控制電路,因其工作電壓為12V,最大電流為0.26A,因此用一塊開路輸出達林頓驅動器(ULN2003)來作為驅動,通過P1.4~P1.7來控制各線圈的接通與切斷。開機時,P1.4~P1.7均為高電平,依次將P1.4~P1.7切換為低電平即可驅動步進電機運行,注意在切換之前將前一個輸出引腳變為高電平。如果要改變電機的轉動速度只要改變兩次接通之間的時間,而要改變電機的轉動方向,只要改變各線圈接通的順序。

❹ 單片機控制步進電機程序

假設P0口低4位接步進電機4個繞組,高電平繞組通電,程序如下:
whille(1)
{P0=1;delayms(5);
P0=2;delayms(5);
P0=4;delayms(5);
P0=8;delayms(5);}
反轉 的話, 就按 8 4 2 1 順序輸出。

❺ 單片機怎麼控制步進電機

ULN2003D 是驅動步進電機的驅動晶元,主要是匹配電機所需的電流。
由於是四相電機,步進電機之所以可以轉動就需要給相繞組提供連續的脈沖,所以需要4個埠來控制四相繞組的工作狀態(P15應該是不需要的),具體的編碼要看電機的拍數;
一旦明白這些,你就可以很容易編寫代碼來控制電機的轉動了,還有在脈沖間你可以設置不同的延時時間來調節電機的轉速。

❻ 步進電機單片機控制系統

由於不知道怎麼發圖片,沒有圖片。如果想要你採用我的回答,你發EMAIL到[email protected]我回復你。同時再給你1-2篇關於步進電機驅動的論文和資料。希望對你有所幫助

基於L297/L298晶元步進電機的單片機控制
1 引言
步進電動機是一種將電脈沖信號轉換成角位移或線位移的精密執行元件,由於步進電機具有控制方便、體積小等特點,所以在數控系統、自動生產線、自動化儀表、繪圖機和計算機外圍設備中得到廣泛應用。微電子學的迅速發展和微型計算機的普及與應用,為步進電動機的應用開辟了廣闊前景,使得以往用硬體電路構成的龐大復雜的控制器得以用軟體實現,既降低了硬體成本又提高了控制的靈活性,可靠性及多功能性。市場上有很多現成的步進電機控制機構,但價格都偏高。應用SGS公司推出的L297和L298兩晶元可方便的組成步進電機驅動器,並結合AT89C52單片機進行控制,即可以實現用相對便宜的價格組成一個性能不錯的步進電機驅動電路。
2 工作原理
由於步進電機是一種將電脈沖信號轉換成直線或角位移的執行元件,它不能直接接到交直流電源上,而必須使用專用設備-步進電機控制驅動器 典型步進電機控制系統如圖1所示:控制器可以發出脈沖頻率從幾赫茲到幾十千赫茲可以連續變化的脈沖信號,它為環形分配器提供脈沖序列。環形分配器的主要功能是把來自控制環節的脈沖序列按一定的規律分配後,經過功率放大器的放大加到步進電機驅動電源的各項輸人端,以驅動步進電機的轉動。環形分配器主要有兩大類:一類是用計算機軟體設計的方法實現環分器要求的功能,通常稱軟環形分配器。另一類是用硬體構成的環形分配器,通常稱為硬環形分配器。功率放大器主要對環形分配器的較小輸出信號進行放大.以達到驅動步進電機目的。

圖1 典型步進電機控制框圖
3 硬體組成
文中所控制的步進電機是四相單極式35BY48HJ120減速步進電動機。本文所設計的步進電機控制驅動器的框圖如圖2所示。它由AT89C52單片機、光電耦和器、集成晶元L297和L298組成。AT89C52是美國ATMEL的低電壓、高性能8位CMOS單片機。片內置8K位元組可重復擦寫的
Flash閃速存儲器。256位元組RAM。3個16位定時器.可編程串列UART通道。對完成步進電機的簡單控制已足以勝任。

圖2 本文提出的步進電機控制驅動器框圖
L297是步進電動機控制器(包括環形分配器)。L298是雙H橋式驅動器。它們所組成的微處理器至雙橋式步進電動機的介面如圖3所示。這種方式結合的優點是,需要的元件很少.從而使得裝配成本低,可靠性高和占空間少。並且通過軟體開發。可以簡化和減輕微型計算機的負擔。另外,L297和L298都是獨立的晶元.所以應用是十分靈活的。

L297晶元是一種硬體環分集成晶元.它可產生四相驅動信號,用於計算機控制的兩相雙極或四相單極步進電機 它的心臟部分是一組解碼器它能產生各種所需的相序.這一部分是由兩種輸入模式控制,方向控制(CW/CCW) 和HALF/FULL 以及步進式時鍾CLOCK.它將解碼器從一階梯推進至另一階梯。解碼器有四個輸出點連接到輸出邏輯部分,提供抑制和斬波功能所需的相序。因此L297能產生三種相序信號,對應於三種不同的工作方式:即半步方式(HALF STEP);基本步距(FULL STEP,整步)一相激勵方式;基本步距兩相激勵方式。脈沖分配器內部是一個3bit可逆計數器,加上一些組合邏輯.產生每周期8步格雷碼時序信號,這也就是半步工作方式的時序信號。此時HALF/FULL信號為高電。若HALF/FULL取低電平,得到基本步距工作方式。即雙四拍全階梯工作方式。
L297另一個重要組成是由兩個PWM 斬波器來控制相繞組電流,實現恆流斬波控制以獲得良好的矩頻特性。每個斬波器由一個比較器、一個RS觸發器和外接采樣電阻組成,並設有一個公用振盪器,向兩個斬波器提供觸發脈沖信號。圖3中,頻率f是由外接16腳的RC網路決定的, 當R>10kΩ 時,f=1/0.69RC。當時鍾振盪器脈沖使觸發器置1,電機繞組相電流上升,采樣電阻的R 上電壓上升到基準電壓Uref時,比
較器翻轉,使觸發器復位,功率晶體管關斷,電流下降,等待下一個振盪脈沖的到來。這樣,觸發器輸出的是恆頻PWM信號,調制L297的輸出信號,繞組相電流峰值由Uref確定。L297的CONTROL端的輸入決定斬波器對相位線A、B、C、D或抑制線INH1和INH2起作用。CONTROL為高電平時,對A、B、C、D有控製作用;而為低電平時,則對INH1和INH2起控製作用,從而可對電動機轉向和轉矩進行控制。
L298晶元是一種高壓、大電流雙全橋式驅動器,其設計是為接受標准TTL邏輯電平信號和驅動電感負載的,例如繼電器、圓筒形線圈、直流電動機和步進電動機 具有兩抑制輸入來使器件不受輸入信號影響。每橋的三級管的射極是連接在一起的,相應外接線端可用來連接外設感測電阻。可安置另一輸入電源,使邏輯能在低電壓下工作。L298晶元是具有15個引出腳的多瓦數直插式封裝的集成晶元。
圖3中.AT89C52通過串口經MAX232電平轉換之後與微機相連.接受上位機指令。向L297發出時鍾信號、正反轉信號、復位信號及使能控制等信號。電路中,電阻R13,R15用來調節斬波器電路的參考電壓,該電壓將與通過管腳13,14所反饋的電位的大小比較,來確定是否進行斬波控制,以達到控制電機繞組電流峰值、保護步進電機的目的
由於L297內部帶有斬波恆流電路,繞組相電流峰值由Uref確定。當採用兩片L297通過L298分別驅動步進電機的兩繞組,且通過兩個D/A轉換器改變每相繞組的Uref時,即組成了步進電機細分驅動電路。另外,為了有效地抑制電磁干擾,提高系統的可靠性,在單片機與步進電動機驅動迴路中利用兩個16引腳光電耦合器件TLP521-4組成如圖3所示的隔離電路。其作用是切斷了單片機與步進電動機驅動迴路之間電的直接聯系,實現了單片機與驅動迴路系統地線的分別聯接.防止處於大電流感性負載下工作的驅動電路產生的干擾信號以及電網負載突變產生的干擾信號通過線路串入單片機,影響單片機的正常工作。
4 軟體組成
在該電路中,將P1.0口設為電機開始按鈕,P1.1,P1.2,P1.3為速度選擇按鈕。速度由低到高,P1.4為電機停止按鈕。並設三檔速度的最高速度依次為500pps、1000pps、2000pps 。RXD,TXD 已由MAX232電平轉換接出串口。此外,步進電機其啟動,停止的頻率較低,一般在100-250Hz之間,而最高運行頻率要求較高。通常為1-3kHz,為使其在啟動、運行和停止整個過程中,既不會失步,又能夠盡快精確地達到目標位置,運行速度都要有一個加速一恆速減速的過程。這里採用常用的離散辦法來逼近理想的近似梯形的升降速曲線,如圖5所示。即利用定時器中斷方式來不斷改變定時器裝載值的大小.

本例中.為計算方便,把各離散點的速度所需的裝載值用公式轉化為各自所需的定時時間固化在系統的ROM 中,這里用TH0=(65536-time)/256,TL0=(65536-time)%256來計算裝載值,time表示各階梯所需定時時間。系統在運行中用查表法查出所需的時間,從而大幅度減少佔用CPU的時間,提高系統的相應速度。因此.該程序主要由控制主程序、加減速子程序組成,主程序框圖如圖4所示。

5 結論
本文創新點在於提出應用單片機和L297、L298集成電路構成步進電機控制驅動器。使之具有元件少.可靠性高、占空間少、裝配成本低等優點。通過軟體開發,可以簡化和減輕微型計算機的負擔。另外。在上面提出的在加減速程序中定時器的裝載值用式子計算不精確,這兩條賦值要執行不少的時間.具體做的時候.可直接把初值計算出來或把除號用相加來計算.以達到精確的目的。

❼ 用單片機對步進電機進行控制

呵呵 兄弟可以參考某些部分 呵呵
自己做的課程設計 還沒有做完 完了發給你參考參考
題 目:單片機控制步進電機系統

摘 要

很多工業控制設備對位移和角度的控制精度要求較高, 一般電機很難實現, 而步進電機可精確實現所設定的角度和轉數。本設計主要是運用51 單片機控制六線4 相步進電機系統, 由單片機產生驅動脈沖信號, 控制步進電機以一定的轉速向某一方向產生一定的轉動角度。同時能夠利用單片機實現電機的正、反轉及速度控制,並能在數碼管上顯示出相應的速度。
本文中給出了該系統設計的硬體電路,軟體設計,人機交互等。並對各個功能模塊進行了詳細的說明。主要內容包括以下幾個方面:
單片機控制步進電機的一般原理。
電機驅動及控制的實現。
控制系統整體設計以及模塊劃分說明。
原理圖。
代碼。

關鍵詞:單片機;步進電機;系統;驅動

Abstract
Many Instrial control equipment have a highly requirement in displacement and angle with control accuracy, the most motor can't carry out .but the step motor can carry out the displacement and angle that you enactmented in accuracy. This design mainly used SCM to control step motor system.The step motor is formed six lines and four phasic.Through SCM generate the drive pulse signal.Control stepper motor through a certain speed in a direction to get a certain degree of rotation angle.
At the same time, It can use SCM to realization of the motor is , reverse and speed control. and showed the speed in the digital tube.
In this paper, given the design of the system hardware circuit,software design, human-computer interaction and so on.and it given the details description of each functional mole.the main contents include the following:

(1) The general principles of signal_chip controlling step motor.
(2) The realization of motor driving and controlling
(3) Control system overall design and description mole division
(4) Schematic Diagram
(5) Code

Key Words:SCM; stepper motor; system; drive

目錄

引言 4
1 單片機控制步進電機的一般原理 4
1.1 步進電機 4
1.1.1 步進電機介紹 4
1.1.2 步進電機分類 5
1.1.3 技術指標 5
1.1.4 步進電機工作原理 5
1.2 單片機 7
2 步進電機驅動實現 8
2.1簡介 8
2.2驅動選擇 8
3 系統硬體設計 9
3. 1 單片機控制電機 9
3.2 鍵盤 9
3.3 顯示部分 10
程序流程圖 11
總結 12
致 謝 13
參考文獻 13
附錄 13
C代碼 13

引言
目前,在工業控制生產以及儀器上應用十分廣泛。通常都要對一些機械部件平移和轉動,對移動的位移和角度控制要求較高,一般的電機很難實現對位置和角度的精確控制,在一些智能化要求較高的場合,用模擬晶元控制器及信號發生器來控制有一定局限性。而用單片機控制步進電機可以改善性能,步進電機能實現精確的角度和轉數,具有良好的步進特性,最適合數字控制。在工控設備中得到了廣泛的應用。而單片機具有晶元體積小,兼容性強,低電壓地,低功耗等特點,使單片機成為驅動步進電機的最佳空盒子單元。所以單片機控制步進電機系統控制精度高,運行穩定,得以廣泛運用。
1 單片機控制步進電機的一般原理
1.1 步進電機
1.1.1 步進電機介紹
步進電機是將電脈沖信號轉變為角位移或線位移的開環控制元件。在非超載的情況下,電機的轉速、停止的位置只取決於脈沖信號的頻率和脈沖數,而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角。這一線性關系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領域用步進電機來控制變的非常的簡單。雖然步進電機已被廣泛地應用,但步進電機並不能象普通的直流電機、交流電機在常規下使用。它必須由雙環形脈沖信號、功率驅動電路等組成控制系統方可使用。因此用好步進電機卻非易事,它涉及到機械、電機、電子及計算機等許多專業知識。
1.1.2 步進電機分類
永磁式(PM)。一般為二相,轉矩和體積都很小,步距角一般為7.5或15°
反應式(VR)。一般為三相,實現大轉矩輸出,步距角為1.5°。
混合式(HB)。兼具永磁式和反應式的優點,分二相和五相,二相步距角為1.8°五相步距角為0.72°。
1.1.3 技術指標
靜態指標

相數
步距角
拍數
定位轉矩
保持轉矩

步進電機動態指標
步距角精度
失步
失調角
最大空載啟動頻率
最大空載運行頻率
運行頻距特性
電機共振點

1.1.4 步進電機工作原理
分析(步進電機展開圖)

以反應式步進電機為例,其典型結構圖如圖1所示。這是一個四相步進電機,當相控制繞組接通脈沖電流時,在磁拉力作用下使相的定、轉子對齊,相鄰的B 相和D 相的定、轉子小齒錯開。若換成B 相通電,則磁拉力使B 相定、轉子小齒對齊(轉過) ,而與B 相相鄰的C 相和A 相的定、轉子小齒又錯開,即步進電機轉過一個步距角。若按A →B →C →D →A ⋯規律循環順序通電,則步進電機按一定方向轉動。若改變通電順序為A →D →C →B →A ,則電機反向轉動。這種控制方式稱為四相單四拍。若按AB →BC →CD →DA →AB或A →AB →B →BC →C →CD →D →DA →A 順序通電則稱為四相雙拍或四相單、雙八拍。無論採用哪種控制方式,在一個通電循環內,步進電機的轉角恆為一個齒距角。所以,可以通過改步進電機通電循環次序來改變轉動方向,可以通過改變通電頻率來改變其角頻率。運用單片機的輸出功能,通過編程實現輸出四個信號分別給步進電機的四相A、B、C、D ,並通過輸出時信號的循環次序,來設定步進電機的轉動方向及輸出信號的頻率以便設定步進電機的轉動頻率。

圖1 反應式步進電機結構圖

實現原理
採用單片機產生A、B、C、D 的四相信號,當採用單片機進行控制時,需要在單片機和步進電機中間設隔離電路以使強弱電分離。由於步進電機的驅動電流相對較大,可增設放大電路來提供步進電機的工作電流。系統電路由五部分組成,即單片機、隔離、放大、電源及步進電機。
1.2 單片機

功能特性描述

AT89S52是一種低功耗、高性能CMOS8位微控制器,
具有8K 在系統可編程Flash 存儲器。使用Atmel 公
司高密度非易失性存儲器技術製造,與工業80C51
產品指令和引腳完全兼容。片上Flash允許程序存儲
器在系統可編程,亦適於常規編程器。在單晶元上,
擁有靈巧的8 位CPU 和在系統可編程Flash,使得
AT89S52為眾多嵌入式控制應用系統提供高靈活、超
有效的解決方案。AT89S52具有以下標准功能:8k字
節Flash,256位元組RAM,32 位I/O 口線,看門狗定時
器,2 個數據指針,三個16 位定時器/計數器,一個6
向量2級中斷結構,全雙工串列口,片內晶振及時鍾電
路。另外,AT89S52 可降至0Hz 靜態邏輯操作,支持
2種軟體可選擇節電模式。空閑模式下,CPU停止工作,
允許RAM、定時器/計數器、串口、中斷繼續工作。掉
電保護方式下,RAM內容被保存,振盪器被凍結,單
片機一切工作停止,直到下一個中斷或硬體復位為止。

2 步進電機驅動實現
2.1簡介
步進電機在單單僅給予電壓時,電機是不會動作的,必須由脈沖產生器提供位置(脈波數)、速度的脈沖信號指令,以及驅動器驅動電流流過電機內部線圈、依順序切換激磁相序的方式才能夠讓電機運 轉。所以欲使步進電機動作的必要系統組成有:
(1)脈沖產生器:給予角度(位置移動量)、動作速度及運轉方向之脈沖信號的電機驅動指令。
(2)步進驅動器:依控制器所投入的脈沖信號指令,提供電流來驅動步進電機動作。
(3)步進電機:提供轉矩動力輸出來帶動負載。所以步進電機系統構成簡單,不需要速度感應器、位置感測器, 即能依照脈沖產生器所輸入的脈沖來做到速度及位置的控制。

2.2驅動選擇
步進電機可以選用專用的電機驅動模塊,也可以自己構建驅動電路。一般有以下幾種選擇:
專用驅動模塊,如L298,FT5754等,這類驅動介面簡單,這類可以驅動步進電機,直流電機等。
達林頓驅動器ULN2803,這個晶元可以一次驅動八線步進電機。
自己構建,通過三極體,74als04,等系列元件構成。但這樣系統可靠性會降低,會另外給系統帶來誤差。

3 系統硬體設計
1 單片機控制電機
如圖3

說明:
這個部分為單片機控制步進電機部分,80s52單片機通過達林頓驅動器ULN2803來驅動步進電機,80s52的P1.0-P1.4發送控制信號給驅動器,然後驅動器的四根線把信號傳遞給電機,使電機實現正反轉等。電機部分接12V直流電源。
3.2 鍵盤
如圖4

說明:
本系統中採用了四個按鍵,分別與80s52的四個引腳相連,分別為LCDEN,RS,WR,RD;分別實現的功能是電機加速,減速,正反轉。鍵盤一旦按下則表示向單片機發送了有效信號,單片機就相應的進行調節。對於鍵盤的鍵按下的時候分為幾個步驟,當鍵盤按下的時候,接通電路,鍵盤掃描檢測低電平,但檢測到低電平之後不能夠判斷鍵是否被按下,因為抖動可能引起這個變化,所有大概延時5~10ms之後再進行檢測。如果再次檢測到低電平之後說明鍵被按下。這個過程就是所說的消除抖動。
3.3 顯示部分
如圖5

說明:
對於顯示部分,因為這個系統只是顯示轉速,所以採用了LED共陽極數碼管。
並且用了74HC573鎖存器,74HC573鎖存器輸出電流大,介面電路簡單。本系統採用了兩個74HC573鎖存器,分別為段選和位選。段選為數碼管的顯示數字,位選為選中相應的數碼管。
程序流程圖

總結
通過本次的課程論文,讓我真實的感受到一個完整的系統設計過程。這次的的論文從開始的整體布局,排版,到內容中的系統設計直到最後完成。每個流程下來,都帶給了我很多的新東西,特別在設計完系統之後做硬體部分中,先是用protel99se畫圖,好多圖在庫中找不到,找不到就自己畫,然後封裝,封裝的時候還要用游標卡紙對買來的元件進行精確的測量,然後才能在封裝的過程中保證精度。最後做完圖之後還要布線,布線完成後再發到廠家去做。事實上這個過程我用買好的空板做的,因為元件不多。所以就買了相應的元件直接再PCB板上焊接好的。在焊接的過程中也會感受到很多東西,因為很多需要注意的。不過這個過程多多嘗試就會有進步的。焊接完後就是代碼調試階段。最後就完成了這個小型系統的設計。

致 謝
在此,感謝我的老師以及周圍的同學。本次的論文得益於同學們的幫助。最後還要感謝我的父母,是他們一直在背後支持著我。
謹以此文獻給他們!

參考文獻
[1] 張永楓,王靜霞,楊宏利. 單片機應用實訓教程. 西安電子科技大學出版社,2005.
[2] 郭天祥. 51單片機C語言教程. 電子工業出版社 2008

附錄
C代碼
單片機控制步進電機
實現功能:
定時器中斷:定時時間設置為30秒,首先給的初值每次中斷為5ms,經過20次中斷為1秒,半分鍾三十秒則要中斷600次,所有到達六百次後就把計數n中的值讀取到數碼管中顯示出來。
鍵盤檢測:進行速度控制的時候按下相應的鍵則會對應的進行速度調節。
數碼管顯示:
驅動部分:
#include <reg52.h>
#define uchar unsigned char
sbit la=P2^6;
sbit wela=P2^7;
sbit jia_key=P3^6;
sbit jian_key=P3^7;
sbit zf_key=P3^5;
sbit stop_key=P3^4;
bit flag=0;
uchar num1,n;
uchar num=0,show_num=2,maichong=4,table_begin=0;
uchar code table1[]={0x01,0x02,0x04,0x08,0x08,0x02,0x01};
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
// 延時部分
void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=110;k>0;k--);
}
// 顯示部分
void display()
{
la=0;
P0=table[show_num];
la=1;
la=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[0];
la=1;
la=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
}
// 鍵盤檢測部分
void key()
{
if(jia_key==0)
{
delay(5);
if(jia_key==0)
{
num++;
if(num==4)
num=3;
while(jia_key==0)
}
}
if(jian_key==0)
{
delay(5);
if(jian_key==0)
{
if(num!=0)
num--;
else
num==0;
while(jian_key==0);
}
}
if(zf_key==0)
{
delay(5);
if(zf_key==0)
{
flag=~flag;
while(zf_key==0);
}

}
if(stop_key==0)
{
delay(4);
if(stop_key==0)
{
show_num=0;
maichong=0;
}
while(stop_key==0)
}
}
// 鍵盤檢測結果
void dispose()
{
switch(num)
{
case 0:
maichong=5;
break;
case 1:
maichong=4;
break;
case 2:
maichong=3;
break;
case 3:
maichong=2;
break;
}
if(flag==0)
{
table_begin=0;
}
else
table_begin=4;
}
// 數碼管驅動部分
void qudong()
{
uchar i,j;
for(j=0+table_begin;j<4+table_begin;j++)
{
P1=table[j];
for(i=0;i<maichong;i++)
{
dispaly();
}
}
}
// 主函數部分
void main()
{
while(1)
{ init();
key();
dispose();
qudong();
n++;
}
}
// 定時器中斷初始化
void init()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1; // 開總中斷
ET0=1;// 開定時器0中斷
TR0=1;// 啟動定時器0
}
// 定時器中斷調用
void T0_time() intterrupt 1 // T0中斷
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num1++;
if(num1==600)
{
show_num=n;
num1=0;
n=0;
}

}

❽ 51單片機控制步進電機

這個簡單,讓我來教樓主怎麼玩
首先我說下思路:
我們採用P1口來採集ADC0832的8位數據,用P0.0口控制步進電機動作,利用T0的時間中斷來採集P1口的ADC0832數據並做出比較後設置步進電機啟動標志位start=1;並設置他的運行頻率,當然,樓主沒說怎麼比較,我這就只是寫了個簡單的例子,一通百通,希望對你有幫助
下面是程序:
#include <reg51.h> //選用晶振11.0592MHz
unsigned int m=0,n=0; //設置循環的周期
unsigned char start=0,t0temp=0;
sbit Y0=P0^0; //控制步進電機的管腳
delay()
{
unsigned char i,j;
for(i=m;i>0;i--)
for(j=n;i>0;j--);
}

main()
{

//自檢測T0時間設置
ET0=1;
TMOD|=0x01;
TH0=0XFC; //1ms中斷掃描
TL0=0X66;
IT0=1; //下降沿觸發
TR0=0; //關閉掃描
/***********************初始化完畢***********************/
//****************I/O口程序
while(1)
{
while(start)
{
delay();
Y0=~Y0;
}
}
}

void counter1(void) interrupt 1 //T0計時器中斷
{
if(t0temp%4)t0temp++; //4ms時間才採集一次P0口的數據
else
{
t0temp++;
//這里就寫你怎麼做對比的程序,我舉個例子
if(P1>150)
{start=1;n=1000;m=0;} //入錯採用12M晶振,那這時候控制步進電機的輸出周期就是1ms一次,也就是1000HZ
else {start=0;n=0;m=0;}
}
}
//PS:我在輸出頻率中用了兩個全局變數m,n可以延遲很長時間,樓主可以根據需要選用,一般16位的,選用一個就可以了,另一個放棄
OK,至於電路圖,我軟體沒有ADC0832的封裝,不然就發給你了,但想來樓主完全就沒必要擔心,ADC0832的8位數據接到P1口,P0.0控制步進電機啟動的三極體,電路圖就那麼簡單!

閱讀全文

與步進電機的單片機控制相關的資料

熱點內容
php不需要編譯嗎 瀏覽:134
特斯拉新車如何用app控制 瀏覽:185
文檔拖到文件夾就不見了 瀏覽:814
標致308壓縮比是多少 瀏覽:749
伺服器和備用伺服器地址 瀏覽:926
程序員加班跳槽 瀏覽:706
青年員工在工作中如何化解壓力 瀏覽:602
包子解壓神器怎麼玩才爽 瀏覽:733
聯想加密電腦怎麼做系統 瀏覽:881
解壓最近的壓力 瀏覽:709
如何知道王牌戰爭新出來的伺服器 瀏覽:591
程序員建的房子 瀏覽:419
navicatlinux破解版 瀏覽:454
找個輔警或者程序員 瀏覽:452
軍團td預言命令 瀏覽:114
營指揮員下達作戰命令 瀏覽:258
exe打開指定文件夾 瀏覽:265
pdf裡面怎麼去水印 瀏覽:845
appleid賬號加密碼 瀏覽:220
蘋果如何下載微倉app 瀏覽:918