1 引言
光栅数显系统主要用于普通机床,可直接显示机床加工的长度值,有助于提高加工精度和效率。 中国国际模具网
目前国内市场上的光栅数显系统大多采用国外集成电路实现,研发成本高,且不便于操作人员使用。针对这种状况,研发了基于mcu+cpld的新型光栅数显系统。该系统具有计数精度高、成本低、操作方便以及升级快等特点,能够处理高达5 mhz/s的正交脉冲,并在掉电时有效存储当前长度值,其数码管可显示关键的长度值,点阵式液晶屏还可显示相关的提示信息。
2 系统工作原理
利用cpld实现正交脉冲处理逻辑电路,而可逆计数器则用于处理计数光栅尺输出的正交脉冲,cpld的高速并行处理能力可保证光栅尺输出信号无遗漏采样,从而确保计数的可靠性。可逆计数器的值通过mcu一系列运算后转换为机床加工的长度值,mcu再将其长度值回送至cpld并在数码管上显示。
此外,cpld还具有7×8键盘按键检测和去抖功能,将处理后的可靠按键送至mcu。mcu主要用于液晶屏的显示控制、掉电数据保存,以及复杂的数学运算。系统工作原理框图如图1所示。

3 正交脉冲信号采集处理
3.1 正交脉冲采集
光栅尺输出一组正交脉冲信号,即相位差为90°的两路方波,如图2所示。当光栅尺正向移动一个栅距时,光栅尺输出一个00-01-11-10-00循环,a路方波相位超前于b路90°;当光栅尺反向移动一个栅距时,光栅传感器输出一个00-10-11-01-00循环,a路方波相位滞后b路90°。
分析a,b两路方波的逻辑状态发现a,b两路方波在任意时刻下只有一路信号发生逻辑状态变化。如果在逻辑状态变化前a,b两路的状态相同,那么变化后的逻辑状态肯定相异;如果变化前a,b两路方波逻辑状态相异,那么变化后逻辑状态肯定相同。只需对这两路信号异或,就能提取光栅尺运动的方向信号updown以及与运动距离成正比的计数脉冲cp。
由图2看出,光栅尺移动一个栅距将输出4个cp脉冲,系统测量的最小分辨率提高至1/4栅距,通常称为四裂相或四倍频。cpld在每个clk的上升沿检测a,b两路方波的状态,首先分别对当前检测的状态a0,b0和上次检测的状态a1,b1相异或,然后将两次异或值再异或。如果最后异或值为1,则说明a,b两路方波发生变化,则向可逆计数器输入一个高电平宽度为1个clk周期的计数脉冲cp,实现逻辑如图3所示。


3.2 可逆计数器
将提取的方向信号updown和计数脉冲cp输入至可逆计数器,实现对光栅尺输出的正交脉冲计数。可逆计数器模块的vhdl程序如下:

中国国际模具网
中国国际模具网
3.3 clk的取值
由于cpld的采样时钟clk必须大于8倍光栅尺输出的正交脉冲,因此系统不会丢失信号。 中国国际模具网
该系统设计使用40 mhz有源晶体振荡器作为cpld的采样时钟源,可记录的最大光栅传感器输出信号频率为5 mhz。如果使用50线/mm的光栅尺,经过cpld的四裂相细分后,计算该光栅尺接该系统的最大不漏数加工速度为20 μm×5 mhz=100 m/s,最小分辨率为5μm。远远超出机床运行的极限速度,完全满足实际需求。
3.4 epm240简介
选用altera公司的 epm240作为cpld,epm240是max ii系列器件中的一员。max ii cpld系列的体系结构使其在所有cpld系列器件的单位i/o引脚的功耗和成本最低;支持高达300 mhz的内部时钟频率,面向通用低密度逻辑应用,max ii cpld可替代高功耗和高成本assp以及标准逻辑cpld。
epm240含有240个逻辑单元(le),等效于192个宏单元;8 192 bit的用户flash存储器,可满足用户小容量信息存储要求;最大用户i/o数为80,最快速度为4.5 ns,完全满足系统设计要求。
4 mcu掉电数据存储
掉电数据存储是系统设计的另一重要功能,要求高可靠性。系统在掉电时应保存光栅尺的当前位置信息,下次开机时通过调用上次掉电时保存的位置信息恢复系统。因此,掉电瞬间,掉电报警电路将迅速响应,向mcu发出报警信号;mcu检测到报警信号后,马上进行相应处理,将当时光栅尺的当前位置信息存入eeprom。其硬件电路如图4所示

中国国际模具网
为了提高mcu的掉电响应速度,增强系统可靠性,系统设计采用新的增强型51单片机stc-89c516rd。该器件具有1 kb ram和高达64 kb大容量rom,isp功能,指令周期有6clock和12clock两种可选模式。 中国国际模具网
使用20 mhz晶体振荡器,采用6clock模式烧写时,单指令周期的程序执行时间仅为0.3μs,比普通51单片机在最高24 mhz晶体振荡器下的运行速度要快得多。因此,大大缩短了掉电数据存储程序的执行时间。
4.1 掉电报警电路
选用超小型高精度电压检测器s80848,内部检测电压固定为4.8 v,精度为±2%,最大响应时间为60μs。s80848采用标准5 v供电,电源正常时输出高电平;当电源电压降至4.8 v时,则输出低电平。将s80848的输出脚连接至mcu的int0,并将mcu的int0设置为电平触发。因此,电源电压只要低于4.8 v就会使mcu进入int0中断,mcu在中断程序中保存位置信息。
4.2 eeprom选取
当mcu对eeprom的写操作完成后,eep-rom需用10 ms的最大自写入时间将信息写入存储单元。为了使用更多的时间用于eeprom自写入,选用低压eeprom,即at24c64-2.7 v,其工作电压为5.5 v~2.7 v,容量为64 kb,每页为32 b,最大写入次数为1 000 000。
4.3 掉电时间计算
选用工作电压为4.5 v~5.5 v的stc89c516rd。当电源电压降至4.5 v以下时,mcu不能可靠工作。mcu的int0的中断服务程序只能使用电源电压从4.8 v降至4.5 v的这段时间,所有处理必须在该段时间内完成。因此中断程序设计时应尽量考虑使其执行时间最短,中断应先将所有存储的数据存入一个数组,然后将该数组的所有元素写入at24c64,当然该数组的元素数必须小于at24c64一页的长度,即必须小于32 b。
当输出电压为5 v时,最大电流为imax=0.8 a,等效负载r=5/i=6.25 ω,与5 v电源并联的电容c=4 700μf,则系统时间常数为τ=rc=0.029 s。设发生掉电t=0,根据公式u(t)=vccexp(-t/τ)=5exp(-t/0.029)可知:t=1 183μs时,电源电压vcc从5 v降至4.8 v;t=3 055μs时,vcc降至4.5 v;t=17 869μs时,vcc降到2.7 v。mcu的中断服务程序时间为3 055-1 183=1872μs,故大于实测中断服务程序时间1 350μs;eeprom自写入有效时间为17 869-3 055=14 814μs,故完全满足eeprom写入要求。
4.4 中断服务程序
为了避免mcu频繁写入eeprom,使用次数超出最大有效写入次数,中断程序对中断输入引脚上的电平进行必要滤波。 中国国际模具网
滤波算法为:系统进入中断程序后,首先关闭中断,然后连续10次判断int0的电平,如果每次判断得到的电平 值都为低,则继续往下执行中断服务程序,只要有一次为高则立即退出中断服务程序。完成写入数据,要确保int0上的低电平解除后再返回中断,否则等待,直至低电平解除。中断服务程序流程图如图5所示。

5 结束语
详细介绍光栅数显系统设计,采用cpld可大大简化系统硬件设计,降低系统成本,增强系统可靠性和灵活性。选用stc89c516rd,可避免扩展外部存储器,从而简化单片机的外围电路设计。中国国际模具网