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

    本文由jwe_9413贡献
    pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
    基于 FPGA 的增量型光电编码器抖动二倍频电路设计
    王俊山 程明 白小营
    在某些工业自动控制领域、某些装备应用上,经常会遇到各种需要测量长度 的场合,目前通常采用的是光电编码器。光电编码器根据其刻度方法及信号输出 形式,可分为增量式、绝对式、混合式三种。它是一种集光、机、电为一体的传 感器, 具有精度高、 响应快、 性能稳定可靠等显著的优点, 能够精确地检测角度、 转速、位移等参数。它可以将位移等物理量转变为数字脉冲信号,通过计算脉冲 的个数,实现精确的位移测量。然而由于工作环境等因素影响,增量型光电编码 器输出信号中含有较多的抖动误码脉冲, 将会引起误计数。本文分析误码脉冲产 生的原因,设计一种有效的滤波电路。 1、增量型编码器的工作原理 增量型编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉 冲或数字量的传感器,它由光栅盘和光电检测装置组成。光栅盘是在一定直径的 圆板上等分地
开通若干个长方形孔,见图 1。由于光电码盘与电动机同轴,电动 机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置 检测输出若干脉冲信号,编码盘上涂有两道相差 90°黑自相同的栅栏,分别称之 A 道和 B 道。其输出脉冲也是相差 90°。当编码器正向旋转时,A 相比 B 超前 90°,当编码器反向旋转时,A 相比 B 相滞后 90°。正常情况下编码器的输 出波形如图 1 所示。 2、误码脉冲产生的原因及其滤除方法 2.1 误码脉冲产生的原因 为了说明误码脉冲的存在性,将编码器码盘局部放大。图 1 中点 0 是编码器 旋转轴的中心,圆角矩形代表码盘上 A 列和 B 列透光狭缝。假定编码器一相信 号处于某种状态,而另一相信号处于高低电平跳变的交界状态,则编码器的误码 脉冲如图 2(a),图 2(b)所示。由于电机的旋转或机械设备的振动,会使编码器输 出脉冲抖动,从而引起误计数。它一方面表现为在透光窗口附近的抖动,引起的 干扰脉冲, 如图 2(a)给出了 A 相脉冲信号在上升沿和下降沿发生抖动输出的时序 波形,图 2(b)给出了 B 相脉冲信号在上升沿和下降沿发生抖动输出的时序波形; 另一方面表现为在编码器的某点附近前后振动,引起干扰脉冲。如图 2(c),图
    1
    2(d)给出了信号在编码器 b 点前后抖动的时序波形。编码器从 a 点正转到 b 点, 然后编码器反转到 a 点,又正转到 b 点,两个 b 点之间的脉冲数为干扰脉冲。
    2.2 误码脉冲的滤除 2 1 221 滤除编码器抖动的原理 采用二倍频技术滤除抖动脉冲。所谓二倍频技术即对 A 相或者 B 相每个脉 冲的上升沿和下降沿分别计数。光电编码器经过二倍频后正常输出波形如图 3 所示,A 相脉冲 O1 跳变时,B O,则编码器正转;B 1,则编码器反转。 A 相脉冲 1O 跳变时,B 1,则编码器正转;B 0,则编码器反转。编码器 正常输出波形时,AB 两相交替跳变,如果 A 相发生跳变后,B 相没有发生跳 A 相又发生跳变,此时认为是干扰脉冲,反之同样视为干扰脉冲。
    2
    分析图 4,对 A 相的跳变沿进行二倍频计数,B 相的高低电平用来判断编码 器的正反转。B 相边沿的抖动脉冲对二倍频计数没有影响,如图 4(b)所示。分析 4(a)A 相边缘的抖动认为是干扰脉冲被滤除掉。图 4(c),图 4(d)中的 ab 标记的位置是编码器物理地址,如图 4(d)标记的 ab 表示编码器在此处反复振 动。图 4(c)、图 4(d)(1)(2)标记处跳变沿视为抖动脉冲,应滤除,A 相的正转脉 冲数据数和反转脉冲数据数相减后就是 A 相实
际二倍频后的脉冲数据。
    3
    2 2 222 FPGA 滤除编码器抖动及仿真结果 根据以上分析, 本文采用 FPGA 滤除增量型光电编码器输出抖动脉冲。 编译 环境采用 Quartus8 FPGA 中使用图形和语言结合的方法设计逻辑模块。 O 内部的逻辑子模块采用 Verilog 语言来实现。顶层模块的结构图如图 5 所示。A B 输入引脚连接增量型编码器 A 相和 B 相信号。Acount 16 位的数据寄存 器,输出当前编码器的位置。顶层设计中包含两个模块,一个是根据编码器的 B 相跳变沿记录来滤除编码器 A 相抖动脉冲的 BlockA 模块, 该模块根据滤除后的 A 相脉冲数据个数并记录脉冲数据。Verilog 的主要程序如下:
    4
    另一个模块 BlockB 增量式光电编码器主要完成的功能是滤除编码器 B 相的抖动脉冲。根据分 析滤除编码器抖动的原理,ENA 引脚为 BlockA 模块的输出引脚,当 A 相输入 引脚有跳变时 ENA 1A 相引脚有连续的跳变或者接下来 B 相有跳变时 ENA 0ENB 为编码器 B 相跳变使
能引脚,当 ENA 1 时如果 B 相有跳变 ENB 1,当 ENA 1 时如果 B 相有连续跳变 ENB 0。主要程序如下:
    以图 4(a)的编码器抖动输出仿真为例,仿真效果如图 6 所示。从图中分析, A 相输出 7 个脉冲,应该输出 3 个脉冲,二倍频后是 14 个脉冲,应该输出 6 脉冲,经过滤除后脉冲计数器数为 6 个。A 相的抖动脉冲得到有效的滤除。
    3 结语 现场调试结果证明, 该算法可以消除工业现场出现的干扰和抖动现象,能够 准确地记录脉冲数据。此滤波方法可以采用软件滤波,但是软件滤波需要的引脚 较多, 采用两个中断引脚响应 A 相的上升沿和下降沿, 浪费 CPU 资源。 采用 FPGA 实现编码器的滤波,设计方便,改动灵活。
    5
1

本文发布于:2024-09-21 19:43:33,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/353362.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:脉冲   编码器   抖动   输出   滤除   跳变
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议