28BYJ48电机详细使用说明.docx
《28BYJ48电机详细使用说明.docx》由会员分享,可在线阅读,更多相关《28BYJ48电机详细使用说明.docx(9页珍藏版)》请在冰豆网上搜索。
![28BYJ48电机详细使用说明.docx](https://file1.bdocx.com/fileroot1/2023-4/20/371e95ea-d75d-4bc1-bbba-d39a6b5a7631/371e95ea-d75d-4bc1-bbba-d39a6b5a76311.gif)
28BYJ48电机详细使用说明
24BYJ48步进电机使用手册
驱动方法及参数
插入到开发板的方法:
直接插入到LCD12864位置
一、前言:
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
为此,黑金刚开发板套件中首次引入了步进电机技术,采用扩展的方式,方便用户应用掌握。
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
步进电机的主要特性:
1、步进电机必须加驱动才可以运转,驱动信号必须为脉冲信号,没有脉冲的时候,步进电机静止,如果加入适当的脉冲信号,就会以一定的角度(称为步角)转动。
转动的速度和脉冲的频率成正比。
2、黑金刚配套的是28BYJ485V驱动的4相5线的步进电机,而且是减速步进电机,减速比为1:
64,步进角为5.625/64度。
如果需要转动1圈,那么需要
360/5.625*64=4096个脉冲信号。
3、步进电机具有瞬间启动和急速停止的优越特性。
4、改变脉冲的顺序,可以方便的改变转动的方向。
因此,目前打印机,绘图仪,机器人,等等设备都以步进电机为动力核心。
二、配套的原理图及程序:
1、如果不考虑数据锁存功能,步进电机的扩展板电路可以简化为下图:
2、黑金刚套件采用的是5V步进电机,该步进电机的耗电流为200ma左右,采用
uln2003驱动,驱动端口为P0.0(A),P0.1(B),P0.2(C),P0.3(C)。
正转次序:
AB组--BC组--CD组--DA组(即一个脉冲,正转5.625度);反转次序:
AB组--AD组--CD组--CB组(即一个脉冲,正转5.625度),如下表:
表1:
正转表
端口值
步数
P0.0(A)
P0.1(B)
P0.2(C)
P0.3(D)
0x03
1
1
1
0
0
0x06
2
0
1
1
0
0x0C
3
0
0
1
1
0x09
4
1
0
0
1
表2:
反转表
端口值
步数
P0.0(A)
P0.1(B)
P0.2(C)
P0.3(D)
0x03
1
1
1
0
0
0x09
2
1
0
0
1
0x0C
3
0
0
1
1
0x06
4
0
1
1
0
3ASM驱动程序:
;*******步进电机的驱动********
;FOSC=12MHz
;---------------------------------------------------------------------------------
;步进电机的驱动信号必须为脉冲信号!
!
!
转动的速度和脉冲的频率成正比!
!
!
;本步进电机步进角为5.625度.一圈360度,需要64个脉冲完成!
!
!
;---------------------------------------------------------------------------------
;A组线圈对应P0.0
;B组线圈对应P0.1
;C组线圈对应P0.2
;D组线圈对应P0.3
;正转次序:
AB组--BC组--CD组--DA组(即一个脉冲,正转5.625度)
;----------------------------------------------------------------------------------
ORG0000H
LJMPMAINORG0100H
MAIN:
;----------------------------正转--------------------------
MOVR3,#192;正转3圈共192个脉冲
START:
MOVR0,#00HSTART1:
MOVP0,#00HMOVA,R0
MOVDPTR,#TABLE
MOVCA,@A+DPTR
JZSTART;对A的判断,当A=0时则转到START
MOVP0,ALCALLDELAYINCR0
DJNZR3,START1
MOVP0,#00HLCALLDELAY1
;-----------------------------反转------------------------
MOVR3,#128;反转2圈共128个脉冲
START2:
MOVP0,#00HMOVR0,#05
START3:
MOVA,R0
MOVDPTR,#TABLEMOVCA,@A+DPTRJZSTART2
MOVP0,A
CALLDELAYINCR0
DJNZR3,START3
MOVP0,#00HLCALLDELAY1
LJMPMAIN
;---------------------------转速控制-----------------------
DELAY:
MOVR7,#10;步进电机的转速
M3:
MOVR6,#248
DJNZR6,$DJNZR7,M3
RET
;---------------------------延时控制----------------------
DELAY1:
MOVR4,#5;2S延时子程序
DEL2:
MOVR3,#200
DEL3:
MOVR2,#250
DJNZR2,$DJNZR3,DEL3
DJNZR4,DEL2
RET
;---------------------------正反转表----------------------
TABLE:
DB03H,06H,0CH,09H;正转表
DB00;正转结束
DB03H,09H,0CH,06H;反转表
DB00;反转结束
END
4、C语言驱动程序:
/******************************步进电机的驱动*************************************
;FOSC=12MHz
;---------------------------------------------------------------------------------
;步进电机的驱动信号必须为脉冲信号!
!
!
转动的速度和脉冲的频率成正比!
!
!
;本步进电机步进角为5.625度.一圈360度,需要64个脉冲完成!
!
!
;---------------------------------------------------------------------------------
;A组线圈对应P0.0
;B组线圈对应P0.1
;C组线圈对应P0.2
;D组线圈对应P0.3
;正转次序:
AB组--BC组--CD组--DA组(即一个脉冲,正转5.625度)
;----------------------------------------------------------------------------------
**********************************************************************************/
/*头文件*/
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#definenop()_nop_()
ucharcodetable1[]={0x03,0x06,0x0c,0x09};/*正转表*/
ucharcodetable2[]={0x03,0x09,0x0c,0x06};/*反转表*/
#definemotorP0
voiddelay(ucharms)/*延时*/
{
ucharj;
while(ms--){
for(j=0;j<250;j++)
{;}
}
}
voidmain()
{
uchari,j;
while
(1){
//正转3圈共192个脉冲
j=0;
for(i=0;i<192;i++){
motor=0x00;
motor=table1[j];
j++;
if(j>=4)j=0;
delay
(2);
}delay(200);delay(200);delay(200);delay(200);delay(200);
//正转2圈共128个脉冲
j=0;
for(i=0;i<128;i++){
motor=0x00;
motor=table2[j];
j++;
if(j>=4)j=0;
delay
(2);
}delay(200);delay(200);delay(200);delay(200);delay(200);
}
}