掌桥专利:专业的专利平台
掌桥专利
首页

旋转编码器检测方法、装置及系统

文献发布时间:2023-06-19 10:16:30


旋转编码器检测方法、装置及系统

技术领域

本发明涉及信号检测领域,尤其涉及一种旋转编码器检测方法、一种旋转编码器检测装置以及一种旋转编码器检测系统。

背景技术

在支持按键作为交互途径的设备中,通常存在参数值需要增加或者减小的场景。我们需要通过对按键进行操作来实现对参数值的调整。旋转编码器是常见的一种按键,旋转编码器就是所说的旋转编码开关、数字电位器,其通常有A相端口和B相端口。A相端口和B相端口输出占空比为50%的方波。旋转编码器每转一周,A相端口和B相端口输出固定数目的脉冲。当旋转编码器正向旋转时,A相端口比B相端口超前四分之一个周期;当编码器反向旋转时,B相端口比A相端口超前四分之一个周期。A相端口和B相端口输出方波的相位差为90°。处理器通常需要检测旋转编码器的转动方向来确定对参数值的调整,例如增大或者减小。

在现有技术中,通常通过周期性采集旋转编码器的A相端口和B相端口输出的电平信号的电平值来确定旋转编码器的旋转方向。然而,这种检测方法不仅复杂,而且容易在旋转编码器转动速度过快时出现漏检和判断错误,其检测准确性不高。此外,为了实现周期性采集电平信号,与旋转编码器连接的处理器必须具有定时器且必须连续高频率长时间运行,如此一来,无论旋转编码器是否旋转都会消耗处理器的CPU资源,造成了资源的浪费。

发明内容

因此,为克服现有技术中的缺陷和不足,本发明实施例提供了一种旋转编码器检测方法、一种旋转编码器检测装置、一种旋转编码器检测系统以及一种计算机存储介质,以实现对旋转编码器的准确检测,解决了现有技术中检测错误和资源浪费的问题。

一方面,本发明实施例提供了一种旋转编码器检测方法,包括:响应第一中断信号,读取旋转编码器的第一端口和第二端口各自输出的电平信号对应的电平值,得到第一电平值和第二电平值;根据所述第一电平值和所述第二电平值确定所述旋转编码器的第一旋转方向;响应第二中断信号,读取所述旋转编码器的所述第一端口和所述第二端口各自输出的电平信号对应的电平值,得到第三电平值和第四电平值;根据所述第三电平值和所述第四电平值确定所述旋转编码器的第二旋转方向;以及根据所述第一旋转方向和所述第二旋转方向确定所述旋转编码器的检测结果。

在上述方案中,通过两次中断检测,具体为响应于第一中断信号和第二中断信号分别获取第一旋转方向和第二旋转方向,进而根据第一旋转方向和第二旋转方向来确定旋转编码器的检测结果,提高了旋转编码器检测的准确性,可以在快速转动旋转编码器的情况下实现旋转编码器的准确检测,同时还解决了硬件资源浪费的问题。

在本发明的一个实施例中,在所述响应第一中断信号之前,所述旋转编码器检测方法还包括:当检测到所述第二端口输出的所述第二电平信号发生跳变时,产生所述第一中断信号;以及在所述响应第二中断信号之前,所述旋转编码器检测方法还包括:当检测到所述第一端口输出的所述第一电平信号发生跳变时,产生所述第二中断信号。

在本发明的一个实施例中,所述响应第一中断信号,读取旋转编码器的第一端口和第二端口各自输出的电平信号对应的电平值,得到第一电平值和第二电平值,包括:响应所述第一中断信号,读取所述旋转编码器的所述第一端口输出的第一电平信号对应的电平值,得到所述第一电平值,并记载响应所述第一中断信号的时间为第一时刻;在与所述第一时刻相隔第一预定时间间隔的第二时刻,读取所述旋转编码器的所述第二端口输出的第二电平信号对应的电平值,得到所述第二电平值。

在本发明的一个实施例中,在所述根据所述第一电平值和所述第二电平值确定所述旋转编码器的第一旋转方向之后,所述旋转编码器检测方法还包括:在所述第一时刻的第二预定时间间隔内,判断是否有输入信号以及所述输入信号是否为第二中断信号。

