一种应用编码器计数的方法和装置的制作方法

文档序号:5867504阅读:297来源:国知局
专利名称:一种应用编码器计数的方法和装置的制作方法
技术领域
本发明涉及一种计数方法和装置,尤其涉及一种应用编码器计数的方法和装置。
背景技术
编码器是一种最为常见的角度测量传感器,配备一些机械结构还可以测量位移等 其他机械量值,在各行各业都有广泛的应用。编码器是将转轴上的转动角度,利用光栅(磁 栅)测量技术转换成方波脉冲输出,通过外部的计数装置对输出脉冲进行计数,得到与被 测的角度相对应的数字量。以往一般都使用可逆计数器进行计数,随着微处理器技术的发 展和成熟,我们完全可以省略计数器电路,直接使用微处理器进行计数。但在实际使用时, 往往会出现计数不准和一些波形干扰影响计数的精确度,同时还必须在测量前事先规定一 个正向计数的旋转方向,使应用微处理器进行计数变得不如使用可逆计数器进行计数简单 和易使用,且计数的精确度也不一定能保证。

发明内容
本发明所要解决的技术问题是提供一种应用编码器计数的方法,解决现在利用微 处理器和编码器进行计数时需要事先进行设定致使使用不便,而且因为编码器的一些波形 干扰致使计数的精确度不高的缺陷。技术方案本发明提出了一种应用编码器计数的方法,其特征在于包括如下步骤设定编码器的输出脉冲信号,设置编码器同时输出具有相位差的两路脉冲信号A 和信号B,通过反相将其中一路脉冲信号A反相为X,并与上述两路脉冲信号同时输出;定义编码器的角度旋转方向为往希望方向正转或反转时,以上三路输出脉冲信号 的状态字作为标准状态字储存,当转动编码器往希望正向或反向计数的方向正向或反向旋 转时,以脉冲信号A或X的上升沿或下降沿作为触发点,记录下此时三路脉冲信号的电平作 为标准状态字;开始计数,微处理器MCU接收到编码器输出的三路脉冲信号,当检测到脉冲信号A 或X出现触发点时,读出此时三路脉冲信号的电平作为实时状态字,将所述实时状态字与 上述标准状态字进行比对,如完全符合,则相应做正向或反向计数,如不完全符合,则忽略 不计。所述脉冲信号A和B的相位差为90度,采用以脉冲信号A或X的下降沿作为触发
点ο本发明还提出了一种应用编码器计数的装置,其特征在于包括输出两路具有相 位差脉冲信号的编码器,将编码器的其中一路输出信号进行反相的反相器,并将此反相信 号与所述两路脉冲信号同时输出的合成输出器,所述合成输出器的三路输出信号分别与微 处理器的三个端口相连,同时具有正相和反相的脉冲信号的输出连接微处理器的中断口, 另外一路具有相位差的脉冲信号连接微处理器的输入/输出口,所述微处理器内包括存储脉冲信号的电平的状态字的存储器和比较接收的脉冲信号的电平的状态字和预设的状态 字进行比较的比较器,以及根据比较器结果进行计数的计数器。所述编码器采用两相双向编码器。有益效果本发明的方法和装置利用编码器输出三相脉冲信号并检测计数,避免了常用的利用两相脉冲信号进行计数易出现的其中一路信号下降沿干扰产生计数误差,或编码器正反 转变换时脉冲多计或漏记现象,而且改进了现在确定了正反转方向后不能再改变方向进行 计数的缺陷。


