基于FPGA的增量型光电编码器抗抖动二倍频电路设计

  • 格式:doc
  • 大小:19.00 KB
  • 文档页数:4

龙源期刊网

基于FPGA的增量型光电编码器抗抖动二倍频电路设计

作者:王俊山, 程 明, 白小营

来源:《现代电子技术》2010年第09期

摘 要:从增量型光电编码器的构造特点出发,分析其输出信号中引起抖动误码脉冲的原因。根据编码器两相输出信号(A相、B相)不能同时跳变的特点,设计了一种高精度抗抖动二倍频电路,能有效滤除信号的干扰脉冲。

关键词:光电编码器; 二倍频; 抗抖动; FPGA

中图分类号:TN15 文献标识码:A

文章编号:1004-373X(2010)09-0157-03

Anti-jitter Frequency Second Harmonic Circuit of

Increment Type Photoelectric Encoder Based on FPGA

WANG Jun-shan, CHENG Ming, BAI Xiao-ying

(Information Engineering College, Zhengzhou University, Zhengzhou 450001, China)

Abstract: According to the characteristics of the increment type photoelectric encoder′s

construction,the reasons of the error encoder pulse caused by jitter in the output signals are analyzed, a

high-precision anti-jitter second harmonic circuit was designed according to the characteristics that the

two output signals(A-phase, B phase) of the encoder can not change at the same time. In this way, the

interference pulse signal can be filtered out effectively.

Keywords: photoelectric encoder; second harmonic; anti-jitter; FPGA

在某些工业自动控制领域、某些装备应用上,经常会遇到各种需要测量长度的场合,目前通常采用的是光电编码器。光电编码器根据其刻度方法及信号输出形式,可分为增量式、绝对式、混合式三种。它是一种集光、机、电为一体的传感器,具有精度高、响应快、性能稳定可靠等显著的优点,能够精确地检测角度、转速、位移等参数。它可以将位移等物理量转变为数字脉冲信号,通过计算脉冲的个数,实现精确的位移测量[1]。然而由于工作环境等因素影响,增量型光电编码器输出信号中含有较多的抖动误码脉冲,将会引起误计数。本文分析误码脉冲产生的原因,设计一种有效的滤波电路。

1 增量型编码器的工作原理 龙源期刊网

增量型编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器,它由光栅盘和光电检测装置组成。光栅盘是在一定直径的圆板上等分地开通若干个长方形孔,见图1[2]。由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,编码盘上涂有两道相差90°黑自相同的栅栏,分别称之为A道和B道。其输出脉冲也是相差90°。当编码器正向旋转时,A相比B相超前90°,当编码器反向旋转时,A相比B相滞后[3]90°。正常情况下编码器的输出波形如图1所示[4-5]。

图1 光电编码器的输出

2 误码脉冲产生的原因及其滤除方法

2.1 误码脉冲产生的原因

为了说明误码脉冲的存在性,将编码器码盘局部放大。图1中点O是编码器旋转轴的中心,圆角矩形代表码盘上A列和B列透光狭缝[2]。假定编码器一相信号处于某种状态,而另一相信号处于高低电平跳变的交界状态,则编码器的误码脉冲如图2(a),图2(b)所示[6]。由于电机的旋转或机械设备的振动,会使编码器输出脉冲抖动,从而引起误计数。它一方面表现为在透光窗口附近的抖动,引起的干扰脉冲,如图2(a)给出了A相脉冲信号在上升沿和下降沿发生抖动输出的时序波形,图2(b)给出了B相脉冲信号在上升沿和下降沿发生抖动输出的时序波形;另一方面表现为在编码器的某点附近前后振动,引起干扰脉冲。如图2(c),图2(d)给出了信号在编码器b点前后抖动的时序波形。编码器从a点正转到b点,然后编码器反转到a点,又正转到b点,两个b点之间的脉冲数为干扰脉冲。

图2 光电编码器抖动波形输出

2.2 误码脉冲的滤除

2.2.1 滤除编码器抖动的原理

采用二倍频技术滤除抖动脉冲。所谓二倍频技术即对A相或者B相每个脉冲的上升沿和下降沿分别计数。光电编码器经过二倍频后正常输出波形如图3所示[7],A相脉冲0→1跳变时,B为0,则编码器正转;B为1,则编码器反转。A相脉冲1→0跳变时,B为1,则编码器正转;B为0,则编码器反转。编码器正常输出波形时,A、B两相交替跳变,如果A相发生跳变后,B相没有发生跳变A相又发生跳变,此时认为是干扰脉冲,反之同样视为干扰脉冲。

