打印
[应用相关]

STM32 定时器编码器模式时,如何理解编码器计数

[复制链接]
717|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
610u|  楼主 | 2024-3-31 12:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
编码器的使用
增量式编码器倍频技术

增量式编码器输出的脉冲波形信号形式常见的有两种:

一种是占空比 50% 的方波,通道 A 和 B 相位差为 90°;
另一种则是正弦波这类模拟信号,通道 A 和 B 相位差同样为 90°。
对于第 1 种形式的方波信号,如果把两个通道组合起来看的话,可以发现 A 和 B 各自的上升沿和下降沿都能计数,至少在 1/2 个原始方波周期内就可以计数一次,最多 1/4 个原始方波周期。这样计数频率就是原始方波信号的 2 倍或 4 倍,换句话说就是,将编码器的分辨率提高了 2 到 4倍,具体如下图所示。

图中的方波信号如果只看其中一个通道的上升沿,那计数频率就等于这个通道信号的频率。如果在通道 A 的上升沿和下降沿都进行计数,计数频率就是通道 A 的两倍,即 2 倍频。如果同时对两个通道的上升沿和下降沿都计数,那计数频率就变成了原始信号的 4 倍,即 4 倍频。

使用特权

评论回复
沙发
610u|  楼主 | 2024-3-31 12:27 | 只看该作者
假设有个增量式编码器它的分辨率是 600PPR,能分辨的最小角度是 0.6°,对它进行 4 倍频之后就相当于把分辨率提高到了 600*4=2400PPR,此时编码器能够分辨的最小角度为 0.15°。

常用测速方法简介
• M 法:又叫做频率测量法
这种方法是在一个固定的定时时间内(以秒为单位),统计这段时间的编码器脉冲数,计算速度值。设编码器单圈总脉冲数为 C,在时间 T0 内,统计到的编码器脉冲数为 M0,则转速 n 的计算公式为:


公式中的编码器单圈总脉冲数 C 是常数,所以转速 n 跟 M0 成正比。这就使得在高速测量时 M0变大,可以获得较好的测量精度和平稳性,但是如果速度很低,低到每个 T0 内只有少数几个脉冲,此时算出的速度误差就会比较大,并且很不稳定。也有一些方法可以改善 M 法在低速测量的准确性,上一节提到的增量式编码器倍频技术就是其中一种,比如原本捕获到的脉冲 M0 只有4 个,经过 4 倍频后,相同电机状态 M0 变成了 16 个,也就提升了低速下的测量精度。

使用特权

评论回复
板凳
610u|  楼主 | 2024-3-31 12:27 | 只看该作者
T 法:又叫做周期测量法
这种方法是建立一个已知频率的高频脉冲并对其计数,计数时间由捕获到的编码器相邻两个脉冲的间隔时间 TE 决定,计数值为 M1。设编码器单圈总脉冲数为 C,高频脉冲的频率为 F0,则转速 n 的计算公式为:

公式中的编码器单圈总脉冲数 C 和高频脉冲频率 F0 是常数,所以转速 n 跟 M1 成反比。从公式可以看出,在电机高转速的时候,编码器脉冲间隔时间 TE 很小,使得测量周期内的高频脉冲计数值 M1 也变得很少,导致测量误差变大,而在低转速时, TE 足够大,测量周期内的 M1 也足够多,所以 T 法和 M 法刚好相反,更适合测量低速。

使用特权

评论回复
地板
610u|  楼主 | 2024-3-31 12:28 | 只看该作者
M/T 法:这种方法综合了 M 法和 T 法各自的优势,既测量编码器脉冲数又测量一定时间内的高频脉冲数。
在一个相对固定的时间内,计数编码器脉冲数 M0,并计数一个已知频率为F0 的高频脉冲,计数值为 M1,计算速度值。设编码器单圈总脉冲数为 C,则转速 n 的计算公式为:

由于 M/T 法公式中的 F0 和 C 是常数,所以转速 n 就只受 M0 和 M1 的影响。电机高速时, M0 增大, M1 减小,相当于 M 法,低速时, M1 增大, M0 减小,相当于 T 法。

使用特权

评论回复
5
610u|  楼主 | 2024-3-31 12:28 | 只看该作者
STM32 的编码器接口简介
STM32 芯片内部有专门用来采集增量式编码器方波信号的接口,这些接口实际上是 STM32 定时器的其中一种功能。不过编码器接口功能只有高级定时器 TIM1、 TIM8 和通用定时器 TIM2 到TIM5 才有。

我们重点关注编码器接口是如何实现信号采集和倍频的。

STM32使用的是定时器的编码器模式,定时器TIMx->CNT寄存器接收到的是编码器方波的数量。这里怎么处理是由STM32硬件来完成,大家理解的时候不需要太过纠结。

通过读取CNT的值,可以知道单位时间内接收到多少方波,进而可以得出电机的转速、方向和转动的圈数。

使用特权

评论回复
6
中国龙芯CDX| | 2024-3-31 22:59 | 只看该作者
STM32使用的是定时器的编码器模式,定时器TIMx->CNT寄存器接收到的是编码器方波的数量

使用特权

评论回复
7
药无尘| | 2024-4-1 13:52 | 只看该作者
M/T法测速更为合理,高低速均可检测

使用特权

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

本版积分规则

48

主题

403

帖子

0

粉丝