51单片机控制28BYJ48步进电机原理及代码

命名方式(以28BYJ48步进电机为例)

28BYJ48步进电机的编号

28-----步进电机的有效最大外径是28毫米

B-----表示步进电机

Y-----表示永磁式

J-----表示减速型

48-----表示四相八拍

工作原理

1、五线四相步进电机,不同相位得电会让步进电机的转子转动一个角度,按一定规律给不同的相位通电,就可以让步进电机连续转动,下表就是通电的顺序。

表里面的顺,逆时针的方向只是代表相位给电时序,

接线,注:总共五条线,一个是VCC,剩下四条分别接上ABCD相

分别对应与ULN2003/ULN2003A驱动芯片的5V以及4个输入口对应连接

2、每走一个位置,都要给一定的延时,不然还没等转子到位,下一个脉冲就进来了,肯定会引起错误,导致电机堵转或者异常震动。

3、通过改变延时的时间,就可以控制电机的转速,不能太慢,也不要太快,不断调试到合理范围就行。

4、单片机IO口和电机四条相线连接时,一定不能错误,要按照顺序相连接。

5、调换得电的顺序,就可以控制电机的转向。

注意在51单片机中,为IO口置0相当于是高电平,而置1的时候相当于是低电平,和上面的图片一致(GND)

二、关键实验程序

#include <REGX52.H>
#include "delaytime10us.h"
​
#define uint unsigned int
​
sbit MA=P1^0;
sbit MB=P1^1;
sbit MC=P1^2;
sbit MD=P1^3;
​
​
/*
angle:转动角度(nangle为4096时为转动一圈)
drct:逆时针:1、顺时针:0
speed:速度
*/
void MotorRun(unsigned int nangle, drct, speed)             
{
    uint step;
    step=0;
    if(drct==0)
    {
        while(nangle--)
        {
            switch(step)//
            {
                case 0:MA=1;MB=0;MC=0;MD=0;break;
                case 1:MA=1;MB=1;MC=0;MD=0;break;
                case 2:MA=0;MB=1;MC=0;MD=0;break;
                case 3:MA=0;MB=1;MC=1;MD=0;break;
                case 4:MA=0;MB=0;MC=1;MD=0;break;
                case 5:MA=0;MB=0;MC=1;MD=1;break;
                case 6:MA=0;MB=0;MC=0;MD=1;break;
                case 7:MA=1;MB=0;MC=0;MD=1;break;
            }
            if(step==7)step=0;
            else step++;
            delay(speed);       
        }
    }
    else
    {
        while(nangle--)
        {
            switch(step)
            {
                case 0:MA=1;MB=0;MC=0;MD=1;break;
                case 1:MA=0;MB=0;MC=0;MD=1;break;
                case 2:MA=0;MB=0;MC=1;MD=1;break;
                case 3:MA=0;MB=0;MC=1;MD=0;break;
                case 4:MA=0;MB=1;MC=1;MD=0;break;
                case 5:MA=0;MB=1;MC=0;MD=0;break;
                case 6:MA=1;MB=1;MC=0;MD=0;break;
                case 7:MA=1;MB=0;MC=0;MD=0;break;
            }
            if(step==7)step=0;
            else step++;
            delay(speed);
        }
    }
    MA=0;MB=0;MC=0;MD=0;
}

1、步进电机的减速比为1/64,即转子转动64圈,外面的转轴才会转动1圈

2、步进电机的步距角为5.624/64 (步进电机的定子绕组每次改变一次通电状态,步进电机外面的转轴转过的角度称步距角;即步进电机的最小旋转角度)

3、所以360/(5.624/64)≈ 4096 (步进电机外面的转轴转过一圈所需要改变定子绕组的通电状态次数)

这里补充介绍一个概念:步进角

步进电机的定子绕组每次改变一次通电状态,转子转过的角度称步进角。

(可以认为是电机内部的转子的最小旋转角度)

步进角 = (360)/m * Z * C

m-----定子相数

Z-----转子磁极对数

C-----通电方式

{ C = 1 ,单相轮流通电,双相轮流通电方式

  C = 2 , 双相轮流通电方式

1,相数:是指产生不同对极N,S磁场的激磁线圈对数

2,拍数:完成一个周期性变化所需脉冲数,以四相电机为例,有单相四拍的运行方式:(A-B-C-D),有双相四拍的运行方式:(AB-BC-CD-DA),有四相八拍的运行方式:(A-AB-B-BC-C-CD-D-DA)

这里的源码用的是双相轮流通电方式,在源码中可以看到四个相位MA,MB,MC,MD使能为高电平状态的相位数为相邻2个或1个(A-AB-B-BC-C-CD-D-DA)

步进电机的相关参数:


注意事项:由于电机的制造误差,安装误差,单片机的误差还有软件延时函数误差,这些误差累加起来之后,就会导致电机的转速、转动角度出现一定的误差。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值