嵌入式人工智能(15-基于树莓派4B的电机控制-直流电机TB6612)

电机是传动以及控制系统的重要组成部分,现在的电机已从过去简单的传动向复杂的控制转移,尤其是对电机的速度、位置、转矩的精确控制,本系列将介绍如何使用树莓派驱动并控制3种最为常见的控制电机:直流电机(风扇)、步进电机、伺服电机(舵机,机械臂)

1、直流电机简介

通常情况下,输出或输入为直流电的旋转电机,称为直流电机,如图所示。它是一种可以实现
直流电能和机械能互相转换的电机,当它作为电动机运行时是直流电动机,可将电能转换为机械能;当它作为发电机运行时是直流发电机,可将机械能转换为电能。

小型直流电机的电压范围通常是1.5~30V,被广泛地应用于各类便携电子设备上。可以使用两根导线将直流电源的正负极与直流电机连接起来,这样就可使直流电机转动,其两端电压越高转动得就越快。每个直流电机都有一个额定电压,超出额定电压太多容易导致电机被烧毁,而供电电压太低则转不起来。通过交换两根连接在电机上的导线顺序(即改变电源的正负极),就可以实现改变电机的转向。

2、TB6612

直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作。TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向。

TB6612是一种电机驱动IC(集成电路),通常用于控制直流电机。它可以独立控制两个电机,每个通道可以提供最大1.2A的电流。它是爱好者和机器人爱好者的热门选择,因为它结构紧凑,易于使用,并且具有成本效益。TB6612有几个特点,使其多功能和适用于各种应用。它具有内置的保护电路,如热关闭,过流保护和欠压锁定,这有助于保护电机和驱动器免受损坏。

TB6612的控制输入通常连接到微控制器或类似的设备。输入由每个电机的两个数字输入引脚组成,允许控制电机的方向和速度。通过对这些输入施加适当的信号,电机可以向前、向后或停止驱动。TB6612还包括制动功能,可通过快速将其端子短路在一起来快速停止电机。这在需要精确和快速停止的应用中很有用,例如机器人。

总体而言,TB6612是一款可靠且受欢迎的电机驱动IC,为各种应用中的直流电机控制提供了一种简单且经济高效的方式。

3、与树莓派4B的连接

电机驱动模块接线

1、VM接5V电源,这里需要用USBToTTL模块的5V电,接串口模块的VCC5V,串口模块接电脑USB。特别注意,USBToTTL模块的GND要连接到面包板的GND,形成电压差,不然VM用万用表量没有5V供电。

2、VCC接面包板3.3V供电、GND接面包板GND。

3、AO1、AO2,电机输出端,接电机的两根线。

4、STBY接面包板3.3V,待机控制,不需要。

5、PWMA是速度控制,接树莓派的任意GPIO,都支持PWM控制,BOARD物理引脚的32。

6、AIN1和AIN2是方向控制,任意接两个GPIO就行,接GPIO(BOARD物理引脚的38、40)。

线子比较乱,这个接线大家把树莓派关机再接线,以防万一。

4、实验要求与代码 

该实验比较简单,电机先正向加速转,再反向加速转。

# 引入RPi.GPIO库函数命名为GPIO
import RPi.GPIO as GPIO
import time# BOARD编号方式
GPIO.setmode(GPIO.BOARD)# 定义接口
ENA = 32
IN1 = 38
IN2 = 40# 设置输出模式
GPIO.setup(ENA, GPIO.OUT)
GPIO.setup(IN1, GPIO.OUT)
GPIO.setup(IN2, GPIO.OUT)# 频率
frequency = 500# 初始占空比
duty = 0# 创建一个频率为500的PWM对象,并向ENA输入PWM脉冲信号
pwm = GPIO.PWM(ENA, frequency)try:# 以duty的初始占空比开始向ENA输入PWM脉冲信号pwm.start(duty)while True:# 将电机设置为正向转动GPIO.output(IN1, GPIO.LOW)GPIO.output(IN2, GPIO.HIGH)# 通过改变PWM占空比,让电机转速不断加快for duty in range(0, 100, 5):# 改变PWM占空比pwm.ChangeDutyCycle(duty)time.sleep(1)# 将电机设置为反向转动GPIO.output(IN1, GPIO.HIGH)GPIO.output(IN2, GPIO.LOW)# 通过改变PWM占空比,让电机转速不断加快for duty in range(0, 100, 5):pwm.ChangeDutyCycle(duty)time.sleep(1)
except Exception as e:print('An exception has happened', e)finally:# 停止PWMpwm.stop()# 结束进程,释放GPIO引脚GPIO.cleanup()

