请大家帮我看看这步进电机驱动出现的怪问题 【恢复】
本人最近在做步进电机,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. 谢谢各位提示,我找到原因了,因为我电机连接C口,因为熔丝没配置好,使PC2,PC3输出都为低电平,导致工作不正常. 请问相序哪里出现问题了.请指教 楼主,电机的相序没弄对吧! 楼上正解,用示波器一看就知道了。 不用看了,1.程序发的脉波宽度可能有跳变。2.驱动器可能有一相坏了。你有示波器的话一看便知
页:
[1]