树莓派小车L298N驱动

0.1 树莓派GPIO定义

ref: https://www.raspberrypi.org/documentation/usage/gpio/

0.2 L298N端口定义

名称 符号 备注
电源 VCC 驱动电源,接+5V~+35V
GND 接地
5V 逻辑控制电源,5V 注1
控制端 ENA、ENB 两路 注2
IN1IN2、IN3IN4 高电平有效,接树莓派
输出端 OUT1~OUT4 接电机

注1:当驱动电压过高时(>12V),逻辑控制电源单独接5V电源。 一般悬空即可。
注2:使能端直接跳线与5V连接。这个5V是驱动电源经过78M05模块输出的。

1. 接线

  • IN1 -> PIN 11 # 左前进
  • IN2 -> PIN 12 # 左后退
  • IN3 -> PIN 16 # 右前进
  • IN4 -> PIN 15 # 右后退

2. 程序

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
import RPi.GPIO as GPIO
import time

IN1 = 11 # IN1, 左前进
IN2 = 12 # IN2, 左后退
IN3 = 16 # IN3, 右前进
IN4 = 15 # IN4, 右后退

# GPIO.setwarnings(False)

def init():

GPIO.setmode(GPIO.BOARD)
GPIO.setup(IN1,GPIO.OUT)
GPIO.setup(IN2,GPIO.OUT)
GPIO.setup(IN3,GPIO.OUT)
GPIO.setup(IN4,GPIO.OUT)

def forward(sleep_time):
init()
GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()

def back(sleep_time):
init()
GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.HIGH)
GPIO.output(IN3,GPIO.LOW)
GPIO.output(IN4,GPIO.HIGH)
time.sleep(sleep_time)
GPIO.cleanup()

def left(sleep_time):
init()
GPIO.output(IN1,False)
GPIO.output(IN2,False)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()

def right(sleep_time):
init()
GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,False)
GPIO.output(IN4,False)
time.sleep(sleep_time)
GPIO.cleanup()

forward(1)