关键词:光栅位移传感器;莫尔条纹;插值;FPGA;NiosII
1 概述
目前,光栅的电子细分技术是提高光栅位移传感器分辨率的主要途径,可分为软件细分法和硬件细分法。软件细分法虽然可以达到较高的细分数,但由于受到A/D器件转换精度和转换时间的限制,一定程度上影响了测量的实时性。硬件细分法一般用在细分数不太高的场合,而且随着细分数的提高,电路会变得更加复杂。本文使用专用插值芯片(IC—NV)对前端输出的正交信号进行插值细分,利用FPGA对插值细分后的信号进行二次细分;同时利用QuartusII中的Component Editor工具设计了二次细分辨向组件、测速组件及LCD控制组件,并通过Avalon总线与NiosII软核处理器进行连接,实现了系统的集成和模块化。
2 莫尔条纹及四倍频直接细分的原理
莫尔条纹的电子细分是提高光栅位移传感器分辨率的主要途径之一。莫尔条纹是光栅位移传感器工作的基础。莫尔条纹间距近似为光栅栅距的1/θ倍(θ为主副光栅之间的夹角),并且方向近似与栅线方向垂直。当其中任一光栅沿垂直于刻线方向移动一个栅距时,莫尔条纹就在栅线方向上移动条纹间距,因此可以通过检测莫尔条纹的移动来计算指示光栅移动的距离。
对于横向莫尔条纹,为了判定指示光栅的位移方向进行可逆计数以及削弱直流电平漂移对测量精度的影响,可在一个莫尔条纹内等距放置4个光电收发元件。当条纹依次扫过这4个光电收发元件时,便会产生4路相位分别为O°、90°、180°、270°的信号,通过运放差动放大电路即可实现四细分。但是,实际应用中要实现4个光电收发元件的等距排列是非常困难的。目前,大多数的光栅位移传感器都采用光闸莫尔条纹来实现四细分,如图1所示。
光闸式光栅副的指示光栅上刻有4个裂相窗口,各个窗口内栅线与主光栅一致,且相邻两个窗口之间依次间隔(n+1/4)d。其中,d为栅距(这里为20 μm),n为整数。这样,当O°窗口的栅线与主光栅完全重叠时,窗口最亮,形成亮带;180°窗口的栅线与主光栅栅线互相遮挡,形成暗带;90°和270°窗口的栅线缝隙被遮挡一半,处于半明半暗状态。因此,当移动指示光栅时,4个窗口内的光强依次呈现周期性的变化。在窗口区域安放光电收发元件对光强进行检测,便可得到依次相差π/2的4路正弦波信号。
3 光栅信号的产生及差值的实现
3.1 系统总体方案计
系统原理框图如图2所示。光电转换后输出的4路相差90°的正余弦电流信号经过2个前置差分放大器处理后,转换为电压信号并且消除了直流电平,得到相位相差90°的正交信号sinθ/COSθ。为了消除正交信号中掺杂的噪声信号,设计了有源二阶巴特沃斯低通滤波器。滤波后的信号经过插值专用芯片IC—NV后,便可送入FPGA进行二次细分辨向、测速和数字显示工作。
3.2 光电转换及前置放大电路
光电二极管的光电流一般为μA级别,而放大电路中反馈电阻一般采用MΩ量级的电阻。因此,运放的输入偏置电流的影响不能忽略,要选用输入偏置电流小的FET输入型运算放大器。本文选用TI公司的4路LinCMOS运放TLC279CN。它具有输入失调电压低、输入电阻高、噪声低的特点,25°时的典型输入偏置电流为60 pA,远小于光电二极管的光电流。光电二极管可以工作在零偏置或反向偏置方式。在反向偏置方式下,光电二极管可以实现较高的切换速度;但要以牺牲线性为代价,并且在无光条件下仍有很小的电流,称为“暗电流”。零偏置电路受暗电流的影响较小,对于微小照度,可以保持照度与输出成线性比例关系。
图3采用反向并接光电二级管的方式。该方式可以有效地削弱直流电平和偶次谐波。由于后端插值芯片单端输入时对输入信号直流电平和峰峰值有限制,因此在正相输入端设置可变电阻调节输出的直流电平至2.5 V,同时通过调节反馈电阻使输出电压的峰峰值为1 V。
3.3 低通滤波器的设计
由于目前光栅的移动速度多在120 m/min,最大不超过600 m/min,且光栅栅距为20μm时输出的正交信号的频率不超过500 kHz。因此,选定低通滤波器的截止频率为fc=500 kHz,通带增益K=1。具体设计电路如图4所示。
3.4 差值电路的实现
IC—NV是IC—HAUS公司的单片A/D转换芯片,能够对输入的sinθ/COSθ信号进行插值,从而输出增量的正交编码信号。IC—NV芯片的内部结构及外围电路如图5所示。其内部集成了高速的比较器和毛刺滤波器,以保证信号的高速转换和完整性;输入/输出引脚具有ESD防护,且与TTL、CMOS电平兼容,接口简单可靠。
sinθ/cosθ信号首先进入芯片内部的前置仪表放大器。其增益取决于输入信号的电平及SG0、SGl引脚的状态。通过将SGO、SGl置为高、低电平或开路来选择不同的增益值,以适应峰峰值为20 mV~1.3 V的差分信号输入(单端信号峰峰值可达2.6 V)。本系统中,sinθ和cosθ信号使用单端输入方式,峰峰值为2 V,直流偏置为2.5V。因此在使用时需将NS和NC引脚与VREF(2.5 V)相连,以消除直流偏置。
前置仪表放大器输出的信号经过高速转换核心和转换间距控制单元后进入后端信号处理单元。该单元根据不同的插值因子(Interpolat-ion Factor,IPF)输出相应的方波信号。9种不同的插值因子可以通过SF0和SFl引脚来配置,最高可以实现每个输入信号周期的64倍细分。
4 光栅信号处理电路的FPGA实现
4.1 NioslI处理器及其硬件平台
NioslI处理器是A1tera公司在2004年推出的第二代软核CPU。NiosII软核处理器基于哈佛总线结构,采用32位RISC单周期指令集、32位数据总线及流水线技术,支持32个外部中断和可配置的MMU/MPU。NiosII有3个型号:e型、s型、f型。它们分别是针对不同应用要求优化的:e型的面积最小,只需550个LE(逻辑单元);f型的性能最高,最大性能可达200DMIPs以上;s型又叫标准型,其面积与性能介于e型与f型之间。
NiosII处理器通过AvaIon总线与外设进行连接。Avalon接口规范定义了主端口和从端口所需的信号和时序。它能以最少的逻辑资源来实现数据总线复用、地址译码、等待周期产生、地址对齐、中断优先级产生及仲裁等操作。用户可以根据主从端口的规范在SOPC Builder中创建各种自定义组件,并挂到Avalon总线上。NiosII处理器支持多达256条用户定制指令,极大地提高了软件的执行效率。这些优势使得NiosII系统成为可裁剪、可调整、可扩展的系统,更使其成为软硬件紧密融合的系统。
系统中选用CycloneII系列的FPGA EP2C5Q208,并且扩展了64 Mb SDRAM HY57 V641620和16 Mb Flash AMD29LVl60来构建NiosII系统。 EP2C5系列FPGA内部拥有4 608个Le和119 808位的RAM,并提供2个PLL和158个用户引脚,完全能够满足本系统设计的需求。系统选用主动串行配置芯片EPCS1,该非易失性芯片具有1 Mb的内部容量,远大于EP2C5Q208所支持的最大配置文件的大小。当系统上电时,EPCS就可将配置数据重载到FPGA的配置RAM中。
4.2 二次细分辨向组件设计
二次细分辨向组件的设计包括组件逻辑的硬件描述文件和软件文件的设计。其中,硬件描述文件由任务逻辑模块、寄存器描述模块和Avalon接口模块组成。软件文件由HAL驱动文件的源文件(my_avalon-quadrature.c)、头文件(my_avalon_quadrature.h)和寄存器访问的头文件(my_avalon_quadrature_regs.h)组成。这些文件的组织结构如图6所示。
使用SOPC Builder中的Component Editor工具添加相应的硬件描述文件、信号接口和软件文件,便可以方便地将用户自定义组件集成到系统元件库中去。为了实现NiosII处理器与自定义组件之间交换数据,首先需要定义一组寄存器,并对寄存器进行地址分配,同时根据Aval-on总线的时序对寄存器进行存取操作。本组件中定义的脉冲计数寄存器Countnum_reg[31:0]和方向寄存器Dir_reg均为只读寄存器,且相对地址分别为O和1。
任务逻辑设计是自定义组件设计过程中最重要的部分,主要实现插值芯片输出正交信号的四细分,同时更新Countnum_reg和Dir_reg的值。如图7所示,正交信号A2/B2的相位关系随着光栅位移传感器运动方向的不同而改变。当光栅读数头正向移动时,A2相信号超前于B2相信号90°,A2/B2两信号的电平变化规律为OO→10→11→01→00。当光栅读数头反向移动时,A2相信号滞后于B2相信号90°,A2/B2两信号的电平变化规律为00→01→ll→10→00。这样,就可以通过判断电平之间的状态变化来决定是否对计数器进行操作。当状态变化为00→10→11 →01→00时,对Countnum_reg进行加1操作,并将Dir_reg置1;而当变化为00→01→ll→10→OO时,则对Countnum_reg进行减1操作并将Dir_-reg置0。若状态保持不变,则计数器和方向值保持不变。其余状态之间的变化,规定为无效。
上述的4个状态之间的转移可以通过设计有限状态机来实现。系统主时钟clk选用50 MHz,能够保证正确采样状态之间的变化。该有限状态机由5个状态组成,它们分别是idle、00、01、l1、10。采用one—hot的编码方式,可以有效地避免竞争冒险现象,提高抗干扰能力。其综合生成的电路无论是在效率还是稳定性方面都能够满足设计要求。任务逻辑模块的仿真结果如图8所示。
若记录相邻两次Countnum_reg的差值,便可通过以下的公式计算光栅读数头移动的距离:
式中:N为插值芯片的插值因子,d为光栅栅距。
4.3 二次细分测速组件设计
光栅读数头的移动速度应在一定范围之内,否则会造成丢数等误差。测速组件主要对读数头的移动速度进行实时监控,从而实现过速报警。其设计过程与二次细分辨向组件类似。移动速度的计算公式如下:
式中:d为光栅栅距,f为插值芯片输出正交信号的频率,
N为插值芯片的插值因子,n为t时间内正交信号的个数。由此可知,只要测出频率f即可求得移动速度。
寄存器描述文件中定义了4个寄存器,如表1所列。
任务逻辑设计采用测周期的方法,即根据Div_reg中的分频因子对待测信号tclk进行分频,在分频后信号的高电平内记录标准信号sclk的个数,并在其下降沿将计数值存到COUnt_reg中。同时,在其低电平内将Countready_reg置1,通知AVaIon主设备计数值已就绪。待测频率的计算公式如下:
该方法可能会产生±1个标准脉冲的测量误差,由于系统标准频率与待测正交信号相比为高频信号,因此能实现高精度的频率测量。
4.4 LCD控制组件的设计
本系统中使用的LCD为128×64的点阵黑白屏,其内嵌控制器为KS0107/KS0108。该液晶模块的D/I引脚用于指示模块处理数据/命令;R/W引脚控制读/写操作;EN引脚为使能信号,CSl/CS2为屏幕的左右半屏控制器片选信号。
本系统在NiosII IDE开发环境中设计应用程序,其程序流程如图9所示。
5 结论
①与传统的分立元件细分电路相比,本系统中使用了专用的插值芯片IC—NV,不但提高了系统集成度,而且在简化PCB设计的同时提高了细分数。NiosII嵌入式处理器使用,既提高了系统性能,又降低了费用。利用Component Editor工具设计的二次细分辨向模块、测速模块及LCD控制模块,可以随时根据需要更改驱动程序并可重复利用,实现了系统的集成和模块化。
②仿真结果表明,该系统设计简单灵活,稳定性高,实时性强,可通过调节插值芯片的插值数实现高达64倍的细分。
评论
查看更多