在本发明的一个实施例中,所述响应第二中断信号,读取所述旋转编码器的所述第一端口和所述第二端口各自输出的电平信号对应的电平值,得到第三电平值和第四电平值,具体包括:当判断有所述输入信号且所述输入信号是所述第二中断信号时,响应所述第二中断信号,读取所述旋转编码器的所述第二端口输出的所述第二电平信号对应的电平值,得到所述第三电平值,并记载响应所述第二中断信号的时间为第三时刻;在与所述第三时刻相隔第三预定时间间隔的第四时刻,读取所述旋转编码器的所述第一端口输出的所述第一电平信号对应的电平值,得到所述第四电平值。

在本发明的一个实施例中,在所述第一时刻的第二预定时间间隔内,判断是否有输入信号以及所述输入信号是否为第二中断信号之后,还包括:当判断没有所述输入信号时,将所述旋转编码器异常作为所述检测结果;以及当判断有所述输入信号、但所述输入信号不是所述第二中断信号时,忽略所述输入信号。

在本发明的一个实施例中,所述根据所述第一电平值和所述第二电平值确定所述旋转编码器的第一旋转方向包括:判断所述第一电平值和所述第二电平值是否相等以得到第一判断结果,并且根据所述第一判断结果确定所述旋转编码器的所述第一旋转方向;以及所述根据所述第三电平值和所述第四电平值确定所述旋转编码器的所述第二旋转方向包括:判断所述第三电平值和所述第四电平值是否相等以得到第二判断结果,并且根据所述第二判断结果确定所述旋转编码器的所述第二旋转方向。

在本发明的一个实施例中,所述根据所述第一旋转方向和所述第二旋转方向确定所述旋转编码器的检测结果包括:当所述第一旋转方向与所述第二旋转方向不相同时,将所述第一旋转方向和所述第二旋转方向无效作为所述检测结果;以及当所述第一旋转方向与所述第二旋转方向相同时,将所述第一旋转方向或所述第二旋转方向作为所述检测结果。

另一方面,本发明实施例提供了一种旋转编码器检测装置,包括:第一信号响应模块,用于响应第一中断信号,读取旋转编码器的第一端口和第二端口各自输出的电平信号对应的电平值,得到第一电平值和第二电平值;第一方向确定模块,用于根据所述第一电平值和所述第二电平值确定所述旋转编码器的第一旋转方向;第二信号响应模块,用于响应第二中断信号,读取所述旋转编码器的所述第一端口和所述第二端口各自输出的电平信号对应的电平值,得到第三电平值和第四电平值;第二方向确定模块,用于根据所述第三电平值和所述第四电平值确定所述旋转编码器的第二旋转方向;以及检测结果确定模块,用于根据所述第一旋转方向和所述第二旋转方向确定所述旋转编码器的检测结果。

在上述方案中,通过两次中断检测,具体为响应于第一中断信号和第二中断信号分别获取第一旋转方向和第二旋转方向,进而根据第一旋转方向和第二旋转方向来确定旋转编码器的检测结果,提高了旋转编码器检测的准确性,可以在快速转动旋转编码器的情况下实现旋转编码器的准确检测,同时还解决了硬件资源浪费的问题。

再一方面,本发明实施例提供了一种旋转编码器检测系统,包括:存储器和连接所述存储器的处理器;所述存储器存储计算机程序,所述处理器运行所述计算机程序时执行上述任意一种旋转编码器检测方法。

又一方面,本发明实施例提供了一种计算机存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于执行上述任意一种旋转编码器检测方法。

上述一个或多个技术方案可以具有以下优点或有益效果:通过两次中断检测,具体为响应于第一中断信号和第二中断信号分别获取第一旋转方向和第二旋转方向,进而根据第一旋转方向和第二旋转方向来确定旋转编码器的检测结果,提高了旋转编码器检测的准确性,可以在快速转动旋转编码器的情况下实现旋转编码器的准确检测,同时还解决了硬件资源浪费的问题。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明第一实施例提供的一种旋转编码器检测方法的流程示意图。

图2为本发明第一实施例中步骤S11所包括的步骤S102和步骤S104的示意图。

图3为本发明第一实施例中的旋转编码器检测方法中步骤S12之后包括的步骤S105的示意图。

图4为本发明第一实施例中的旋转编码器检测方法中步骤S13具体包括的步骤S108和S110的示意图。

图5为本发明第一实施例中的旋转编码器检测方法中步骤S105之后包括的步骤S109的示意图。

图6为本发明第一实施例中的旋转编码器检测方法中步骤S11之前包括的步骤S101的示意图。

图7为本发明第一实施例提供的处理器与旋转编码器的电路连接示意图。

图8为本发明第一实施例提供的旋转编码器的A相端口和B相端口输出的电平信号波形示意图。

图9为本发明第二实施例提供的一种旋转编码器检测装置的模块示意图。

