收藏 分享(赏)

光电编码器输出脉冲的几种计数方法.doc

上传人:gnk289057 文档编号:9605580 上传时间:2019-08-18 格式:DOC 页数:7 大小:113.50KB
下载 相关 举报
光电编码器输出脉冲的几种计数方法.doc_第1页
第1页 / 共7页
光电编码器输出脉冲的几种计数方法.doc_第2页
第2页 / 共7页
光电编码器输出脉冲的几种计数方法.doc_第3页
第3页 / 共7页
光电编码器输出脉冲的几种计数方法.doc_第4页
第4页 / 共7页
光电编码器输出脉冲的几种计数方法.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、光电编码器输出脉冲的几种计数方法 阅览次数:6722 作者:潘明东 单位:华东理工大学机械工程学院 1 引言在位置控制系统中,为了提高控制精度,准确测量控制对象的位置是十分重要的。目前,检测位置的办法有两种:其一是使用位置传感器,测量到的位移量由变送器经A/D 转换成数字量送至系统进行进一步处理。此方法虽然检测精度高,但在多路、长距离位置监控系统中,由于其成本昂贵,安装困难,因此并不适用;其二是使用光电编码器1。光电编码器是高精度控制系统常用的位移检测传感器。当控制对象发生位置变化时,光电编码器便会发出 A、B 两路相位差 90 度的数字脉冲信号。正转时 A 超前 B90 度,反转时 B 超前

2、 A90 度。脉冲的个数与位移量成比例关系,因此通过对脉冲计数就能计算出相应的位移。该方法不仅使用方便、测量准确,而且成本较低,因此在电力拖动系统中,经常采用第二种位置测量方法。使用光电编码器测量位移,准确无误的记数起着决定性作用。由于在位置控制系统中,电机既可以正转,又可以反转,所以要求计数器既要能够实现加计数,又要能够实现减计数。相应的计数方法可以用软件来实现,也可以用硬件来实现。使用软件方式对光电编码器的脉冲进行方向判别和计数降低了系统控制的实时性,尤其当使用光电编码器的数量较多时,并且其可靠性也不及硬件电路。但是用软件计数外围电路比较简单,所以在计数频率不高的情况下,使用软件计数还是有

3、一定优势的。对编码器中输出的两路脉冲进行计数主要分两个步骤,首先要对编码器输出的两路脉冲进行鉴相,即:判别电机是正转还是反转;其次是进行加减计数,正转时加计数,反转时减计数。2 鉴相原理脉冲鉴相的方法比较多,既可以用软件实现,也可以用一个 D 触发器实现。下图是编码器正反转时输出脉冲的相位关系。由图中编码器输出波形可以看出,编码器正转时 A 相超前 B 相 90 度.在 A 相脉冲的下降沿处,B 相为高电平;而在编码器反转时, A 相滞后 B 相 90 度,在 A 相脉冲的下降沿处,B 相输出为低电平。这样,编码器旋转时通过判断 B 相电平的高低就可以判断编码器的旋转方向2。3 用软件实现脉冲

4、的鉴相、计数编码器输出的 A 向脉冲接到单片机的外部中断 INT0,B 向脉冲接到 I/O 端口P1.0。当系统工作时,首先要把 INT0 设置成下降沿触发,并开相应中断。当有有效脉冲触发中断时,进行中断处理程序,判别 B 脉冲是高电平还是低电平,若是高电平则编码器正转,加 1 计数;若是低电平则编码器反转,减 1 计数。4 用硬件实现脉冲的鉴相、计数硬件计数在执行速度上有软件计数不可比拟的优势,通常采用多个可预置 4 位双时钟加减计数器 74LS193 级联组成的加减计数电路。 P0-P3 为计数器的 4 位预置数据端,与数据输入锁存器相接;QA-QD 为计数器的 4 位数据输出端,与数据输

5、出缓冲器相接;MR 为清零端与上电清零脉冲相接;PL 为预置允许端,由译码控制电路触发;CU 为加脉冲输入端,CD 为减脉冲输入端;TCU 为进位输出端,TCD 为借位输出端。如下图所示:当 CU 和 CD 中一个输入脉冲时,另一个必须处于高电平,才能进行计数工作。而从编码器直接输出的 A、B 两路脉冲不符合要求,不能直接接到计数器的输入端。但我们可以利用这两路脉冲之间的相位关系对其进行鉴相后再计数。下图给出了光电编码器实际使用的鉴相与双向计数电路,鉴相电路用 1 个 D 触发器和 2 个与非门组成,计数电路用 3 片 74LS193 组成。当光电编码器顺时针旋转时, A 相超前 B 相 90

