功能说明

编码器有什么用
配合UI设计
点击选择 长按退出 正反转加减

特点:采用增量编码器可以规避信号抖动引起的误差;

引脚说明

信号输出

A B 信号的差分输出,转到一个卡点,信号转动一个周期;
旋转一周 20个周期;
有些还有Z相,其中AB相是用来计数,z相输出零点信号。

使用逻辑分析采集信号:
逆时针

顺时针

硬件设计

电路 参考xxx


滤波消抖

芯片自带编码

这种方案可以有效防止数据抖动的影响

软件设计

使用MX(HAL)


采用双边计数(4倍)提高了精度。

软件编码

初始化编码器

HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim,  TIM_Encoder_InitTypeDef *sConfig)

开启编码器

HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)

定时读取当前的编码绝对值:(逆时针转动增大,顺时针转动减小)

encode_cnt =  __HAL_TIM_GET_COUNTER(&htim3);

判断当前的转动方向:

encode_dir =  __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3);

设置编码器当前数值:

__HAL_TIM_SetCounter(&htim3,100);

应用-编码器控制PWM占空比

舵机控制周期在20ms(频率为50Hz,对于72M主频软件计数器采用72-1分频,计数周期为20000个数),0.5ms-2.5ms(对应计数范围在500-2500,变范围为在0-2000)依次对应0度到180度;
对于PWM需要设置占空比数据在500-2500之间;

PWM的配置


转换关系

该数值不受旋转编码器绝对值的影响,又因为在编码器读计数的过程中涉及到溢出wrap的问题(0往下就回到65535),不利于数值的计算;

为方便计算,将编码的初值设置在其他位置,比如100;这样及规定了编码的数据范围,简化了对于0点位置的数值计算问题。

 if(encode_cnt < 100){__HAL_TIM_SetCounter(&htim3,100);}else if(encode_cnt > 180){__HAL_TIM_SetCounter(&htim3,180);}

假设:将旋转1周对应到舵机180度的变化;1周则编码内计数为1420 对应到PWM数值范围0-2000;通过读取编码器的绝对值,转换后设置PWM:

pwmVal = 500 + (encode_cnt - 100)*25;//500-2500 20ms-20000
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2, pwmVal);

测速应用

在计算速度需要用到编码器的增量值,方向通过编码器方向自动判断;
增量值 = 当前值 - 之前值(数值是无符号整形,故不考虑过0溢出的问题)
假设是轮组,带有减速机构,减速比R;
转动角度= 编码器增量值/软件计数倍数(上下计数则是4倍)/编码器线数/减速比RX2PI
角速度 = 转动角度/编码器采样周期
线速度 = 角速度 X 轮径

参考资料

[模块]EC11旋转编码器相关推荐

  1. EC11旋转编码器驱动程序

    EC11驱动程序 不多做介绍,百度上很多相关的介绍 首先,放上参考文档 代码有正转.反转.按下正转.按下反转.单机.双击.长按和长安松手检测,有什么问题可以在下方留言 我是对该文档代码进行一些修改,偏 ...

  2. 使用Arduino开发板连接ec11旋转编码器

    使用Arduino开发板连接ec11旋转编码器 因为最近要用到旋转编码器,从网上花了好长时间找了好多关于arduino使用旋转编码器的资料,总是找不到合适的,最后总结了一下(部分内容有借鉴,仅作分享, ...

  3. 松下EC11旋转编码器(奥迪旋钮)

    松下EC11旋转编码器(奥迪旋钮) 1. 背景介绍: 一直都很喜欢奥迪旋钮的质感做工,在淘宝上看见A6的旋转编码器,想购入装到DIY设备上. 由于找不到MMI大旋钮的旋转编码器型号,因此选购了音量调节 ...

  4. 认识EC11旋转编码器编写驱动程序

    前言 抛开工作,以电子爱好者的身份,单片机玩多了都会想着在单片机的外围设备玩出一些花样来. 这其中首先想到的就是"升级"输入输出设备. 这里先说一说我们常给单片机使用的输入设备. ...

  5. STM32F103 + 0.96/1.3“ I2C OLED + EC11旋转编码器多级菜单demo

    STM32F103 + 0.96/1.3" I2C OLED + EC11旋转编码器多级菜单demo

  6. linux4.6 EC11旋转编码器的驱动

    最近项目使用了旋转编码器EC11,遍查内核,发现并没有它的驱动,查了查CSDN,终于找到一篇有用的.根据自己的需要和对最基础的gpio_key.c的理解,我改写出了一份EC11的专用驱动. 感谢下面博 ...

  7. EC11旋转编码器,stm32f103驱动程序

    EC11旋转编码器,stm32f103驱动程序 1.EC11手册的要点 手册中推荐的电路(已含有RC滤波): 输出波形特点: 2.硬件电路 3.驱动程序关键点 4.输出现象 1.EC11手册的要点 注 ...

  8. STM32CubeMX EC11旋转编码器开发心路历程(encode模式 外部中断模式 普通IO口模式 定时器模式探索)

    文章目录 ENCODE模式探索 普通IO口探索 定时器使用 外部中断探索 编码器开关的理解 最后的实现方案 这篇文章主要还是记录整个过程以及想法的不断改进,对于一些实际的操作还有代码,我准备都分开写到 ...

  9. ESP32(IDF)EC11旋转编码器使用总结

    ESP32(IDF)EC11旋转编码器使用总结 一.调试过程中遇到的问题 二.硬件 三.电路 接线说明: 四.工作原理 正转波形 反转波形 五.判断正反转 法一 代码实现 结果 法二 法三 代码实现 ...

最新文章

  1. 去 BAT 面试,总结了这 55 道 MySQL 面试题!
  2. GetLastError函数使用及返回代码对照
  3. 如何在ABAP workbench里创建新的repository对象
  4. day46-CSS3新增功能
  5. javascript Date
  6. atitit.ajax上传文件的实现原理 与设计
  7. html在下划线上加文本框,在word文本框中如何添加下划线
  8. 谈一谈百度 科大讯飞 云知声的语音合成功能
  9. 周杰伦他什么都知道!
  10. es文件浏览器smb服务器,ES文件浏览器怎么连接电脑SMB,可以参考这篇文章
  11. 慕测平台的使用—— 在eclipse上安装mooctest插件
  12. 企查查的批量公司查找
  13. JanusGraph删除shema操作Java api
  14. Linux进程信号(产生、保存、处理)/可重入函数概念/volatile理解/SIGCHLD信号
  15. 极路由 安装php,极路由1S刷潘多拉安装优酷路由宝插件
  16. 神操作 之 Mac OS prompt_status:5:command not found:wc
  17. (第一篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Transform
  18. 计算机组成原理与系统结构习题集
  19. 土地利用转移矩阵分析与制图(以沮漳河流域为例)
  20. 仓储+调度,YOGO智能配送站能否改变外卖配送格局?...

热门文章

  1. 我眼中的云计算——PaaS(平台即服务)
  2. C语言【atoi函数】
  3. vulnhub Loly: 1
  4. Fama-French三因子模型
  5. Dubbo-06 20190320
  6. 支持图灵架构和安培架构的TensorFlow Python库
  7. 重装系统 linux启动windows系统文件,重装Windows系统后,Linux系统启动引导失败
  8. 【mysql】mysql数据备份与恢复
  9. Ubuntu 16.04 无线网络 设备未就绪(device not ready)
  10. 好用的ROS开发软件(持续更新~)