新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)__終極(完整版)

51單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)__終極(完整版)

作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
在這里介紹一下用51單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)的方法。
這款步進(jìn)電機(jī)的驅(qū)動(dòng)電壓12V,步進(jìn)角為 7.5度 . 一圈 360 度 , 需要 48 個(gè)脈沖完成!!!
該步進(jìn)電機(jī)有6根引線,排列次序如下:1:紅色、2:紅色、3:橙色、4:棕色、5:黃色、6:黑色。
采用51驅(qū)動(dòng)ULN2003的方法進(jìn)行驅(qū)動(dòng)。
ULN2003的驅(qū)動(dòng)直接用單片機(jī)系統(tǒng)的5V電壓,可能力矩不是很大,大家可自行加大驅(qū)動(dòng)電壓到12V。
;******************************************************************************
;************************* 步進(jìn)電機(jī)的驅(qū)動(dòng)*************************************** ; DESIGN BY BENLADN911 FOSC = 12MHz 2005.05.19
;---------------------------------------------------------------------------------
; 步進(jìn)電機(jī)的驅(qū)動(dòng)信號(hào)必須為 脈沖信號(hào)!!! 轉(zhuǎn)動(dòng)的速度和脈沖的頻率成正比!!!
; 本步進(jìn)電機(jī)步進(jìn)角為 7.5度 . 一圈 360 度 , 需要 48 個(gè)脈沖完成!!!
;---------------------------------------------------------------------------------
; A組線圈對(duì)應(yīng) P2.4
; B組線圈對(duì)應(yīng) P2.5
; C組線圈對(duì)應(yīng) P2.6
; D組線圈對(duì)應(yīng) P2.7
; 正轉(zhuǎn)次序: AB組--BC組--CD組--DA組 (即一個(gè)脈沖,正轉(zhuǎn) 7.5 度)
;----------------------------------------------------------------------------------
;----------------------------正轉(zhuǎn)-------------------------- ORG 0000H LJMP MAIN ORG 0100H
MAIN:
MOV R3,#144 正轉(zhuǎn) 3 圈共 144 脈沖 START: MOV R0,#00H START1: MOV P2,#00H MOV A,R0
MOV DPTR,#TABLE MOVC A,@A+DPTR
JZ START 對(duì) A 的判斷,當(dāng) A = 0 時(shí)則轉(zhuǎn)到 START MOV P2,A
LCALL DELAY INC R0
DJNZ R3,START1
MOV P2,#00H LCALL DELAY1
;-----------------------------反轉(zhuǎn)------------------------
MOV R3,#144 反轉(zhuǎn)一圈共 144 個(gè)脈沖 START2:
MOV P2,#00H MOV R0,#05 START3: MOV A,R0
MOV DPTR,#TABLE MOVC A,@A+DPTR JZ START2 MOV P2,A CALL DELAY INC R0
DJNZ R3,START3 MOV P2,#00H
LCALL DELAY1 LJMP MAIN
DELAY: MOV R7,#40步進(jìn)電機(jī)的轉(zhuǎn)速M(fèi)3: MOV R6,#248 DJNZ R6,$ DJNZ R7,M3
RET
DELAY1: MOV R4,#20 2S 延時(shí)子程序 DEL2: MOV R3,#200 DEL3: MOV R2,#250 DJNZ R2,$ DJNZ R3,DEL3 DJNZ R4,DEL2 RET TABLE:
DB 30H,60H,0C0H,90H 正轉(zhuǎn)表 DB 00 正轉(zhuǎn)結(jié)束
DB 30H,90H,0C0H,60H 反轉(zhuǎn)表 DB 00 反轉(zhuǎn)結(jié)束 END
51單片機(jī)控制四相步進(jìn)電機(jī)
拿 到步進(jìn)電機(jī),根據(jù)以前看書對(duì)四相步進(jìn)電機(jī)的了解,我對(duì)它進(jìn)行了初步的測(cè)試,就是將5伏電源的正端接上最邊上兩根褐色的線,然后用5伏電源的地線分別和另外 四根線(紅、蘭、白、橙)依次接觸,發(fā)現(xiàn)每接觸一下,步進(jìn)電機(jī)便轉(zhuǎn)動(dòng)一個(gè)角度,來(lái)回五次,電機(jī)剛好轉(zhuǎn)一圈,說(shuō)明此步進(jìn)電機(jī)的步進(jìn)角度為 360/(4×5)=18度。地線與四線接觸的順序相反,電機(jī)的轉(zhuǎn)向也相反。
此步進(jìn)電機(jī),則只需分別依次給四線一定時(shí)間的脈沖電流,電機(jī)便可連續(xù)轉(zhuǎn)動(dòng)起來(lái)。
通過改變脈沖電流的時(shí)間間隔,就可以實(shí)現(xiàn)對(duì)轉(zhuǎn)速的控制;通過改變給四線脈沖電流的順序,則可實(shí)現(xiàn)對(duì)轉(zhuǎn)向的控制。所以,設(shè)計(jì)了如下電路圖:
C51程序代碼為: 代碼一
#include static unsigned int count; static unsigned int endcount; void delay(); void main(void) {
count = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0;
EA = 1; //允許CPU中斷
TMOD = 0x11; //設(shè)定時(shí)器0和1為16位模式1
ET0 = 1; //定時(shí)器0中斷允許 TH0 = 0xFC;
TL0 = 0x18; //設(shè)定時(shí)每隔1ms中斷一次 TR0 = 1; //開始計(jì)數(shù) startrun: P1_3 = 0; P1_0 = 1; delay();
P1_0 = 0;
P1_1 = 1; delay(); P1_1 = 0; P1_2 = 1; delay(); P1_2 = 0; P1_3 = 1; delay();
goto startrun; }
//定時(shí)器0中斷處理
void timeint(void) interrupt 1 {
TH0=0xFC;
TL0=0x18; //設(shè)定時(shí)每隔1ms中斷一次 count++; }
void delay()
{
endcount=2; count=0;
do{}while(count
將上面的程序編譯,用ISP下載線下載至單片機(jī)運(yùn)行,步進(jìn)電機(jī)便轉(zhuǎn)動(dòng)起來(lái)了,初步告捷!
上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 51單片機(jī)步進(jìn)電

評(píng)論


技術(shù)專區(qū)

關(guān)閉