树莓派 3 + L298N模块 驱动直流电机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派 3 + L298N模块 驱动直流电机相关的知识,希望对你有一定的参考价值。
参考技术A 单片机或树莓派一般使用 L298n 模块来驱动电机 。L298N的实物图如下。12V power:L298n 的电源正极,尽管标的 12V,但你可以使用 7V ~ 35V 的电源。
GND: L298n 的电源地,树莓派的 GND 引脚也要接到这里,即 L298N 和 树莓派需要共地。
5V power: L298n 输出的 5v 电源,是用来给单片机或树莓派供电的。如果你的树莓派是单独供电,那么这个引脚悬空。
Output 的两个引脚接直流电机的两脚,而板上有 Output A 和 Output B,分别驱动电机 A 和电机 B。
A Enable : 电机 A 使能,接 GPIO 口 。可以用PWM 来调速。
Logic Input : 接 4 个 GPIO 口。 上面两个脚 Input1 、Input2 (靠近 A Enable )控制电机 A ; 下面两个脚 Input3、Input4 (靠近 B Enable)控制电机 B。
B Enable : 电机 B 使能,接 GPIO 口。 可以用 PWM 来调速。
总结一下就是 A Enable 、Input1、Input2 控制电机 A 的运行,B Enable、Input3、Input4 控制电机 B 的运行。
如何控制的呢? 下面是对电机 A 进行控制的真值表,电机 B 同理。
驱动一下试试吧!
下面是控制电机 A 的电路图:
把 L289N 的直流电源接好,然后把树莓派的 GND 与 L298N 的 GND 连在一起,因为共地后 L298N 才能识别树莓派发送的 IN1、IN2 到底是高电平还是低电平。
树莓派的 2、3、4 脚分别连到 A Enable、IN1 、IN2 。(把 Enable 上的短接帽拿掉)
由控制表可知给 2 脚高电平,3 脚高电平,4 脚低电平,电机就会正转。
编写程序:
前面提到过 A Enable 和 B Enable 可以用 pwm 控制来调速,下面是相应程序。
接线不变!这个程序可以让电机 A 以不同的速度正转。
在树莓派中运行程序后,可以看到电机的转速会随着占空比的改变而变化。
程序源码在: github
树莓派驱动步进电机
步进电机一般由电机、驱动器构成,树莓派连接驱动器控制电机。
一、接线
DIR+/- 用于控制方向,PUL+/- 用于控制转动;
正极 DIR+ 和 PUL+ 接到GPIO口,两个负极接到GPIO口或地线均可,控制的时候不使用。
实验中,DIR+ 接35口,PUL+ 接38口。
树莓派4B GPIO口如图所示
远离树莓派USB的一侧 是 1、2、3号口
二、驱动
DIR控制方向,使用高电平或低电平控制;
PUL控制转动,使用脉冲驱动。
三、代码
import RPi.GPIO as GPIO
import time
TERMINAL1 = 38 # PUL +
TERMINAL2 = 35 # DIR +
def setup():
# 初始化
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(TERMINAL1, 0)
GPIO.setup(TERMINAL2, 0)
def start(pulse_terminal):
# 开启脉冲
pulse_terminal.start(0)
pulse_terminal.ChangeDutyCycle(50) # 设置脉冲带宽 0~100
def stop(pulse_terminal):
# 停止脉冲
pulse_terminal.stop()
def set_direction(direction=1):
GPIO.output(TERMINAL2, direction) # 设置高低电平
if __name__ == '__main__': # Program start from here
setup()
pulse_terminal = GPIO.PWM(TERMINAL1, 1000) # 脉冲带宽调制
set_direction(1)
start(pulse_terminal)
time.sleep(3)
stop(pulse_terminal)
time.sleep(3)
set_direction(0)
start(pulse_terminal)
time.sleep(3)
GPIO.cleanup()
以上是关于树莓派 3 + L298N模块 驱动直流电机的主要内容,如果未能解决你的问题,请参考以下文章