打印
[应用相关]

STM32 HAL库实现编码器测速

[复制链接]
641|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxs0026|  楼主 | 2023-7-29 16:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
STM32 HAL库实现编码器测速
(还开了串口1用来调试,下文没写;然后那个short的用法就是看平衡小车之家(就是喵呜实验室的文档里头的,用法确实惊艳),文末贴了工程)
编码器接口模式
TI1和TI2连接编码器,开启定时器编码器模式后,根据TI1和TI2的信号转换序列,产生对应的计数脉冲和方向信号(此时是硬件控制CR寄存器的DIR位,软件不能再进行编程控制) 编码器接口只能是TI1和TI2,TI3和TI4是不具备编码器接口功能的。


使用特权

评论回复
沙发
lxs0026|  楼主 | 2023-7-29 16:46 | 只看该作者
对于计数器的计数和方向判断,如下:

使用特权

评论回复
板凳
lxs0026|  楼主 | 2023-7-29 16:47 | 只看该作者
cubeMx配置:直接选择一个通用定时器或者高级定时器,点开编码器模式即可



之后直接生成代码即可

使用特权

评论回复
地板
lxs0026|  楼主 | 2023-7-29 16:47 | 只看该作者
Keil:
编码器数据读取函数:

强制转换short的作用:实现正转读数为正,反转读数为负。
实现原理:寄存器所读出来的值是0-65535,而short是2字节,技术范围是-32768-32767,当寄存器读到32767的时候经过short强制转换就会溢出,使得寄存器的读数32768经过强制转换编程-32768,再下一个32769转换成-32767。所以,电机反转的时候读出的数就是反方向的速度值,不需要用 65535 去减去读出的值再加上负号才可以得到方便观察的值

使用特权

评论回复
5
lxs0026|  楼主 | 2023-7-29 16:48 | 只看该作者
Main.c需要添加的:


使用特权

评论回复
6
lxs0026|  楼主 | 2023-7-29 16:49 | 只看该作者
实现效果:

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


注意:要接编码器正负极,不然读到的数据无效且保持在一个数上下浮动。

使用特权

评论回复
7
lxs0026|  楼主 | 2023-7-29 16:49 | 只看该作者
完整工程:(指南者F103的,其实可以移植encoder的.c和.h)
链接:https://pan.baidu.com/s/1xmDYSHZCCOrg66TMNV7uSg
提取码:ld9i

使用特权

评论回复
8
mattlincoln| | 2023-8-4 13:20 | 只看该作者
STM32 TIM3 光电编码器 测速

使用特权

评论回复
9
jonas222| | 2023-8-4 14:52 | 只看该作者
定时器初始化好以后,任何时候CNT寄存器的值就是编码器的位置信息,正转增加,反转减少

使用特权

评论回复
10
pixhw| | 2023-8-4 20:58 | 只看该作者
在HAL库中,需要配置一个定时器来捕获编码器的脉冲。确保正确选择定时器,并配置其输入捕获模式。

使用特权

评论回复
11
burgessmaggie| | 2023-8-4 21:25 | 只看该作者
编码器可以工作在不同的模式下,如增量模式和绝对模式。

使用特权

评论回复
12
bestwell| | 2023-8-4 22:46 | 只看该作者
编码器信号可能会存在噪声和抖动,为了提高测速的准确性和稳定性,可以考虑实现滤波算法或去抖动机制

使用特权

评论回复
13
modesty3jonah| | 2023-8-5 10:24 | 只看该作者
配置系统时钟以支持编码器测速功能,并使能相关的GPIO引脚。使用HAL库提供的相应函数来初始化和配置GPIO引脚的工作模式、中断触发方式等。

使用特权

评论回复
14
jkl21| | 2023-8-5 12:49 | 只看该作者
在HAL库中,需要根据编码器的工作模式进行相应的配置。

使用特权

评论回复
15
macpherson| | 2023-8-5 14:21 | 只看该作者
正确地连接编码器的输出信号至STM32微控制器的GPIO引脚。

使用特权

评论回复
16
1988020566| | 2023-8-7 07:50 | 只看该作者
使用HAL库提供的接口函数来配置编码器接口(例如TIMx)的相关参数,包括计数模式(如正常模式或反向模式)、计数方向、计数精度等。

使用特权

评论回复
17
ingramward| | 2023-8-7 08:15 | 只看该作者
编码器测速通常使用定时器来计算脉冲的频率。

使用特权

评论回复
18
Uriah| | 2024-3-1 07:15 | 只看该作者

作为功率开关管和整流器的散热部分

使用特权

评论回复
19
帛灿灿| | 2024-3-1 09:11 | 只看该作者

在主要开关电源拓扑中主要的电流环路

使用特权

评论回复
20
Bblythe| | 2024-3-1 10:14 | 只看该作者

每条大电流的地线要短而宽

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

1062

帖子

1

粉丝