微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 用51单片机控制两相四线步进电机

用51单片机控制两相四线步进电机

时间:10-02 整理:3721RD 点击:
最近学习步进电机的驱动原理,照着教材自己实践了一下用ULN2003驱动28BYJ-48两相5线步进电机,可以正常转动。手头有一个旧光驱,拆开发现里面有三个电机,其中有一个控制激光头寻迹的两相四线步进电机,我就用51的单片机让它也转起来。一开始照葫芦画瓢用ULN2003驱动,结果发现无论如何也不行。原来ULN2003基本没输出电流,只能驱动有公共端的两相五线、两相六线步进电机,不能驱动2相4线步进电机。然后改用L293D驱动,可以转动。通过按钮控制正反转时发现,按键释放后,电机迅速发热,烫手。用万用表测量,发现电机A,A-或B,B-直接存在电位差!应该是按键释放时,IN1-IN4没有归零。找到问题,就容易解决了。修改程序,可以完美运行,键1按下正转,释放停下,键2按下反转,释放停下。IN1-IN4分别接P1口的低四位。工作方式选用8拍。
A       1     1     0     0     0     0     0     1
A-      0     0     0     1     1     1     0     0
B       0     1     1     1     0     0     0     0
B-      0     0     0     0     0     1     1     1
附上源程序,仅供参考。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit K3=P2^5;
sbit K4=P2^4;
//k3正转。k4反转。释放停止
uchar code step_table[]={0x8,0xa,0x2,0x6,0x4,0x5,0x1,0x9};
void delay(unsigned int m)
    {
      unsigned int i,j;
      for(i=m;i>0;i--)
       for(j=110;j>0;j--);
         }
void xp()//x轴正转
{
while(!K3)
        {
                        uint i;
                for(i=0;i<8;i++)
                {
                        P1=step_table;
                        delay(10);
                }
        
        }
P1=0;//按键释放时,反转P1停在table某处,导致电机有电压从而使电机发热,需要归零。
}
void xn()//x轴反转
{
                        uint i;
while(!K4)
        {
                for(i=8;i>0;i--)
                {
                        P1=step_table;
                        delay(10);
                }
        
        }
P1=0;//按键释放时,反转P1停在table某处,导致电机有电压从而使电机发热,需要归零。
}
void main()
{
while(1)
{
                if(K3==0)
                {
                        delay(20);
                        if(K3==0)
                        {
                //        LED1=0;
                        xp();
                        }
                }
                if(K4==0)
                {
                        delay(20);
                        if(K4==0)
                        {
                //        LED1=0;
                        xn();
                        }
                }
}
}

很好,值得学习

学习学习,谢谢分享。太强大了。

很好很强大!

厉害了我的哥,就佩服你们这些搞技术的

很强大

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top