您的位置 首页 主动

单片机操控步进电机正回转

步进电机模块:原理图:两相六线步进电机,步进角7.5度,额定工作电压12V,完全可以使用5V做实验。以下是引用gguoqing在2006-6-1115:…

步进电机模块:

原理图:

两相六线步进电机,步进角7.5度,额外作业电压12V,完全能够运用5V做试验。

以下是引证 gguoqing 在2006-6-11 15:10:02的讲话:

运用伟纳定做的20CM杜邦头试验连接线,能够很便利的将ME300与步进电机模块连接起来。

http://www.willar.com/shop_view.asp?id=47

在ME300B上运用时,可从J7上引出5V电源到步进电机模块J1上。

将J1(%&&&&&%E)上的P1.0-P1.3用杜邦头试验连接线连接到步进电机模块J2上。

产品概况:

http://www.willar.com/shop_view.asp?id=48。

以下是本站管理员gguoqing专门编写的演示程序。

C言语典范:

/*******************************************************************

/*

/* ME300系列单片机开发体系演示程序-步进电机键控正回转试验

/*

/* 邮箱: gguoqing@willar.com

/* 网站:http://www.willar.com;

/* 作者: gguoqing

/* 时刻: 2006/05/30

/*

/*【版权】COPYRIGHT(C)伟纳电子www.willar.comALL RIGHTS RESERVED

/*【声明】此程序仅用于学习与参阅,引证请注明版权和作者信息!

/*

/******************************************************************/

#include //51芯片管脚界说头文件

#include //内部包括延时函数 _nop_();

#define uchar unsigned char

#define uintunsigned int

uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};

uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

sbitK1 = P1^4; //正转

sbitK2 = P1^5; //回转

sbitK3 = P1^6;

sbitK4 = P1^7; //中止

sbitBEEP = P3^7; //蜂鸣器

/********************************************************/

/*

/* 延时t毫秒

/* 11.0592MHz时钟,延时约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;//封闭蜂鸣器

}

/********************************************************/

/*

/*步进电机正转

/*

/********************************************************/

voidmotor_ffw()

{

uchar i;

uintj;

for (j=0; j<12; j++)//转1*n圈

{

if(K4==0)

{break;}//退出此循环程序

for (i=0; i<8; i++) //一个周期转30度

{

P1 = FFW[ i ];//取数据

delay(15); //调理转速

}

}

}

/********************************************************/

/*

/*步进电机回转

/*

/********************************************************/

voidmotor_rev()

{

uchar i;

uintj;

for (j=0; j<12; j++) //转1×n圈

{

if(K4==0)

{break;} //退出此循环程序

for (i=0; i<8; i++)//一个周期转30度

{

P1 = REV[ i ];//取数据

delay(15); //调理转速

}

}

}

/********************************************************

*

*主程序

*

*********************************************************/

main()

