【嵌入式】编码器计数倍频,机械一格与电气计数

EC11K1525413-EC11K1525413编码器

看到的是:

  • 顺时针拧一下
  • encoder_cnt 不是 +1
  • 而是经常 +2

已经 碰到"编码器计数倍频"这个知识点了。


一、为什么不是加 1,而是加 2

编码器"拧一下"的机械手感一格,不一定等于定时器计数器只加 1。

因为这里有两个概念,容易混:

1. 机械一格

  • "咔哒"一下
  • "卡点"一下

这是机械刻度

2. 电气计数

这是 A/B 相在这一格过程中,产生了多少次有效边沿,被 TIM3 记了多少次数。

这是电气分辨率

这两个不一定一一对应。


二、为什么会出现 +2

编码器有两路信号:

  • A 相
  • B 相

拧一格时,A/B 相会经历状态变化。

比如某种方向可能是:

  • 00 -> 01 -> 11 -> 10 -> 00

这里面其实发生了多个边沿变化

而定时器编码器模式会根据配置,按边沿来计数。

所以:

  • 有的编码器一格可能记 1
  • 有的可能记 2
  • 有的可能记 4

三、为什么这次是 +2

如果代码里配置的是:

c 复制代码
sConfig.IC1Polarity  = TIM_ICPOLARITY_RISING;
sConfig.IC2Polarity  = TIM_ICPOLARITY_RISING;
sConfig.EncoderMode = TIM_ENCODERMODE_TI12;

这个组合可以这样理解:

  • CH1、CH2 两路都参与方向判断
  • 但你当前是按上升沿在计

所以最终你看到的有效计数,可能是每机械一格对应 2 个有效计数

如果换一种采样方式、换别的芯片实现细节、或者编码器本体触点结构不同,有时会看到 1、2、4 都不奇怪。


四、怎么理解

定时器 CNT 的单位,不一定是"机械一格",而是"编码器接口配置下的有效计数单位"。

所以:

  • 顺时针一格 ≈ +2
  • 逆时针一格 ≈ -2

后面写功能时,可以直接拿这个参数用:【目前环境下】

  • 一格 = 2 count
相关推荐
虎王物联14 小时前
STM32 HAL库串口DMA空闲中断:高效接收不定长Modbus数据帧
stm32·单片机·嵌入式硬件·dma·modbus
自小吃多15 小时前
DXF文件导入与PCB板框定义笔记
笔记·嵌入式硬件
SUNNYSPY00115 小时前
AO4402-ASEMI便携设备电源开关AO4402
单片机
是隼人16 小时前
buuctf-pwn xdctf2015_pwn200题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
大衛說16 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
单片机仿真设计17 小时前
【proteus仿真】基于 STC89C52 单片机家用智能台灯设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
2601_9507906817 小时前
深圳国产单片机厂商怎么选?技术能力与服务能力检查表
单片机·嵌入式硬件·国产mcu·芯片厂商·深圳单片机·单片机选型
吃好睡好便好17 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学运维的Kysan17 小时前
暑假运维学习打卡第二十九天8.29
学习
zbyyd18 小时前
Linux 进程间通信学习笔记
linux·笔记·学习