ros - slam - 电机控制之速度控制实验

news/2024/7/5 2:44:55/文章来源:https://www.cnblogs.com/ai-ldj/p/18279378

前面说到通过控制对应的IO上的PWM占空比即可完成对电机速度的控制。
关于PWM的介绍在ROS2硬件控制篇的舵机控制中已经介绍过了,所以我们知道通过改变PWM的占空比可以实现对输出电压的大小调节。占空比越大,输出电压越高;占空比越小,输出电压越低。
接着我们通过一个实验来验证下

一、新建工程
新建example22_motor_speed_control

 二、编写代码
程序的基本思路是,通过检测按键输入来改变占空比的大小,从而控制电机的转速。按下按键后,每次增加0.1的占空比,当占空比达到1.0时,重新从0开始计数。在loop函数中,通过控制AIN1引脚的高低电平来实现PWM信号的输出,从而控制电机的速度。

/*** @file main.cpp* @author fishros@foxmail.com* @brief 电机速度控制* @version 0.1* @date 2022-12-19* * @copyright Copyright (c) 2022* */#include <Arduino.h>#define AIN1 23  // 电机驱动模块AIN1引脚
#define AIN2 22  // 电机驱动模块AIN2引脚
#define KEY 0    // 按键引脚
#define CYCLE 10 // 定义PWM信号的周期长度,单位为msfloat duty = 0.0; // 定义占空比变量,并初始化为0.0void setup()
{Serial.begin(115200);   // 初始化串口通信pinMode(KEY, INPUT);    // 设置按键引脚为输入模式pinMode(AIN1, OUTPUT);  // 设置AIN1引脚为输出模式pinMode(AIN2, OUTPUT);  // 设置AIN2引脚为输出模式digitalWrite(AIN2, LOW);// 设置AIN2引脚为低电平,控制电机转向
}void loop()
{// 检测按键是否按下if (digitalRead(KEY) == LOW) {delay(50); // 延迟50ms,以防止误触// 确认按键已经按下if (digitalRead(KEY) == LOW){// 等待按键松开,避免连续按下while (digitalRead(0) == LOW) ;// 每次增加0.1的占空比,当占空比达到1.0时,重新从0开始计数duty = duty + 0.1;if (duty > 1.0)duty = 0;}}// 输出PWM信号控制电机转速digitalWrite(AIN1, HIGH);     // 将AIN1引脚设置为高电平delay(CYCLE * duty);           // 延迟一段时间,时间长度由占空比决定digitalWrite(AIN1, LOW);      // 将AIN1引脚设置为低电平delay(CYCLE * (1 - duty));     // 延迟一段时间,时间长度由占空比决定
}

三、测试
将代码下载到主控板上,点击BOOT按键,观察电机转速。

四、总结
本节我们通过简单的一个实验学习了如何通过PWM调节电机的PWM,但有一点需要注意,程序中使用了delay函数来控制PWM信号的占空比,这种方法在简单的应用场景下是可行的,但是在需要更高精度的控制场景下可能会产生问题。为了实现更高精度的PWM控制,我们可以采用ESP32的电机PWM控制单元,下一节我们就尝试使用这一开源库实现更精细化的控制。

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

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

相关文章

BPI-M4 Berry在windows系统下连接串口调试

串口线 我手头的串口线是这样的,包含如下四个针脚:VCC、GND、TX、RX。串口针脚说明: 其他的串口线可能不止四根线,而且杜邦线的颜色也不一定和我的一样。 请看清楚接口标注,按照下面介绍,将其接到板子上对应的接口板子串口GNDGNDTXDRXDRXDTXD VCC是电源,可以不用接。有的…

智慧旅游不再难,免费可视化工具一键搞定!

在过去,复杂的数据分析软件和昂贵的服务费用让许多中小旅游企业望而却步。而今,免费可视化工具彻底改变了这一局面,今天要说的工具就是山海鲸可视化。它不仅功能强大,而且免费使用,大大降低了数据可视化的门槛,即便是资源有限的旅游企业或是个人也能轻松上手。在这个数据…

平衡樹專題Treap

前言:题单在此:HL平衡树0701 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 平衡树 什么是平衡树? 首先我们需要知道二叉查找树的内容。 二叉查找树(BST:Binary Search Tree) 首先,他是一棵二叉树 其次,他的左子树的权值<根节点的权值<右子树的权值 最后,…

BUUCTF刷题:[DDCTF 2019]homebrew event loop

[DDCTF 2019]homebrew event loop 代码审计 from flask import Flask, session, request, Response import urllib import urllib.parseapp = Flask(__name__) app.secret_key = ********************* # censored url_prefix = /d5afe1f66147e857def FLAG():return *********…

PHP8.0正常,PHP7.2,PHP7.3报错Connection failed: SQLSTATE[HY000] [2054] The server re....

构建网站API接口的时候,使用了PDO进行数据库连接,原文如下 测试后发现,PHP8.0版本下,可以正常输出,但是PHP7.2和7.3则会报错:Connection failed: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client 经查验,发现因为所用的PHP7.…

H3C之防火墙拆堆叠升级

组网及说明两台防火墙F1070组成IRF,做冗余主备,并配置BFD MAD 进行分裂检测。业务在deviceA上跑,若deviceA上下行链路故障,则切换到deviceB。 现要求在业务中断最短的情况下,堆叠主备防火墙从域间策略的软件版本升级至安全策略的软件版本。现有版本为 Release R9345P14 升…

神经网络图像数据训练集成应用 | 可视化图像处理 | 可视化训练器