别看电机实验比较简单,但在智能小车应用中很普遍,四个车轮都是由电机带动,注意观察车轮电机的安装与接线方向。如果都是按一个方向方式安装。

小车前进:右边的电机顺时针转,左边的电机逆时针转。(面对车轮,右上方向为前进)

小车后退:右边的电机逆时针转,左边的电机顺时针转。

小车右转:右边的电机逆时针转,左边的电机逆时针转。

小车左转:右边的电机顺时针转,左边的电机顺时针转。

然后可以根据PWM的duty值将速度调整到4-5档。这样小车的基础运动函数就完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大语言模型推理优化--键值缓存--Key-value Cache

文章目录 一、生成式预训练语言模型 GPT 模型结构二、FastServe 框架三、Key-value Cache1.大模型推理的冗余计算2.Self Attention3.KV Cache 一、生成式预训练语言模型 GPT 模型结构 目前,深度神经网络推理服务系统已经有一些工作针对生成式预训练语言模型 GPT 的独…

安全防御---防火墙综合实验3

安全防御—防火墙综合实验3 一、实验拓扑图 二、实验要求 12,对现有网络进行改造升级,将当个防火墙组网改成双机热备的组网形式,做负载分担模式,游客区和DMZ区走FW3,生产区和办公区的流量走FW1 13,办公区…

Ubuntu22.04安装OMNeT++

一、官网地址及安装指南 官网地址:OMNeT Discrete Event Simulator 官网安装指南(V6.0.3):https://doc.omnetpp.org/omnetpp/InstallGuide.pdf 官网下载地址:OMNeT Downloads 旧版本下载地址:OMNeT Old…

【动态规划】整数拆分

整数拆分&#xff08;难度&#xff1a;中等&#xff09; 该题对应力扣网址 AC代码 class Solution { public:int integerBreak(int n) {//动态规划//感觉这个题和零钱兑换有点像&#xff0c;只是零钱兑换提供了coin列表vector <int> dp(n1,0);//1、定义子问题//将原问题…

PolarisMesh源码系列--Polaris-Go注册发现流程

导语 北极星是腾讯开源的一款服务治理平台&#xff0c;用来解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题。在分布式和微服务架构的治理领域&#xff0c;目前国内比较流行的还包括 Spring Cloud&#xff0c;Apache Dubbo 等。在 Kubernete…

错误:PHP:Deprecated: Required parameter $xxx follows optional parameter $yyy

前言 略 错误 Deprecated: Required parameter $xxx follows optional parameter $yyy 解决办法 设置 error_reporting E_ALL & ~E_DEPRECATED & ~E_STRICT 参考 https://blog.csdn.net/lxw1844912514/article/details/100028023

创建自己的 app: html网页直接打包成app;在线网页打包app工具fusionapp、pake

1、html网页直接打包成app 主要通过hbuilderx框架工具来进行打包 https://www.dcloud.io/hbuilderx.html 参考&#xff1a; https://www.bilibili.com/video/BV1XG411r7QZ/ https://www.bilibili.com/video/BV1ZJ411W7Na 1&#xff09;网页制作 这里做的工具是TodoList 页面&a…

【数据结构--查找】

目录 一、查找&#xff08;Searching&#xff09;的概念1.1、基本概念1.2、算法的评价指标 二、顺序查找2.1、算法思想2.2、算法实现2.2.1、常规顺序查找2.2.2、带哨兵的顺序查找 2.3、效率分析2.4、优化2.4.1、针对有序表2.4.2、被查效率不相等 三、折半查找3.1、算法思想3.2、…

C语言项目篇:二、课程管理系统

为加强对于C语言的巩固和复习&#xff0c;以实战项目为导向&#xff0c;串起所有C语言的语法&#xff0c;达到活学活用的目的&#xff0c;本篇博客&#xff0c;详细总结利用C语言编码简单编码实现生活中的课程管理系统后台开发的整个过程&#xff0c;学习多文件编程和调试&…