{

uchar r,N=5; //N 步进电机运转圈数

while(1)

{

if(K1==0)

{

beep();

for(r=0;r

{

motor_ffw(); //电机正转

if(K4==0)

{beep();break;}//退出此循环程序

}

}

else if(K2==0)

{

beep();

for(r=0;r

{

motor_rev(); //电机回转

if(K4==0)

{beep();break;}//退出此循环程序

}

}

else

P1 = 0xf0;

}

}

汇编言语典范

;/*****************************************************************

;/*

;/* ME300系列单片机开发体系演示程序 – 步进电机键控正回转试验

;/*

;/*

;/* 邮箱:gguoqing@willar.com

;/* 网站:http://www.willar.com;

;/* 作者: gguoqing

;/* 时刻: 2006/05/30

;/*

;/*【版权】Copyright(C)伟纳电子www.willar.comAll Rights Reserved

;/*【声明】此程序仅用于学习与参阅,引证请注明版权和作者信息!

;/*

;/******************************************************************

; 步进电机步进角为 7.5度,一圈 360 度。

; 双四拍作业方式:

; AB-BC-CD-DA (即一个脉冲,转 7.5 度)

; 单双八拍作业方式:

; A-AB-B-BC-C-CD-D-DA (即一个脉冲,转 3.75 度)

; 一个取数作业周期,步进电机转30度

; 步进电机转一圈需求12个取数作业周期

;——————————————————-

; A组线圈对应 P1.0(桔色)

; B组线圈对应 P1.1(棕色)

; C组线圈对应 P1.2(黄色)

; D组线圈对应 P1.3(黑色)

;——————————————————-

K1BITP1.4 ;步进电机正转

K2BITP1.5 ;步进电机回转

K3BITP1.6

K4BITP1.7 ;步进电机中止滚动

BEEPBITP3.7

;——————————————————-

ORG 0000H

LJMP MAIN

ORG 0030H

;——————————————————-

MAIN:

MOVSP,#60H

MOVP1,#0F0H ;封闭步进电机,键输入线置高

MAIN1:

JBK1,MAIN2

ACALLBEEP_BL ;步进电机正转

ACALLFFW

MAIN2:

JBK2,MAIN1

ACALLBEEP_BL ;步进电机回转

ACALLREV

JMPMAIN1

;————————正转————————-

FFW:

;MOV R3,#12 ;7.5度电机正转1圈共12个周期

MOVR3,#60 ;转5圈

FFW1:

MOV R0,#00H

FFW2:

JBK4,FFW3 ;停止步进电机运转

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

;—————————回转————————–

REV:

;MOV R3,#12 ;7.5度电机回转1圈共12个周期

MOVR3,#60 ;转5圈

REV1:

MOV R0,#00H

REV2:

JBK4,REV3;停止步进电机运转

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 ;步进电机的转速

DEL1:MOV R6,#248

DJNZ R6,$

DJNZ R7,DEL1

RET

;——————————————————-

DELAY1:

MOV R5,#20 ;2S 延时子程序

DEL2:

MOV R7,#200

DEL3:

MOV R6,#250

DJNZR6,$

DJNZR7,DEL3

DJNZR5,DEL2

RET

;——————————————————-

; 单双八拍作业方式

TABLE_F:;正转表

DB0F1H,0F3H,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H

DB0FFH

TABLE_R:;回转表

DB0F9H,0F8H,0FCH,0F4H,0F6H,0F2H,0F3H,0F1H

DB0FFH

;——————————————————-

; 双四拍作业方式:

TABLE1:

DB 0F3H,0F6H,0FcH,0F9H;正转表

DB 0FFH;正转完毕

TABLE2:

DB 0F9H,0FCH,0F6H,0F3H;回转表

DB 0FFH;回转完毕

;——————————————————–

;蜂鸣器响一声子程序

;——————————————————–

BEEP_BL:

MOVR6,#100

BL1:

CALLDEX1

CPLBEEP

DJNZR6,BL1

RET

DEX1:

MOVR7,#180

DEX2:

NOP

DJNZR7,DEX2

RET

;———————————————————

END

四相步进电机:

齿距角: Qz = 2π/ Z Z — 转子的齿数

步距角---转子走一步所转过的视点

步距角: Qn = Qz/N = 2π/NZN — 步进电机作业拍数

步进电机转速:

n = 60×f / N×Z (转/分); f =脉冲频率(Hz)

关于步距角为7.5度的步进电机而言:

Qn = 7.5度

Qz = Qn×N = 7.5×4=30度 (齿距角)

Z=2π/Qz = 360/30 = 12 (转子的齿数)

四相步进电机有三种运转状况:

1、步进电机为四相单四拍运转状况:

当电机绕组通电时序为A-B-C-D时为正转,通电时序为D-C-B-A时为回转。

N = 4

步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°

则步进电机转一圈所需步进数: 360°/7.5°=48 (步进数)

2、步进电机为四相双四拍运转状况:

当电机绕组通电时序为AB-BC-CD-DA时为正转,通电时序为DA-CD-BC-AB时为回转。

N = 4

步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°

则步进电机转一圈所需步进数: 360°/7.5°=48 (步进数)

3、步进电机为四相八拍运转状况。

当电机绕组通电时序为A-AB-B-BC-C-CD-D-DA时为正转,通电时序为DA-D-CD-C-BC-B-BA-A时为回转。

N = 8

步距角: Qn = Qz/N = 2π/NZ =360/8*12=3.75°

则步进电机转一圈所需步进数: 360°/3.75°=96 (步进数)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/266978.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部