一、编码旋钮介绍

旋转编码器应用于角度定位或测量时,通常有A、B、Z三相输出。A相和B相输出占空比为50%的方波。编码器每转一周,A相和B相输出固定数目的脉冲。当编码器正向旋转时,A相比B相超前四分之一个周期;当编码器反向旋转时,B相比A相超前四分之一个周期。A相和B相输出方波的相位差为90°。编码器每转一周,Z相输出一个脉冲。由于编码器每转一周,A相和B相输出固定数目的脉冲,则A相或B相每输出一个脉冲,表示编码器旋转了一个固定的角度。当Z相输出一个脉冲时,表示编码器旋转了一周。因此旋转编码器可以测量角位移及位移方向。

我们通常用的是增量型编码器,可将旋转编码器的输出脉冲信号直接输入给单片机,利用单片机的高速计数器对其脉冲信号进行计数,以获得测量结果。不同型号的旋转编码器,其输出脉冲的相数也不同,有的旋转编码器输出A、B、Z三相脉冲,有的只有A、B相两相,最简单的只有A相。下面就由小编以EC11来介绍编码器的使用和编程思路,有哪里讲的不对的地方希望大家给我留言,大家一起交流学习。

EC11共有5个引脚,原理图如上图。正旋一圈EC11会AB相会产生A相超前B相的20个脉冲如图一,反知产生B相超前A相的20个脉冲。按下EC11 PUSH BUTTON对地短路。

原理方面的就讲完了,下面上干货。

一、程序设计

小编的程序是基于自己画的一块STM32C8T6的板子,原理图如下图。

由于下文有很多的宏定义,先给大家把宏定义附上吧。

AB相和PUSH BUTTON都是直接与32相连所以设置管脚模式时都是需要设置为上拉输入,代码如下。

小编判断正反转的思路是,首先将A相设置为下降沿触发的中断,当触发中断后通过判断B相的电平来判断正反转。我们先拿出一个脉冲来分析,当正旋时A相产生下降触发中断读取B相的值,由于正旋时A相超前B相,所以单片机读取B相的值为高电平(如下图)。

由于用到了中断,下面就是中断初始化的程序。对于新手来说配置STM32中断时,需要注意的是中断EXTI_Line5~EXTI_Line15配置IRQ和中断函数是没有一一对应的IRQ和中断服务函数,而是EXTI_Line5~EXTI_Line9和EXTI_Line10~EXTI_Line15分别使用EXTI9_5_IRQn和EXTI15_10_IRQn,中断函数使用EXTI9_5_IRQHandler和EXTI15_10_IRQHandler。

接下来就是编码旋钮的处理函数了,先介绍一下编码旋钮相关参数的结构体。

本节会用到的结构体变量只有number和increment,下期介绍快慢旋和单、双、长击时会用到其他的变量,这里先列出来。接下来就是时A相的中断函数。

今天我们就先讲到这里,下一期将介绍如何用程序实现快慢旋和单、双、长击,最后附上结果视频。