Internet 控制报文协议 —— ICMPv4 和 ICMPv6 详解

ICMP 是一种面向无连接的协议&#xff0c;负责传递可能需要注意的差错和控制报文&#xff0c;差错指示通信网络是否存在错误 (如目的主机无法到达、IP 路由器无法正常传输数据包等。注意&#xff0c;路由器缓冲区溢出导致的丢包不包括在 ICMP 响应范围内&#xff0c;在 TCP 负责…

Docker、containerd、CRI-O 和 runc 之间的区别

容器与 Docker 这个名称并不紧密相关。你可以使用其他工具来运行容器 您可以使用 Docker 或一堆非Docker 的其他工具来运行容器。docker只是众多选项之一&#xff0c;Docker&#xff08;公司&#xff09;在生态系统中创建了一些很棒的工具&#xff0c;但不是全部。 容器方面有…

利用【MATLAB】和【Python】进行【图与网络模型】的高级应用与分析】

目录 一、图与网络的基本概念 1. 无向图与有向图 2. 简单图、完全图、赋权图 3. 顶点的度 4. 子图与连通性 5. 图的矩阵表示 MATLAB代码实例 Python代码实例 二、最短路径问题 1. 最短路径问题的定义 2. Dijkstra算法 MATLAB代码实例 Python代码实例 三、最小生…

无法启动此程序,因为计算机丢失api-ms-win-core-path-l1-1-0.dll的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Microsoft Visual C++ 2010 Express 使用

Microsoft Visual C 2010 Express 使用 Microsoft Visual C 2010 Express&#xff08;简称VC 2010 Express&#xff09;是一款免费的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为C和C语言的开发者设计。 安装 下载|本站链接【VC2010简体中文版】的安装包并解压…

C#学习-刘铁猛

文章目录 1.委托委托的具体使用-魔板方法回调方法【好莱坞方法】&#xff1a;通过委托类型的参数&#xff0c;传入主调方法的被调用方法&#xff0c;主调方法可以根据自己的逻辑决定调用这个方法还是不调用这个方法。【演员只用接听电话&#xff0c;如果通过&#xff0c;导演会…

mysql oracle postgreSQL区别

MySQL、Oracle Database和PostgreSQL是三种流行的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它们各有特点&#xff0c;适用于不同的应用场景。以下是它们之间的一些主要区别&#xff1a; 1.许可证和成本&#xff1a; 1.MySQL是一个开源数据库&#xff0c;…

一个集Swagger2 和 OpenAPI3为一体的增强接口文档工具,一把为您的API文档需求量身定制的“利刃”(附源码)

前言 在微服务和分布式系统架构日益普及的今天&#xff0c;API文档的管理与维护成为了开发过程中的一个关键环节。开发者们常常面临着API文档更新不及时、格式不统一、难以维护和阅读的问题。此外&#xff0c;随着API数量的增加&#xff0c;管理和维护这些文档变得越来越复杂。…

unity2022 il2cpp 源码编译

新建一个XCODE静态库工程 从unity安装目录中找到il2cpp源码 Editor\Data\il2cpp\ 改名 il2cpp/libil2cpp -> il2cpp/il2cpp 加入工程中 ->工程根目录 extends/zlib libil2cpp/ buildSettings 相关设置 IOS Deployment Target ios 12.0 Header Search Paths $(in…

Anthropic的Claude安卓版能否赢得用户青睐?

Anthropic的Claude安卓版能否赢得用户青睐&#xff1f; 前言 Anthropic 就在7月18日&#xff0c;这家以"可控AI"著称的初创公司再次出手&#xff0c;推出了Claude的Android版本应用。这款APP不仅支持实时语言翻译&#xff0c;更传承了Anthropic一贯的隐私保护政策。C…

C++游戏时间——Maker_Game游戏头文件组1.0

我们都知道,C++可以写控制台、图形界面、静态库程序。 这几天,我写游戏都写炸毛了,但对于对静态库一窍不通的我,只能写图形库和控制台。 于是。。。。 Maker_Game游戏头文件组1.0诞生了! #include <Maker_Game/Ege.h> #include <Maker_Game/Console.h> Co…