cauhorse的笔记 https://bbs.21ic.com/?546389 [收藏] [复制] [RSS]

日志

使用HCTL-2032的单片机光栅数显表的设计

已有 1470 次阅读2014-11-2 23:46 |个人分类:技术学习|系统分类:接口电路| 自动化设备, 集成电路, 单片机, 关键词, 控制器

这段时间忽然想通了,自己要把知识当回事,它才有可能产生价值。反正平时闲着也多是瞎玩,还不如多做总结。希望自己还来得及。这个文章是N年前总结的,没有什么水平,全当学习笔记吧。
/*----------------分割一下--------------------*/


摘要 - HCTL-2032Avago公司生产的一种可用于正交编码器鉴相与倍频计数的集成电路。该芯片内置两个正交编码器接口,内置前向滤波、鉴相、倍频与计数电路,可方便地为不具备正交解码功能的微控制器提供编码器接口功能。本文以STC89C52HCTL-2032为主要器件,设计了一种可同时显示两路光栅计数值的数显表,并实现了其基本功能。


关键词 – HCTL-2032,单片机,光栅


1 引言


       在很多数字化与自动化设备中,执行器件的位移是作为关键的目标来进行控制的,这其中,包括角度(角位移)、直线位移与其他形式的位置移动等。在诸多位移检测器件中,光电编码器是较为常见的一种。其中的旋转编码器通常直接用于检测角度变化,而线性编码器,通常是光栅尺,则用于检测直线移动部件的位移变化。


       光栅的输出信号与光电旋转编码器相同,也是两路相位差90度的正交编码信号,如下图所示:




    对于输出信号为差分信号的光栅尺,经过长线接口处理后的信号同样如图1所示。



       在一些要求较高的运动控制的场合,人们通常使用DSP(数字信号处理器)实现对光栅等输出信号为正交编码的反馈器件的接口。常用的DSPTI(美国德州仪器公司)的C2000系列,其中可用于电机控制场合的多个类型的芯片内部具有12个正交编码接口(QEI)。然而,对于低成本、较为简单的应用,如本文中提到的光栅数显表,使用DSP来完成这一设计就显得不够经济了。


       由此,本文中使用STC89C52单片机与HCTL-2032为主要器件,探讨双路光栅数显表的设计过程。在此之前,先简要介绍一下HCTL-2032


2. HCTL-2032简介[1]


HCTL-2032 Avago 公司生产的CMOS
专用集成电路,集噪声滤波、正交解码、可逆计数、总线接口于一体,可大大改善测量系统的性能。HCTL-2032 可接收两路正交解码脉冲,并且增加了接收基准信号,时钟周期达33MHz,不仅节省了电路设计的体积,而且提高了测量精度和处理数据的速度。


2.1 功能




HCTL-2032 的引脚排列如图2所示,HCTL-2032
可以将光电编码器输出的波形转换成数字信号输入微处理器,两路输入引脚CHAxCHAyCHIxCHBxCHByCHIy
经过施密特触发器整形滤波后,通过设置EN1EN2
的值选择采用4×、2×、1×计数模式,而后送入32 位二进制计数器对采集的正交波计数,由于输出数据线只有8位,因此32位的数据需要通过改变控制线SEL1SEL2OE的值分四次依次读出。







                                  图2HCTL-2032的管脚(引用自文献[1])


2.2 内部结构


HCTL-2032 内部包括数字滤波器、正交解码逻辑、位置计数器、总线接口,内部结构框图如图3所示。





                         3 HCTL-2032片内逻辑结构简图(引用自文献[1])


2.2.1 数字滤波器


HCTL-2032 的输入部分包括施密特触发器与数字延迟滤波器,用于抑制混入正交信号的噪声。正交信号通过施密特触发器后,必须保持3个上升沿才能通过数字滤波器,小于1 V 的低电平噪声被滤除。余下的高电平、短持续时间噪声脉冲通过数字滤波器滤除。


2.2.2 正交解码


