微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 步进电机控制程序,在仿真中电机抖动不转,求大神帮忙看看程序

步进电机控制程序,在仿真中电机抖动不转,求大神帮忙看看程序

时间:10-02 整理:3721RD 点击:

/**********************电机正反转*******************************************/

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;

                   }

         }

}


自己给自己顶一波

没有涉及延时程序,电机反应不过来

控制每一个绕组的用中断或延时间隔开

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

网站地图

Top