步进电机的仿真问题

2019-07-18 13:24发布

仿真步进电机,电机就是不转,这是什么情况,请大神多指点,困扰好几天了,附带源码一起分析
#include <reg52.h>
sbit A1=P1^0; //定义步进电机连接端口
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
unsigned char Speed;
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{

while(t--)
{
     //大致延时1mS
     DelayUs2x(245);
         DelayUs2x(245);
}
}
/*------------------------------------------------
                    主函数
------------------------------------------------*/
main()
{
//unsigned int i=64*16; //转2周停止
Speed=5; //调整速度
while(1)  
  {         
     Coil_A1                 //遇到Coil_A1  用{A1=1;B1=0;C1=0;D1=0;}代替
     DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
                                 //数字越小,转速越大,力矩越小
     Coil_B1
     DelayMs(Speed);
     Coil_C1
     DelayMs(Speed);
     Coil_D1
     DelayMs(Speed);
  }
}


QQ截图20130708214009.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
meiyi0213
1楼-- · 2019-07-18 16:53
下来看看,不知道行不
Daojia985
2楼-- · 2019-07-18 20:28
程序没错,但是想法,思路有点问题,而且你的不仅电机也用错了。
唯伊心跳
3楼-- · 2019-07-18 20:45
Daojia985 发表于 2013-7-14 00:08
程序没错,但是想法,思路有点问题,而且你的不仅电机也用错了。

这个电机是不是2相电机啊,4相电机至少有5根线是不是,也有根的??
Daojia985
4楼-- · 2019-07-18 20:50
 精彩回答 2  元偷偷看……

一周热门 更多>