标题: 请教为何arduino连L298N电机无法工作 [打印本页]

作者: 百年北极熊    时间: 2016-4-10 00:32
标题: 请教为何arduino连L298N电机无法工作
外接12V电源,和arduino共地,电机用的是普通小电机,但是通电以后测试发现通过arduino发出两路电机都正转的指令之后两路都无法启动,拆掉一路负载测量发现空载这侧电压11v多快12V,而另外一侧连接负载的1v不到,拆除两路负载单独测量两侧电压均为11.5v以上。请问这个是什么原因?代码应该没有问题,L298N换了两块都是同样的问题。电源使用的是12V 3A输出的电源。
希望能帮忙分析下原因,谢谢。
代码如下:

char getstr;
int in1=9;     
int in2=10;
int in3=11;  
int in4=12;  
//上面定义了板上的4个控制端,12一组,34一组
#include <Stepper.h>
const int stepsPerRevolution = 500;
Stepper myStepper(stepsPerRevolution, 5, 7, 6, 8);
//脖子
void _mRight(int pin1,int pin2)//当in1和in2中有一个接高位时,电机会向某一方向转动
{

  digitalWrite(pin1,HIGH);
  digitalWrite(pin2,LOW);   
}   
void _mLeft(int pin1,int pin2)//同上   
{     
  digitalWrite(pin1,LOW);     
  digitalWrite(pin2,HIGH);     
}     
void _mStop(int pin1,int pin2)//紧急制动,实际就是将电机两个端短接了   
{   
  digitalWrite(pin1,HIGH);     
  digitalWrite(pin2,HIGH);   
}  
void setup()     
{     
  Serial.begin(9600);     
  pinMode(in1,OUTPUT);     
  pinMode(in2,OUTPUT);     
  pinMode(in3,OUTPUT);   
  pinMode(in4,OUTPUT);   
  //下面程序开始时让控制端都为高电平,电机保持不动。   
  digitalWrite(in1,HIGH);   
  digitalWrite(in2,HIGH);   
  digitalWrite(in3,HIGH);   
  digitalWrite(in4,HIGH);
  myStepper.setSpeed(60);
  Serial.begin(9600);
}
void loop()

{   
  /*Serial.println("shun");
  myStepper.step(stepsPerRevolution);
  delay(500);

  // step one revolution in the other direction:
  Serial.println("ni");
  myStepper.step(-stepsPerRevolution);
  delay(500); */
  getstr=Serial.read();  
  if(getstr=='f')  
  {
    Serial.println("go forward!");
    _mStop(in1,in2);
    _mStop(in3,in4);   
    _mRight(in1,in2);  
    _mRight(in3,in4);  
  }  
  else if(getstr=='b'){
    Serial.println("go back!");
    _mStop(in1,in2);
    _mStop(in3,in4);
    _mLeft(in1,in2);
    _mLeft(in3,in4);
  }
  else if(getstr=='l'){

    Serial.println("go left!");
    _mStop(in1,in2);
    _mStop(in3,in4);
    _mRight(in1,in2);
  }
  else if(getstr=='r'){
    Serial.println("go right!");
    _mStop(in1,in2);  
    _mStop(in3,in4);  
     _mRight(in3,in4);   
  }

  else if(getstr=='s'){
    Serial.println("Stop!");
    _mStop(in1,in2);
    _mStop(in3,in4);   
  }
  if(getstr=='a'){
        Serial.println("Head Right");
         myStepper.step(2000);
  }
  if(getstr=='d'){
    Serial.println("Head Left");
     myStepper.step(-250);
  }

}






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1