liurengui 发表于 2008-10-21 08:39:09

请大家帮我看看这步进电机驱动出现的怪问题 【恢复】

本人最近在做步进电机,2相六线,1.8度,但是驱动程序中,可实现转动,但不知为何方向不受控制,比如这次转动时是顺时针,下次在开始时可能就是逆了,而且转力也不足,用不了多少力就能稳住它.另外发现只要时间延迟太长或太短都不能转动.

现在正急着完成关于这个的项目,请大家答疑解惑啊.感激万分啊



http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_462932.jpg

 (原文件名:2006102923424087317.jpg) 



程序如下:

#include <avr/io.h>

#include <avr/delay.h>



#define uchar unsigned char  

#define uint unsigned int 



static uchar np;

const unsigned char motortb[]={0x01,0x04,0x02,0x08,0x01,0x04,0x02,0x08};//其中蓝->PC0,红->PC1,绿->PC2,黑PC3.



void a_step(uchar d,uchar t)  //旋转函数

{

 if(d&0x01)    //如果d为1,为逆时针

   {

     if(np==0)

           np=7;

         else np--;

        }

  else 

   {

    if(np==7)

          np=0;

        else np++;

   }

   PORTC=motortb;

   _delay_ms(7);

 }

 

void a_turn(uchar d,uchar t)  //d为方向参数,t为时间参数

{

 uchar i;

 for (i=0;i<400;i++)

   a_step(d,t);

}



void main(void)

{

 DDRC  = 0x0F;//电机连接低四位

 PORTC=0X44;

 np=4;



 while(1)

 a_turn(0,1);

}

本贴被 liurengui 编辑过,最后修改时间:2008-10-21,09:17:54.

liurengui 发表于 2008-10-22 10:13:10

谢谢各位提示,我找到原因了,因为我电机连接C口,因为熔丝没配置好,使PC2,PC3输出都为低电平,导致工作不正常.

liurengui 发表于 2008-10-21 20:30:54

请问相序哪里出现问题了.请指教

wajlh 发表于 2008-10-21 13:52:31

楼主,电机的相序没弄对吧!

sunxflower 发表于 2008-10-21 09:32:28

楼上正解,用示波器一看就知道了。

zydk1447 发表于 2008-10-21 09:18:11

不用看了,1.程序发的脉波宽度可能有跳变。2.驱动器可能有一相坏了。你有示波器的话一看便知
页: [1]
查看完整版本: 请大家帮我看看这步进电机驱动出现的怪问题 【恢复】