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

第30卷第8期 电子工程师 2004年8月 ELECTRONICENGINEER

Vol.30No.8

Aug.2004

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

潘明东

(华东理工大学机械工程学院,上海市200237)

=摘 要> 光电编码器是高精度位置控制系统常用的一种位移检测传感器。在位置控制系统中,由于电机既可能正转,也可能反转,所以要对与其相连的编码器输出的脉冲进行计数,要求相应的计数器既能实现加计数,又能实现减计数,即进行可逆计数。其计数的方法有多种,包括纯粹的软件计数和硬件计数。文中分别对这两种常用的计数方法进行了分析,对其优缺点进行了对比,最后提出了一种新的计数方法,利用8051单片机内部的计数器实现对光电编码器输出脉冲的加减可逆计数,既节省了硬件资源,又能得到较高的计数频率。

关键词:光电编码器,计数器,加减计数,位置控制中图分类号:TP211

0 引 言

在位置控制系统中,为了提高控制精度,准确测量控制对象的位置是十分重要的。目前,检测位置的方法有两种。一种方法是使用位置传感器,测量到的位移量由变送器经A/D转换成数字量,送至系统进行进一步处理。此方法虽然检测精度高,但在多路、长距离位置监控系统中,由于其成本昂贵、安装困难,因此并不适用。另一种方法是使用光电编码器[1]。光电编码器是高精度控制系统常用的位移检测传感器。当控制对象发生位置变化时,光电编码器便会发出A、B两路相位差90b的数字脉冲信号。正转时A超前B为90b,反转时B超前A为90b。脉冲的个数与位移量成比例关系,因此,通过对脉冲计数就能计算出相应的位移。该方法不仅使用方便、测量准确,而且成本较低,在电力拖动系统中经常采用这种位置测量方法。

使用光电编码器测量位移,准确无误的计数起着决定性作用。由于在位置控制系统中,电机既可以正转,又可以反转,所以要求计数器既能实现加计数,又能实现减计数。相应的计数方法可以用软件实现,也可以用硬件实现。

使用软件方式对光电编码器的脉冲进行方向判别和计数降低了系统控制的实时性,尤其当使用光电编码器的数量较多时,且其可靠性也不及硬件电路。但其外围电路比较简单,所以在计数频率不高的情况下,使用软件计数仍有一定的优势。对编码器中输出的两路脉冲进行计数主要分两个步骤:首先要对编码器输出的两路脉冲进行鉴相,即判别电机是正转还是反转;其次是进行加减计数,正转时加计数,反转时减计数。

收稿日期:2004-05-18

1 鉴相原理

脉冲鉴相的方法比较多,既可以用软件实现,也可以用一个D触发器实现。图1是编码器正反转时输出

脉冲的相位关系。

图1 编码器输出波形

由图1中编码器输出波形可以看出,编码器正转

时A相超前B相90b,在A相脉冲的下降沿处,B相为高电平;而在编码器反转时,A相滞后B相90b,在A相脉冲的下降沿处,B相输出为低电平。这样,编码器旋转时通过判断B相电平的高低就可以判断编码器的旋转方向[2]。

2 用软件实现脉冲的鉴相和计数

编码器输出的A向脉冲接到单片机的外部中断INT0,B向脉冲接到I/O端口P1.0,如图2所示。当系统工作时,首先要把INT0设置成下降沿触发,并开相应中断。当有效脉冲触发中断时,执行中断处理程序,判别B脉冲是高电平还是低电平。若是高电平,则编码器正转,加1计数;若是低电平,则编码器反转,减1计数。

#

#计算机与自动化技术# 电子工程师 2004年8月

图2 软件方法的计数与判向电路

3 用硬件实现脉冲的鉴相和计数

硬件计数在执行速度上有软件计数不可比拟的优势,通常采用多个可预置4位双时钟加减计数器74LS193级联组成的加减计数电路。

