一种增量式编码器解码方法与流程

文档序号:23391081发布日期:2020-12-22 13:57阅读:186来源:国知局
一种增量式编码器解码方法与流程

本发明属于电控技术领域,具体地说,是涉及一种增量式编码器解码方法。



背景技术:

增量式编码器是一种广泛使用的旋转测量工具,其输出信号一般有三组信号,如图1所示,包括a路输出、b路输出和z路输出,其中,a、b路在增量式编码器每旋转一周输出设定个数的脉冲,且a路输出脉冲与b路输出脉冲相差90度,具体单圈输出脉冲数由内部光栅数确定;z路在增量式编码器每旋转一周输出一个脉冲,用来确定计数零点或标记旋转圈数。



技术实现要素:

本发明的目的在于提供一种增量式编码器解码方法,以a、b任一输出中断时就判断一次转向+基于转向累计ab计数数据+ab计数数据满足设定倍率值时输出的方式的技术手段,对增量式编码器实现转向检测实时性高、检测数据更准确的技术效果。

本发明采用以下技术方案予以实现:

提出一种增量式编码器解码方法,应用于增量式编码器中,所述增量式编码器具有a、b、z三路输出,其中,a、b路在增量式编码器每旋转一周输出设定个数的脉冲,且a路输出脉冲与b路输出脉冲相差90度;z路在增量式编码器每旋转一周输出一个脉冲;所述方法包括:检测a和b输出的边沿中断;根据a/b输出边沿中断时b/a输出的电平状态判断增量式编码器的转向,并基于判断的转向更新累计的ab计数数据;当累计的ab计数数据满足设定倍率值指定关系时,更新增量式编码器对外输出的旋转方向及旋转位置信息;其中,所述设定倍率值为增量式编码器旋转一周的数据更新次数。

进一步的,根据a/b输出边沿中断时b/a输出的电平状态判断增量式编码器的转向,并基于判断的转向更新累计的ab计数数据,具体为:在检测到a输出边沿中断时,检测b输出的电平状态,根据b输出的电平状态判断增量式编码器的转向;以及,在检测到b输出边沿中断时,检测a输出的电平状态,根据a输出的电平状态判断增量式编码器的转向;在转向为正时按照加操作累计所述ab计数数据,在转向为负时按照减操作累计所述ab计数数据。

进一步的,根据a/b输出边沿中断时b/a输出的电平状态判断增量式编码器的转向,并基于判断的转向更新累计的ab计数数据,具体为:以检测一次a输出边沿中断和一次b输出边沿中断为一个检测周期,在一个检测周期内,当检测到a输出边沿中断时,检测b输出的电平状态,根据b输出的电平状态判断增量式编码器的转向并暂存;当检测到b输出边沿中断时,检测a输出的电平状态,根据a输出的电平状态判断增量式编码器的转向并暂存;在一个检测周期结束时,根据暂存的转向判断增量式编码器的转向,在转向为正时按照加操作累计所述ab计数数据,在转向为负时按照减操作累计所述ab计数数据。

进一步的,所述方法还包括:在检测到z输出的边沿中断时,基于累计的所述ab计数数据判断增量式编码器的当前转向;基于当前转向累计增量式编码器的旋转圈数;将累计的所述ab计数数据清零。

进一步的,所述方法还包括:在接收到中断请求时,接收设定倍率值并更新。

进一步的,基于当前转向累计增量式编码器的旋转圈数,具体包括:在当前转向为正时,将旋转圈数加1;在当前转向为反时,将旋转圈数减1。

进一步的,当累计的ab计数数据满足设定倍率值时,所述方法还包括:基于累计的所述ab计数数据确定增量式编码器的当前转向;将累计的所述ab计数数据清零;在当前转向为正时,按照加操作重新累计ab计数数据;在当前转向为负时,按照减操作重新累计ab计数数据。

与现有技术相比,本发明的优点和积极效果是:本发明提出的增量式编码器解码方法中,对a、b输出的边沿中断进行检测,并根据a/b输出边沿中断时b/a输出的电平状态判断增量式编码器的转向,根据判断的转向对ab计数数据进行累计,当ab计数数据满足设定倍率指定关系时,增量式编码器对外输出一次旋转方向和旋转位置信息,这里的设定倍率值是为增量式编码器旋转一周设定的数据更新次数,也即增量式编码器对外输出旋转方向和旋转位置信息的次数;基于本发明提出的解码方法,能够在增量式编码器旋转一周的过程中,按照设定倍率值限定的次数获取其转向以及旋转位置,能够快速锁定增量式编码器的旋转方向,判断转向的速度快,转向探测实时性高,检测数据更准确,并能够保证后续累计计数更精确,减小累计误差。

且,基于本发明中累计ab计数数据+满足设定倍率值清零ab计数数据的技术手段,在减小累计误差的同时能够避免最终采集数据因为编码器的转向小幅摆动出现数据频繁更新的问题。

