步进电机控制程序,在仿真中电机抖动不转,求大神帮忙看看程序
/**********************电机正反转*******************************************/
void Motor_GO(void) //电机正转函数,即开
{
if((count0>0)&&(count0<=3))
{
A_Phase=1;B_Phase=0;C_Phase=0;D_Phase=0;
}
if((count0>3)&&(count0<=6))
{
A_Phase=0;B_Phase=1;C_Phase=0;D_Phase=0;
}
if((count0>6)&&(count0<=9))
{
A_Phase=0;B_Phase=0;C_Phase=1;D_Phase=0;
}
if((count0>9)&&(count0<=12))
{
A_Phase=0;B_Phase=0;C_Phase=0;D_Phase=1;
}
if(count0>12)
{
A_Phase=0;B_Phase=0;C_Phase=0;D_Phase=0;
count0=0;
}
}
void Motor_BACK(void) //电机反转函数,即关
{
if((count0>0)&&(count0<=3))
{
A_Phase=0;B_Phase=0;C_Phase=0;D_Phase=1;
}
if((count0>3)&&(count0<=6))
{
A_Phase=0;B_Phase=0;C_Phase=1;D_Phase=0;
}
if((count0>6)&&(count0<=9))
{
A_Phase=0;B_Phase=1;C_Phase=0;D_Phase=0;
}
if((count0>9)&&(count0<=12))
{
A_Phase=1;B_Phase=0;C_Phase=0;D_Phase=0;
}
if(count0>12)
{
A_Phase=0;B_Phase=0;C_Phase=0;D_Phase=0;
count0=0;
}
}
/*******************************************************************************************************/
if(GO_flg==1) //关,电机正转
{
Motor_GO();
if(Step>=3200)
{
GO_flg=0;
Step=0;
OPEN_flg=0;
}
}
if(BACK_flg==1) //开,电机反转
{
Motor_BACK();
if(Step>=3200)
{
BACK_flg=0;
Step=0;
CLOSE_flg=0;
}
}
}
自己给自己顶一波
没有涉及延时程序,电机反应不过来
控制每一个绕组的用中断或延时间隔开