单片机/MCUwilliam hill官网
直播中

麦特拉布

12年用户 1095经验值
私信 关注
[问答]

单片机步进电机正反转反复运行,怎么修改程序?

高手看一下,下面这程序我想让步进电机正转10-15秒后再反转10-15秒再正转,周而复始。程序需要怎样修改?谢谢!

/@@*
1、本程序用于测试4相步进电机常规驱动
2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
3、速度不可以调节的过快,不然就没有力矩转动了
可以按照给的原理图接线*/
#include


unsigned char code F_Rotation[4]={0x040x080x100x20};//正转表格
unsigned char code B_Rotation[4]={0x200x100x080x04};//反转表格

void Delay(unsigned int i)//延时
{
         while(--i);
}

main()
{
        unsigned char i;

         while(1)
         {
                  for(i=0;i<4;i++)      //4相
             {
                     P3=F_Rotation[ i];  //输出对应的相 可以自行换成反转表格
                     Delay(750*10);        //改变这个参数可以调整电机转速
                 }
          }
}

回帖(1)

孙洪山

2023-10-7 14:56:13
1.需要定义一个正反转标志,在定时器中断中判断到达转到时间后进行翻转,进行正反转标志的切换。
2.主函数中根据正反转标志选择执行的数据即可。
比如
if(正转标志)
{
                  for(i=0;i<4;i++)      //4相
             {
                     P3=F_Rotation[ i];  //输出对应的相 可以自行换成反转表格
                     Delay(750*10);        //改变这个参数可以调整电机转速
                 }
          }

}
else
{
                  for(i=0;i<4;i++)      //4相
             {
                     P3=B_Rotation[ i];  //输出对应的相 可以自行换成反转表格
                     Delay(750*10);        //改变这个参数可以调整电机转速
                 }
          }

}
要想控制的再准确点,那个延时也用定时器做。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分