CN112000141A - 一种旋钮编码器去抖方法 - Google Patents
一种旋钮编码器去抖方法 Download PDFInfo
- Publication number
- CN112000141A CN112000141A CN202010662007.5A CN202010662007A CN112000141A CN 112000141 A CN112000141 A CN 112000141A CN 202010662007 A CN202010662007 A CN 202010662007A CN 112000141 A CN112000141 A CN 112000141A
- Authority
- CN
- China
- Prior art keywords
- state
- encoder
- jitter
- variable
- interrupt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D13/00—Control of linear speed; Control of angular speed; Control of acceleration or deceleration, e.g. of a prime mover
- G05D13/02—Details
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Transmission And Conversion Of Sensor Element Output (AREA)
Abstract
本发明涉及旋钮编码器技术领域,尤其涉及一种旋钮编码器去抖方法包括以下步骤:对A端子和B端子完成初始设定;根据A、B端子采集的信号判定旋钮编码器的编码器状态;若编码器状态为开始状态,根据两个端子采集的信号,去除t1处抖动;若编码器状态为过程状态,根据两个端子采集的信号,去除t2处抖动;若编码器状态为结束状态,根据两个端子采集的信号,得出转动方向。本发明的发明目的在于提供一种旋钮编码器去抖方法,采用本发明提供的技术方案解决了现有去抖方法存在硬件成本高以及实用性低的技术问题。
Description
技术领域
本发明涉及旋钮编码器技术领域,尤其涉及一种旋钮编码器去抖方法。
技术背景
旋转编码器是用来测量转速并配合PWM技术可以实现快速调速的装置,光电式旋转编码器通过光电转换,可将输出轴的角位移、角速度等机械量转换成相应的电脉冲以数字量输出(REP)。分为单路输出和双路输出两种。技术参数主要有每转脉冲数(几十个到几千个都有),和供电电压等。单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组A/B相位差90度的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。
旋钮编码器应用广泛,如图1所示,旋钮编码器靠A、B信号来判断方向及速度,而且所有编码器都存在抖动(t1、t2、t3),一定要消除抖动才能正确判断旋钮的方向和速度。
目前广泛应用的去抖方案是硬件去抖,使用电阻和电容滤除抖动,缺点是需要硬件成本,要根据抖动时间计算电阻电容值,旋转速度更快的编码器可能会把正常信号滤除。
软件去抖方式是通过定时采样A、B通道的状态来算出方向和速度,缺点是实时性不够,占用系统资源,稍微大点的系统task时间分配完全不能使用该方案设计。
发明内容
本发明的发明目的在于提供一种旋钮编码器去抖方法,采用本发明提供的技术方案解决了现有去抖方法存在硬件成本高以及实用性低的技术问题。
为了达到上述技术效果,本发明提供一种旋钮编码器去抖方法,用于包括A端子和B端子的编码器,A端子和B端子分别与处理器的I O引脚信号连接;包括以下步骤:
S100、对A端子和B端子完成初始设定;
S200、根据A、B端子采集的信号判定旋钮编码器的编码器状态;
S300、若编码器状态为开始状态,根据两个端子采集的信号,去除t1处抖动;
S400、若编码器状态为转动状态,根据两个端子采集的信号,去除t2处抖动;
S500、若编码器状态为结束状态,根据两个端子采集的信号,得出转动方向。
优选的,在步骤S100中,初始设定包括:
A、B端子的采样信号均设置为中断触发,且B为上升沿触发中断;关闭A中断;设定A信号的变量S和SS,以及状态标识R,均为0。
优选的,在步骤S200中:若A触发中断,判定为转动状态,进入步骤S400;若B触发中断,进一步判断编码器状态处于开始状态还是结束状态。
优选的,在步骤S200中,若B触发中断,判断状态标识R;
若状态标识R=0,则为开始标志,判定编码器状态处于开始状态,进入步骤S300;
若状态标识R=1,则为结束标志,判定编码器状态处于结束状态,进入步骤S500。
优选的,步骤S300包括以下步骤:
S301、将A信号状态保存至变量S;
S302、若变量S=1,设置A信号为下降沿中断,关闭B中断,去除t1处抖动;
S303、若变量S=0,设置A信号为上升沿中断,关闭B中断,去除t1处抖动。
优选的,步骤400包括以下步骤:
S401、读取B信号的电平状态;
S402、若B=0,判定为无效触发,打开B中断并设置为上升沿中断,关闭A中断,设置变量S=变量SS=状态标识R=0,去除t2处抖动;
S403、若B=1,打开B中断并设置为下降沿中断,关闭A中断,设置状态标识R=1。
优选的,步骤S500包括以下步骤:
S501、将A信号状态保存至变量SS;
S502、若变量SS=变量S,判定为抖动引起的误判;
若变量SS=0,变量S=1,判定为沿CCW方向转动一次;
若变量SS=1,变量S=0,判定为沿CW方向转动一次;
S503、设置B为上升沿中断,关闭A中断,设置变量S=变量SS=状态标识R=0。
由上可知,应用本发明提供的技术方案,采用中断方式监控A、B双口状态,不消耗系统资源,有效解决旋钮编码器抖动引起的误判,能够快速精准的响应旋钮方向及速度,无需硬件去抖,又不占用过多系统资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对本发明实施例或现有技术的描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一部分实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为旋钮编码器连接电路图和抖动信号图;
图2为本发明实施例旋钮编码器的连接电路图;
图3为本发明实施例旋钮编码器A、B端子处的信号图;
图4为本发明实施例旋钮编码器去抖方法流程图;
图5为本发明实施例旋钮编码器去抖方法流程框图;
图6为本发明实施例编码器状态判断过程流程框图;
图7为本发明实施例开始状态的去抖步骤流程框图;
图8为本发明实施例转动状态的去抖步骤流程框图;
图9为本发明实施例结束状态的处理步骤流程框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在旋钮编码器中,目前广泛应用的去抖方案是硬件去抖和软件去抖。采用硬件去抖需要硬件成本,要根据抖动时间计算电阻电容值,旋转速度更快的编码器可能会把正常信号滤除;采用软件去抖,存在实时性不够,占用系统资源的问题。
如图2所示,为此,本实施例提供一种旋钮编码器去抖方法,用于包括A端子和B端子的编码器,A端子和B端子分别与处理器的IO引脚信号连接。从编码器抖动结构可以看出,可能存在t1、t2、t3三处抖动,本发明实施例提供的旋钮编码器去抖方法,采用中断方式监控A、B双口状态,不消耗系统资源。
请参见图4-5,本实施例提供的旋钮编码器去抖方法,包括以下步骤:
S100、对A端子和B端子完成初始设定;
S200、根据A、B端子采集的信号判定旋钮编码器的编码器状态;
S300、若编码器状态为开始状态,根据两个端子采集的信号,去除t1处抖动;
S400、若编码器状态为转动状态,根据两个端子采集的信号,去除t2处抖动;
S500、若编码器状态为结束状态,根据两个端子采集的信号,得出转动方向。
为此,本实施例提供的旋钮编码器去抖方法,包括编码器状态的判断步骤以及去抖步骤,其中步骤S200为编码器状态的判断步骤,步骤S300-S500为去抖步骤。
由于本实施例采用中断方式监控A、B双口状态,为此在步骤S100中,初始设定包括:A、B端子的采样信号均设置为中断触发,且B为上升沿触发中断;关闭A中断;设定A信号的变量S和SS,以及状态标识R,均为0。
一、编码器状态的判断步骤
与抖动相对应的,t1处抖动对应为开始状态,t2处抖动对应为转动状态,t3处抖动对应为结束状态。对此,在步骤S200中:若A触发中断,判定为转动状态,进入步骤S400;若B触发中断,进一步判断编码器状态处于开始状态还是结束状态。
为此,需要先对编码器的状态进行判断,再根据状态做出相应的去抖处理。
在编码器状态判断过程中,A触发中断,判定为转动状态;B触发中断,进一步判断编码器状态处于开始状态还是结束状态。请参见图6,在B触发中断时,具体包括以下步骤:
S201、若B触发中断,判断状态标识R;
S202、若状态标识R=0,则为开始标志,判定编码器状态处于开始状态,进入步骤S300;
S203、若状态标识R=1,则为结束标志,判定编码器状态处于结束状态,进入步骤S500。
二、去抖步骤
通过步骤S200完成状态判断后,进入步骤S300-S500完成对应的去抖操作。
1、开始状态的去抖步骤
请参见图7,在步骤S300中,包括以下步骤:
S301、将A信号状态保存至变量S;
S302、若变量S=1,设置A信号为下降沿中断,关闭B中断,去除t1处抖动;
S303、若变量S=0,设置A信号为上升沿中断,关闭B中断,去除t1处抖动。
2、转动状态的去抖步骤
请参见图8,步骤S400包括以下步骤:
S401、读取B信号的电平状态;
S402、若B=0,判定为无效触发,打开B中断并设置为上升沿中断,关闭A中断,关闭A中断,设置变量S=变量SS=R=0,去除t2处抖动;
S403、若B=1,打开B中断并设置为下降沿中断,关闭A中断,设置R=1。
3、结束状态的处理步骤
请参见图3,不考虑抖动情况的的方向计算,在制动位置前旋钮编码器转动的方向对应的信号跳变如表
CW方向 | CCW方向 | |
A信号 | 1→0 | 0→1 |
B信号 | 0→1 | 0→1 |
请参见图9,根据信号跳变表,步骤S500中,还需判断旋转方向,具体包括:
S501、将A信号状态保存至变量SS;
S502、若变量SS=变量S,判定为抖动引起的误判;
若变量SS=0,变量S=1,判定为沿CCW方向转动一次;
若变量SS=1,变量S=0,判定为沿CW方向转动一次;
S503、设置B为上升沿中断,关闭A中断,设置变量S=变量SS=R=0。
综上所述,本实施例采用中断方式监控A、B双口状态,不消耗系统资源,有效解决旋钮编码器抖动引起的误判,能够快速精准的响应旋钮方向及速度,无需硬件去抖,又不占用过多系统资源。
以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。
Claims (7)
1.一种旋钮编码器去抖方法,用于包括A端子和B端子的编码器,A端子和B端子分别与处理器的IO引脚信号连接;其特征在于:包括以下步骤:
S100、对A端子和B端子完成初始设定;
S200、根据A、B端子采集的信号判定旋钮编码器的编码器状态;
S300、若编码器状态为开始状态,根据两个端子采集的信号,去除t1处抖动;
S400、若编码器状态为转动状态,根据两个端子采集的信号,去除t2处抖动;
S500、若编码器状态为结束状态,根据两个端子采集的信号,得出转动方向。
2.根据权利要求1所述的旋钮编码器去抖方法,其特征在于:在步骤S100中,初始设定包括:
A、B端子的采样信号均设置为中断触发,且B为上升沿触发中断;关闭A中断;设定A信号的变量S和SS,以及状态标识R,均为0。
3.根据权利要求2所述的旋钮编码器去抖方法,其特征在于:在步骤S200中:若A触发中断,判定为转动状态,进入步骤S400;若B触发中断,进一步判断编码器状态处于开始状态还是结束状态。
4.根据权利要求3所述的旋钮编码器去抖方法,其特征在于:在步骤S200中,若B触发中断,判断状态标识R;
若状态标识R=0,则为开始标志,判定编码器状态处于开始状态,进入步骤S300;
若状态标识R=1,则为结束标志,判定编码器状态处于结束状态,进入步骤S500。
5.根据权利要求4所述的旋钮编码器去抖方法,其特征在于:步骤S300包括以下步骤:
S301、将A信号状态保存至变量S;
S302、若变量S=1,设置A信号为下降沿中断,关闭B中断,去除t1处抖动;
S303、若变量S=0,设置A信号为上升沿中断,关闭B中断,去除t1处抖动。
6.根据权利要求5所述的旋钮编码器去抖方法,其特征在于:步骤400包括以下步骤:
S401、读取B信号的电平状态;
S402、若B=0,判定为无效触发,打开B中断并设置为上升沿中断,关闭A中断,设置变量S=变量SS=状态标识R=0,去除t2处抖动;
S403、若B=1,打开B中断并设置为下降沿中断,关闭A中断,设置状态标识R=1。
7.根据权利要求6所述的旋钮编码器去抖方法,其特征在于:步骤S500包括以下步骤:
S501、将A信号状态保存至变量SS;
S502、若变量SS=变量S,判定为抖动引起的误判;
若变量SS=0,变量S=1,判定为沿CCW方向转动一次;
若变量SS=1,变量S=0,判定为沿CW方向转动一次;
S503、设置B为上升沿中断,关闭A中断,设置变量S=变量SS=状态标识R=0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010662007.5A CN112000141B (zh) | 2020-07-10 | 2020-07-10 | 一种旋钮编码器去抖方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010662007.5A CN112000141B (zh) | 2020-07-10 | 2020-07-10 | 一种旋钮编码器去抖方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112000141A true CN112000141A (zh) | 2020-11-27 |
CN112000141B CN112000141B (zh) | 2023-07-14 |
Family
ID=73466817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010662007.5A Active CN112000141B (zh) | 2020-07-10 | 2020-07-10 | 一种旋钮编码器去抖方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112000141B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596693A (zh) * | 2020-12-10 | 2021-04-02 | 惠州市德赛西威汽车电子股份有限公司 | 一种旋钮式音量编码器的去抖动方法及存储介质 |
WO2022178835A1 (zh) * | 2021-02-26 | 2022-09-01 | 京东方科技集团股份有限公司 | 按键控制装置和按键控制方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520648A (zh) * | 2009-04-03 | 2009-09-02 | 四川长虹电器股份有限公司 | 一种去除按键抖动的方法和系统 |
CN101839509A (zh) * | 2009-03-20 | 2010-09-22 | 上海松下微波炉有限公司 | 防止旋钮机械抖动的方法和装置 |
CN202142053U (zh) * | 2011-05-06 | 2012-02-08 | 广州励丰文化科技股份有限公司 | 基于可编程器件的编码器操作识别处理装置 |
CN102609258A (zh) * | 2012-02-02 | 2012-07-25 | 武汉光庭科技有限公司 | 一种对旋转编码器识别的改进方法 |
CN105842473A (zh) * | 2016-03-30 | 2016-08-10 | 深圳华云数码有限公司 | 一种旋转编码器测速方法及其系统 |
CN107589933A (zh) * | 2017-09-06 | 2018-01-16 | 大唐终端技术有限公司 | 旋钮式数字编码开关装置及其工作状态识别方法 |
CN107656093A (zh) * | 2017-10-16 | 2018-02-02 | 深圳市路畅科技股份有限公司 | 一种旋转编码器的检测方法及装置 |
CN207690064U (zh) * | 2017-09-06 | 2018-08-03 | 大唐终端技术有限公司 | 旋钮式数字编码开关装置 |
CN115291548A (zh) * | 2022-08-04 | 2022-11-04 | 浙江威星智能仪表股份有限公司 | 一种基于单按键编码实现多种按键状态的方法 |
-
2020
- 2020-07-10 CN CN202010662007.5A patent/CN112000141B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101839509A (zh) * | 2009-03-20 | 2010-09-22 | 上海松下微波炉有限公司 | 防止旋钮机械抖动的方法和装置 |
CN101520648A (zh) * | 2009-04-03 | 2009-09-02 | 四川长虹电器股份有限公司 | 一种去除按键抖动的方法和系统 |
CN202142053U (zh) * | 2011-05-06 | 2012-02-08 | 广州励丰文化科技股份有限公司 | 基于可编程器件的编码器操作识别处理装置 |
CN102609258A (zh) * | 2012-02-02 | 2012-07-25 | 武汉光庭科技有限公司 | 一种对旋转编码器识别的改进方法 |
CN105842473A (zh) * | 2016-03-30 | 2016-08-10 | 深圳华云数码有限公司 | 一种旋转编码器测速方法及其系统 |
CN107589933A (zh) * | 2017-09-06 | 2018-01-16 | 大唐终端技术有限公司 | 旋钮式数字编码开关装置及其工作状态识别方法 |
CN207690064U (zh) * | 2017-09-06 | 2018-08-03 | 大唐终端技术有限公司 | 旋钮式数字编码开关装置 |
CN107656093A (zh) * | 2017-10-16 | 2018-02-02 | 深圳市路畅科技股份有限公司 | 一种旋转编码器的检测方法及装置 |
CN115291548A (zh) * | 2022-08-04 | 2022-11-04 | 浙江威星智能仪表股份有限公司 | 一种基于单按键编码实现多种按键状态的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596693A (zh) * | 2020-12-10 | 2021-04-02 | 惠州市德赛西威汽车电子股份有限公司 | 一种旋钮式音量编码器的去抖动方法及存储介质 |
CN112596693B (zh) * | 2020-12-10 | 2024-08-02 | 惠州市德赛西威汽车电子股份有限公司 | 一种旋钮式音量编码器的去抖动方法及存储介质 |
WO2022178835A1 (zh) * | 2021-02-26 | 2022-09-01 | 京东方科技集团股份有限公司 | 按键控制装置和按键控制方法 |
GB2611899A (en) * | 2021-02-26 | 2023-04-19 | Boe Technology Group Co Ltd | Key control apparatus and key control method |
US12032751B2 (en) | 2021-02-26 | 2024-07-09 | Boe Technology Group Co., Ltd. | Key control device and key control method |
Also Published As
Publication number | Publication date |
---|---|
CN112000141B (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112000141A (zh) | 一种旋钮编码器去抖方法 | |
US11582105B2 (en) | Telemetry-based network switch configuration validation | |
US8688862B1 (en) | Systems and methods for monitoring input signal parameters | |
US11532843B2 (en) | Detection method and detection device for branch states of battery system | |
US11933645B2 (en) | Methods and apparatus to determine a position of a rotatable shaft of a motor | |
EP4075749A1 (en) | Detection method and detection device for heavy flow data stream | |
CN110806225B (zh) | 一种增量式编码器的断线位置检测系统和方法 | |
WO2020211698A1 (zh) | 基于数据中心监控系统的智能设备监测方法、装置及设备 | |
CN114237948A (zh) | 晶振时钟失效检测方法 | |
JP4211195B2 (ja) | クロック異常検出回路 | |
CN110806224A (zh) | 一种增量式编码器位置校正系统及方法 | |
EP1684458A1 (en) | A method of calculating broadband access server dhcp user's on-line time | |
CN117706460A (zh) | 动力电池采样线虚接的诊断方法、装置、电子设备、介质 | |
CN110806550B (zh) | 故障检测组件、方法及装置、电子调速器、无人机 | |
CN101539437B (zh) | 增量型旋转编码器精确计数的算法及其实现装置 | |
WO2007125472A2 (en) | Data processing apparatus | |
CN102866873A (zh) | 一种带计算机的座位的状态检测方法 | |
CN116737642A (zh) | 一种spi主设备、中断方法及系统 | |
CN112804067B (zh) | 流量数据处理方法、装置、服务器及系统 | |
CN114966414A (zh) | 电池包异常检测方法、装置及电子设备 | |
US11095496B2 (en) | Network failure detection method and network failure detection device | |
CN109900922A (zh) | 转速确定方法、装置、电子设备及可读存储介质 | |
CN110990229B (zh) | 一种系统信息采集方法及装置 | |
CN113848466A (zh) | 一种实现旋钮迅速响应的检测电路及检测方法 | |
CN112504316A (zh) | 旋转编码器检测方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |