[应用相关] STM32 HAL库实现编码器测速

[复制链接]
2199|18
 楼主| lxs0026 发表于 2023-7-29 16:46 | 显示全部楼层 |阅读模式
STM32 HAL库实现编码器测速
(还开了串口1用来调试,下文没写;然后那个short的用法就是看平衡小车之家(就是喵呜实验室的文档里头的,用法确实惊艳),文末贴了工程)
编码器接口模式
TI1和TI2连接编码器,开启定时器编码器模式后,根据TI1和TI2的信号转换序列,产生对应的计数脉冲和方向信号(此时是硬件控制CR寄存器的DIR位,软件不能再进行编程控制) 编码器接口只能是TI1和TI2,TI3和TI4是不具备编码器接口功能的。
2278864c4d1e6c7a7c.png

 楼主| lxs0026 发表于 2023-7-29 16:46 | 显示全部楼层
对于计数器的计数和方向判断,如下:
7881964c4d1f23b99f.png
 楼主| lxs0026 发表于 2023-7-29 16:47 | 显示全部楼层
cubeMx配置:直接选择一个通用定时器或者高级定时器,点开编码器模式即可

1709764c4d2052f2d1.png

之后直接生成代码即可
 楼主| lxs0026 发表于 2023-7-29 16:47 | 显示全部楼层
Keil:
编码器数据读取函数:
1839164c4d21a23903.png
强制转换short的作用:实现正转读数为正,反转读数为负。
实现原理:寄存器所读出来的值是0-65535,而short是2字节,技术范围是-32768-32767,当寄存器读到32767的时候经过short强制转换就会溢出,使得寄存器的读数32768经过强制转换编程-32768,再下一个32769转换成-32767。所以,电机反转的时候读出的数就是反方向的速度值,不需要用 65535 去减去读出的值再加上负号才可以得到方便观察的值
 楼主| lxs0026 发表于 2023-7-29 16:48 | 显示全部楼层
Main.c需要添加的:

8552864c4d27029575.png
 楼主| lxs0026 发表于 2023-7-29 16:49 | 显示全部楼层
实现效果:

当电机不转的时候,编码器读数为0,当反转的时候读数为负数,正转时候为正数;由于我前面设置的是Encoder TI1&TI2,所以他是四倍频。如果要计算圈数(四倍频为例),则需要知道该电机的单相单圈脉冲,计算公式:圈数=所读的脉冲数/单相单圈脉冲/4
3741064c4d29009230.png

注意:要接编码器正负极,不然读到的数据无效且保持在一个数上下浮动。
 楼主| lxs0026 发表于 2023-7-29 16:49 | 显示全部楼层
完整工程:(指南者F103的,其实可以移植encoder的.c和.h)
链接:https://pan.baidu.com/s/1xmDYSHZCCOrg66TMNV7uSg
提取码:ld9i
mattlincoln 发表于 2023-8-4 13:20 | 显示全部楼层
STM32 TIM3 光电编码器 测速
jonas222 发表于 2023-8-4 14:52 | 显示全部楼层
定时器初始化好以后,任何时候CNT寄存器的值就是编码器的位置信息,正转增加,反转减少
pixhw 发表于 2023-8-4 20:58 | 显示全部楼层
在HAL库中,需要配置一个定时器来捕获编码器的脉冲。确保正确选择定时器,并配置其输入捕获模式。
burgessmaggie 发表于 2023-8-4 21:25 | 显示全部楼层
编码器可以工作在不同的模式下,如增量模式和绝对模式。
bestwell 发表于 2023-8-4 22:46 | 显示全部楼层
编码器信号可能会存在噪声和抖动,为了提高测速的准确性和稳定性,可以考虑实现滤波算法或去抖动机制
modesty3jonah 发表于 2023-8-5 10:24 | 显示全部楼层
配置系统时钟以支持编码器测速功能,并使能相关的GPIO引脚。使用HAL库提供的相应函数来初始化和配置GPIO引脚的工作模式、中断触发方式等。
jkl21 发表于 2023-8-5 12:49 | 显示全部楼层
在HAL库中,需要根据编码器的工作模式进行相应的配置。
macpherson 发表于 2023-8-5 14:21 | 显示全部楼层
正确地连接编码器的输出信号至STM32微控制器的GPIO引脚。
1988020566 发表于 2023-8-7 07:50 | 显示全部楼层
使用HAL库提供的接口函数来配置编码器接口(例如TIMx)的相关参数,包括计数模式(如正常模式或反向模式)、计数方向、计数精度等。
ingramward 发表于 2023-8-7 08:15 | 显示全部楼层
编码器测速通常使用定时器来计算脉冲的频率。
Uriah 发表于 2024-3-1 07:15 | 显示全部楼层

作为功率开关管和整流器的散热部分
帛灿灿 发表于 2024-3-1 09:11 | 显示全部楼层

在主要开关电源拓扑中主要的电流环路
Bblythe 发表于 2024-3-1 10:14 | 显示全部楼层

每条大电流的地线要短而宽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

1290

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部