零基础玩转树莓派(五)—控制直流电机
前面教程学会如何使用树莓派来控制LED灯,接下来主要讲如何控制直流电机,这样就可以做小车等可以运动的项目,可玩性更高。
一、硬件介绍
直流电机控制主要用到的硬件为: 1、烧写好系统的树莓派控制板·········1块 2、L298N电机驱动板模块···············1个 3、直流电机·································2个 4、外接电源·································1个 5、杜邦线···································若干 注:由于树莓派自身没有电机驱动模块,因此控制电机时要配合L298N电机驱动板模块,一起来使用。
二、硬件连接
连接原理图: 连接实物图:
三、程序启动电机转
1、硬件按照上述连接好后,将树莓派上电,使用SSH远程连接树莓派 2、输入nano ,创建一个名为motor的python文件
nano motor.py
3、文件编辑界面输入以下内容:注意#后面为注释(# – coding: utf-8 – 除外),不参与程序运行,可以省略
# -*- coding: utf-8 -*- #通过声明可以在程序中书写中文 import RPi.GPIO as GPIO #引入RPi.GPIO库函数命名为GPIO import time #引入计时time函数 # BOARD编号方式,基于插座引脚编号 GPIO.setmode(GPIO.BOARD) #将GPIO编程方式设置为BOARD模式 #接口定义 INT1 = 11 #将L298 INT1口连接到树莓派Pin11 INT2 = 12 #将L298 INT2口连接到树莓派Pin12 INT3 = 13 #将L298 INT3口连接到树莓派Pin13 INT4 = 15 #将L298 INT4口连接到树莓派Pin15 #输出模式 GPIO.setup(INT1,GPIO.OUT) GPIO.setup(INT2,GPIO.OUT) GPIO.setup(INT3,GPIO.OUT) GPIO.setup(INT4,GPIO.OUT) GPIO.output(INT1,GPIO.HIGH) GPIO.output(INT2,GPIO.LOW) GPIO.output(INT3,GPIO.HIGH) GPIO.output(INT4,GPIO.LOW)
程序主要通过控制电机驱动模块INT1-4接口来实现电机的运动 4、保存退出编辑界面,直行程序,会看到两电机开始转动
sudo python motor.py
四、控制电机转速
树莓派3B+的PWM控制可以参考一下文档: 。此处直接使用相关知识。 1、接线原理图 将L298的ENA与ENB分别接到树莓派的Pin16,Pin18接口。ENA与ENB分别为左右电机的使能接口,通过树莓派PWM输出,可以用来控制电机转速。(注:连接时需要将ENA、ENB上的跳帽拔掉) 2、连接成功后,打开motor.py文件
nano motor.py
修改文件如下
# -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) INT1 = 11 INT2 = 12 INT3 = 13 INT4 = 15 ENA = 16 ENB = 18 GPIO.setup(INT1,GPIO.OUT) GPIO.setup(INT2,GPIO.OUT) GPIO.setup(INT3,GPIO.OUT) GPIO.setup(INT4,GPIO.OUT) GPIO.setup(ENA,GPIO.OUT) GPIO.setup(ENB,GPIO.OUT) pwma = GPIO.PWM(16,80) pwmb = GPIO.PWM(18,80) pwma.start(90) pwmb.start(90) GPIO.output(INT1,GPIO.HIGH) GPIO.output(INT2,GPIO.LOW) GPIO.output(INT3,GPIO.HIGH) GPIO.output(INT4,GPIO.LOW) while 1: pwma.ChangeDutyCycle(90) pwmb.ChangeDutyCycle(90) time.sleep(3) pwma.ChangeDutyCycle(10) pwmb.ChangeDutyCycle(10) time.sleep(3)
3、保存退出文件并且执行程序,会看到两电机快转3秒,慢转3秒依次循环
sudo python motor.py