|
本人最近在做步进电机,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[np];
_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. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|