〇、写在前面 本应用基于开源UI框架PyDracula进行开发,除去最基本的UI框架外,所有功能的前后端实现都由我个人开发完成,但也有部分UI(如开关控件和进度条)是参考其他大佬的分享。 这个应用是我的本科毕业设计,但因为个人能力不足,姑且只能使用Python+PySide6开发。 开发…

【别再为可视化工具付费了!】智慧交通实时路况监测,这款免费可视化工具的功能超乎想象

在智慧交通领域,实时路况监测是确保城市交通高效运转的关键。山海鲸可视化作为一款免费的可视化工具,其功能非常强大。面对智慧交通的复杂需求,山海鲸可视化凭借其二三维融合、易用性、安全性和高质量的画面渲染等特色,成为智慧交通管理的不二选择。山海鲸可视化的二三维融…

数据增强mosaic实现

mosaic 是yolov4中提出的一个数据增强的方式,通过将4张图片拼接在一起送入训练,有效提升了模型的mapmosaic 是yolov4中提出的一个数据增强的方式,通过将4张图片拼接在一起送入训练,有效提升了模型的map。mosaic的优点包括如下:增加数据多样性,随机选取四张图像进行组合,…

springboot3(cloud 2022.0.0)整合seata1.7.1

一、第一步下载对应版本的seata服务 二、修改conf下的application.yml配置 注意:主要是连接nacos的一些配置:注册中心和服务发现的配置1 # Copyright 1999-2019 Seata.io Group.2 #3 # Licensed under the Apache License, Version 2.0 (the "License");4 # you…

Linux 文件系统扩展

今天发现/usr目录空间不够。需要扩展。之前没有处理过。今天试了一下调整。并且记录下来整个过程。 1 使用fdisk -l 查看磁盘信息2、使用fdisk /dev/sda 对磁盘进行分区操作完后,多了一个/dev/sda34 使用 pvcreate /dev/sda3创建物理卷5、使用vgextend ol /dev/sda3 扩展磁盘 …

华为云技术专家硬核分享,云原生中间件如何加速业务发展

云原生中间件作为云原生架构中的关键组件,在核心能力建设、业务连续性、生态丰富性等诸多方面也面临着一系列挑战。本文分享自华为云社区《云原生中间件,构筑软件安全可信的连接桥梁》,作者: 华为云PaaS服务小智。 近日,在华为云开发者大会2024期间,来自华为云PaaS服务,…

KES数据库实践指南:探索KES数据库的事务隔离级别

本文深入探讨了KES数据库中的并发控制机制和事务隔离级别的重要性及实施方法。我们从并发控制的基本概念出发,详细解释了ACID原则如何通过不同的隔离级别得以实现,以及在串行化与并行执行之间的权衡取舍。通过实际操作和示例,我们展示了不同隔离级别下可能出现的脏读、不可重…

最新扣子(Coze)实战案例:图像流工具之创建一个精美的LOGO,完全免费教程

🧙‍♂️ 大家好,我是斜杠君,手把手教你搭建扣子AI应用。 📜 本教程是《AI应用开发系列教程之扣子(Coze)实战教程》,完全免费学习。 👀 关注公众号:斜杠君,可获取完整版教程。 👍🏻如果想学习AI应用搭建,请关注公众号,及时获取最新免费教程。温馨提示:本文内…

2024年6.23-6.26学习总结

2024年6.23--6.26学习总结 考试 24号考计算机网络,26号考形式语言与自动机。这几天基本都在复习。 形式语言与自动机 dfa极小化 1.先删去不可达状态和陷阱态。 2.假如状态有q1,q2,q3,q4,q5,q6,q7,q8,先将所有终止状态取出分为一组比如{q6,q8},然后在另一组中找到无法区分的状…

大型能源电力集团需要什么样的总部数据下发系统?

能源电力集团的组织结构是一个复杂的系统,包括多个职能部门和子分公司。这些子分公司负责具体的电力生产、销售、运维等业务。这些部门和公司协同工作,确保电力生产的顺利进行,同时关注公司的长期发展、市场拓展、人力资源管理、财务管理和公司治理等方面。由于大型能源电力…

ros slam microros之H电桥电机驱动原理介绍

一、电机驱动原理介绍正式编写代码前,我们先了解下电机驱动的原理,以便于我们了解我们如何才能通过代码控制电机的转速和正反转。1.1 H桥电路让电机动起来只需要通电就行,比如我们用的额定电压为12V 130RPM的电机,当给到12V的电压时可以达到额定转速130转/分,但如果我们给…

ros slam 之移动机器人常用传感器

本节我们对移动机器人底盘结构进行简单的介绍,并着重介绍FishBot基础版的组成结构。 对于一个移动底盘来说,所要提供的核心功能有两个-感知和执行能力,我们分别进行介绍。一、感知-传感器所谓感知即通过给类传感器获取环境信息的能力。在移动机器人中,我们常用的传感器有 距…

VMware ESXi 8.0U3 macOS Unlocker OEM BIOS HPE (慧与) 定制版

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS HPE (慧与) 定制版VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS HPE (慧与) 定制版 ESXi 8.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士通)、NEC…

day33-Django3.2(二)

四、视图 django的视图主要有2种,分别是函数视图和类视图.现在刚开始学习django,我们先学习函数视图(FBV),后面再学习类视图[CBV]. 4.1、请求方式 web项目运行在http协议下,默认肯定也支持用户通过不同的http请求发送数据来。django支持让客户端只能通过指定的Http请求来访问到…