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点。此点非常重要

我的代码是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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