零基础玩转树莓派(五)—控制直流电机

2023-05-16

前面教程学会如何使用树莓派来控制LED灯,接下来主要讲如何控制直流电机,这样就可以做小车等可以运动的项目,可玩性更高。

一、硬件介绍

直流电机控制主要用到的硬件为:
1、烧写好系统的树莓派控制板·········1块
2、L298N电机驱动板模块···············1个
3、直流电机·································2个
4、外接电源·································1个
5、杜邦线···································若干
注:由于树莓派自身没有电机驱动模块,因此控制电机时要配合L298N电机驱动板模块,一起来使用。
在这里插入图片描述

二、硬件连接

连接原理图:
在这里插入图片描述
连接实物图:
在这里插入图片描述

三、程序启动电机转

1、硬件按照上述连接好后,将树莓派上电,使用SSH远程连接树莓派
在这里插入图片描述
2、输入nano motor.py,创建一个名为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控制可以参考一下文档:https://www.jianshu.com/p/775b4fb2c98d 。此处直接使用相关知识。
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

零基础玩转树莓派(五)—控制直流电机 的相关文章

  • 企业微信自建应用审批流程踩坑全过程(uni-app)

    1 引入企业微信sdk xff1a 1 1 因为uni app遵循Vue的单文件组件 SFC 规范 xff0c 不能直接在页面上引入 在index html中引入 xff1a lt script src 61 34 http res wx
  • 亲测+STM32F407+freertos+cumax+串口空闲中断和can接收发送

    STM32F407 freertos cumax 串口空闲中断和can接收发送 本人最近再学习使用cumax软件搭建stm32f4的freertos系统 废话不多说 首先介绍一下主要的硬件和软件配置 Cumax 采用Version6 1 1
  • 关于采用GPS数据解析后发布到robot_pose_ekf时报错的问题Covariance specified for measurement on topic gps is zero

    组合惯导与里程计融合后 xff0c 发布信息到robot pose ekf xff0c 报错显示Covariance specified for measurement on topic gps is zero的问题 1 解析原始GPS数据
  • ubuntu系统安装串口转485驱动步骤详解

    ubuntu系统安装串口转485驱动步骤详解 本人使用的是宸曜的工控机 自带com DB9形式的串口 通过BIOS F2进入设置页面 将com0设置成485 模式2 线模式 此为电脑设置截图 采用485两线制接线模式 即端口2 5 8 通过
  • 基于gazebo的多无人车自主导航编队仿真学习

    基于gazebo的多无人车自主导航编队仿真学习 最近正在研究多车编队 xff0c 多车协同自主导航 xff0c 参考古月居 githua 链接 https www guyuehome com 8915 链接 https github com
  • 基于gazebo的无人车编队仿真实战总结(二)

    基于gazebo的无人车编队仿真实战总结 xff08 二 xff09 上一篇博客是通过古月居的多机器人编队仿真考虑讲前期做的基于阿克曼转向的仿真模型 xff0c 进行三台无人小车的编队仿真 问题 1 将无人小车的仿真模型 xff0c 按照博
  • 关于yolov5的调试环境搭建亲测有效ubuntu18.04 +ros+melodic+anaconda+pytorch+torchvision+cuda10.2+cudnn

    运行环境ubuntu18 04 43 ros 43 melodic 43 anaconda3 43 py3 8 43 torch1 12 1 43 torchvision 0 13 1 43 cuda10 2 43 cudnn 1 首先安装
  • yolov5的ros封装移植

    yolov5在上一篇中已经完美运行 但是在工程项目中 需要在ros中使用yolov5进行目标检测 首先 新建ros的工作空间 mkdir span class token operator span p span class token o
  • ubuntu虚拟机安装Cmake

    安装 Cmake官网下载linux下的安装包 xff1a https cmake org download 拷贝进虚拟机中 打开终端 xff0c 进入安装包所在目录tar xzvf tar gz 解压安装包为了便于管理 xff0c 将解压后
  • 经验分享一:UART 可进入空闲中断,DMA却没数据

    条件 xff1a UART DMA配置没有问题 时钟也都使能了 xff0c 对照寄存器表 xff0c 发现该配置的寄存器都配置的没问题 xff0c 调试发现每次接收到数据 xff0c 可以顺利进入空闲中断 且读取 UART 34 数据接收寄
  • Visual Studio 2022 C++ CLR 的艰难除 Bug

    请看下面一段代码 xff1a 运行结果 xff1a 这是一个Button xff0c 要用到这段代码是因为字符串出了问题 xff1a 肯定是我写的类出问题了 xff0c 便是我在控制台下测试是正常的 代码 xff1a 运行结果 xff1a
  • UBX 协议报文整理

    UBX 协议报文整理 UBX 协议的报文格式如下 xff1a 帧头 2 byte CLASS ID MESSAGE ID 2 byte 消息长度 2 byte PAYLOAD校验和 2 byte 帧头 由两个字节组成 xff0c 即0xB5
  • 将串口接收的数据绘制成波形图(使用matlab或Visual Scope)

    一 串口通信配置 结合stm32固件库 xff08 或其它类型单片机 xff09 中usart相关的函数 xff0c 配置好串口通信的寄存器 xff0c 确定 xff08 数据位 停止位 波特率等等 xff09 xff0c 本文主要介绍两种
  • linux下makefile、make、Cmake的区别

    Makefile make工具 linux下makeflie和make的用法 makefile与make详解 人们通常利用make工具来自动完成编译工作 这些工作包括 xff1a 如果仅修改了某几个源文件 xff0c 则只重新编译这几个源文
  • 常见的HTTP请求报文头

    目录 AcceptCookieConnectionCache ControlHostRefererUser Agent 参考链接 HTTP请求行 请求头 请求体详解 关于常用的http请求头以及响应头详解 Accept Accept app
  • C++中::和:的意思

    C 43 43 中的 1 类作用域 指明成员函数所属的类 span class token class name M span span class token operator span span class token function
  • Git 基础知识--打Tag、团队协作

    打 Tag 简述 Git 可以给历史中的某一个提交打上标签 tag xff0c 以示重要 人们一般用 tag 功能来标记发布节点 xff08 v1 0 xff09 tag 与 分支很像 xff0c 区别在于 xff1a 轻量标签 tag 是
  • 第七章——VINS系统初始化

    前言 这一章主要内容是讲的VINS系统初始化的事 xff0c 内容上还是比较全面丰满的 xff0c 有一些有疑问的点我之后读了代码会在博客里补上 一句话总结初始化 xff1a 以优化量与观测值构建残差 xff0c 提取优化量构成最小二乘问题
  • GIT系列之标签

    1 标签列表 git tag 在控制台打印出当前仓库的所有标签 git tag l 39 v1 39 搜索符合模式的标签 2 打标签 git标签分为两种类型 xff1a 轻量标签和附注标签 轻量标签是指向提交对象的引用 附注标签则是仓库中的

随机推荐