图10为本发明第三实施例提供的一种旋转编码器检测系统的结构示意图。

图11为本发明第四实施例提供的一种计算机存储介质的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

【第一实施例】

参见图1,示出了本发明第一实施例的旋转编码器检测方法,可选地,该方法可以由处理器执行:其包括如下步骤:

步骤S11:响应第一中断信号,读取旋转编码器的第一端口和第二端口各自输出的电平信号对应的电平值,得到第一电平值和第二电平值;

步骤S12:根据所述第一电平值和所述第二电平值确定所述旋转编码器的第一旋转方向;

步骤S13:响应第二中断信号,读取所述旋转编码器的所述第一端口和所述第二端口各自输出的电平信号对应的电平值,得到第三电平值和第四电平值;

步骤S14:根据所述第三电平值和所述第四电平值确定所述旋转编码器的第二旋转方向;以及

步骤S15:根据所述第一旋转方向和所述第二旋转方向确定所述旋转编码器的检测结果。

可选地,第一中断信号可以对应于旋转编码器的第二端口输出的电平信号产生跳变。第二中断信号可以对应于旋转编码器的第一端口输出的电平信号产生跳变。也就是说第一中断信号可以为第二端口输出的电平信号产生跳变时处理器产生的中断信号,第二中断信号可以为第一端口输出的电平信号产生跳变时处理器产生的中断信号。

其中,步骤S11例如包括步骤S102至步骤S104,如图2所示。

S102,响应所述第一中断信号,读取所述旋转编码器的所述第一端口输出的第一电平信号对应的电平值,得到所述第一电平值,并记载响应所述第一中断信号的时间为第一时刻;以及

S104,在与第一时刻相隔第一预定时间间隔的第二时刻,读取所述旋转编码器的所述第二端口输出的第二电平信号对应的电平值,得到所述第二电平值。

可选地,第一时刻可以为响应第一中断信号的时间。

在此,响应于第一中断信号,并非立即读取旋转编码器的第二端口输出的第二电平信号对应的第二电平值,而是在与第一时刻相隔第一预定时间间隔的第二时刻进行读取,即,延迟第一预定时间间隔读取第二电平值,有效地避免了读取由于干扰抖动而产生的无法反映旋转编码器转动的真实情况的波形,从而提高了旋转编码器检测结果的准确性。

具体地,在步骤S12之后,例如包括步骤S105,如图3所示。

步骤S105:在所述第一时刻的第二预定时间间隔内,判断是否有输入信号以及所述输入信号是否为第二中断信号。

具体地,步骤S13例如包括步骤S108至步骤S110,如图4所示。

S108,当判断有所述输入信号且所述输入信号是所述第二中断信号时,响应所述第二中断信号,读取所述旋转编码器的所述第二端口输出的所述第二电平信号对应的电平值,得到所述第三电平值,并记载响应所述第二中断信号的时间为第三时刻;以及

S110,在与所述第三时刻相隔第三预定时间间隔的第四时刻,读取所述旋转编码器的所述第一端口输出的所述第一电平信号对应的电平值,得到第四电平值。

在此,响应于第二中断信号,并非立即读取旋转编码器的第一端口输出的第一电平信号对应的第四电平值,而是在与第三时刻相隔第三预定时间间隔的第四时刻进行读取,即,延迟第三预定时间间隔读取第四电平值,有效地避免了读取由于干扰抖动而产生的无法反映旋转编码器转动的真实情况的波形,从而提高了旋转编码器检测结果的准确性。

在本发明的一个具体实施方式中,在步骤S105之后,旋转编码器检测方法还例如包括步骤S109,如图5所示:当判断没有所述输入信号时,将所述旋转编码器异常作为所述检测结果;以及当判断有所述输入信号、但所述输入信号不是所述第二中断信号时,忽略所述输入信号。

在此,通过检测在第一时刻的第二预定时间间隔内是否存在输入信号来判断旋转编码器是否异常,从而实现了有效判断旋转编码器的工作状态的功能。

在本发明的一个具体实施方式中,步骤S12例如包括:判断所述第一电平值和所述第二电平值是否相等以得到第一判断结果,并且根据所述第一判断结果确定所述旋转编码器的所述第一旋转方向;以及步骤S14包括:判断所述第三电平值和所述第四电平值是否相等以得到第二判断结果,并且根据所述第二判断结果确定所述旋转编码器的所述第二旋转方向。

