【STM32】【HAL库】定时器编码器模式测速

这篇具有很好参考价值的文章主要介绍了【STM32】【HAL库】定时器编码器模式测速。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

概述

HAL设置

 定时器的编码器模式

定时器设置

 常用函数

代码


概述

电机AB相增量型编码器的介绍和解码方法在这里介绍过了

电机编码器https://blog.csdn.net/m0_57585228/article/details/125791283

测速可以使用外部中断进行脉冲计数

很多型号的单片机中有专门的电路来计算脉冲的速度和方向,也就是定时器的编码器模式

因为是硬件计数,所以计数频率可以很高,性能比软件来的好,使用也比较方便

但是需要连接到指定的GPIO

这里以常见的4倍频测速 为例子进行设置

HAL设置

要开启:

定时器的编码器模式

定时器中断

一个周期性的定时器及中断

 定时器的编码器模式

开启编码器模式

【STM32】【HAL库】定时器编码器模式测速

 编码器的设置

【STM32】【HAL库】定时器编码器模式测速

【STM32】【HAL库】定时器编码器模式测速  

 解释一下

Polarity:是表示在哪个边沿(上升沿或者下降沿)更新数值

这个比较容易被误解,不管选择哪个,都是会在两种边沿进行计数

只是表示在哪个边沿进行更新数值

定时器设置

间隔一个固定的时间产生中断,这里设置的是10ms

【STM32】【HAL库】定时器编码器模式测速

【STM32】【HAL库】定时器编码器模式测速

 常用函数

看这个的对应部分https://mp.csdn.net/mp_blog/creation/editor/125279297

代码

在main的初始化后循环之前加入

    HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL); //开启编码器模式
    HAL_TIM_Base_Start_IT(&htim2);                  //开启编码器的中断
    HAL_TIM_Base_Start_IT(&htim3);                  //开启定时器的中断

中断回调函数

int32_t Speed = 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    int16_t zj;
    if (htim == &htim2) //编码器
    {
    }
    else if (htim == &htim3) //计算转速10ms
    {
        zj = __HAL_TIM_GetCounter(&htim2);//获取计数值
        __HAL_TIM_SetCounter(&htim2, 0);//清空计数值
        Speed = (float)zj / (4 * 96) * 100 * 60;//计算转速
        printf("%d\r\n", Speed);//输出转速
    }
}

 在这个函数中根据之前的公式计算处转速

这里要注意:

1.数据范围,不能溢出

2.正数代表正转,负数代表反转

3.需要加入强转(float),因为涉及到了除法,需要避免出现因为舍去位数,导致一直出现0

(或者乘法放到前步)

到最后给速度赋值时在进行丢失小数位(当然也可以直接用小数进行运算)文章来源地址https://www.toymoban.com/news/detail-417501.html

到了这里,关于【STM32】【HAL库】定时器编码器模式测速的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【单片机】STM32单片机读取旋转编码器,TIM定时器编码器模式捕获,程序

    旋转编码器简单来说,就是会输出2个PWM,依据相位可以知道旋转方向,依据脉冲个数可以知道旋转的角度。一般旋转一圈有一个固定数值的脉冲个数。 旋转编码器广泛用于电机、或者角度传感器,STM32的定时器可以直接接入这两个波形获取到信息。 前两个引脚(接地和Vcc)

    2024年02月13日
    浏览(38)
  • STM32定时器捕获编码器模式测速和方向测不准问题

    ** 问题概述 关于STM32编码器模式电机测速的资料网上一抓一大把,却发现真的拿过来用还是有问题的,比如刚刚做了个东西,是个个头比较大的麦克纳姆轮车,控制运动就需要精确的测量转速和方向,我用的是直流有刷、减速比90、11线霍尔编码器的减速电机。 原本想着用个

    2024年02月15日
    浏览(40)
  • 初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式

    上次文章写了编码器是如何工作的,今天就来用STM32F103C8T6的TIM3的通道1跟通道2编写一个编码器识别程序。 话不多说,上教程! 选择外部高速时钟源HSE 选择中断模式触发下降沿有效 默认是上拉输入 添加用户标签为SWITCH 使能NVIC配置 选择编码器模式 分频值设置为2-1 计数值设

    2024年02月12日
    浏览(33)
  • STM32一个定时器同时配置编码器和PWM输出时PWM无法正常输出的原因【避坑】

             最近我在做写代码的时候,因为定时器的资源紧张,就在一个定时器上同时配置了编码器和PWM,发现PWM无法正常输出,查了很久发现网上资料不多,在仔细翻阅手册研究后才发现是 时钟信号 的问题。 具体原因 定时器在设置编码器模式后,计数的时钟源就会变成编

    2024年02月04日
    浏览(44)
  • stm32编码器电机测速(hal库)

    记录一下今天参考别人的代码实现了四个电机的测速。   编码器被广泛应用于电机测速,实现电机闭环控制 。所以不论是自己做小车还是后续参加各种比赛,必须要学会编码器测速。         编码电机其实就是一个带有编码器的电机,我的这个电机是一个带霍尔传感器的

    2024年02月13日
    浏览(43)
  • stm32 HAL库 4096线ABZ编码器

    @[TOC]目录 买的是这个 AB相代表计数方向,Z代表过零点 也可以选上DMA 中断 找一个空闲管脚 打开对应中断 用DMA 过机械零点就+/-360

    2024年04月17日
    浏览(70)
  • STM32 HAL库 AS5600编码器程序

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STM32 HAL库 AS5600编码器程序 提示:这里可以添加本文要记录的大概内容: AS5600磁性旋转位置编码器是一款可编程、12位高分辨率、非接触式的设备,具有卓越的可靠性和耐久性。这个旋转位置传感器提供

    2024年02月20日
    浏览(34)
  • 【STM32】HAL库自学记录-旋转编码器的使用

    通过本文可学会两种实现判断旋转编码器正转反转的方法,可根据自己的应用场景来选择使用哪种方法。 1、芯片:STM32F103RCT6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、旋转编码器模块 5、XCOM V1.4串口软件 图中C端为GND。 方向 :A相和B相相差一个相位,一般来说是90°。A相信号在

    2024年02月11日
    浏览(42)
  • 【嵌入式】STM32计时器编码器接口模式使用

    使用STM32调试电机或传感器时经常会使用到计数器的编码器接口模式,本文主要记录该模式的固件库配置方法,并给出使用该模式获取光栅测距值的实例。 硬件: STM32F103C8T6 光栅测距传感器 编码器接口模式为STM32计时器的一种特殊使用模式,该模式下可对编码器输出的脉冲信

    2024年02月20日
    浏览(39)
  • STM32(HAL库)——光电编码器、M/T法测量电机转速

    目录 一 编码器 二 电机测试的三种方法 三 STM32CubeMx配置 四 程序编写 五 实验结果 常见的用于电机测速的编码器有霍尔编码器和光电编码器两种。两者测速的基本原理不同,但都是输出两路相位差90°的脉冲信号。这里以光电编码器为例介绍一下测速原理。 光电编码器是由光

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包