树莓派控制直流电机

发布时间 2023-06-29 11:18:38作者: 猫吃耗子

树莓派控制直流电机

一、硬件介绍

  1. 树莓派
  2. L298N电机驱动模块
  3. 直流电机
  4. 外接电源
  5. 杜邦线

二、硬件连接

原理图:

注意: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()

五、实物图展示

最后,祝大家都学业有成,步步高升!