HCTL-2032是Avago公司生产的CMOS专用集成电路,集噪声滤波、正交解码、可逆计数、总线接口于一体,可大大改善测量系统的性能。HCTL-2032可接收两路(X轴、Y轴)正交编码脉冲,并且增加了接收基准信号,时钟频率达33 MHz,不仅使电路设计简单,(电路是简单,只是资料太少,遇到问题比较麻烦)而且提高了测量精度和处理数据的速度。说明白点就是,它可以检测AB相相位相差为90度的波形,并计数,图二是光栅输出信号时正交信号,很多时候就使用这个芯片去检测,光栅正反向的运动和运动距离。
电路连接如下图所示,各个管脚在datasheet中都有具体说明,该怎么用很简单,我不多说了,下面的电路是单独使用X没有使用Y。这里特别说明一下第17脚CHIx,如果你的光栅有频率校验信号输出,可以接到17脚。如果没有,就把17脚接地了,否则计数不稳定,我就在这里吃了很大的亏。
这个芯片的资料不多,我把电路图和源程序都放在这里方便一些使用该芯片的人。
图一
这是相位差为90度的波形,我用示波器截图的,还是荧光屏的示波器,很差劲。呵呵。
这个图片主要说明了它的主要控制信号,英文很简单,一看就明白了,我们接下来写程序也是要控制这几个信号就好了。
下面看看程序 ,
/*单片机ATMEGA16 晶振8MHZ,软件编译环境IAR5.11B8*/
#define DataPort PINC //PORTA?aêy?Y???ú
#define EN1_1 PORTA_Bit0=1
#define EN1_0 PORTA_Bit0=0
#define EN2_1 PORTA_Bit1=1
#define EN2_0 PORTA_Bit1=0
#define SEL1_1 PORTA_Bit2=1
#define SEL1_0 PORTA_Bit2=0
#define SEL2_1 PORTA_Bit3=1
#define SEL2_0 PORTA_Bit3=0
#define RESETX_1 PORTA_Bit5=1
#define RESETX_0 PORTA_Bit5=0
#define X_1 PORTA_Bit6=1
#define Y_0 PORTA_Bit6=0
#define EN_1 PORTA_Bit7=1
#define EN_0 PORTA_Bit7=0
void hctl2032init()
{
RESETX_1;
Delay_nms(5);
RESETX_0;
Delay_nms(5);
RESETX_1;
EN1_1;
EN2_1;
Y_0;
EN_1;
}
void hctl2032data()
{
EN_0;
SEL1_0;
SEL2_1;
Delay_nms(5);
table6[0]=DataPort;
Delay_nms(10);
SEL1_1;
SEL2_1;
Delay_nms(5);
table6[1]=DataPort;
Delay_nms(10);
SEL1_0;
SEL2_0;
Delay_nms(5);
table6[2]=DataPort;
Delay_nms(10);
SEL1_1;
SEL2_0;
Delay_nms(5);
table6[3]=DataPort;
Delay_nms(10);
EN_1;
}
这是2个子函数,我试验过没有问题,我发送1001个AB信号给HCTL2032,通过串口从单片机中读出数据如下
最后的计数是0x03EA,十进制是1002,这是,刚刚开始发送脉冲的时候,HCTL2032已经加1了,我们不用管它,到时候可以修正一下,在单片机软件中。
附件是它的datasheet。
AV02-0096EN.pdf
用户377235 2014-7-24 19:41