进一步的,所述设定倍率值可以实际应用调节检测精度,优化输出数据的稳定性。

进一步的,z输出能够根据累计的ab计数数据进行当前转向的判断,以及能够对累计旋转圈数进行计数。

进一步的,在检测到z输出的边沿中断时,将累计的ab计数数据清零,消除了累计误差,可以在每圈实现a输出和b输出的自动校准。

结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。

附图说明

图1为增量式编码器的a、b、z输出示意图;

图2为本发明提出的增量式编码器解码方法的流程图;

图3为本发明提出的增量式编码器解码方法的具体实施例流程图。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步详细的说明。

本发明提出的增量式编码器解码方法,应用于增量式编码器中,如图1所示,增量式编码器具有a、b、z三路输出,其中,a、b路在增量式编码器每旋转一周输出设定个数的脉冲,且a路输出脉冲与b路输出脉冲相差90度;z路在增量式编码器每旋转一周输出一个脉冲。

基于上述,本发明提出的增量式编码器解码方法,采用边沿中断、电平检测和暂存累计数据的方式实施,如图2所示,包括:

步骤s21:检测a、b输出的边沿检测中断。

使用单片机检测a输出和b输出的边沿中断。

本发明中,对a输出和b输出的边沿中断均做检测。

步骤s22:根据a/b输出边沿中断时b/a输出的电平状态判断增量式编码器的转向,并基于判断的转向更新累计的ab计数数据。

结合图1所示,由于a输出与b输出相差90度相位,在增量式编码器正向旋转时,a输出边沿中断时b输出为高电平,b输出边沿中断时a输出为低电平;在增量式编码器反向旋转时,a输出边沿中断时b输出为低电平,b输出边沿中断时a输出为高电平。

因此,根据a/b输出时b/a输出的电平状态,可以判断增量式编码器的旋转方向,现有技术中,为判断增量式编码器的旋转方向,通常针对单向输出检测器边沿中断,a输出或b输出,在一路边沿中断时判断另一路输出的电平状态,从而确定编码器的旋转方向,有别于现有技术,本发明中双向输出均检测,既检测a输出的边沿中断,又检测b输出的边沿中断,在检测到a输出边沿中断时,判断b输出的电平状态,在检测到b输出边沿中断时,判断a输出的电平状态。

在检测边沿中断并判断了转向后,采用暂存累计计数满足设定倍率值指定关系时输出数据的方式,来提高对旋转方向判断的速度和准确性,以及提高旋转位置数据的准确性。

具体的,本发明给出两个数据:ab计数数据和设定倍率值;其中,ab计数数据按照如下方式累计:当编码器的旋转方向为正时按照加操作进行累计,当编码器旋转方向为负时按照减操作进行累计。

设定倍率值为编码器旋转一周期间的数据更新次数,也可以理解为编码器旋转一周期间数据输出的次数,这里的数据至少包括旋转方向和旋转位置信息。设定倍率值小于等于单向输出脉冲数,根据n/设定,n为单向输出的脉冲数,实际应用中,可以通过发起中断请求,向单片机输入根据实际需求设定的设定倍率值的方式来修改对外输出的次数,n值越小,输出精度越高,n为大于等于零的整数。

旋转位置信息基于ab计数数据确定,以编码器旋转一周a或b输出n个脉冲为例,则单向输出每输出一个脉冲,也即对于单向输出每检测到一次边沿中断时,编码器旋转角度变化p=360/n度,在对a和b输出均检测边沿中断期间,每检测到一次边沿中断,编码器旋转角度变化q=360/2n度,简单的可以理解为:累计的ab计数数据隐含了增量式编码器的累计旋转角度,在每检测到一次边沿中断累计一次ab计数数据时,根据累计的ab计数数据与q的乘积即可计算得出旋转位置,在每检测到两次边沿中断累计一次ab计数数据时,根据累计的ab计数数据与p的乘积即可计算得出旋转位置。

基于上述,在本发明一些实施例中,以检测到边沿中断时判断旋转方向为正时ab计数数据加1,而检测到边沿中断时判断旋转方向为负时ab计数数据减1为例,当检测到a边沿中断时根据b输出的电平状态判断旋转方向为正向时,ab计数数据累计加1并暂存,当检测到b边沿中断时根据a输出的电平状态判断旋转方向为正向时,ab计数数据再次累计加1并更新暂存,反之,当检测到a边沿中断时b输出的电平状态判断旋转方向为负时,ab计数数据累计减1并暂存,当将测到b边沿终端时根据a输出的电平状态判断旋转方向为负时,ab计数数据累计减1并更新暂存。

