找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3286|回复: 0
打印 上一主题 下一主题
收起左侧

请教为何arduino连L298N电机无法工作

[复制链接]
跳转到指定楼层
楼主
ID:113206 发表于 2016-4-10 00:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
外接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);
  }

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表