Arduino连接L298n驱动板驱动小车的电机

1、L298N介绍

先来讲讲电机驱动,驱动一般使用L298N,L298N 是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,功率部分的供电电压范围是2.5-48v,逻辑部分5v供电,接受5vTTL电平。现在有很多成品模块卖,而且价格也不贵,很适合大家diy智能小车。L298N模块多数都是长下边这个样子,这里要注意,L298N模块12v是给模块供电,5v是输出,意思就是L298N的模块接入12V电源,同时输出5V电源可以给其他模块供电。
图:
uploads/200214/001.jpg

接线

输出A和输出B: 连接小车电机

12V + : 接电池盒子的正极

GND: 接电池盒子的负极(如连了USB进行调试时,不接方形电池的DC线扣的原型)

5v+: 因为板载5V是使能的,通过杜邦线连接方形电池的DC线扣的方形部分

IN1 ~ IN4: 按顺序接 Anrduin UNO 2,3,4,5 pin 口

uploads/200214/IMG_20200214_214803.jpg

需要注意的一点是arduino必须和驱动板为同一电压源输入,例如我这里就是12v的电池输入,当然除了DC口也可以通过arduino上的vim口输入(在两个接地口下方)

或者

如果L298N和arduino使用不同的电源供电的话,那么需要将arduino的GND和模块上的GND连接在一起,只有这样单片机上过来的逻辑信号才有个参考0点。此点非常重要

我的代码是:

int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;

int row_speed = 100; //轮子的转速


void setup() {
  // put your setup code here, to run once:
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
  pinMode(in3,OUTPUT);
  pinMode(in4,OUTPUT);
  
  car_stop();
}

void loop() {
  // put your main code here, to run repeatedly:
  go();
  delay(2000);
  back();
  delay(2000);
  go_left();
  delay(2000);
  go_right();
  delay(2000);
  car_stop();
  delay(2000);
}

void car_stop()
{
  digitalWrite(in1,LOW);
  digitalWrite(in2,LOW);
  digitalWrite(in3,LOW);
  digitalWrite(in4,LOW);
}

void go()
{
  digitalWrite(in1,HIGH);
  analogWrite(in2,row_speed);
  //digitalWrite(in2,LOW);
  digitalWrite(in3,LOW);
  //digitalWrite(in4,HIGH);
  analogWrite(in4,row_speed);
}

void back()
{
  digitalWrite(in1,LOW);
  analogWrite(in2,row_speed);
  digitalWrite(in3,HIGH);
  analogWrite(in4,row_speed);
}

void go_left()
{
  digitalWrite(in1,HIGH);
  analogWrite(in2,row_speed);
  digitalWrite(in3,LOW);
  digitalWrite(in4,LOW);
}

void go_right()
{
  digitalWrite(in1,LOW);
  analogWrite(in2,LOW);
  digitalWrite(in3,HIGH);
  analogWrite(in4,row_speed);
}

References

原文地址:https://www.cnblogs.com/fsong/p/12309911.html