24BYJ48电机的使用,带驱动程序

本文详细介绍了5线4相步进电机的尺寸、接线方式、内部结构及参数,包括电机的线色识别、减速比、步进角等。提供了使用51单片机与ULN2003驱动电路进行1相励磁、2相励磁及1-2相励磁的控制程序实例。

一、尺寸与接线

一种是红、橙、黄、粉、蓝的,电机实物如下:

注意电机的接头可能是XH2.54-5P的(上左图),也可能是ZH1.5-5P的(上右图)。

还有一种是红、黑、黄、棕、蓝的

这两种线色都是红色为公共线,然后挨着的4根线分别为A、B、C、D。

二、电机结构与参数

这种5线4相电机的内部结构图如下:

给公共极通正电,然后依次把A、B、C、D拉低,就可以形成一个旋转的磁场,拖动转子转动了。

电机自带减速器,减速比为1:64,步进角为5.625/64度,如果需要转动1圈,那么需要360/5.625*64=4096个脉冲信号。

电机还包含以下主要参数(仅供参考,不同厂家生产的有区别)

三、驱动电路

一般使用达林顿管驱动,如ULN2003A。

四、驱动程序

一般对力矩要求高使用2相励磁,对精度要求高使用1-2相励磁。

1、1相励磁的51单片机例程(使用ULN2003)

sbit D1=P1^4; //定义步进电机连接端口
sbit C1=P1^5; //定义步进电机连接端口
sbit B1=P1^6; //定义步进电机连接端口
sbit A1=P1^7; //定义步进电机连接端口

#define Coil_A  {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B  {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C  {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D  {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电

main()
{

 Speed=50; //调整转动速度,速度不可以调节的过快,不然就没有力矩转动了
 while(1)            
  {         
     Coil_A                  //遇到Coil_A  用{A1=1;B1=0;C1=0;D1=0;}代替
     DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
	                         //数字越小,转速越大,力矩越小
     Coil_B                  //遇到Coil_B  用{A1=0;B1=1;C1=0;D1=0;}代替
     DelayMs(Speed);
     Coil_C                  //遇到Coil_C  用{A1=0;B1=0;C1=1;D1=0;}代替
     DelayMs(Speed); 
     Coil_D                  //遇到Coil_D  用{A1=0;B1=0;C1=0;D1=1;}代替
     DelayMs(Speed);
  }
}

2、2相励磁的51单片机例程(使用ULN2003)

sbit D1=P1^4; //定义步进电机连接端口
sbit C1=P1^5; //定义步进电机连接端口
sbit B1=P1^6; //定义步进电机连接端口
sbit A1=P1^7; //定义步进电机连接端口

#define Coil_AB {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电
#define Coil_BC {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电
#define Coil_CD {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电
#define Coil_DA {A1=1;B1=0;C1=0;D1=1;}//DA相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电

main()
{

 Speed=50; //调整转动速度,速度不可以调节的过快,不然就没有力矩转动了
 while(1)  
  {         
     Coil_AB                //遇到Coil_AB 用{A1=1;B1=1;C1=0;D1=0;}代替
     DelayMs(Speed);        //改变这个参数可以调整电机转速 ,
	                        //数字越小,转速越大,力矩越小
     Coil_BC                //遇到Coil_BC 用{A1=0;B1=1;C1=1;D1=0;}代替
     DelayMs(Speed);
     Coil_CD                //遇到Coil_CD 用{A1=0;B1=0;C1=1;D1=1;}代替
     DelayMs(Speed);
     Coil_DA                //遇到Coil_DA 用{A1=1;B1=0;C1=0;D1=1;}代替
     DelayMs(Speed);
  }
}

3、1-2相励磁的51单片机例程(使用ULN2003)

sbit D1=P1^4; //定义步进电机连接端口
sbit C1=P1^5; //定义步进电机连接端口
sbit B1=P1^6; //定义步进电机连接端口
sbit A1=P1^7; //定义步进电机连接端口

#define Coil_AB {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电
#define Coil_BC {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电
#define Coil_CD {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电
#define Coil_DA {A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_A {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电

main()
{

 Speed=100; //调整转动速度,速度不可以调节的过快,不然就没有力矩转动了
 while(1)  
  {         
     Coil_A       
     DelayMs(Speed);
     Coil_AB                 //遇到Coil_AB  用{A1=1;B1=1;C1=0;D1=0;}代替
     DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
                             //数字越小,转速越大,力矩越小
     Coil_B       
     DelayMs(Speed);
     Coil_BC
     DelayMs(Speed);
     Coil_C       
     DelayMs(Speed);
     Coil_CD
     DelayMs(Speed);
     Coil_D       
     DelayMs(Speed);
     Coil_DA
     DelayMs(Speed);
  }
}

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值