永发信息网

单片机如何控制进步电机?

答案:2  悬赏:10  手机版
解决时间 2021-03-17 15:05
  • 提问者网友:骑士
  • 2021-03-16 16:42
我只能让它转起来,但是它不能按照我想的转.
最佳答案
  • 五星知识达人网友:第幾種人
  • 2021-03-16 17:52

#include "reg52.h"
//Motor
sbit A = P1^0; //定义管脚
sbit b = P1^1;
sbit C = P1^2;
sbit D = P1^3;

///////////////////////////////////////
//步进电机驱动
unsigned char MotorStep=0;
unsigned int MotorTimer = 0;
unsigned int MotorDelay,Speed=1,TIM,CT;

#define speed 8 // 调整速度 数值不要设的太低 低了会引起震动。


void InitMotor()
{
A = 1;
b = 1;
C = 1;
D = 1;
}

void SetMotor()
{
// if(Speed == 0) return;

MotorDelay=Speed; //调整速度
switch(MotorStep)
{
case 0:
if(TIM) // A
{
A = 0; //0xf1
b = 1;
C = 1;
D = 1;
MotorStep = 1;
TIM=0;
}
break;

case 1: // AB
if(TIM)
{
A = 0; //0xf3
b = 0;
C = 1;
D = 1;
MotorStep = 2;
TIM=0;
}
break;

case 2: //B
if(TIM)
{

A = 1;
b = 0; //0xf2
C = 1;
D = 1;

MotorStep = 3;
TIM=0;
}
break;

case 3: //BC
if(TIM)
{
A = 1;
b = 0; //0xf6
C = 0;
D = 1;
MotorStep = 4;
TIM=0;
}
break;
case 4: //C
if(TIM)
{
A = 1;
b = 1; //0xf4
C = 0;
D = 1;
MotorStep = 5;
TIM=0;
}
break;
case 5: //CD
if(TIM)
{
A = 1;
b = 1; //0xfc
C = 0;
D = 0;
MotorStep = 6;
TIM=0;
}
break;
case 6: //D
if(TIM)
{
A = 1;
b = 1; //0xf8
C = 1;
D = 0;
MotorStep = 7;
TIM=0;
}
break;
case 7: //DA
if(TIM)
{
A = 0;
b = 1; //0xf9
C = 1;
D = 0;
MotorStep = 0;
TIM=0;
}
break;

}

}

void system_Ini()
{
TMOD|= 0x11;
TH0=0xDC; //11.0592M
TL0=0x00;
IE = 0x8A;
TR0 = 1;

}

main()
{ system_Ini();
InitMotor();
while(1)
{
SetMotor();

}

}


void Tzd(void) interrupt 1
{
TH0 = 0xfe; //11.0592
TL0 = 0x33;

if( CT++==speed)
{TIM=1;
CT=0;
}
}
全部回答
  • 1楼网友:鱼忧
  • 2021-03-16 18:09
如果只有一个转向的话就比较容易了,如果要有正反两个转向,就需要一个h桥,并且两个i/o口输出高低电频控制,现在就来说说一个转向的控制方式吧。 比如用p1口的p1.0,p1.1,p1.2三个i/o口接按键,p3.4口接电频输出,编个定时程序及按键程序,如果是快(全速运行),那就p3.4口直接输出高电频“1”;中(50%),那就让p3.4口0—50ms输出高电频“1”,50ms—100ms输出低电频“0”,后面就一直以50ms进行一次取反;慢(就用10%吧),0—40ns输出高电频“1”,41ns—400ns输出低电频“0”,这样为一个周期,后面就一直循环吧。如果按键p1.0按下,执行方式1,全速运行,否则以默认方式运行;按键p1.1按下,执行方式2,改变占空比,以50%的速度运行,否则,不作改变;按键p1.2按下,执行方式3,改变占空比,以10%的速度运行,否则,不作改变。当然,占空比及定时时间可以根据个人需要进行改变,这只跟定时程序有关了,定时程序跟按键程序这边就不说了,别忘了按键去抖,咔咔,不然可能会乱掉。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