fwj1988 发表于 2010-7-9 19:28

步进电机控制

本人最近在写由430控制的步进电机控制,但是步进电机正转几下,又反转几下,可是我只设置他正转的,而且驱动芯片发热,主要是接口处发热严重?求大虾指教
代码如下
#include <msp430x14x.h>
#define uchar unsigned char
#define uint unsigned int
//函数说明
void delay(uint t);
void front_move(uint step);
void back_move();
//unsigned char forword={0xc0,0x40,0x60,0x20,0x30,0x10,0x90,0x80};
unsigned char forword={0x80,0xC0,0x40,0x60,0x20,0x30,0x10,0x90};
unsigned char back={0xc0,0x80,0x90,0x10,0x30,0x20,0x60,0x40};
int main( void )
{

//sbit key1=P2^0;   //正转
//sbit key3=P2^2;   //停止
// uchar count=0;
// uint time=0;
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P3DIR = 0xff;
P3OUT = 0XFF;
front_move(12);

return 0;
}
//电机驱动子程序
void front_move(uint step)
{
uchar i=0,j;
for(j=0;j<step;j++)
{
for(i=0;i<8;i++)
{
   P3OUT=forword;
   delay(50);
}

void delay(uint t) /* 对于12M时钟,约延时1ms */
{
uint i;
while(t--)
{
for (i=0;i<800;i++)
{}
}
}

redhatman 发表于 2010-7-11 12:42

本帖最后由 lanjeo 于 2015-4-29 10:20 编辑

请问你下面的这个表:
unsigned char forword={0x80,0xC0,0x40,0x60,0x20,0x30,0x10,0x90};
是半步控制下的相开关顺序么?
如果是这样的话:
//电机驱动子程序
void front_move(uint step)
{
uchar i=0,j;
for(j=0;j<step;j++)
{
for(i=0;i<8;i++)
{
   P3OUT=forword;
   delay(50);
}
这个函数的意思就不太懂了,是运动step个电周期?
另外,看门狗是设置的是多长时间?front_move(12);的执行时间是不是过长?

研控自动化 发表于 2010-7-21 16:52

呃……我这边是生产驱动器的,不知道你是什么情况,有需要的话可以联系我。
页: [1]
查看完整版本: 步进电机控制