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

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 小时前
Makefile快速上手笔记
linux·学习
崖边看雾15 小时前
记录Python学习——第一章环境安装下载(Windows)
windows·python·学习·pycharm
dankokoko15 小时前
7.13-7.14学习
学习
嵌入式-老费16 小时前
esp32开发与应用(用好ttl转485模块)
stm32·单片机·嵌入式硬件
一楼的猫16 小时前
网文AI辅助怎么过审?番茄200+维度检测与去AI味实战
人工智能·学习·机器学习·自然语言处理·ai写作
謓泽16 小时前
【6.30】芯片 Bring-up 三步核心|从短路检查到 SPI 排障全拆解!
单片机·嵌入式硬件
2CM_Embed16 小时前
Quartus II 工程编译与 FPGA 下载流程记录
嵌入式硬件·fpga开发
OIDCAT16 小时前
国产USB转千兆网卡芯片CH398 VLAN应用
网络·嵌入式硬件·国产·usb转千兆网卡
Industio_触觉智能17 小时前
RK3576开发板GPIO驱动入门教程,基于触觉智能开发板教学-上
嵌入式硬件·硬件工程·智能硬件·开发板·gpio·瑞芯微·rk3576
渣渣灰飞17 小时前
MySQL 系统学习 第五阶段:企业级 MySQL 实战开发 第一章:企业数据库设计规范
数据库·学习·mysql