在本发明其他一些实施例中,以检测一次a输出边沿中断和一次b输出边沿中断为一个检测周期,在一个检测周期内,当检测到a输出边沿中断时,检测b输出的电平状态,根据b输出的电平状态判断增量式编码器的转向并暂存;当检测到b输出边沿中断时,检测a输出的电平状态,根据a输出的电平状态判断增量式编码器的转向并暂存;在一个检测周期结束时,根据暂存的转向判断增量式编码器的转向,在转向为正时ab计数数据累计加1并暂存,在转向为负时ab计数数据累计减1。

本发明实施例中,在每检测到一次边沿中断并判断了旋转方向后,还将当前判断的旋转方向进行暂存,当下一次检测到边沿中断并判断旋转方向后,对暂存的旋转方向进行更新。

本发明实施例中的正、负相对而言,在正为顺时针时,负为逆时针,在正为逆时针时,负为顺时针。

步骤s23:当累计的ab计数数据满足设定倍率值指定关系时,更新增量式编码器对外输出的旋转方向及旋转位置信息。

当累计的ab计数数据满足设定倍率值指定关系时,对外输出一次旋转方向以及旋转位置信息,旋转方向可以根据步骤s22中暂存的旋转方向数据确定,也可以根据ab计数数据来确定,基于正向累计加1和负向累计减1的原则,若ab计数数据大于零,则对外输出时的旋转方向为证,若ab计数数据小于零,则对外输出时的旋转方向为负。

这里的设定倍率值指定关系是指,若每检测到一次边沿中断就对ab计数数据累计一次,则当累计的ab计数数据满足两倍的设定倍率值时,对外输出一次旋转方向以及旋转位置信息,若每检测到两次边沿中断时对ab计数数据累计一次,也即以一个检测周期结束才对ab计数数据累计一次时,则当累计的ab计数数据等于设定倍率值时,对外输出一次旋转方向以及旋转位置信息。

旋转位置信息根据累计的ab计数数据与p或q的乘积计算得出。

在输出增量式编码器的旋转方向和旋转位置信息时,将累计的ab计数数据清零,并在当前暂存的转向为正向时,按照加操作重新累计ab计数数据,在当前暂存转向为负时,按照减操作重新累计ab计数数据,进入下一个对外输出判断和累计的循环。

下面以图3所示实施例为例,对上述本发明提出的增量式编码器解码方法做出详细说明。

本实施例中,编码器旋转一圈a、b输出1024个脉冲,设定倍率值为256,以检测a输出边沿中断判断b输出电平状态+检测b输出边沿中断判断a输出电平状态为一个检测周期。

一个检测周期内,以a输出边沿中断为基点,a输出边沿中断时判断b输出的电平状态,b输出电平状态为低时,暂存转向置正,b输出电平状态为高时,暂存转向置负;下一次边沿中断,也即b输出边沿中断时判断a输出的电平状态,a输出电平状态为低时,暂存转向置负,a输出电平状态为高时,暂存转向置正。

一个检测周期结束时对ab计数数据进行累计暂存,当暂存转向为正时,ab计数数据累计加1,当暂存转向为负时,ab计数数据累计减1。

当编码器连续正转时,该ab计数数据大于零,当编码器连续反转时,该ab计数数据小于零。

本实施例中,计算ab计数数据的绝对值,每一个检测周期后ab计数数据累计之后,判断一次ab计数数据的绝对值是否等于设定倍率值,若小于则进入下一个检测周期重复执行上述步骤,若等于设定倍率值,则输出一次转向和旋转位置信息,并将累计的ab计数数据清零,根据暂存的转向对清零后的ab计数数据重新加1或减1累计,进入下一次输出的累计。

本实施例中,每256个检测周期时,ab计数数据等于设定倍率值,输出一次旋转方向和旋转位置信息,编码器旋转一周共输出四次数据。

本实施例中,基于实时的方向判断暂存,以及ab计数数据的累计,使得对增量式编码器的转向以及旋转位置的检测速度更快,实时性高,检测数据更准确,每旋转一周的清零操作,能够保证后续累计计数更精确,减小累计误差,能够避免最终采集数据因为编码器的转向小幅摆动出现数据频繁更新的问题。

基于设定倍率值可设定可更新的特点,使得对增量式编码器的解码可以根据实际应用调节检测精度,优化输出数据的稳定性。

在本发明的一些实施例中,继续如图3所示,对旋转一圈是否结束的检测,采用z输出的边沿中断检测方式实现,具体的,对z输出实时边沿中断检测,当检测到z输出的边沿中断时,基于暂存的转向或者清零前的ab计数数据能够判断增量式编码器的当前转向,并基于当前转向以正向加1负向减1的方式进行累计,实现对旋转圈数的计数。

本实施例中,在检测到z输出的一次边沿中断,也即编码器一圈结束时,将累计的ab方向数据清零,该清零操作可以消除累计误差,在每圈旋转后实现a输出和b输出的自动校准。

应该指出的是,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1