?? 單片機控制步進電機2.txt
字號:
用單片機控制步進電機-冰林 - 新浪BLOG 博客首頁┆播客┆圈子┆美圖┆專欄┆搜索┆幫助
生命總是美麗的http://blog.sina.com.cn/gaozaide 復(fù)制 > 收藏本頁 添加為友情鏈接
博客首頁 個人首頁┆管理博客┆我的文章┆我的相冊┆我的圈子┆我的播客┆我的好友┆給我留言
個人信息 管理
冰林
活力地帶 管理
個人首頁 管理博客 我的文章 我的相冊 我的圈子 我的播客 我的好友 給我留言文章分類 管理
我的所有文章
訪客
正在載入模塊...
特工
2007-11-13 9:55:12 真誠面對世界
2007-10-26 21:02:51 最新動漫
2007-10-20 0:40:33 千樹
2007-10-16 7:49:00 ★SO
2007-10-11 13:33:20 一支筷子
2007-10-7 7:28:34 風子之瘋
2007-8-7 19:34:10 雅士
2007-7-5 8:12:20 營養(yǎng)美食
2007-6-26 18:00:49新浪博客推薦文章 管理
曼聯(lián)板凳成匕首 阿森納沒輸0:10已是幸運
加索爾西行,讓火箭形勢更嚴峻
足協(xié),請扯下“臉皮”讓福拉多退居二線!——寫在中韓之戰(zhàn)后
寒酸的京都大學及學生宿舍(組圖)
農(nóng)業(yè)股行情還能走多遠
十只股的投資組合
下周重點板塊
牛刀:未來五年中國住宅不具備任何投資價值
兩會前股市行情有望以盤升為主基調(diào)
國足太把破恐韓當回事 年輕球員同樣存在差距
內(nèi)容 管理
數(shù)據(jù)加載中...
注冊┆登錄┆發(fā)表文章 用單片機控制步進電機 2006-05-30 20:57:32
大 中 小
<冰林轉(zhuǎn)載>
步進電機是機電控制中一種常用的執(zhí)行機構(gòu),它的用途是將電脈沖轉(zhuǎn)化為角位移,通俗地說:當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度(及步進角)。通過控制脈沖個數(shù)即可以控制角位移量,從而達到準確定位的目的;同時通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。
一、步進電機常識
常見的步進電機分三種:永磁式(PM),反應(yīng)式(VR)和混合式(HB),永磁式步進一般為兩相,轉(zhuǎn)矩和體積較小,步進角一般為7.5度
或15度;反應(yīng)式步進一般為三相,可實現(xiàn)大轉(zhuǎn)矩輸出,步進角一般為1.5度,但噪聲和振動都很大。在歐美等發(fā)達國家80年代已被淘汰;混合式步進是指混合了永磁式和反應(yīng)式的優(yōu)點。它又分為兩相和五相:兩相步進角一般為1.8度而五相步進角一般為
0.72度。這種步進電機的應(yīng)用最為廣泛。
二、永磁式步進電機的控制
下面以電子愛好者業(yè)余制作中常用的永磁式步進電機為例,來介紹如何用單片機控制步進電機。
圖1是35BY型永磁步進電機的外形圖,圖2是該電機的接線圖,從圖中可以看出,電機共有四組線圈,四組線圈的一個端點連在一起引出,這樣一共有5根引出線。要使用步進電機轉(zhuǎn)動,只要輪流給各引出端通電即可。將COM端標識為C,只要AC、
C、BC、 C,輪流加電就能驅(qū)動步進電機運轉(zhuǎn),加電的方式可以有多種,如果將COM端接正電源,那么只要用開關(guān)元件(如三極管),將A、 、B、 輪流接地。
下表列出了該電機的一些典型參數(shù):
表1 35BY48S03型步機電機參數(shù)
型號 步距角 相數(shù) 電壓 電流 電阻 最大靜轉(zhuǎn)距 定位轉(zhuǎn)距 轉(zhuǎn)動慣量
35BY48S03 7.5 4 12 0.26 47 180 65 2.5
有了這些參數(shù),不難設(shè)計出控制電路,因其工作電壓為12V,最大電流為0.26A,因此用一塊開路輸出達林頓驅(qū)動器(ULN2003)來作為驅(qū)動,通過P1.4~P1.7來控制各線圈的接通與切斷,電路如圖3所示。開機時,P1.4~P1.7均為高電平,依次將P1.4~P1.7切換為低電平即可驅(qū)動步進電機運行,注意在切換之前將前一個輸出引腳變?yōu)楦唠娖健H绻淖冸姍C的轉(zhuǎn)動速度只要改變兩次接通之間的時間,而要改變電機的轉(zhuǎn)動方向,只要改變各線圈接通的順序。
三、步進電機的驅(qū)動實例
要求:控制電路如圖3所示,開機后,電機不轉(zhuǎn),按下啟動鍵,電機旋轉(zhuǎn),速度為25轉(zhuǎn)/分,按下加1鍵,速度增加,按下減1鍵,速度降低,最高速度為100轉(zhuǎn)/分,最低轉(zhuǎn)帶為25轉(zhuǎn)/分,按下停止鍵,電機停轉(zhuǎn)。速度值要求在數(shù)碼管上顯示出來。
1.要求分析
按上面的分析,改變轉(zhuǎn)速,只要改變P1.0~P1.3輪流變低電平的時間即可達到要求,這個時間不應(yīng)采用延時來實現(xiàn),因為會影響到其他功能的實現(xiàn)。這里以定時的方式來實現(xiàn)。下面首先計算一下定時時間。
按要求,最低轉(zhuǎn)速為25轉(zhuǎn)/分,而上述步進電機的步距角為7.5,即每48個脈沖為1周,即在最低轉(zhuǎn)速時,要求為1200脈沖/分,相當于50ms/脈沖。而在最高轉(zhuǎn)速時,要求為100轉(zhuǎn)/分,即48000脈沖/分,相當于12.5ms/脈沖。可以列出下表
表1 步進電機轉(zhuǎn)速與定時器定時常數(shù)關(guān)系
速度 單步時間(us) TH1 TL1 實際定時(us)
25 50000 76 0 49996.8
26 48077 82 236 48074.18
27 46296 89 86 46292.61
28 44643 95 73 44640.155
… … … … …
100 12500 211 0 12499.2
表中不僅計算出了TH1和TL1,而且還計算出了在這個定時常數(shù)下,真實的定時時間,可以根據(jù)這個計算值來估算真實速度與理論速度的誤差值。
表中TH1和TL1是根據(jù)定時時間算出來的定時初值,這里用到的晶振是11.0592M。有了上述表格,程序就不難實現(xiàn)了,使用定時/計數(shù)器T1為定時器,定時時間到后切換輸出腳即可。
2.程序?qū)崿F(xiàn)
定義DSB-1A實驗板的S1為啟動鍵,S2為停止鍵,S3為加1鍵,S4為減1鍵,程序如下:
StartEnd bit 01H ;起動及停止標志
MinSpd EQU 25 ;起始轉(zhuǎn)動速度
MaxSpd EQU 100 ;最高轉(zhuǎn)動速度
Speed DATA 23H ;流動速度計數(shù)
DjCount DATA 24H ;控制電機輸出的一個值,初始為11110 111
Hidden EQU 10H ;消隱碼
Counter DATA 57H ;顯示計數(shù)器
DISPBUF DATA 58H ;顯示緩沖區(qū)
ORG 0000H
AJMP MAIN
ORG 000BH
JMP DISP
ORG 001BH
JMP DJZD
ORG 30H
MAIN:
MOV SP,#5FH
MOV P1,#0FFH
MOV A,#Hidden
MOV DispBuf,A
MOV DispBuf+1,A
MOV DispBuf+2,A
MOV DjCount,#11110111B
MOV SPEED,#MinSpd ;起始轉(zhuǎn)動速度送入計數(shù)器
CLR StartEnd ;停轉(zhuǎn)狀態(tài)
MOV TMOD,#00010001B ;
MOV TH0,#HIGH(65536-3000)
MOV TL0,#LOW(65536-3000)
MOV TH1,#0FFH;
MOV TL1,#0FFH
SETB TR0
SETB EA
SETB ET0
SETB ET1
LOOP: ACALL KEY ;鍵盤程序
JNB F0,m_NEXT1 ;無鍵繼續(xù)
ACALL KEYPROC ;否則調(diào)用鍵盤處理程序
m_NEXT1:
MOV A,Speed
MOV B,#10
DIV AB
MOV DispBuf+5,B ;最低位
MOV B,#10
DIV AB
MOV DispBuf+4,B
MOV DispBuf+3,A
JB StartEnd,m_Next2
CLR TR1 ;關(guān)閉電機
JMP LOOP
ORL P1,#11110000B
m_Next2:
SETB TR1 ;啟動電機
AJMP LOOP ;主程序結(jié)束
;---------------------------------------
D10ms:
……
;---------延時程序,鍵盤處理中調(diào)用
KEYPROC:
MOV A,B ;獲取鍵值
JB ACC.2,StartStop ;分析鍵的代碼,某位被按下,則該位為1
JB ACC.3,KeySty
JB ACC.4,UpSpd
JB ACC.5,DowSpd
AJMP KEY_RET
StartStop:
SETB StartEnd ;啟動
AJMP KEY_RET
KeySty:
CLR StartEnd; ;停止
AJMP KEY_RET
UpSpd:
INC SPEED;
MOV A,SPEED
CJNE A,#MaxSpd,K1 ;到了最多的次數(shù)?
DEC SPEED ;是則減去1,保證下次仍為該值
K1:
AJMP KEY_RET
DowSpd:
DEC SPEED
MOV A,SPEED
CJNE A,#MAXSPD,KEY_RET ;不等(未到最大值),返回
MOV SPEED,#MinSpd;
KEY_RET:
RET
KEY:
……獲取鍵值的程序
RET
DjZd: ;定時器T1用于電機轉(zhuǎn)速控制
PUSH ACC
PUSH PSW
MOV A,Speed
SUBB A,#MinSpd ;減基準數(shù)
MOV DPTR,#DjH
MOVC A,@A+DPTR
MOV TH1,A
MOV A,Speed
SUBB A,#MinSpd
MOV DPTR,#DjL
MOVC A,@A+DPTR
MOV TL1,A
MOV A,DjCount
CPL A
ORL P1,A
MOV A,DjCount
JNB ACC.7,d_Next1
JMP d_Next2
d_Next1:
MOV DjCount,#11110111B
d_Next2:
MOV A,DjCount
RL A
MOV DjCount,A ;回存
ANL P1,A
POP PSW
POP ACC
RETI
DjH: DB 76,82,89,95,100,106,110,115,119,123,12……
DjL: DB 0,236,86,73,212,0,214,96,163,165
……
DISP: ;顯示程序
POP PSW
POP ACC
……
RETI
BitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH
DISPTAB:DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
END
3.程序分析
本程序主要由鍵盤程序、顯示器程序、步進電機驅(qū)動程序三部份組成,主程序首先初始化各變量,將顯示器的高3位消隱,步進電機驅(qū)動的各引腳均輸出高電平,然后調(diào)用鍵盤程序,并作判斷,如果有鍵按下,則調(diào)用鍵盤處理程序,否則直接轉(zhuǎn)下一步。下一步是將當前的轉(zhuǎn)速值轉(zhuǎn)換為BCD碼,送入顯示緩沖區(qū);接著判斷StartEnd這個位變量,是“1”還是“0”,如果是“1”,則開啟定時器T1,否則關(guān)閉定時器T1,為防止關(guān)閉時某一相線圈長期通電,因此,在關(guān)閉定時器T1時,將P1.0~P1.3均置高。至此,主程序的工作即結(jié)束。這里為簡便起見,這里沒有做高位“0”消隱的工作,即如果速度為10轉(zhuǎn)/分,則顯示值“010”,讀者可以自行加入相關(guān)的代碼來處理這一工作。
步進電機的驅(qū)動工作是在定時器T1的中斷服務(wù)程序中實現(xiàn)的,由前述分析,每次的定時時間到達以后,需要將P1.0~P1.3依次接通,程度中用了一個變量DjCntr來實現(xiàn)這一功能,在主程序初始化時,該變量被賦予初值11110111B,進入到定時中斷以后,將該變量取出送ACC累加器,并在累加器中進行左移,這樣,該數(shù)值就變?yōu)?110
1111,然后將該數(shù)與P1相“與”,此時,P1.4即輸出低電平,第二次進入中斷時,先將該數(shù)取反,成為
0001 0000,然后將該數(shù)與P1相“或”,這樣,P1.4即輸出高電平,關(guān)斷了相應(yīng)的線圈,然后將該數(shù)重新取出,并作左移,即 1110,1111右移成為1101 1111,將該數(shù)與P1相“與”,這樣P1.5即輸出低電平,依次類推,P1.7~P1.4即循環(huán)輸出低電平。當這一數(shù)據(jù)變?yōu)?111
1111后,需要作適當?shù)母膭樱瑢?shù)據(jù)重新變回 1111 0111,進行第二次循環(huán),相關(guān)代碼,請讀者自行分析。
定時時間又是如何確定的呢?這里用的是查表的方法,首先用Excel計算得出在每一種轉(zhuǎn)速下的TH值和TL值,然后,分別放入DjH和DjL表中,在進入T1中斷程序之后,將速度值變量Speed送入累加器ACC,然后減去基數(shù)25,使其基數(shù)從0開始計數(shù),然后分別查表,送入TH1和TL1,實現(xiàn)重置定時初值的目的。
看完這一部份內(nèi)容以后,請讀者自行完成以下工作:
1.更改程序,將S1定義為“啟動/停止”,而S2定義為“方向”,按下S2,切換電機旋轉(zhuǎn)方向。
2. 更改程序,要求轉(zhuǎn)速從1到100。
3. 更改程序,實現(xiàn)首位無效零消隱
文章引用自:http://www.yqxmcu.com/Html/wangyoubenzhanDIY/064210842375370_3.htm
評論(5) 引用 閱讀(145) 圈子 編輯 打印 有獎舉報
前一篇:冰山
后一篇:“高密八景”和“高密三絕”
新浪BLOG意見反饋留言板 不良信息反饋 電話:95105670 提示音后按2鍵(按當?shù)厥性挊藴视嬞M) 歡迎批評指正
新浪簡介 | About Sina | 廣告服務(wù) | 聯(lián)系我們 | 招聘信息 | 網(wǎng)站律師 | SINA English | 會員注冊 | 產(chǎn)品答疑
Copyright ? 1996 - 2008 SINA Corporation, All Rights Reserved
新浪公司 版權(quán)所有
本期參加“我記錄”活動情形
數(shù)據(jù)正在加載中...
活動首頁博主本期文章
進入主頁昵 稱: 藍調(diào)小雨云會員編碼: 1147672380讀取中……
讀取中……
讀取中……博客 | 播客 | 論壇 | 圈子 | 相冊
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -