里程计(一) 数学模型及STM32实现

news2025/8/2 23:13:47

一、首先确保接线和硬件没问题,并确定控制逻辑

        测试单片机-驱动板-电机连线是否接通:控制板IN1,IN2一个接3.3V一个接GND,ENA1接3.3V测左电机;控制板IN3,IN4一个接3.3V一个接GND,ENA2接3.3V测右电机。

        在电机已经安装完毕的情况下,分别记录小车前进时驱动器IN1、IN2、IN3、IN4的逻辑电平,且使用IN1、IN2控制左电机,IN3、IN4控制右电机。

二、简单的介绍下定时器吧,无论是电机调速所需的PWM还是编码器(码盘)解码都需要定时器

        STM32F1 系列中,除了互联型的产品,共有 8 个定时器,分为基本定时器,通用定时器和高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO。通用定时器 TIM2/3/4/5 是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部 IO。高级定时器 TIM1/8是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有 8 个外部 IO。

        划重点,为什么使用定时器?因为定时器的运行不占用CPU计算资源!

三、用单片机控制电机

        1.1先用 TIM3的两个(因为有两个电机)通道CH1(PA6)、CH2(PA7)输出PWM  参考我的另一篇文章;

        使用的电机驱动板控制逻辑:

         1.2  另外使用4个引脚(PG0、1、2、4)进行输出控制,使两个轮子一正传一反转配置如下:

 生成代码后需要在main.c开启PWM,下载代码后理想情况下差速底盘会原地转圈。

 四、轮速里程计数学模型(两轮差速)

4.1  AB相编码器波形输出原理图   参考

4.2   结合我使用的硬件参数:基础脉冲11,减速比34,175rpm(转/s)。并且程序用4倍频解码(一个脉冲周期能捕获4个信号)

        假设t时间内输出了y个信号,求电机转的圈数x:  y=4*x*34*11(1),则速率x':x'=x/t(2);左右轮子的转速:\wp _{l}=2*3.14*x'_{l}  ,\wp _{r}=2*3.14*x'_{r}(3)

4.3   小车的速度及航迹推演:

将(2)(3)代入v和w的计算式,可消除t,得\bigtriangleup d=3.14*r*x_{l}+3.14*r*x_{r},\bigtriangleup \theta =3.14*r*x_{l}/l-3.14*r*x_{r}/l

补充:y为利用滴答定时器(毫秒级)每隔一段时间t进行读取定时器的捕获值。

至于为啥用滴答而不使用TIM定时器,可参考chatGPT给出的回答

 

五、STM32工程源码

(待上传到gitee,后续更新链接) 

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

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

相关文章

SAP ABAP中的数据类型 Data Types

简单来说分两种: 数据字典里定义的在ABAP程序里定义的 文章目录1. ABAP数据字典里的1.1 数字型的1.2 字符型1.3 字节型1.4 特殊类型2. 预定义的ABAP数据类型2.1 预定义数字型2.2 预定义字符型2.3 预定义字节型1. ABAP数据字典里的 1.1 数字型的 用在数学计算里的…

IP、MAC和端口号——网络通信中确认身份信息的三要素

目录 🌏 IP地址 🌏 MAC地址 🌏 端口号 IP、MAC和端口号——网络通信中确认身份信息的三要素 在茫茫的互联网海洋中,要找到一台计算机非常不容易,有三个要素必须具备,它们分别是 IP 地址、MAC 地址和端口…

【Galois工具开发之路】关于ClassFileTransformer的注意点

关于ClassFileTransformer 该接口是javaagent的 Instrumentation.addTransformer 方法的入参之一,用于给加载的类添加一个类转换器,确保在类进入main方法之前,对类进行字节码插桩。 接口函数说明 该接口只有一个方法,即 byte[…

[SSD固态硬盘技术 19] 谁是数据的守护神? 盘内RAID1/RAID5图文详解_盘内数据冗余保护

版权声明: 付费作品,禁止转载前言提到冗余保护,最容易想到的就是RAID(Redundant Arrays of Independent Disks) , 独立冗余磁盘阵列。它是一种把多块独立的物理硬盘按不同方式组合形成一个硬盘组,以此提供比单个硬盘更高的存储性能…

华为OD机试题,用 Java 解【TLV 解码】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

数据库浅谈之 LLVM

数据库浅谈之 LLVM HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是数据库浅谈系列,收录在专栏 DATABASE 中 😜😜😜 本系列阿呆将记录一些数据库领域相关的知识 &#x1f3c…

【CJSON】嵌入式芯片上基于USB HOST的CJSON文件库移植与应用

一 CJSON简介项目遇到了一个需求,就是需要通过U盘或者其他外接设备,与板子(嵌入式芯片使用的是LPC1857)进行交互。交互的形式有两种:一种是预存在外接U盘中的配置信息CFG,接上U盘之后,嵌入式芯片…

【HTTP——了解HTTP协议及状态码】

一, 什么是通信通信,就是信息的传递和交换。通信三要素:通信的主体,通信的内容,通信的方式现实生活中的通信:我打电话叫小明来我家吃饭【其中通信的主体是,我,小明。通信内容是&…

华为OD机试题,用 Java 解【最小施肥机能效】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

【AI写作】《如何利用 RPA 实现自动化获客?》

写一篇文章《如何利用 RPA 实现自动化获客?》,不少于3000字,使用markdown格式。分10各章节,细化到3级目录。 文章目录 1. 什么是 RPA (Robotic Process Automation)?RPA 的应用场景2. RPA 自动化获客实战2.1 RPA 应该领域2.2 自动化选品 – 电商选品2.3 自动化获客 – 百…

Biome-BGC在模拟过程中,如何使用Linux、Python等,完成前处理和后处理工作???

在Biome-BGC模型中,对于碳的生物量积累,采用光合酶促反应机理模型计算出每天的初级生产力(GPP),将生长呼吸和维持呼吸减去后的产物分配给叶、枝条、干和根。生物体的碳每天都按一定比例以凋落方式进入凋落物碳库;对于水份输运过程…

【C语言】数据的存储

☃️内容专栏:【C语言】进阶部分 ☃️本文概括: C语言中的数据类型及其存储方式。 ☃️本文作者:花香碟自来_ ☃️发布时间:2023.2.24 目录 一、数据类型详细介绍 1.1 基本的数据类型 1.2 整型家族 1.3 构造类型 1.4 指针类型…

压力传感器MPX5700D/MPX5700GP/MPX5700AP产品概述、特征

MPX5700系列压阻式换能器是最先进的单片硅压力传感器,可广泛用于各种应用,特别是采用A/D输入微控制器或微处理器的应用。这一获得专利的单元件传感器集合了高级微加工技术、薄膜金属化、双极工艺,能够提供精确的、与所施加压力成正比的高电平…

Java面向对象:继承特性的学习

本文介绍了面向对象的继承特性: 什么是继承 继承的概念 Java中继承的语法 在继承下父类成员的访问 super和this关键字 父类和子类构造方法 在继承下类中出现初始化代码的执行顺序 父类成员的访问权限对子类的可见性 Java的继承关系 final关键字 认识继承和组合关系 继承特性的学…

Pytorch学习笔记(7):优化器、学习率及调整策略、动量

目录 一、优化器 1.1 优化器的介绍 1.2 optimizer的属性 1.3 optimizer的方法 1.4 常用优化器 torch.optim.SGD 二、学习率 2.1 学习率介绍 2.2 为什么要调整学习率 2.3 pytorch的六种学习率调整策略 (1)StepLR (2)Mu…

linux:http服务器搭建及实验案例

目录准备工作http服务器各个配置文件大概说明实验1:访问不同ip获得不同网页实验2:同一ip访问不同端口获得不同网页准备工作 1,安装http服务 2,将 /etc/selinux/config 文件下面的 SELINUX值改为 disabled 或者 permissive 。 3&a…

如何基于无代码平台实现60个园区、3万台设备的管理?

产业园区的建设是经济发展的集中承载区域。数字化快速发展迭代趋势下,对于一个全国领先的园区综合建设、运营集团来说,对跨园区的监管服务压力也日益增大。特别是随着全国范围内化工、物流、生产等各业态园区快速建设和扩张,园区内消防、安全…

GSEAmining | 来看看你的GSEA结果是不是需要瘦身啦!~

1写在前面 最近真是累的不行,今天抽空写一下新的教程,关于人人都会做的GSEA(Gene Set Enrichment Analysis)。 但有时候我们做完GSEA后结果实在太多,无法确定其中重要的生物学意义,难以解释。🤨…

Servlet笔记(4):表单数据

1、Servlet表单数据的方法 GET方法 http://localhost/hello?key1value1&key2value2GET方法有大小限制:请求字符串中最多只能由【1024】个字符 这些信息通过QUERY_STRING头传递,并通过【QUERY_STRING】环境变量访问,Servlet通过【doGet(…

SpringCloud - Gateway网关路由

目录 网关初步介绍 搭建网关服务 路由断言工厂Route Predicate Factory 路由过滤器 GatewayFilter 全局过滤器 GlobalFilter 过滤器执行顺序 网关的cors跨域配置 网关初步介绍 不是所有的请求,都能访问服务,所以需要网关对来访问的请求进行提前判…