编码器的使用
增量式编码器倍频技术

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

  1. 一种是占空比 50% 的方波,通道 A 和 B 相位差为 90°;
  2. 另一种则是正弦波这类模拟信号,通道 A 和 B 相位差同样为 90°。

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

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

假设有个增量式编码器它的分辨率是 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 个,也就提升了低速下的测量精度。

• T 法:又叫做周期测量法
这种方法是建立一个已知频率的高频脉冲并对其计数,计数时间由捕获到的编码器相邻两个脉冲的间隔时间 TE 决定,计数值为 M1。设编码器单圈总脉冲数为 C,高频脉冲的频率为 F0,则转速 n 的计算公式为:

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

• M/T 法:这种方法综合了 M 法和 T 法各自的优势,既测量编码器脉冲数又测量一定时间内的高频脉冲数。
在一个相对固定的时间内,计数编码器脉冲数 M0,并计数一个已知频率为F0 的高频脉冲,计数值为 M1,计算速度值。设编码器单圈总脉冲数为 C,则转速 n 的计算公式为:

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

STM32 的编码器接口简介
STM32 芯片内部有专门用来采集增量式编码器方波信号的接口,这些接口实际上是 STM32 定时器的其中一种功能。不过编码器接口功能只有高级定时器 TIM1、 TIM8 和通用定时器 TIM2 到TIM5 才有。编码器接口用到了定时器的输入捕获部分,功能框图如下图所示。

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

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

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

STM32 定时器编码器模式时,如何理解编码器计数相关推荐

  1. stm32定时器从模式解析

    首先,目前在网上没有找到很多资料,所以在此做一个总结 定时器从模式这里只做三种内部分析 复位模式 门控模式 触发模式 当主定时器的信号出现上升沿或者下降沿时,会触发从定时器的相应动作 复位模式 主定时 ...

  2. STM32定时器溢出模式设置

    STM32定时器溢出模式设置 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:MDK4.23 MCU:STM32F10 ...

  3. STM32定时器溢出模式计时设置

    STM32定时器溢出模式设置 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:MDK4.23 MCU:STM32F10 ...

  4. STM32 定时器主从模式,上电立即输出脉冲,输出有尖刺,解决方法

    初次上电,第一次输出N个脉冲,后面多出一个尖刺波形 为了解决以上问题,定时器上电初始化时,装载值要多减一个计数值,

  5. stm32编码器正反转计数程序_第六章:STM32CubeMx 定时器编码器模式基本使用方法...

    前言: 增量式编码器在实际应用中还是很常见.stm32的定时器带的也有编码器模式.所用的编码器是有ABZ三相,其中ab相是用来计数,z相输出零点信号.AB相根据旋转的方向不同,输出的波形如下图所示: ...

  6. STM32——编码器测速原理及STM32编码器模式

    1. 编码器概述 编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感 器,我们可以通过编码器测量到底位移或者速度信息.编码器从输出数据类型上 分,可以分为增量式编码器和绝对式编码器. 从 ...

  7. 电机控制基础——定时器编码器模式使用与转速计算

    上篇电机控制基础--定时器捕获单输入脉冲原理介绍了定时器捕获输入脉冲的原理,那种方式是根据捕获的原理,手动切换上升沿与下降沿捕获,计算脉冲宽度的过程原理比较清晰,但编程操作起来比较麻烦. 对于电机测速 ...

  8. STM32定时器计数频率以及PSC和CNT、CCR1的关系

    使用环境(蓝色粗体字为特别注意内容) 1.软件环境:Win7 32 bit,Keil MDK V5.15 2.硬件环境:ALIENTEK MiniSTM32开发板.STM32F103RCT6 在STM ...

  9. 【STM32】 定时器---正交解码编码器模式详解

    增量式编码器 增量式编码器也成为正交编码器,是通过两个信号线的脉冲输出来进行数据处理,一个输出脉冲信号就对应于一个增量位移,编码器每转动固定的位移,就会产生一个脉冲信号  通过读取单位时间脉冲信号的数 ...

最新文章

  1. MySQL删除用户(DROP USER)
  2. css3玩转各种效果【资源】
  3. Android studio删除sdk的方法(图文教程)
  4. 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
  5. USACO-Section1.4 Barn Repair (贪心算法)
  6. 吃奶酪(洛谷-P1433)
  7. 关于Web面试的基础知识点--Javascript(二)
  8. 12、scala函数式编程集合
  9. wordpress php 链接,WordPress中获取页面链接和标题的相关PHP函数用法解析
  10. 实测哈啰电动车A80探索版:一辆带你行走的聪明“小神兽”
  11. Java泛型的个人理解
  12. springboot mybatis优雅的添加多数据源
  13. NLP+词法系列(一)︱中文分词技术小结、几大分词引擎的介绍与比较
  14. NFT数字艺术品热潮下,IPFS或成为其最佳的存储解决方案
  15. SQLiteSpy执行Sql语句提示No such collation sequence : PhoneBook
  16. uniapp如何引入colorUI
  17. 不同麻醉方案以及清醒条件下大鼠大脑连接模式分析
  18. 打印机相关的c语言程序,VC下打印机的使用
  19. php对参数校验(名称、地址、掩码、日期、时间、端口)
  20. 小球碰壁反弹加分_canvas实现碰壁反弹(小球)

热门文章

  1. Ardupilot飞控添加使用诺瓦泰GPS
  2. linux搭建声纹识别,声纹识别SDK-FreeSR
  3. linux如何永久获取root,Linux如何获取root权限?我只想到这些方法了,欢迎补充
  4. “一键GHOST”傻瓜式系统备份与恢复
  5. Unity 之 代码获取IOS设备型号 -- 做分辨率适配
  6. 1个英文字母、1个汉字、标点符号各占几个字节?以及文件的编码方式查看
  7. springboot整合redis做缓存
  8. MOS管当开关控制时,一般用PMOS做上管NMOS做下管的原因
  9. CPA十二--我国外币会计报表折算(转载)
  10. 微信小程序-猜拳小游戏