在本发明的一个具体实施方式中,在步骤S11之前,旋转编码器检测方法还包括S101,如图6所示:检测所述旋转编码器的所述第二端口输出的所述第二电平信号是否发生跳变,当检测到所述第二端口输出的所述第二电平信号发生跳变时,产生所述第一中断信号。

同理,在步骤S13之前,例如还包括:检测所述旋转编码器的所述第一端口输出的所述第一电平信号是否发生跳变,当检测到所述第一端口输出的所述第一电平信号发生跳变时,产生所述第二中断信号。

在本发明的一个具体实施方式中,所述根据所述第一旋转方向和所述第二旋转方向确定所述旋转编码器的检测结果包括:当所述第一旋转方向与所述第二旋转方向不相同时,将所述第一旋转方向和所述第二旋转方向无效作为所述检测结果;以及当所述第一旋转方向与所述第二旋转方向相同时,将所述第一旋转方向或所述第二旋转方向作为所述检测结果。

在本发明的一个具体实施方式中,所述第一预定时间间隔等于所述第三预定时间间隔,所述第一预定时间间隔和所述第三预定时间间隔为200us,所述第二预定时间间隔为2s。

为便于理解本实施例,下面将结合图7至图8对本实施例的旋转编码器检测方法进行详细描述。

图7示出了处理器与旋转编码器的电路连接示意图。旋转编码器具有两个输出端口,具体为A相端口和B相端口。处理器包括两个管脚PIN_A和PIN_B。A相端口与处理器的PIN_A连接,而B相端口与处理器的PIN_B。当然,处理器的两个管脚与旋转编码器的两个端口的连接方式也可以互换,本发明实施例在此不做具体限定。另外,在具体的实现过程中,处理器和旋转编码器之间还连接有滤波电路,本发明在此不做具体阐述。所述处理器可以是例如单片机、ARM、MCU等,或者可以是可编程逻辑器件诸如FPGA。

处理器的管脚PIN_A和PIN_B具备外部中断功能,也就是能够检测到旋转编码器的A相端口和B相端口产生的电平信号的跳变,从而产生中断信号。在本发明实施例中,管脚PIN_A或PIN_B输入的电平信号每发生一次跳变(上升沿或者下降沿)时,就会触发相应管脚的外部中断功能,从而产生中断信号,进而执行本发明实施例的旋转编码器检测方法。

下面参考图8所示的旋转编码器的A相端口和B相端口的输出的电平波形图对旋转编码器检测方法进行详细说明。在此,假定当编码器正向旋转时,A相端口的电平信号比B相端口的电平信号超前四分之一个周期;当编码器反向旋转时,B相端口的电平信号比A相端口的电平信号超前四分之一个周期。图8为旋转编码器在正向旋转情况下的输出的电平信号波形示意图。当然,旋转编码器的旋转方向与旋转编码器的两个端口之间的相位关系还可以为其他情况,本发明实施例并不以此作为限定。

在执行本发明实施例的旋转编码器检测方法时,首先,处理器的PIN_A管脚检测到旋转编码器的A相端口(第二端口)产生的第二电平信号发生跳变,从而处理器会产生第一中断信号,处理器响应于第一中断信号会立即读取B相端口(第一端口)产生的第一电平信号对应的第一电平值Vb10,并延时时间间隔t后读取A相端口(第二端口)的第二电平信号对应的第二电平值Va10。然后,根据Va10与Vb10不相等,则确定旋转编码器的第一旋转方向为顺时针旋转,而如果Va10与Vb10相等,则确定旋转编码器的旋转方向为逆时针旋转。

上述时间t依据在转动旋转编码器的过程中产生的干扰抖动的情况确定,通常为200us。在此,考虑到实际应用场景下,A相端口和B相端口电平跳变会产生短时间的抖动(如图8中A相端口和B相端口的电平跳变处出现的多个抖动波形),即使抖动通过硬件滤波掉了一部分,但仍然还是存在抖动,为了读取到A相端口和B相端口的真实电平,本发明实施例通过如下方式来实现:当A/B相中断(电平发生跳变)时,立即读取B/A相得电平,则得B/A相的电平是可靠的,同时延时时间间隔t后读取得到A/B相的电平,从而跳过抖动窗口,从而避免所检测到的由于干扰抖动造成A相端口产生的第二电平的跳变造成对旋转编码器的检测结果错误。