图1为本发明现在常用的两相输出脉冲时序图。图2为本发明编码器输出三相脉冲时序图
具体实施例方式下面结合具体实施例,进一步阐述本发明。我们以每圈输出2048个脉冲的光栅式两相双向编码器为例,所谓两相即同时输 出相位差为90°两路脉冲信号,双向就是可以进行正反转并进行正反计数,其输出脉冲时 序图见图2。脉冲是A脉冲通过一个反相电路得到的和A脉冲逻辑相反的信号,B脉冲是与 A脉冲相位差为90°脉冲信号。实际使用时,采用Atmel89C52微处理器进行编码器的脉冲 计数,A和X脉冲分别通过光偶将脉冲传输给CPU外部中断0和外部中断1端口上(INTO、 INT1),B脉冲用一个I/O 口接收。编程时,首先通过相序测量功能在E2R0M中储存定义的 正反转状态字,也就是先沿着希望正向计数的方向旋转编码器,A脉冲的下降沿触发外部中 断0,在外部中断0服务程序中读入A、Χ、Β脉冲的电平即为正转状态字,再沿着希望反向计 数的方向旋转编码器,脉冲的下降沿触发外部中断1,在外部中断1服务程序中读入A、X、B 脉冲的电平即为反转状态字。实际计数时,假如定义相序1 — 2为正转,当外部中断0触发 时,在外部中断0服务程序中判断A、X、B脉冲的电平,如果为011 (正转状态字)则计数器 加1,为010则无效,即相位2的A脉冲下降沿中断有效,编码器正转;当外部中断1触发时, 同样判断这个电平,如果为101 (反转状态字)则计数器减1,为100则无效,即相位2的脉 冲X下降沿中断有效,编码器反转。如果相序测量程序定义2 — 1为正转,则正转状态字为 010,反转状态字为100,在1状态A脉冲触发外部中断0,对计数器加1,在1状态X脉冲触 发外部中断1,对计数器减1,其他情况产生的中断无效。目前一般使用微处理器对编码器进行计数时,都是只使用A、B两相脉冲,如附图1 所示。编程时必须先规定加、减计数的旋转方向。假定定义相序1 — 2为正转,当A相脉冲 下降沿触发中断时,判断B相脉冲的电平,如果是高电平则表示正转触发中断,如相序图状 态2所示,计数器加1 ;如果B相脉冲的电平为低电平,则表示反转触发中断,如相序图状态 1所示,计数器减1。上述计数方法在一些情况下有较大的缺陷。首先是有可能多计或少计 脉冲数,这种情况发生在当编码器正转至1和2之间,变反转则在状态1处会多减1 (漏计 脉冲);同样在反转变正转时又会多加1 (多计脉冲)。如果频繁变换旋转方向则这种情况 会带来很大的计数误差。第二种问题发生在下降沿触发时,由于光栅制作或干扰信号使得在一个脉冲上出现多个下降沿,计数器计数出错。第三种情况是如果在编程时无法确定正 反转方向,则会发生计数错误。采用本发明的方法完全能克服上述问题,具有以下优点1>避免了正反转变换时脉冲多计或漏计现象;假如定义相序1 — 2为正转,如果正转至2和下一个状态之间时,首先在2状态A 降沿触发中断使计数器加1,这时进行反转则在2位置X脉冲触发中断使计数器减1,不 会发生脉冲多计或漏计现象。2>避免了由于下降沿干扰产生的计数误差;假如定义相序1 — 2为正转,在状态2的A脉冲出现下降沿的干扰信号或在下降 沿处抖动时,在A脉冲下降沿加1,就会在X脉冲的下降沿减1,从而消除了干扰或抖动;3>可以在面板上进行正反转的相序设定;在编程时,可以先不要确定正反旋转方向,只需在使用时通过面板的相序设定操 作,来确定其旋转方向。
权利要求
一种应用编码器计数的方法,其特征在于包括如下步骤设定编码器的输出脉冲信号,设置编码器同时输出具有相位差的两路脉冲信号A和信号B,通过反相将其中一路脉冲信号A反相为A,并与上述两路脉冲信号同时输出;定义编码器的角度旋转方向为往希望方向正转或反转时,以上三路输出脉冲信号的状态字作为标准状态字储存,当转动编码器往希望正向或反向计数的方向正向或反向旋转时,以脉冲信号A或A的上升沿或下降沿作为触发点,记录下此时三路脉冲信号的电平作为标准状态字;开始计数,微处理器MCU接收到编码器输出的三路脉冲信号,当检测到脉冲信号A或A出现触发点时,读出此时三路脉冲信号的电平作为实时状态字,将所述实时状态字与上述标准状态字进行比对,如完全符合,则相应做正向或反向计数,如不完全符合,则忽略不计。
2.如权利要求1所述的应用编码器计数的方法,其特征在于所述脉冲信号A和B的 相位差为90度,采用以脉冲信号A或λ的下降沿作为触发点。
3.一种应用如权利要求1所述的方法的应用编码器计数的装置,其特征在于包括输 出两路具有相位差脉冲信号的编码器,将编码器的其中一路输出信号进行反相的反相器, 并将此反相信号与所述两路脉冲信号同时输出的合成输出器,所述合成输出器的三路输出 信号分别与微处理器的三个端口相连,同时具有正相和反相的脉冲信号的输出连接微处理 器的中断口,另外一路具有相位差的脉冲信号连接微处理器的输入/输出口,所述微处理 器内包括存储脉冲信号的电平的状态字的存储器和比较接收的脉冲信号的电平的状态字 和预设的状态字进行比较的比较器,以及根据比较器结果进行计数的计数器。
4.如权利要求3所述的应用编码器计数的装置,其特征在于所述编码器采用两相双 向编码器。
全文摘要
本发明涉及一种计数的方法和装置,属于微处理器控制领域。一种应用编码器计数的方法,其特征在于包括如下步骤设定编码器的输出脉冲信号,定义编码器的角度旋转方向为往希望方向正转或反转时,以上三路输出脉冲信号的状态字作为标准状态字储存,开始计数,微处理器MCU接收到编码器输出的三路脉冲信号,当检测到脉冲信号出现触发点时,读出此时三路脉冲信号的电平作为实时状态字,将所述实时状态字与上述标准状态字进行比对,如符合,则相应做正向或反向计数,如不符合,则忽略不计。本发明还公开了应用以上方法的应用编码器计数的装置。本发明利用编码器输出三相脉冲信号计数,避免了信号下降沿干扰产生计数误差及脉冲多计或漏记等现象。
文档编号G01B11/26GK101825481SQ201010104019
公开日2010年9月8日 申请日期2010年1月29日 优先权日2010年1月29日
发明者潘征宇 申请人:上海市计量测试技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1