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

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
相关推荐
叼烟扛炮6 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
蒸蒸yyyyzwd7 小时前
学习笔记 八股手撕
笔记·学习
起个网名真难~7 小时前
STM32F103_Bootloader_从零到UART升级成功_博客原稿
stm32·单片机·嵌入式硬件
二本咕咕-机械转码8 小时前
FreeRTOS深入解析(一)_链表与并发保护——哨兵循环链表、排序键游标、临界区与关调度
单片机·算法·链表
留岁9 小时前
大模型推理部署 · 学习文档
学习
Zwawa9 小时前
串口命令如何从字符串长成协议:帧头、长度、校验和与状态机
c语言·单片机·嵌入式
小李不想当小白10 小时前
BKP备份寄存器与RTC实时时钟(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
陈飞EXCEL11 小时前
北京杰飞 IT 旗下妙码生花少儿Python编程上线两大学习系统
开发语言·python·学习
SLAM必须dunk11 小时前
Agent入门学习一
学习
Zw-awa11 小时前
串口命令如何从字符串长成协议:帧头、长度、校验和与状态机
stm32