步进电机驱动问题
如题,我用L298N驱动这个步进电机时,L298N发热特别严重,而且步进电机转动时噪音特别大!用的驱动电压为8V左右!不知道哪里出了问题,求指教!!!谢谢 应该是你调节频率的问题,你试一试换过频率试试,不一定正确。 kanshizhuo 发表于 2015-8-12 14:16 static/image/common/back.gif
应该是你调节频率的问题,你试一试换过频率试试,不一定正确。
我把程序给你看看
int Pin0 = 4;
int Pin1 = 5;
int Pin2 = 6;
int Pin3 = 7;
int _step = 0;
char lkf;
boolean dir = true;//true为反转,false为正转
int stepperSpeed = 10;//电机转速,1ms一步
void setup()
{
Serial.begin(9600);
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
}
void loop()
{
run();
}
void run()
{
switch(_step){
case 0:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
case 1:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
case 2:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 3:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 4:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 5:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 6:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 7:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
default:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(stepperSpeed);
}
int stepperSpeed = 10;//电机转速,1ms一步
太慢了,10ms了,最适合的时间是500-800us
delay(stepperSpeed);
改成
delayMicroseconds(500);
试试
电流太大啦。在298的使能(En)端接入20KHz的PWM,并做到该PWM的占空比可调节,依据电机的力矩使用情况实时调节。你现在做的就是把使能端直接接啦高电平相当于PWM占空比为100%,满电流工作肯定发热的。 PINKWALKMAN 发表于 2015-8-13 08:15 static/image/common/back.gif
电流太大啦。在298的使能(En)端接入20KHz的PWM,并做到该PWM的占空比可调节,依据电机的力矩使用情况实时 ...
你的意思是给使能端赋值,那这个值该给多大呢(之前一直以为使能就是调节电机转速的:L)谢谢啦! Ansifa 发表于 2015-8-12 22:30 static/image/common/back.gif
int stepperSpeed = 10;//电机转速,1ms一步
太慢了,10ms了,最适合的时间是500-800us
delay(stepperSpee ...
好的好的,我试试看,谢谢啦! 转身已是黄昏 发表于 2015-8-13 08:34 static/image/common/back.gif
你的意思是给使能端赋值,那这个值该给多大呢(之前一直以为使能就是调节电机转速的)谢谢啦!
使能端,要看用在什么电机上面。如果使能用在直流有刷电机控制就是控制转速的,如果用在步进电机就是用来控制电机力矩的,步进电机的转速靠步进脉冲的交替速度来控制的。 转身已是黄昏 发表于 2015-8-13 08:34 static/image/common/back.gif
你的意思是给使能端赋值,那这个值该给多大呢(之前一直以为使能就是调节电机转速的)谢谢啦!
使能端,要看用在什么电机上面。如果使能用在直流有刷电机控制就是控制转速的,如果用在步进电机就是用来控制电机力矩的,步进电机的转速靠步进脉冲的交替速度来控制的。 PINKWALKMAN 发表于 2015-8-13 20:45 static/image/common/back.gif
使能端,要看用在什么电机上面。如果使能用在直流有刷电机控制就是控制转速的,如果用在步进电机就是用来 ...
恩恩,学习了,谢谢啦!
页:
[1]