图3 编码器输出波形分析

分析图4,对A相的跳变沿进行二倍频计数,B相的高低电平用来判断编码器的正反转。B相边沿的抖动脉冲对二倍频计数没有影响,如图4(b)所示。分析图4(a),A相边缘的抖动认为是干扰脉冲被滤除掉。图4(c),图4(d)中的a,b标记的位置是编码器物理地址,如图4(d)标记的a,b龙源期刊网

表示编码器在此处反复振动。图4(c)、图4(d)(1)、(2)标记处跳变沿视为抖动脉冲,应滤除,A相的正转脉冲数据数和反转脉冲数据数相减后就是A相实际二倍频后的脉冲数据。

2.2.2 FPGA滤除编码器抖动及仿真结果

根据以上分析,本文采用FPGA滤除增量型光电编码器输出抖动脉冲。编译环境采用

Quartus Ⅱ 8.0。在FPGA中使用图形和语言结合的方法设计逻辑模块。内部的逻辑子模块采用Verilog语言来实现[8-9]。顶层模块的结构图如图5所示。 A和B输入引脚连接增量型编码器A相和B相信号。Acount为16位的数据寄存器,输出当前编码器的位置。顶层设计中包含两个模块,一个是根据编码器的B相跳变沿记录来滤除编码器A相抖动脉冲的BlockA模块,该模块根据滤除后的A相脉冲数据个数并记录脉冲数据。Verilog的主要程序如下:

另一个模块BlockB主要完成的功能是滤除编码器相的抖动脉冲。根据分析滤除编码器抖动的原理,ENA引脚为BlockA模块的输出引脚,当A相输入引脚有跳变时ENA为1,A相引脚有连续的跳变或者接下来B相有跳变时ENA为0。ENB为编码器B相跳变使能引脚,当ENA为1时如果B相有跳变为1,当ENA为1时如果B相有连续跳变ENB为0。主要程序如下:

always @(B)

begin

if(ENA) ENB

else if(ENB) ENB

else

ENB

end

以图4(a)的编码器抖动输出仿真为例,仿真效果如图6所示。从图中分析,A相输出7个脉冲,应该输出个脉冲,二倍频后是14个脉冲,应该输出6个脉冲,经过滤除后脉冲计数器数为6个。A相的抖动脉冲得到有效的滤除。

图6 编码器抖动输出仿真图

3 结 语

现场调试结果证明,该算法可以消除工业现场出现的干扰和抖动现象,能够准确地记录脉冲数据。此滤波 龙源期刊网

方法可以采用软件滤波,但是软件滤波需要的引脚较

多,采用两个中断引脚响应A相的上升沿和下降沿,浪费CPU资源[10]。采用FPGA实现编码器的滤波,设计方便,改动灵活。

参考文献

[1]许永华,李钢.数控机床中光电编码器计数电路设计[J].制造技术与机床,2000(1):14-15.

[2]吕国芳,孙超.利用中断技术防止编码器抖动计数的方法[EB/OL].[2009-2-12].

,2009.

[3]向艳稳,修吉平.光电编码器信号抗干扰算法[J].计算机测量与控制,2003(8):66-68.

[4]付小宁,程为彬.快速高精度光电测速算法[J].光电工程,2006(1):137-140.

[5]费伟中,沈建新,周勇.增量式光电编码器计数与接口电路的设计[J].微特电机,2007,35(1):137-140.

[6]蒋晶,蒋东方,高航.高可靠性增量式光电编码器接口电路设计[J].测控技术,2009,28(2):1-4.

[7]陈以,于新业,黄云鹏.基于FPGA的旋转编码器抗抖动四倍频电路设计[J].计算机工程与科学,2009,31(7):92-94.

[8]张延伟,杨金岩,葛爱学.VerilogHDL程序设计实例详解[M].北京:人民邮电出版社,2008.

[9]华清远见嵌入式培训中心.FPGA应用开发入门与典型实例[M].北京:人民邮电出版社,2008.

[10]王朕,刘学锋,刘陵顺.基于AT89C51的电机转速测量仪的设计与实现[J].四川兵工学报,2009,30(5):19-21.