單片機(jī)控制步進(jìn)電機(jī)正反轉(zhuǎn)
兩相六線步進(jìn)電機(jī),步進(jìn)角7.5度,額定工作電壓12V,完全可以使用5V做實(shí)驗(yàn)。
以下是引用 gguoqing 在2006-6-11 15:10:02的發(fā)言: 使用偉納定做的20CM杜邦頭實(shí)驗(yàn)連接線,可以很方便的將ME300與步進(jìn)電機(jī)模塊連接起來(lái)。 http://www.willar.com/shop_view.asp?id=47 在ME300B上使用時(shí),可從J7上引出5V電源到步進(jìn)電機(jī)模塊J1上。 將J1(ICE)上的P1.0-P1.3用杜邦頭實(shí)驗(yàn)連接線連接到步進(jìn)電機(jī)模塊J2上。 |
產(chǎn)品詳情:
http://www.willar.com/shop_view.asp?id=48。
以下是本站管理員gguoqing專門(mén)編寫(xiě)的演示程序。
C語(yǔ)言范例:
/*******************************************************************
/*
/* ME300系列單片機(jī)開(kāi)發(fā)系統(tǒng)演示程序-步進(jìn)電機(jī)鍵控正反轉(zhuǎn)實(shí)驗(yàn)
/*
/* 郵箱: gguoqing@willar.com
/* 網(wǎng)站:http://www.willar.com;
/* 作者: gguoqing
/* 時(shí)間: 2006/05/30
/*
/*【版權(quán)】COPYRIGHT(C)偉納電子www.willar.comALL RIGHTS RESERVED
/*【聲明】此程序僅用于學(xué)習(xí)與參考,引用請(qǐng)注明版權(quán)和作者信息!
/*
/******************************************************************/
#include
#include
#define uchar unsigned char
#define uintunsigned int
uchar co
uchar co
sbitK1 = P1^4; //正轉(zhuǎn)
sbitK2 = P1^5; //反轉(zhuǎn)
sbitK3 = P1^6;
sbitK4 = P1^7; //停止
sbitBEEP = P3^7; //蜂鳴器
/********************************************************/
/*
/* 延時(shí)t毫秒
/* 11.0592MHz時(shí)鐘,延時(shí)約1ms
/*
/********************************************************/
void delay(uint t)
{
uint k;
while(t--)
{
for(k=0; k<125; k++)
{ }
}
}
/**********************************************************/
void delayB(uchar x)//x*0.14MS
{
uchar i;
while(x--)
{
for (i=0; i<13; i++)
{ }
}
}
/**********************************************************/
void beep()
{
uchar i;
for (i=0;i<100;i++)
{
delayB(4);
BEEP=!BEEP; //BEEP取反
}
BEEP=1;//關(guān)閉蜂鳴器
}
/********************************************************/
/*
/*步進(jìn)電機(jī)正轉(zhuǎn)
/*
/********************************************************/
voidmotor_ffw()
{
uchar i;
uintj;
for (j=0; j<12; j++)//轉(zhuǎn)1*n圈
{
if(K4==0)
{break;}//退出此循環(huán)程序
for (i=0; i<8; i++) //一個(gè)周期轉(zhuǎn)30度
{
P1 = FFW[ i ];//取數(shù)據(jù)
delay(15); //調(diào)節(jié)轉(zhuǎn)速
}
}
}
/********************************************************/
/*
/*步進(jìn)電機(jī)反轉(zhuǎn)
/*
/********************************************************/
voidmotor_rev()
{
uchar i;
uintj;
for (j=0; j<12; j++) //轉(zhuǎn)1×n圈
{
if(K4==0)
{break;} //退出此循環(huán)程序
for (i=0; i<8; i++)//一個(gè)周期轉(zhuǎn)30度
{
P1 = REV[ i ];//取數(shù)據(jù)
delay(15); //調(diào)節(jié)轉(zhuǎn)速
}
}
}
/********************************************************
*
*主程序
*
*********************************************************/
main()
{
uchar r,N=5; //N 步進(jìn)電機(jī)運(yùn)轉(zhuǎn)圈數(shù)
while(1)
{
if(K1==0)
{
beep();
for(r=0;r { motor_ffw(); //電機(jī)正轉(zhuǎn) if(K4==0) {beep();break;}//退出此循環(huán)程序 } } else if(K2==0) { beep(); for(r=0;r { motor_rev(); //電機(jī)反轉(zhuǎn) if(K4==0) {beep();break;}//退出此循環(huán)程序 } } else P1 = 0xf0; } } 匯編語(yǔ)言范例 ;/***************************************************************** ;/* ;/* ME300系列單片機(jī)開(kāi)發(fā)系統(tǒng)演示程序 - 步進(jìn)電機(jī)鍵控正反轉(zhuǎn)實(shí)驗(yàn) ;/* ;/* ;/* 郵箱:gguoqing@willar.com ;/* 網(wǎng)站:http://www.willar.com; ;/* 作者: gguoqing ;/* 時(shí)間: 2006/05/30 ;/* ;/*【版權(quán)】Copyright(C)偉納電子www.willar.comAll Rights Reserved ;/*【聲明】此程序僅用于學(xué)習(xí)與參考,引用請(qǐng)注明版權(quán)和作者信息! ;/* ;/****************************************************************** ; 步進(jìn)電機(jī)步進(jìn)角為 7.5度,一圈 360 度。 ; 雙四拍工作方式: ; AB-BC-CD-DA (即一個(gè)脈沖,轉(zhuǎn) 7.5 度) ; 單雙八拍工作方式: ; A-AB-B-BC-C-CD-D-DA (即一個(gè)脈沖,轉(zhuǎn) 3.75 度) ; 一個(gè)取數(shù)工作周期,步進(jìn)電機(jī)轉(zhuǎn)30度 ; 步進(jìn)電機(jī)轉(zhuǎn)一圈需要12個(gè)取數(shù)工作周期 ;------------------------------------------------------- ; A組線圈對(duì)應(yīng) P1.0(桔色) ; B組線圈對(duì)應(yīng) P1.1(棕色) ; C組線圈對(duì)應(yīng) P1.2(黃色) ; D組線圈對(duì)應(yīng) P1.3(黑色) ;------------------------------------------------------- K1BITP1.4 ;步進(jìn)電機(jī)正轉(zhuǎn) K2BITP1.5 ;步進(jìn)電機(jī)反轉(zhuǎn) K3BITP1.6 K4BITP1.7 ;步進(jìn)電機(jī)停止轉(zhuǎn)動(dòng) BEEPBITP3.7 ;------------------------------------------------------- ORG 0000H LJMP MAIN ORG 0030H ;------------------------------------------------------- MAIN: MOVSP,#60H MOVP1,#0F0H ;關(guān)閉步進(jìn)電機(jī),鍵輸入線置高 MAIN1: JBK1,MAIN2 ACALLBEEP_BL ;步進(jìn)電機(jī)正轉(zhuǎn) ACALLFFW MAIN2: JBK2,MAIN1 ACALLBEEP_BL ;步進(jìn)電機(jī)反轉(zhuǎn) ACALLREV JMPMAIN1 ;------------------------正轉(zhuǎn)------------------------- FFW: ;MOV R3,#12 ;7.5度電機(jī)正轉(zhuǎn)1圈共12個(gè)周期 MOVR3,#60 ;轉(zhuǎn)5圈 FFW1: MOV R0,#00H FFW2: JBK4,FFW3 ;終止步進(jìn)電機(jī)運(yùn)行 ACALLBEEP_BL JMPFFW4 FFW3: MOV P1,#0F0H MOV A,R0 ;MOV DPTR,#TABLE_F;選擇工作方式 MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV P1,A LCALL DELAY INC R0 CJNEA,#0FFH,FFW2 DJNZ R3,FFW1 FFW4: MOV P1,#0F0H RET ;---------------------------反轉(zhuǎn)-------------------------- REV: ;MOV R3,#12 ;7.5度電機(jī)反轉(zhuǎn)1圈共12個(gè)周期 MOVR3,#60 ;轉(zhuǎn)5圈 REV1: MOV R0,#00H REV2: JBK4,REV3;終止步進(jìn)電機(jī)運(yùn)行 ACALLBEEP_BL JMPREV4 REV3: MOV P1,#0F0H MOV A,R0 ; MOV DPTR,#TABLE_R ;選擇工作方式 MOV DPTR,#TABLE2 MOVC A,@A+DPTR MOV P1,A CALL DELAY INC R0 CJNEA,#0FFH,REV2 DJNZ R3,REV1 REV4: MOV P1,#0F0H RET ;------------------------------------------------------- DELAY: MOV R7,#40 ;步進(jìn)電機(jī)的轉(zhuǎn)速 DEL1:MOV R6,#248 DJNZ R6,$ DJNZ R7,DEL1 RET ;------------------------------------------------------- DELAY1: MOV R5,#20 ;2S 延時(shí)子程序 DEL2: MOV R7,#200 DEL3: MOV R6,#250 DJNZR6,$ DJNZR7,DEL3 DJNZR5,DEL2 RET ;------------------------------------------------------- ; 單雙八拍工作方式 TABLE_F:;正轉(zhuǎn)表 DB0F1H,0F3H,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H DB0FFH TABLE_R:;反轉(zhuǎn)表 DB0F9H,0F8H,0FCH,0F4H,0F6H,0F2H,0F3H,0F1H DB0FFH ;------------------------------------------------------- ; 雙四拍工作方式: TABLE1: DB 0F3H,0F6H,0FcH,0F9H;正轉(zhuǎn)表 DB 0FFH;正轉(zhuǎn)結(jié)束 TABLE2: DB 0F9H,0FCH,0F6H,0F3H;反轉(zhuǎn)表 DB 0FFH;反轉(zhuǎn)結(jié)束 ;-------------------------------------------------------- ;蜂鳴器響一聲子程序 ;-------------------------------------------------------- BEEP_BL: MOVR6,#100 BL1: CALLDEX1 CPLBEEP DJNZR6,BL1 RET DEX1: MOVR7,#180 DEX2: NOP DJNZR7,DEX2 RET ;--------------------------------------------------------- END 四相步進(jìn)電機(jī): 齒距角: Qz = 2π/ Z Z --- 轉(zhuǎn)子的齒數(shù) 步距角---轉(zhuǎn)子走一步所轉(zhuǎn)過(guò)的角度 步距角: Qn = Qz/N = 2π/NZN --- 步進(jìn)電機(jī)工作拍數(shù) 步進(jìn)電機(jī)轉(zhuǎn)速: n = 60×f / N×Z (轉(zhuǎn)/分); f =脈沖頻率(Hz) 對(duì)于步距角為7.5度的步進(jìn)電機(jī)而言: Qn = 7.5度 Qz = Qn×N = 7.5×4=30度 (齒距角) Z=2π/Qz = 360/30 = 12 (轉(zhuǎn)子的齒數(shù)) 四相步進(jìn)電機(jī)有三種運(yùn)行狀態(tài): 1、步進(jìn)電機(jī)為四相單四拍運(yùn)行狀態(tài): 當(dāng)電機(jī)繞組通電時(shí)序?yàn)锳-B-C-D時(shí)為正轉(zhuǎn),通電時(shí)序?yàn)镈-C-B-A時(shí)為反轉(zhuǎn)。 N = 4 步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5° 則步進(jìn)電機(jī)轉(zhuǎn)一圈所需步進(jìn)數(shù): 360°/7.5°=48 (步進(jìn)數(shù)) 2、步進(jìn)電機(jī)為四相雙四拍運(yùn)行狀態(tài): 當(dāng)電機(jī)繞組通電時(shí)序?yàn)锳B-BC-CD-DA時(shí)為正轉(zhuǎn),通電時(shí)序?yàn)镈A-CD-BC-AB時(shí)為反轉(zhuǎn)。 N = 4 步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5° 則步進(jìn)電機(jī)轉(zhuǎn)一圈所需步進(jìn)數(shù): 360°/7.5°=48 (步進(jìn)數(shù)) 3、步進(jìn)電機(jī)為四相八拍運(yùn)行狀態(tài)。 當(dāng)電機(jī)繞組通電時(shí)序?yàn)锳-AB-B-BC-C-CD-D-DA時(shí)為正轉(zhuǎn),通電時(shí)序?yàn)镈A-D-CD-C-BC-B-BA-A時(shí)為反轉(zhuǎn)。 N = 8 步距角: Qn = Qz/N = 2π/NZ =360/8*12=3.75° 則步進(jìn)電機(jī)轉(zhuǎn)一圈所需步進(jìn)數(shù): 360°/3.75°=96 (步進(jìn)數(shù))
評(píng)論