此外,考虑到正常情况下,旋转编码器发生旋转时,每一次旋转必定伴随着A相端口和B相端口产生的电平的成对跳变,即,每一次旋转,A相端口和B相端口的电平均会发生跳变。本发明实施例还需要检测B相端口的跳变,处理器的PIN_B管脚检测到旋转编码器的B相端口(第一端口)产生的第一电平信号发生跳变,处理器会立即读取A相端口(第二端口)产生的第二电平信号对应的第三电平值Va11,并延时t后读取B相端口的第一电平信号对应的第四电平值Vb11。然后,依据Va11与Vb11相等,则确定旋转编码器的第二旋转方向为顺时针旋转,而如果Va11与Vb11不相等,则确定旋转编码器的旋转方向为逆时针旋转。

根据上面的两次旋转方向确定,得到第一旋转方向和第二旋转方向。如果第一旋转方向与第二旋转方向相同,那么本次旋转的真实方向为第一旋转方向或第二旋转方向。如果第一旋转方向与第二旋转方向不相同,则本次旋转方向无效,处理器将不会做相应的数据增量处理。

无论第一旋转方向和第二旋转方向是否相等,均完成了一次完整的旋转检测并进行下一次检测。接下来开启全新的检测周期,等待下一次中断产生,然后重复上述判断过程,得到旋转方向判断结果。

另外,在一个检测周期中,第一次中断(A/B)触发后,在约定的时间间隔内,另一相(B/A)必须触发中断。如果另一相(B/A)未触发中断,则认为旋转编码器异常,反之则认为正常。所述时间间隔依据旋转编码器转动的最慢速度而定,其通常为2秒。

综上,在本发明实施例中,通过两次中断检测,具体为响应于第一中断信号和第二中断信号分别获取第一旋转方向和第二旋转方向,进而根据第一旋转方向和第二旋转方向来确定旋转编码器的检测结果,提高了旋转编码器检测的准确性,可以在快速转动旋转编码器的情况下实现旋转编码器的准确检测,同时通过中断检测来进行响应而非通过周期性采样旋转编码器两个端口的电平信号的情况来检测旋转编码器,从而避免了现有技术中浪费硬件资源的问题。

【第二实施例】

如图9所示,本发明第二实施例提供了一种旋转编码器检测装置200。旋转编码器检测装置200包括第一信号响应模块202、第一方向确定模块204、第二信号响应模块206、第二方向确定模块208以及检测结果确定模块210。

具体地,第一信号响应模块202用于响应第一中断信号,读取旋转编码器的第一端口和第二端口各自输出的电平信号对应的电平值,得到第一电平值和第二电平值。

第一方向确定模块204用于根据所述第一电平值和所述第二电平值确定所述旋转编码器的第一旋转方向。

第二信号响应模块206用于响应第二中断信号,读取所述旋转编码器的所述第一端口和所述第二端口各自输出的电平信号对应的电平值,得到第三电平值和第四电平值。

第二方向确定模块208用于根据所述第三电平值和所述第四电平值确定所述旋转编码器的第二旋转方向。

检测结果确定模块210用于根据所述第一旋转方向和所述第二旋转方向确定所述旋转编码器的检测结果。

本实施例中的旋转编码器检测装置200中的各模块之间的具体工作过程和技术效果参见前述第一实施例的描述。

【第三实施例】

如图10所示,本发明第三实施例提供一种旋转编码器检测系统300。旋转编码器检测系统300包括存储器310和与存储器310连接的处理器330。存储器310可例如为非易失性存储器,其上存储有计算机程序311。处理器330可例如包括嵌入式处理器。处理器330运行计算机程序311时执行前述第一实施例提供的旋转编码器检测方法。

【第四实施例】

如图11所示,本发明第四实施例提供一种计算机存储介质400,存储有计算机可执行指令410。计算机可执行指令410用于执行如前述第一实施例的旋转编码器检测方法。计算机存储介质400例如为非易失性存储器,如包括:磁介质(如硬盘、软盘和磁带),光介质(如CDROM盘和DVD),磁光介质(如光盘)以及专门构造为用于存储和执行计算机可执行指令的硬件装置(如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。计算机存储介质400可由一个或多个处理器或处理装置来执行计算机可执行指令410。

此外,可以理解的是,前述各个实施例仅为本发明的示例性说明,在技术特征不冲突、结构不矛盾、不违背本发明的发明目的前提下,各个实施例的技术方案可以任意组合、搭配使用。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多路单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多路网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元/模块可以集成在一个处理单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一个单元/模块中。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用硬件加软件功能单元/模块的形式实现。

上述以软件功能单元/模块的形式实现的集成的单元/模块,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)的一个或多个处理器执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 旋转编码器检测方法、装置及系统
  • 一种基于旋转编码器的扶梯速度和逆行检测方法及装置
技术分类

06120112483931