如图3所示,P0、P1、P2、P3为计数器的4位预置数据端,与数据输入锁存器相接;QA、QB、QC、QD为计数器的4位数据输出端,与数据输出缓冲器相接;MR为清零端,与上电清零脉冲相接;PL为预置允许端,由译码控制电路触发;CU为加脉冲输入端,CD为减脉冲输入端;TCU为进位输出端;TCD

为借位输出端。

图4 光电编码器输出脉冲的鉴相及其计数

4 用单片机内部计数器实现可逆计数

对以上两种计数方法进行分析可知,用纯软件计数虽然电路简单,但是计数速度慢,难以满足实时性要

图3 加减计数芯片74LS193

求,而且容易出错,用外接加减计数芯片的方法,虽然速度快,但硬件电路复杂,由图4可以看出,要制作一个12位计数器需要5个外围芯片,成本较高。我们可以用单片机内部的计数器来实现加减计数。单片机8051片内有2个16位定时器(定时器0和定时器1),单片机8052还有一个定时器(定时器2),这3个定时器都可以作为计数器使用。但单片机8051内部的计数器是加1计数器,所以不能直接应用,必须经过适当的软件编程来实现其/减0计数功能。硬件电路如图5

所示。

当CU和CD中一个输入脉冲时,另一个必须处于高电平,才能进行计数工作。而从编码器直接输出的A、B两路脉冲不符合要求,不能直接接到计数器的输入端,但可以利用这两路脉冲之间的相位关系对其进行鉴相后再计数。

图4给出了光电编码器实际使用的鉴相与双向计数电路,鉴相电路用1个D触发器和2个与非门组成,计数电路用3片74LS193组成。

当光电编码器顺时针旋转时,A相超前B相90b,D触发器输出Q (W1)为高电平,Q(W2)为低电平,与非门N1打开,计数脉冲通过(W3),送至双向计数器74LS193的加脉冲输入端CU,进行加法计数;此时,与非门N2关闭,其输出为高电平(W4)。当光电编码器逆时针旋转时,A相比B相延迟90b,D触发器输出Q (W1)为低电平,Q(W2)为高电平,与非门N1关闭,其输出为高电平(W3);此时,与非门N2打开,计数脉冲通过(W4),送至双向计数器74LS193的减脉冲输入端CD,进行减法计数[3]

图5 单片机内部计数器加减计数的硬件结构

我们可以把经过D触发器之后的脉冲即方向控制脉冲(DIR)接到单片机的外部中断INT0端,经过反向器后再接到另一个外部中断INT1,并把计数脉冲A接到单片机的片内计数器T0端即可。相对外部计数芯片来说,使用这种方法时电路相对要简单得多。系统工作时,先要把两个中断设置成下降沿触发,并打开相应的中断。当DIR由低向高跳变时,INT1中断,执

#

第30卷第8期 潘明东:光电编码器输出脉冲的几种计数方法 #计算机与自动化技术#

行相应的中断程序,进行加计数;而当DIR由高向低跳变时,INT0中断,执行相应的中断程序,进行减计数(实际是重新复值,进行加计数)。

下面是软件编程思路(在C语言环境下实现计数功能)。

#includeintdatak=1;

