一种简单可靠的增量式编码器计数方法技术

技术编号:3843427 阅读:357 留言:1更新日期:2012-04-11 18:40
本发明专利技术公开了一种增量式编码器计数方法,所述方法通过编码器和单片机相连接,执行一系列代码对编码器两个输出端口的波形在一个周期内分别作脉冲上升沿和下降沿的判断,然后通过计数器对其进行加减计算。采用这种计数方法,能够解决增量式编码器在使用过程中出现的一些问题,比如:编码器旋转速度快慢、晃动造成的误码,接触不良造成的误计数等等。而且该方法简单可靠,易实现。尤其对廉价的机械式旋转编码器效果更加突出。

【技术实现步骤摘要】

本专利技术属于编码器
,特别涉及一种增量式编码器计数方法。
技术介绍
目前,旋转编码器广泛应用于高级音响的音量控制、高档汽车用于检测方向盘的 转动角度和一些设备的调整、设置等。现在的旋转编码器主要有绝对值式编码器和增量式 编码器,从传感器划分又可以分为机械式、光电式和磁感式。对于增量式的编码器他们的主 要用途就是将编码器旋转的角度或位移以电信号的方式表现出来。增量式的编码器因为结 构简单,价格较低被大量的应用。现有技术中,增量式编码器在使用过程中常会出现一些问题,比如因为晃动(编 码器有旋转或移动的趋势,但是旋转或移动的量很小不到一个单位)造成的误码;因为旋 转速度快慢不一定造成的误码;针对廉价的机械式旋转编码器还会因为接触不良造成误 码。使用本专利技术的代码就能够很好的解决这些问题,对于廉价的机械式旋转编码器效果尤 其突出。 现在对于消除增量式编码器的误码主要有两种方法一是采用复杂的监相和计数 电路来实现;二是用单片机来实现计数。对于第一种方法因为电路复杂、成本高很少被采 用。现在编码器计数一般都是采用单片机实现。单片机实现的典型方法是将编码器的公共 端接地,两个输出端其中的一个接单片机的中断端口,并将相应的中断设置为下降沿触发。 另外一个输出端接单片机的任意端口。当编码器移动或旋转时就会触发单片机的中断,这 时只要判断编码器的另外一个数据输出端的电平就可以知道编码器的旋转或移动方向。具 体实现方式见附图1。在理想的情况下用附图1中方法就可以检测编码的移动或旋转方向。很显然在附图1的流程中对于抖动没有做任何处理,如果因为抖动触发了中断, 而编码器又回到原点的话将会产生一次误码。为了解决抖动的问题一般还会在数据输出端口并联一个小电容或者用软件延时 的方法进行防止抖动的处理。这方法实际上只是解决了抖动的问题或者说是机械式编码器 接触不良的问题,不能解决编码器晃动的问题。而且还会带来另外的问题就是因为延时的 作用会对高速旋转或移动造成少计数或误计数,对于低速旋转或移动当一个处理工程完成 以后中断端口因为电容的充电作用使中断端口仍然处于下降沿,单片机再次产生中断造成 重复计数。而且这种方法还会造成编码器旋转速度过快或过慢。
技术实现思路
本专利技术为了解决现有技术中存在的问题,特别提出了一种增量式编码器计数方法。本专利技术技术方案如下一种简单可靠的增量式编码器的计数方法,包括编码器及单片机,其中编码器第一输出端口与单片机的中断端口相连,第二输出端口与单片机任一端口相连,编码器的公 共端接地,所述编码器的计数过程包含如下步骤A.设置所述第一输出端口的波形为下降沿时,触发所述单片机关闭所述中断端 口;B.所述单片机根据所述第二输出端口的波形判断所述编码器旋转方向;C.所述单片机等待所述第一输出端口的波形为高电平时,确认所述编码器旋转方 向;D.确认步骤B与步骤C中编码器旋转方向相同,则所述单片机进行计数,否则,执 行步骤F;Ε.所述单片机确认所述第一端口及所述第二端口同为高电平时,执行步骤F;F.所述单片机打开所述中断端口,完成一次计数。其中,所述步骤B中,所述单片机进行如下判断所述第一输出端口的波形与所述第二输出端口的波形同为低电平时,则所述编码 器旋转方向为顺时针;所述第一输出端口的波形为低电平,所述第二输出端口的波形为高电平时,则所 述编码器旋转方向为逆时针。一个实施例是,所述步骤D中,所述编码器旋转方向为顺时针,则所述计数器加1。另一个实施例是,所述步骤D中,所述编码器旋转方向为逆时针,则所述计数器减1.采用本专利技术的方法,能够很好的解决抖动造成的这些问题,编码器不会因为晃动 而产生错误的计数,而且不会出现编码器重复计数的问题,对于廉价的机械式旋转编码器 效果尤其突出。另外,使用这种方法根本不会对编目器旋转速度产生影响,也就不会出现编 码器旋转快慢造成的误码。附图说明图1为现有技术编码器计数的流程图;图2为本专利技术的电路连接示意图;图3为本专利技术编码器输出的波形图;图4为本专利技术编码器技术的流程图。具体实施例方式下面通过附图及实施例对本专利技术做进一步详细说明。如图3所示是编码器波形图。从图中可以看出编码器的两个输出端(即图中ΕΝ_Ι 与EN_D两个输出端)的波形相位相差90度。当编码器移动或旋转时,即中断的端口(EN_ I)处于下降沿的时候,数据输出端口(EN_D)的电平顺时针为“0”,逆时针为“1”。当编码器 继续移动或旋转时,即中断的端口(EN_I)处于上升沿的时候,数据输出端口(EN_D)的电平 顺时针为“1”,逆时针为“0”。当一个周期结束时下一个周期开始前编码器的两个输出端口 都为高电平。实施例如图5是本方法的具体实施方法在图上,101端口为EN_I中断端口,102端口为 EN_D输出端口。根据图5,实现方法如下当编码器中断端口(EN_I中断端口)被下降沿触发后,进入该计数方法。第一步,将编码器的外中断关闭(即将101端口置0);第二步,判断编码器的旋转方向,这时会存在两种情况②如果101端口值为0并 且102端口值为1,则为逆时针旋转;③其它情况则打开外中断(即将101端口置1)。第三步,1)假设我们按照上述发生①顺时针旋转的情况,①如果101端口和102端口同时 为0,则为顺时针旋转。则该程序开始等待当编码器中断端口为高电平(即等待101端口 为1)时,确认旋转方向是否为顺时针,方法是通过将102端口输出的值与1进行比较。如 果102端口值为1,则为顺时针方向,将计数器加1,然后等待编码器的一个周期完成(即当 101端口和102端口值同时为1时),最后打开外中断(即将101端口置1)。如果不是顺时 针方向,直接打开外中断(即将101端口置1)。2)在第三步中,假设我们按照发生②逆时针旋转的情况,则该程序开始等待当编 码器中断端口为高电平(即等待101端口为1)时,确认旋转方向是否为逆时针,方法是通 过将103端口输出的值与0进行比较。如果102端口值为0,则为逆时针方向,将计数器加 1,然后等待编码器的一个周期完成(即当101端口和102端口值同时为1时),最后打开外 中断(即将101端口置1)。如果不是逆时针方向,直接打开外中断(即将101端口置1)。采用本专利技术的方法,能够很好的解决抖动造成的这些问题,编码器不会因为晃动 而产生错误的计数,而且不会出现编码器重复计数的问题,对于廉价的机械式旋转编码器 效果尤其突出。另外,使用这种方法根本不会对编目器旋转速度产生影响,也就不会出现编 码器旋转快慢造成的误码。通过以上实施例对本专利技术进行了进一步揭示,但是本专利技术的范围并不局限于此, 在不偏离本专利技术构思的条件下,以上各实现步骤可用所属
人员了解的相似或等同 实现步骤来替换。权利要求一种简单可靠的增量式编码器的计数方法,包括编码器及单片机,其中编码器第一输出端口与单片机的中断端口相连,第二输出端口与单片机任一端口相连,其特征在于计数过程包含如下步骤A、设置所述第一输出端口的波形为下降沿时,触发所述单片机关闭所述中断端口;B、所述单片机根据所述第二输出端口的波形判断所述编码器旋转方向;C、所述单片机等待所述第一输出端口的波形为高电平时,确认所述编码器旋转方向;D、确认步骤B与步骤C中编码器旋转方向相同本文档来自技高网
...

【技术保护点】
一种简单可靠的增量式编码器的计数方法,包括编码器及单片机,其中编码器第一输出端口与单片机的中断端口相连,第二输出端口与单片机任一端口相连,其特征在于计数过程包含如下步骤:A、设置所述第一输出端口的波形为下降沿时,触发所述单片机关闭所述中断端口;B、所述单片机根据所述第二输出端口的波形判断所述编码器旋转方向;C、所述单片机等待所述第一输出端口的波形为高电平时,确认所述编码器旋转方向;D、确认步骤B与步骤C中编码器旋转方向相同,则所述单片机进行计数,否则,执行步骤F;E、所述单片机确认所述第一端口及所述第二端口同为高电平时,执行步骤F;F、所述单片机打开所述中断端口,完成一次计数。

【技术特征摘要】

【专利技术属性】
技术研发人员:黄喜荣
申请(专利权)人:北京同步科技有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有1条评论
  • 来自[未知地区] 2012年08月27日 10:30
    这专利有明显的错误,错误在E项,若计数后未到达两路高电平,就反方向了,那怎么办!!!???
    0
1
相关领域技术
  • 暂无相关专利