6、,D 触发器输出/Q(W1)为高电平,Q(W2)为低电平,上面与非门打开,计数脉冲通过(W3) ,送至双向计数器 74LS193 的加脉冲输入端 CU,进行加法计数;此时,下面与非门关闭,其输出为高电平(W4)。当光电编码器逆时针旋转时, A 相比 B 相延迟 90,D 触发器输出 /Q(W1)为低电平,Q(W2)为高电平,上面与非门关闭,其输出为高电平(W3) ;此时,下面与非门打开,计数脉冲通过(波 W4),送至双向计数器 74LS193 的减脉冲输入端 CD,进行减法计数3。5 利用单片机内部计数器实现可逆计数对以上两种计数方法进行分析可知,用纯软件计数虽然电路简单,但是计数速度慢,难以

7、满足实时性要求,而且容易出错,用外接加减计数芯片的方法,虽然速度快,但硬件电路复杂,由上图可以看出要做一个 12 位计数器需要 5 个外围芯片,成本也较高。那么我们能否用单片机内部的计数器来实现加减计数呢。我们知道,8051 片内有两个 16 位的定时器:定时器 0 和定时器 1,8052 还有一个定时器 2,这三个定时器都可以作为计数器来用。但 8051 内部的计数器是加 1 计数器,所以不能直接应用,必须经过适当的软件编程,来实现其“减”计数功能。硬件电路如下:我们可以把经过 D 触发器之后的脉冲 ,即方向控制脉冲(DIR )接到单片机的外部中断 INT0 端,同时经过反向器后再接到另一个

8、外部中断 INT1,并且把计数脉冲 A 接到单片机的片内计数器 T0 端即可,相对外部计数芯片来说,使用这种方法电路相对要简单的多。系统工作时,先要把两个中断设置成下降沿触发,并打开相应的中断。当方向判别脉冲(DIR)由低 高跳变时,INT1 中断,执行相应的中断程序,进行加计数;而当方向判别脉冲由高低跳变时,INT0 中断,执行相应的中断程序,进行 “减”计数(实际是重新复值,进行加计数) 。下面是软件编程思路:我们在 C 语言环境下来实现计数功能:#includeint data k=1;void service_int0() interrupt 0 using 0 k- ;/*标志位减

9、1*/TR0=0 ;/*停止计数 */TH0= -TH0 ;TL0= -TL0 ;/*把计数器重新复值,此时相当于减计数*/TR0=1 ;/*开始计数 */void service_int1() interrupt 2 using 1 k+ ;/*标志位加 1*/TR0=0 ;/*停止计数 */TH0= -TH0 ;TL0= -TL0 ;/*把计数器重新复值,此时相当于加计数*/TR0=1 ;/*开始计数 */void timer0(void) interrup 1 using2 if(k=0)/*反向计数满*/else if(k=1)/*计数为 0*/else/*正向计数满*/void ma

10、in(void)TCON=0X05 ;/*设置下降沿中断*/TMOD=0X05 ;/*T0 为 16 位计数方式*/IE=0X87 ;/*开中断*/TH0=0 ;TL0=0 ;/*预置初值*/此方法采用中断的形式进行计数,硬件电路比较简单,程序也不复杂,执行速度较快。6 结论本文分别介绍了利用软件、外接计数芯片及单片机内部计数器实现对编码器输出脉冲进行计数的方法。利用软件计数,硬件电路简单,但占用了较多的 CPU 资源,执行速度较慢。利用外接计数芯片的方法计数,计数速度较快,但是要用较多的外围芯片,硬件电路复杂。利用单片机内部计数器实现加减计数,在编码器旋转方向不频繁改变的情况下,计数速度很快,而且外围电路简单,编程也不复杂,只是占用了两个外部中断和一个内部计数器。具体使用哪种计数方法,在使用时还要根据具体情况进行选择。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报