yangsan123 发表于 2011-5-26 11:59:00

PWM加2803驱动步进电机出现一走一停的现象。急求各位高手帮忙解决

求救!急!步进电机出现一走一停现象。先感谢大家帮忙我是做电机新手,最近在调一款带电机产品出现这种状况。急求大家帮忙解决!万分感激

就是我用PWM加2803驱动步进电机
PWM是用单独一个MCU模块输出
细分后我的电机出现一走一停的现象
慢速可以看出,快一点的话就成了抖动
我分析是细分换相后有一段PWM++(从0加到20)这一段就停下然后继续走

在此本人做过小细分的64细分跟32细分也都会出现这用情况!很想知道到底是怎么回事,肯请各位高手指点。

64细分正弦波形数据如下:
uchar code motor64[]={
255,255,254,254,254,253,252,251,250,249,247,246,244,242,240,
238,235,233,230,228,225,222,219,215,212,208,205,201,197,193,
189,185,180,176,171,167,162,157,152,147,142,136,131,126,120,
114,109,103,97,92,86,80,74,68,62,56,50,43,37,31,24,19,13,6,0 //65
};

程序附上忘各位仁兄帮忙

         if(!motor_C_R)
         {         

               if(task>3)
                  {
                     task = 0;
                     if((++motor_steptimer) >= M_step)
                                    
                        {
                            motor_steptimer = 0;
      
                           MOTOR_OVERstep_flag = 0;
                        TR1 = 0;
         
                        }
         
                  }
                  switch(task)
                        {
                        case 0:
                                    {
                                        PWMB++;      
                                        if(PWMB>=255){task++;}      
                                        PWMA = 0;
         
                                       }
                         break;
                         case 1:
                                    {
                                    PWMA++;    //此处停了下,为什么呢?   
                                       if(PWMA>=255){task++;}      
                                    PWMB = 255;
         
                                     }
                        break;
         
                        case 2:
                                 {
            
                                    PWMB--;//此处停了下,为什么呢?   

                                       if(PWMB==0){task++;}
                                    PWMA = 255;         
         
                                 }
                            break;
                              case 3:
                                       {
            
                                           PWMA--;//此处停了下,为什么呢?   

                                           if(PWMA==0){task++;}      
                                          PWMB = 0;
         
                                          }
                                    break;
                               default:task=0; break;
                        }
      
      
         }
页: [1]
查看完整版本: PWM加2803驱动步进电机出现一走一停的现象。急求各位高手帮忙解决