HCTL-2032 提供了1×、2×、4×三种可选解码方式,解码方式的选择由EN1EN2 的组合值控制,正交输入相邻跳变沿之间二者的电平状态有四种:10110100。当选择4×模式时,在一个周期内正交解码器在时钟上升沿采样四种状态进行计数,同理,当选择2×和1×模式时,在一个周期内正交解码器在时钟上升沿分别采样两种、一种状态进行计数。每监测到一次状态变化,在CNTDEC 引脚输出一个宽度为半个时钟周期的正脉冲,同时给出状态转移方向信号,U/D = 1,表明A相超前B相,反之B相超前A相。图中同时还给出计数器溢出时的级联信号CNTCAS。正交解码器对信号与时钟的要求为两相正交脉冲的相邻跳变沿之间的时间间隔应大于计数脉冲的周期。


2.2.3 32 位二进制计数器与32 位锁存器


正交解码采集的脉冲输入32 位增/减计数器,在时钟的上升沿计数,计数值送入32位锁存器。


2.2.4 禁止逻辑和总线接口


禁止逻辑在每个时钟周期的下降沿采样OESEL1
SEL2 的值,根据三个信号不同值的组合分四次从总线接口读出计数器的值以及复位禁止逻辑。


2.STC89C52HCTL-2032的接口电路


       STC89C52为常见的8051内核的单片机。单片机通过一组8IO读取HCTL-2032的数值,并通过另一组IOHCTL-2032进行逻辑控制(包括复位与使能、通道选择、数据选择等)。

       4STC89C52HCTL-2032的接口电路,除基本的器件外,图中还外扩了一个LCD12864用于光栅位置值的显示。






3 程序设计


       3.1初始化单片机与HCTL-2032


       
  1. AUXR = 0x00;                        //使能ALE引脚输出fosc/6的时钟脉冲
  2.         IO_RSTX = 1;                        //禁用HCTL-2032复位端
  3.         IO_RSTY = 1;                        
  4.         IO_EN1 = 1;                        //选择HCTL-2032输出信号倍频值为4X,即四倍频
  5.         IO_EN2 = 0;                        
  6.         IO_XorY = 0;                        //选择读取X通道中的编码器计数值
  7.         gvInitLcd();                        //初始化液晶显示模块
复制代码


        3.2读取HCTL-2032的计数值


       
  1. IO_SEL1 = 0;                        //选择计数值的D31~D24
  2.         IO_SEL2 = 1;
  3.         IO_OE = 0;                 //使能读取逻辑
  4.         ucBYTE_3 = P1;         //读取计数值D31~D24
  5.         IO_SEL1 = 1;                //选择计数值D23~D16
  6.         IO_SEL2 = 1;
  7.         ucBYTE_2 = P1;        //读取计数值D23~D16
  8.         IO_SEL1 = 0;                //选择计数值D15~D8
  9.         IO_SEL2 = 0;
  10.         ucBYTE_1 = P1;        //读取计数值D15~D8
  11.         IO_SEL1 = 1;                 //选择计数值D7~D0
  12.         IO_SEL2 = 0;
  13.         ucBYTE_0 = P1;         //读取计数值D7~D0
  14.         IO_OE = 1;                 //禁用读取逻辑
复制代码

其中IO_*为单片机用于操作HCTL-2032的各I/O引脚,ucBYTE0~ucBYTE3为组成HCTL-203232位输出结果,每次选择一个字节,分4次完成读取操作。


4 结束语


       HCTL-2032为光栅接口器件,可方便地实现光栅编码信号的鉴相与倍频计数功能;配合普通的8051单片机与低成本的液晶模块,即可实现光栅位移计数的功能。HCTL-2032不仅为不具备正交解码能力的微控制器提供了编码器接口,同时与传统的通过门电路与可逆计数器实现正交编码信号接口的方法相比,HCTL-2032极大地简化了系统设计的复杂性,也提高了目标系统的可靠性。


参考文献


[1]  Datasheet of HCTL-2032, HCTL-2032-SC, HCTL-2032-SCT, HCTL-2022 Quadrature Decoder/Counter Interface ICs, Avago Technologies Limited, 2007.


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)