前些日子在网上买了一些旋转编码器按钮,被奸商坑了,输出的正交脉冲,在发生边沿跳变的时候会产生干扰毛刺,毛刺通过硬件RC滤波能改善一些波形,但是还是会有杂波干扰程序。

正常正转波形如下图所示:

干扰正转波形如下图所示:

干扰反转波形如下图所示:

旋转编码器的原理,这里不做介绍了,由于之前使用的是1ms轮询查询IO口状态判别旋转方向,正常的正交脉冲式可以的,但是质量差一些的编码器旋转的时候有干扰,轮旋检测的方法会产生误动作,所以这里主要讨论滤波方法,滤出掉干扰。

由上图可知,干扰总是出现在脉冲信号边沿发生跳转时,而脉冲宽度一般都在1ms以上,所以可以认为,当检测到到脉冲发生跳变的时候,1ms之内不检测脉冲就可以了,通过上面的原理分析,程序可以这样设计,通过使用一个外部中断+定时器实现正交脉冲的滤波。用外部中断检测脉冲的下降沿,检测到下降沿后,关闭外部中断,判断当前旋转方向,打开定时器中断定时1ms,定时时间到了之后,关闭定时器中断,打开外部中断,开始接受下一个脉冲。通过测试之前不能用的渣编码器也可以正常使用了,嘎嘎嘎。

下面附上滤波程序仅供参考。

    IT0 = 1;                                    //使能INT0下降沿中断EX0 = 1;                                    //使能INT0中断EA = 1;TMOD = 0x00;TL0 = 0x66;                                 //22.1184MTH0 = 0xfc;TL0 = 0xCD;                                //设置定时初值TH0 = 0xF8;                                //设置定时初值TR0 = 0;                                    //启动定时器ET0 = 1;                                    //使能定时器中断
void TM0_Isr() interrupt 1
{EX0 = 1;                                    //使能INT0中断TR0 = 0;
}
void INT0_Isr() interrupt 0
{TR0 = 1; EX0 = 0;    enCoderValue = 0x80;if(EC11_B_Now ==1)// 只需要采集A的上升沿或下降沿的任意一个状态,若A下降沿时B为1,正转    {enCoderValue |= 0x01;}                                    else     //反转{}}

EC11、EC16、ECxx旋转编码器按钮软件滤波程序滤除干扰杂波51单片机C程序相关推荐

  1. 滑动平均滤波c语言_11种经典软件滤波算法及其波形效果图(附C语言程序)

    (后页附带C语言程序) 注意注意注意:(图像中红线都是经过滤波的)1.限幅滤波法(又称程序判断滤波法) A.方法: 根据经验判断,确定两次采样允许的最大偏差值(设为 A) 每次检测到新值时判断: 如果 ...

  2. PCF8591 ---AD\DA转换器的使用(IIC通信的软件模拟与应用) (by 51单片机)

    依旧是借着蓝桥杯的机会,来学习一些模块,和软件模拟一些通信方式. 今天学习的模块是PCF8591,一款AD\DA转换器,使用IIC通信方式. 芯片的内部框图如下所示: 各引脚作用如下表所示: 仍旧和之 ...

  3. 旋转编码器:如何在 Arduino 上使用 Keys KY-040 编码器

    旋转编码器是一种输入设备,您可以在任一方向连续旋转.当您转动设备时,它会生成数字脉冲,以使用两个相控输出信号显示旋转方向.这两个输出还指示单个位置运动,因此您可以在控制面板中使用它们来增加或减少参数. ...

  4. EC11旋转编码器电路和程序

    现在手里的项目使用到了旋转编码器,目前只使用了旋转功能,按钮功能没用到,电路图如下: 说一下为什么这么画,原因很简单,旋钮并不需要供电,它做的工作是把原来的高电平拉低,或者不改变高电平状态,这就是为什 ...

  5. 【STM32F4系列】【HAL库】旋转编码器(EC11)

    目录 概述 电气连接 波形分析 思路 HAL初始化 代码 成品 概述 EC11是一种增量型AB相旋转编码器 旋转编码器是一种可以无限旋转的旋钮,常被作为各种需要大量数据范围的情况(如收音机选台,音量选 ...

  6. ec11编码器c语言程序,EC11旋转编码器电路和程序

    现在手里的项目使用到了旋转编码器,目前只使用了旋转功能,按钮功能没用到,电路图如下: 说一下为什么这么画,原因很简单,旋钮并不需要供电,它做的工作是把原来的高电平拉低,或者不改变高电平状态,这就是为什 ...

  7. [模块]EC11旋转编码器

    功能说明 编码器有什么用 配合UI设计 点击选择 长按退出 正反转加减 特点:采用增量编码器可以规避信号抖动引起的误差: 引脚说明 信号输出 A B 信号的差分输出,转到一个卡点,信号转动一个周期: ...

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

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

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

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

最新文章

  1. Android 判断网络状态
  2. SpringBoot复习:5(配置绑定)
  3. python 列表、字典转json字符串
  4. C#中方法的参数四种类型(值参数、ref、out、params)详解
  5. [翻译] GoogleMaterialDesignIcons
  6. 【Python】windows电脑 python3.6安装lxml库
  7. JAVA中BigDecimal的字符化输出
  8. 初学者必学教程——JQuery的简介
  9. MySQL中视图的使用及多表LEFT JOIN的技巧分享
  10. 20200528每日一句
  11. 大数据应用案例---用户画像与精准营销
  12. 怎么将PDF文件在线转换成JPG图片
  13. 【积】有向图中的louvain社区检测(二)
  14. 动态人脸检测(脸数可调)
  15. 针对LSB 信息隐藏的卡方分析算法实现
  16. 线性代数05 齐次/非齐次线性方程组的具体解集
  17. win7 linux三系统,苹果电脑装windows7,Linux,mac os三系统,不需要BootBoot | MOS86
  18. 07组第二次作业 深度学习和pytorch基础
  19. Android 录制手机内部声音(screen recorder)framework层问题分析
  20. shiro-反序列化漏洞

热门文章

  1. ubuntu下Chrome安装支付宝控件
  2. 在Ubuntu\Centos等Linux环境安装支付宝控件
  3. 我在LED显示屏行业,想觅有能力者开发一套系统
  4. 离散数学当,仅当,当且仅当
  5. java计算机毕业设计酷美二手车管理系统源代码+数据库+系统+lw文档
  6. python 音频处理软件_Python pydub音频处理
  7. 谈谈与Elasticsearch创始人Shay Banon面对面交流后的意外收获
  8. 《完美世界国际版》内测消息
  9. matlab求两方程交点坐标,matlab求交点坐标
  10. 女神节特辑 | 致敬程序媛,她们的人生究竟有多精彩?