编码器 stm32_STM32榨干编码旋钮(第一期)相关推荐

  1. 让 Netty “榨干” 你的CPU!

    在开始了解Netty是什么之前,我们先来回顾一下,如果需要实现一个客户端与服务端通信的程序,使用传统的IO编程,应该如何来实现? IO编程 我们简化一下场景:客户端每隔两秒发送一个带有时间戳的&quo ...

  2. 让Netty“榨干”你的CPU

    在开始了解Netty是什么之前,我们先来回顾一下,如果需要实现一个客户端与服务端通信的程序,使用传统的IO编程,应该如何来实现? IO编程 我们简化一下场景:客户端每隔两秒发送一个带有时间戳的&quo ...

  3. 年轻人的钱包,被十一假期榨干了

    本文来源:字母榜 ID:wujicaijing 作者:邢思远 十一长假,是打工人一年中难得的大块休闲时光,很多人利用这段时间旅游玩乐,好不惬意.但另一方面,假期间的各种消费开支,也让不少年轻人叫苦不迭 ...

  4. [前端面试经]百度和好未来的面试官把我榨干了

    百度和好未来的面试官把我榨干了 我,普通本科计算机专业,18年6月毕业,抛去实习,工作经验只有一年半,没想到自己临时的决定让我敲开了百度的大门,非常荣幸地成为百度的RD. 2019年最后一个月,由于当 ...

  5. 【活动报名 | 青源Talk第一期】喻纯 | 自然人机交互的进展与挑战

    活动简介 青源会是智源研究院发起的学术组织,为从事人工智能及相关学科研究的青年科学家,建立宽松.活跃的直接交流渠道,促进学科交叉与青年科学家之间的合作,提出具有引领作用的原创思想,开创新的科学前沿. ...

  6. 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )

    文章目录 一. 头文件.成员变量准备 二. 创建 FAAC 编码器 三. 获取并设置 FAAC 编码器参数 四. 设置 FAAC 编码器编码标准 五. 设置 FAAC 编码器 AAC 编码规格 六. ...

  7. 启明云端分享| 2.4寸磁编码旋钮屏

    提示:启明云端从2013年起就作为Espressif(乐鑫科技)大中华区合作伙伴,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程.同时也用心推出了基于乐鑫的相关应用方案!希望你 ...

  8. 启明云端分享| 2.4寸磁编码旋钮方案智能屏

    提示:启明云端是一家集物联网WIFI.蓝牙.智慧屏产品及解决方案提供商,公司为客户提供完善的ODM/OEM服务,方案已服务全球超过1000+企业,累积帮助客户完成100+以上带彩屏的智能产品的应用及落 ...

  9. 特权同学笔记-榨干FPGA片上存储资源

    榨干FPGA片上存储资源 记得Long long time ago,特权同学写过一篇简短的博文<M4K使用率>,文章中提到了Cyclone器件的内嵌存储块M4K的配置问题.文中提到了这个M ...

最新文章

  1. HTML5 Canvas编写五彩连珠(3):设计
  2. python使用方法视频-python读取视频流提取视频帧的两种方法
  3. P3572 [POI2014]PTA-Little Bird
  4. 最简单的基于FFmpeg的编码器-纯净版(不包含libavformat)
  5. python坐标怎么打_python导入坐标点的操作方法
  6. 面型对象 (包package)
  7. 数据库可以存php代码,php把数组保存数据库程序代码
  8. 高通CEO:已向美国申请向华为出售芯片 但尚未有回应
  9. vue 多点触控手势_手写 Vue 手势组件__Vue.js
  10. 3.13PMP试题每日一题
  11. (1)了解cocostudio基础
  12. Linux上tomcat运行内存溢出,linux中tomcat内存溢出解决办法
  13. 推券客微信公众号查询淘宝优惠券返利系统的设置教程
  14. 三十四、Expandable grid 可扩展的表格
  15. 遵义微红科技社群直播分销系统精选最具市场营销的功能点
  16. IDLE和java超级基础基本标准
  17. 用全开源的协同OA办公平台,可以自己搭建OA啦!
  18. SpringMVC笔记(4):RESTFul详解
  19. 如何绕开对通用VMware虚拟机检测
  20. 关于如何构建数字资产量化的投资组合的思考

热门文章

  1. PXE-preboot execute environment
  2. 关于英特尔® 以太网服务器适配器中 SR-IOV 的常见问题解答
  3. 关于布隆过滤器的所有信息:利用Hash实现的索引方案
  4. 5G怎样实现波束赋形?
  5. C语言求一个数的平方根倒数的近似值-一战封神的代码
  6. 默认优先级值是多少 ospf_OSPF是什么?网工必备技能——OSPF详解
  7. protobuf java service_【java】protoc不生成.proto中的service,只生成model相关类,求助。...
  8. 源代码src修改为本地图片_20 行 Python 代码批量抓取免费高清图片!
  9. java可以继承私有的,关于java:继承中的私有方法
  10. java -jar 怎么停止_图解Java日志体系