旋转编码器的抗抖动计数电路
2008-11-28
作者:陈敏捷 田国璋
摘 要: 旋转编码器" title="旋转编码器">旋转编码器应用于角度定位或测量时,由于旋转轴的晃动可能引起编码器输出波形的抖动,从而引发误计数现象。介绍了一个抗抖动计数电路,滤除了旋转编码器因抖动而造成的误计数。
关键词: 旋转编码器 抗抖动电路 数字电路
旋转编码器应用于角度定位或测量时,通常有A、B、Z三相输出。旋转编码器的输出波形见图1。A相和B相输出占空比为50%的方波。编码器每转一周,A相和B相输出固定数目的脉冲(如100个脉冲)。当编码器正向旋转时,A相比B相超前四分之一个周期;当编码器反向旋转时,B相比A相超前四分之一个周期。A相和B相输出方波的相位差为90±45°。编码器每转一周,Z相输出一个脉冲。由于编码器每转一周,A相和B相输出固定数目的脉冲,则A相或B相每输出一个脉冲,表示编码器旋转了一个固定的角度。当Z相输出一个脉冲时,表示编码器旋转了一周。因此旋转编码器可以测量角位移及位移方向。
问题出在伺服系统停止工作时,若无锁定,则旋转轴受外力(如风力影响)可能自由晃动,因而引起编码器输出波形抖动,如图2所示,从而引起误计数。在这种情况下,就不能对波形进行正确计数。虽然可以通过软件设置标志状态,用记录历史状态的变化来滤除误计数,但是程序耗费颇大。因此,本人设计了一个抗抖动计数电路,它能够自动消除抖动造成的误计数。
1 抗抖动计数电路原理图
图3是抗抖动计数电路原理图。此电路滤除了旋转编码器输出波形的抖动现象。该电路分为四个部分:译码电路U4A;互锁电路U5A、U5B;正旋计数链J1、J3、J5和反旋计数链J2、J4、J6。U4A为二四译码器" title="译码器">译码器,U5A、U5B为与门" title="与门">与门,J1~J6为D触发器。正旋计数链负责对编码器正向旋转的计数,反旋计数链负责对编码器反向旋转的计数。
2 抗抖动计数电路工作分析
图4为二四译码器输出的波形。译码器产生d、a、b、c四种不同的状态。在图3中当B=0、A=0时,译码器 Q0输出为d状态,d状态为高电平" title="高电平">高电平。当B=0、A=1时,译码器Q1输出为a状态,a状态为高电平。当B=1、A=1时,译码器 Q2输出为b状态,b状态为高电平。b状态不影响计数和方向确定,在图3电路中没有使用。当B=1、A=0时,译码器Q3输出为c状态,c状态为高电平。
当旋转编码器正向旋转时,译码器输出的状态顺序为d、a、b、c、d、a、b、c……。如图4所示。当B=0、A=0时,进入d状态,与门U5A的Pin2=a=0(Pin是管脚的意思),于是U5A的输出Pin3=0。D触发器J1的R=d=1、S=0,因此J1被清0。与门U5B的Pin5=c=0,于是U5B的输出Pin4=0。D触发器J2的R=d=1、S=0,因此J2也被清0。这时J1、J2的端都为1,与门U5的 Pin1=Pin6=1,U5A和U5B都处于等待开门状态。当进入状态a时,Q1=a=1,U5A的Pin2=a=1。由于c=0,所以J2的端仍为1,U5A的Pin1=1,U5A的输出Pin3=1。J1的R=d=0、S=1,因此J1被置1。J1的Q=1,=0。J1的Q=1,正旋标志送到了J3的D端。同时J1的端关闭了U5B。在下一个d出现之前,所有的c脉冲都不会改变J2的状态。这就是说,J1、J3、J5组成的正旋计数链被打开,J2、J4、J6组成的反旋计数链被阻断。U5A、U5B、J1、J2完成互锁的功能。在进入状态a时,J3的R=a=1、S=0,J3被清0,J5的R=a=1、S=0,J5被清0。在进入状态c前,J3的R=a=0、S=0、D=1,J3处于待触发状态。J3的CLK=c,当c脉冲上升沿过后,D=1被打入J3的Q端,正旋标志送到了J5的D端。在进入状态d前,J5的R=a=0、S=0,J5处于待触发状态。J5的CLK=d,当d脉冲上升沿过后,D=1被打入J5的Q端,正旋标志送到了正旋计数输出端。正旋计数输出端由低电平变为高电平。到此为止,完成了一次正旋计数。当由状态d进入状态a时,J5的R=a=1、S=0,J5被清0,正旋计数输出端由高电平变为低电平。由此可知,当旋转编码器正向旋转时,对应A相和B相的每一个完整周期,正旋计数输出端都会产生相应的一个脉冲。
a的出现抢到了正旋计数权。只有在d重新出现后,脉冲c才可能有机会抢到反旋计数权。从而保证了一旦进入正旋计数状态,不全完成这一过程,就进入不了反旋计数状态。运行时有可能从状态a返回状态d,结果这只不过释放正旋计数权。因这时正旋标志还只在J3输入端上,a出现时已把J3清0。d状态只会把0送给J5的Q端,因此不会产生误计数。
当旋转编码器反向旋转时,译码器输出的状态顺序为d、c、b、a、d、c、b、a……。这种情况的分析方法与正向旋转的分析方法相同,这里不再叙述。
这就好比接力赛。在一个只允许上一个人的封闭的环形跑道上依次均匀设d、a、b、c四个站,立四个裁判员。d点为起止点、出入口,持棒运动员沿环形跑道一站站往下跑。d裁判长的职责是:运动员往a去(顺行),告示:“有人,正向”;往c去(逆行),告示:“有人,反相”。其他裁判员的职责是给到达本站的运动员发签证(计数标志),往回跑,撤销签证。d裁判长的计分规则是:凭其他裁判的签证齐全加牌示,正,加一分,反,减一分,然后撤销签证。签证不齐到d,则不计分,撤销签证。运动员在跑道内来回跑或坐时,d裁判视而不见。
例如在图2中,当从状态d进入状态a时,正旋标志送到J3的D端。此后的a、b、a、b、a、b都不起作用,只是把J3和J5反复清0。当从状态b进入状态c时,正旋标志送到J5的D端。当从状态c进入状态d时,正旋标志送到正旋计数输出端,同时J1和J2被清零。在从状态d进入状态c后,反旋标志送到J4的D端。同时,D=0被打入J3的Q端,这时J5的D端为零。在从状态c回到状态d后,反旋计数权被释放。但是,由于J5的D端为零,虽然这里再次出现状态d,该d脉冲不会发生计数,这就是抗抖动。
图5为抗抖动计数电路的输出波形。此电路计数频率可达10MHz。A相和B相输入前应予整形,必要时还要进行光电隔离。
本人把此电路用于对天线云台" title="云台">云台角度的定位与测量。天线云台有两个旋转角度,俯仰角从0~90度,方位角从0~354度。旋转编码器用的是OMRON公司的E6A2。此编码器每转一周,A相或B相输出一百个脉冲。由此可得,抗抖动计数电路每输出一个脉冲,编码器旋转的角度是3.6度。如果加上变速齿轮将会提高角度测量精度。把抗抖动电路的正旋计数输出和反旋计数输出接到单片机的中断管脚上,其下降沿时给单片机发中断。单片机把处理的角度信息送到显示屏上显示出来,从而完成了对天线云台角度的定位与测量。这套天线角度显示系统在实际使用中运行一直很稳定,没有出现过误计数现象。
参考文献
1 王毓银.脉冲与数字电路.北京:高等教育出版社,1992
2 Victor P. Nelson. 数字逻辑电路分析与设计.北京:清华大学出版社,1997
4 John M. Yarbrough(美).李书浩译.数字逻辑应用与设计.北京:机械工业出版社,2000
5 陆 坤,奚大顺,李之权.电子设计技术[M]. 成都:电子科技大学出版社,1997