树莓派控制直流电机
一、硬件介绍
- 树莓派
- L298N电机驱动模块
- 直流电机
- 外接电源
- 杜邦线
二、硬件连接
原理图:
注意:ENA和ENB的跳冒必须安上去,如果没有拿杜邦线连通!
三、代码编写
# -*- 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)
time.sleep(3)
GPIO.cleanup()
四、控制电机转速
接线原理图:
将L298的ENA与ENB分别接到树莓派的Pin16,Pin18接口。ENA与ENB分别为左右电机的使能接口,通过树莓派PWM输出,可以用来控制电机转速。(注:连接时需要将ENA、ENB上的跳帽拔掉)
修改代码为:
# -*- 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)
# 将pin16和pin18设置频率为80
pwma = GPIO.PWM(16,80)
pwmb = GPIO.PWM(18,80)
# 设置占空比为90%
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)
for i in range(10):
pwma.ChangeDutyCycle(90)
pwmb.ChangeDutyCycle(90)
time.sleep(3)
pwma.ChangeDutyCycle(10)
pwmb.ChangeDutyCycle(10)
time.sleep(3)
# 释放接口
GPIO.cleanup()
五、实物图展示
最后,祝大家都学业有成,步步高升!