voidservice_int0()interrupt0using0 {k-- ;//标志位减1 TR0=0 ;//停止计数 TH0=-TH0 ;

TL0=-TL0 ;//把计数器重新复值,此时相当于减

计数

TR0=1 ;//开始计数 }

voidservice_int1()interrupt2using1 {k++ ;//标志位加1 TR0=0 ;//停止计数 TH0=-TH0 ;

TL0=-TL0 ;//把计数器重新复值,此时相当于加

计数

TR0=1 ;//开始计数 }

voidtimer0(void)interrup1using2{if(k=0) //反向计数满 elseif(k=1) //计数为0 else //正向计数满}

voidmain(void)

{TCON=0X05 ;//设置下降沿中断 TMOD=0X05 ;//T0为16位计数方式 IE=0X87 ;//开中断 TH0=0 ;

TL0=0 ;//预置初值}

此方法采用中断的形式进行计数,硬件电路比较简单,程序也不复杂,执行速度较快。

5 结束语

本文分别介绍了利用软件、外接计数芯片及单片机内部计数器实现对编码器输出脉冲进行计数的方法。利用软件计数,硬件电路简单,但占用了较多的CPU资源,执行速度较慢。利用外接计数芯片的方法计数,计数速度较快,但要用较多的外围芯片,硬件电路复杂。利用单片机内部计数器实现加减计数,在编码器旋转方向不频繁改变的情况下,计数速度很快,而且外围电路简单,编程也不复杂,只是占用了2个外部中断和1个内部计数器。具体使用哪种计数方法,在使用时要根据具体情况进行选择。

参 考 文 献

[1]刘 岩,李凤荣,王金海,等.高速可逆位置计数器的研究

与FPGA实现.天津工业大学学报,2003,22(2):70~73[2]柳平增,程 勇,徐成志,等.开卷校平剪切生产线数控系

统的开发及应用.泰山学院学报,2003,25(3):87~90[3]俞竹青,潘全胜.一种光电编码器用可编程计数电路的设

计.传感器技术,2002,21(10):22~24

SeveralMethodsofOutputPulseCountingforPhotoelectricEncoder

PanMingdong

(EastChinaUniversityofScienceandTechnology,Shanghai200237,China)

=Abstract> Inpositioncontrolsystem,theelectromotorshouldbeabletoturnbackorforth,sothecounterdesignedtocountthepulseoutputfromthephotoelectricencoderconnectedtotheelectromotorshouldhavethefunc-tionofup-downcounting.Thatisreversiblecounting.Therearemanymethodstocountthepulseincludingsoftwarecountingandhardwarecounting.Thesetwomethodsofcountingareanalyzedinthispaper,andanewmethodofcountingissuggestedaftercomparingtheadvantagesanddisadvantagesofthem.Withfewerhardware,weobtainedahighspeedofreversiblecountingrateusingtheinternalcounterofthe8051MCU.

Keywords:photoelectricencoder,counter,reversiblecounting,positioncontrol

#

第30卷第8期 电子工程师 2004年8月 ELECTRONICENGINEER

Vol.30No.8

Aug.2004

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

潘明东

(华东理工大学机械工程学院,上海市200237)

=摘 要> 光电编码器是高精度位置控制系统常用的一种位移检测传感器。在位置控制系统中,由于电机既可能正转,也可能反转,所以要对与其相连的编码器输出的脉冲进行计数,要求相应的计数器既能实现加计数,又能实现减计数,即进行可逆计数。其计数的方法有多种,包括纯粹的软件计数和硬件计数。文中分别对这两种常用的计数方法进行了分析,对其优缺点进行了对比,最后提出了一种新的计数方法,利用8051单片机内部的计数器实现对光电编码器输出脉冲的加减可逆计数,既节省了硬件资源,又能得到较高的计数频率。

关键词:光电编码器,计数器,加减计数,位置控制中图分类号:TP211

0 引 言

在位置控制系统中,为了提高控制精度,准确测量控制对象的位置是十分重要的。目前,检测位置的方法有两种。一种方法是使用位置传感器,测量到的位移量由变送器经A/D转换成数字量,送至系统进行进一步处理。此方法虽然检测精度高,但在多路、长距离位置监控系统中,由于其成本昂贵、安装困难,因此并不适用。另一种方法是使用光电编码器[1]。光电编码器是高精度控制系统常用的位移检测传感器。当控制对象发生位置变化时,光电编码器便会发出A、B两路相位差90b的数字脉冲信号。正转时A超前B为90b,反转时B超前A为90b。脉冲的个数与位移量成比例关系,因此,通过对脉冲计数就能计算出相应的位移。该方法不仅使用方便、测量准确,而且成本较低,在电力拖动系统中经常采用这种位置测量方法。

使用光电编码器测量位移,准确无误的计数起着决定性作用。由于在位置控制系统中,电机既可以正转,又可以反转,所以要求计数器既能实现加计数,又能实现减计数。相应的计数方法可以用软件实现,也可以用硬件实现。

使用软件方式对光电编码器的脉冲进行方向判别和计数降低了系统控制的实时性,尤其当使用光电编码器的数量较多时,且其可靠性也不及硬件电路。但其外围电路比较简单,所以在计数频率不高的情况下,使用软件计数仍有一定的优势。对编码器中输出的两路脉冲进行计数主要分两个步骤:首先要对编码器输出的两路脉冲进行鉴相,即判别电机是正转还是反转;其次是进行加减计数,正转时加计数,反转时减计数。

收稿日期:2004-05-18

1 鉴相原理

脉冲鉴相的方法比较多,既可以用软件实现,也可以用一个D触发器实现。图1是编码器正反转时输出

脉冲的相位关系。

图1 编码器输出波形

由图1中编码器输出波形可以看出,编码器正转

时A相超前B相90b,在A相脉冲的下降沿处,B相为高电平;而在编码器反转时,A相滞后B相90b,在A相脉冲的下降沿处,B相输出为低电平。这样,编码器旋转时通过判断B相电平的高低就可以判断编码器的旋转方向[2]。

2 用软件实现脉冲的鉴相和计数

编码器输出的A向脉冲接到单片机的外部中断INT0,B向脉冲接到I/O端口P1.0,如图2所示。当系统工作时,首先要把INT0设置成下降沿触发,并开相应中断。当有效脉冲触发中断时,执行中断处理程序,判别B脉冲是高电平还是低电平。若是高电平,则编码器正转,加1计数;若是低电平,则编码器反转,减1计数。

#

#计算机与自动化技术# 电子工程师 2004年8月

图2 软件方法的计数与判向电路

3 用硬件实现脉冲的鉴相和计数

硬件计数在执行速度上有软件计数不可比拟的优势,通常采用多个可预置4位双时钟加减计数器74LS193级联组成的加减计数电路。

如图3所示,P0、P1、P2、P3为计数器的4位预置数据端,与数据输入锁存器相接;QA、QB、QC、QD为计数器的4位数据输出端,与数据输出缓冲器相接;MR为清零端,与上电清零脉冲相接;PL为预置允许端,由译码控制电路触发;CU为加脉冲输入端,CD为减脉冲输入端;TCU为进位输出端;TCD

为借位输出端。

图4 光电编码器输出脉冲的鉴相及其计数

4 用单片机内部计数器实现可逆计数

对以上两种计数方法进行分析可知,用纯软件计数虽然电路简单,但是计数速度慢,难以满足实时性要

图3 加减计数芯片74LS193

求,而且容易出错,用外接加减计数芯片的方法,虽然速度快,但硬件电路复杂,由图4可以看出,要制作一个12位计数器需要5个外围芯片,成本较高。我们可以用单片机内部的计数器来实现加减计数。单片机8051片内有2个16位定时器(定时器0和定时器1),单片机8052还有一个定时器(定时器2),这3个定时器都可以作为计数器使用。但单片机8051内部的计数器是加1计数器,所以不能直接应用,必须经过适当的软件编程来实现其/减0计数功能。硬件电路如图5

所示。

当CU和CD中一个输入脉冲时,另一个必须处于高电平,才能进行计数工作。而从编码器直接输出的A、B两路脉冲不符合要求,不能直接接到计数器的输入端,但可以利用这两路脉冲之间的相位关系对其进行鉴相后再计数。

图4给出了光电编码器实际使用的鉴相与双向计数电路,鉴相电路用1个D触发器和2个与非门组成,计数电路用3片74LS193组成。

当光电编码器顺时针旋转时,A相超前B相90b,D触发器输出Q (W1)为高电平,Q(W2)为低电平,与非门N1打开,计数脉冲通过(W3),送至双向计数器74LS193的加脉冲输入端CU,进行加法计数;此时,与非门N2关闭,其输出为高电平(W4)。当光电编码器逆时针旋转时,A相比B相延迟90b,D触发器输出Q (W1)为低电平,Q(W2)为高电平,与非门N1关闭,其输出为高电平(W3);此时,与非门N2打开,计数脉冲通过(W4),送至双向计数器74LS193的减脉冲输入端CD,进行减法计数[3]

图5 单片机内部计数器加减计数的硬件结构

我们可以把经过D触发器之后的脉冲即方向控制脉冲(DIR)接到单片机的外部中断INT0端,经过反向器后再接到另一个外部中断INT1,并把计数脉冲A接到单片机的片内计数器T0端即可。相对外部计数芯片来说,使用这种方法时电路相对要简单得多。系统工作时,先要把两个中断设置成下降沿触发,并打开相应的中断。当DIR由低向高跳变时,INT1中断,执

#

第30卷第8期 潘明东:光电编码器输出脉冲的几种计数方法 #计算机与自动化技术#

行相应的中断程序,进行加计数;而当DIR由高向低跳变时,INT0中断,执行相应的中断程序,进行减计数(实际是重新复值,进行加计数)。

下面是软件编程思路(在C语言环境下实现计数功能)。

#includeintdatak=1;

voidservice_int0()interrupt0using0 {k-- ;//标志位减1 TR0=0 ;//停止计数 TH0=-TH0 ;

TL0=-TL0 ;//把计数器重新复值,此时相当于减

计数

TR0=1 ;//开始计数 }

voidservice_int1()interrupt2using1 {k++ ;//标志位加1 TR0=0 ;//停止计数 TH0=-TH0 ;

TL0=-TL0 ;//把计数器重新复值,此时相当于加

计数

TR0=1 ;//开始计数 }

voidtimer0(void)interrup1using2{if(k=0) //反向计数满 elseif(k=1) //计数为0 else //正向计数满}

voidmain(void)

{TCON=0X05 ;//设置下降沿中断 TMOD=0X05 ;//T0为16位计数方式 IE=0X87 ;//开中断 TH0=0 ;

TL0=0 ;//预置初值}

此方法采用中断的形式进行计数,硬件电路比较简单,程序也不复杂,执行速度较快。

5 结束语

本文分别介绍了利用软件、外接计数芯片及单片机内部计数器实现对编码器输出脉冲进行计数的方法。利用软件计数,硬件电路简单,但占用了较多的CPU资源,执行速度较慢。利用外接计数芯片的方法计数,计数速度较快,但要用较多的外围芯片,硬件电路复杂。利用单片机内部计数器实现加减计数,在编码器旋转方向不频繁改变的情况下,计数速度很快,而且外围电路简单,编程也不复杂,只是占用了2个外部中断和1个内部计数器。具体使用哪种计数方法,在使用时要根据具体情况进行选择。

参 考 文 献

[1]刘 岩,李凤荣,王金海,等.高速可逆位置计数器的研究

与FPGA实现.天津工业大学学报,2003,22(2):70~73[2]柳平增,程 勇,徐成志,等.开卷校平剪切生产线数控系

统的开发及应用.泰山学院学报,2003,25(3):87~90[3]俞竹青,潘全胜.一种光电编码器用可编程计数电路的设

计.传感器技术,2002,21(10):22~24

SeveralMethodsofOutputPulseCountingforPhotoelectricEncoder

PanMingdong

(EastChinaUniversityofScienceandTechnology,Shanghai200237,China)

=Abstract> Inpositioncontrolsystem,theelectromotorshouldbeabletoturnbackorforth,sothecounterdesignedtocountthepulseoutputfromthephotoelectricencoderconnectedtotheelectromotorshouldhavethefunc-tionofup-downcounting.Thatisreversiblecounting.Therearemanymethodstocountthepulseincludingsoftwarecountingandhardwarecounting.Thesetwomethodsofcountingareanalyzedinthispaper,andanewmethodofcountingissuggestedaftercomparingtheadvantagesanddisadvantagesofthem.Withfewerhardware,weobtainedahighspeedofreversiblecountingrateusingtheinternalcounterofthe8051MCU.

Keywords:photoelectricencoder,counter,reversiblecounting,positioncontrol

#


相关文章

  • 光电编码器的工作原理
  • 器工作原理,光电编码器的工作原理分析 编码器工作原理 绝对脉冲编码器:APC 增量脉冲编码器:SPC 两者一般都应用于速度控制或位置控制系统的检测元件. 旋转编码器是用来测量转速的装置.它分为单路输出和双路输出两种.技术参数主要有每转脉冲数 ...查看


  • 位移测量系统的设计
  • 摘 要 在现代工业生产过程中,常常需要测量很多不同的位移量.与此同时对位移量进行较为精确地检测,是提高控制精度的基础.因此之前所普遍采用的传统位移测量装置已经不能适应时代发展的潮流.在此情况下通过科研人员的不断努力终于研制出了数字式光电编码 ...查看


  • 位移的莫尔条纹测量技术
  • 30中国科技论文 实 验 技 术 与 管 理 Vol.19 No.3 2002 统计源期刊 位移的莫尔条纹测量技术 李丰丽,钟金刚 (暨南大学物理系,广州 510632) 摘 要:本文采用莫尔条纹技术,实现了一种对位移量进行精确测量和控制的 ...查看


  • 编码器原理
  • 实用光电编码器技术 编著 陈先锋 第1章 光电编码器基础 1.1 概述 光电编码器是一种集光.机.电为一体的数字化检测装置,它具有分辨率高.精度高.结构简单.体积小.使用可靠.易于维护.性价比高等优点.近10几年来,发展为一种成熟的多规格. ...查看


  • 光电计数器的设计
  • 景德镇陶瓷学院 电子电路CAD 课程设计 课题名称 光敏计数器 所在院系 机电学院 班 级 13自动化2班 学 号 [1**********]0 姓 名 董儒诚 指导老师 刘蜀阳 时 间 2015年12月30日 光敏计数器 设计一种自动计数 ...查看


  • [光电检测技术-题库](2)
  • <光电检测>题库 一.填空题 1. 对于光电器件而言,最重要的参数是 . 和 . 2. 光电倍增管由阳极.光入射窗.电子光学输入系统. 和 等构成. 3. 光电三极管的工作过程分为 和 . 4. 激光产生的基本条件是受激辐射. ...查看


  • 增量型编码器与绝对型编码器区别
  • 一.编码器的分类 根据检测原理,编码器可分为光学式.磁式.感应式和电容式,根据其刻度方法及信号输出形式,可分为增量式.绝对式以及混合式三种. 1.增量式编码器 增量式编码器是直接利用光电转换原理输出三组方波脉冲A.B和Z相:A.B两组脉冲相 ...查看


  • 编码器的工作原理及作用
  • 编码器的工作原理及作用:它是一种将旋转位移转换成一串数字脉冲信号的旋转式传感器 传感器 凡是利用一定的物性(物理.化学.生物)法则.定理.定律.效应等把物理量或化学量转变成便于利用的电信号的器件.传感器是测量系统中的一种前置部件,它将输入变 ...查看


  • 光电式报警器 1
  • 电子课程设计报告 题目: 光电式报警器 姓 名: 专 业: 电子信息工程 班级学号: 同 组 人: 指导老师: 电子信息工程学院 2009年9月12日 电子信息工程学院 电子基础课程设计任务书 I .电子基础课程设计题目: 光电式报警器 I ...查看


热门内容