引言
容栅测量器具有测量可靠、体积小、功耗低、功能多等特点。随着测量技术向精密化、高速化、多功能化发展,具有多种优良特性的容栅传感器应用得越来越广泛。由于容栅传感器数据的传输多采用RS232/RS485总线方式[1],而USB总线方式方便、高效,并有取代串口通信方式的趋势,因此设计一款带USB接口的容栅传感器测量系统具有实际应用价值。
1 容栅传感器测量原理
容栅传感器的工作原理是根据平板电容理论而来。一般容栅传感器的结构包括动栅板和定栅板。动栅板包含发射极和接收极,定栅板包含反射极[23]。反射极分别和发射极、接收极形成平板电容器。通过在发射极上施加n相激励信号,反射极将此信号反射到接收极,随着动栅板的移动,接收极的感应信号的幅度变化不大,而相位变化与位移量成一定函数关系:
其中,x为位移量,w为小发射极宽度。当位移发生一个w宽度变化时,接收极产生360°/n的相差。设激励信号的周期为T,则有:
式中: β为最小计时单位,N为常数。而每周期代表位移量为L(本系统为0.508 mm),在每周期中β代表一个小相位,则一个周期被分解为N个小相位,每个小相位代表位移量即最小分辨率:
本系统N为512,即最小分辨率约为0.001 mm。对于最大测量速度Vmax,因为在一个周期内最多能分辨N个相位,所以有:
2 系统硬件设计
2.1 C8051F321芯片介绍
C8051F321片内集成了数据采集和控制系统中常用的模拟部件和其他数字外设,采用交叉开关实现I/O端口的灵活配置,自带USB2.0收发器、控制处理器和内部上拉电阻,可在全速(12 MHz)或低速(1.5 MHz)下运行,支持8个灵活通用的USB端点,内置1K的USB专用缓冲寄存器[4]。
2.2 传感器信号处理模块设计
容栅传感器接口为B531,信号线有4根: 电源线(1.5 V)、地线(0 V)、时钟线(CK)、串行数据线(DATA),并且通过控制CK、DATA信号线的电平可以实现容栅传感器的不同功能比,如最大值跟踪、最小值跟踪、数据保持和清零等。
由于容栅传感器内部的专用控制芯片输出的信号电压为1.5 V,而后续数据采集系统工作电压为5 V,要进行数据交换则必须进行电平转换,电平转换原理图如图1所示。电路中采用LM393芯片转换电压,LM393芯片实质上为2个比较器,比较电压为容栅传感器工作电压的一半左右,设为0.6 V。通过比较电压0.6 V与CK和DATA信号线电平比较,即可将CK、DATA信号线的电压转换为0 V或者5 V。
图1 电平转换原理图
2.3 硬件抗干扰电路设计
由于系统经常工作在工业现场等领域,各种电磁干扰很常见,为了使系统能稳定工作,采用光耦隔离技术将传感器和单片机隔离。光耦隔离原理图如图2所示。光耦器件采用HCPL2631高速光耦,输出引脚OUT1和OUT2经过上拉电阻处理后,将CK2和DATA2信号传输给C8051F321单片机处理。
图2 光耦隔离原理图
图3 容栅传感器时序图
3 系统软件设计
3.1 数据采集程序
容栅传感器时序图如图3所示。其中包含3个CK信号说明和1个DATA信号说明。CK(a)表示要发送的完整数据间的时序关系;CK(b)表示一个完整数据内部各个数据组的时序关系;CK(c)和DATA表示一个数据组内的时序关系和对采样点的说明。由图可知数据每隔250 ms发送一次,在时钟CK的上升沿数据有效。数据由LSB到MSB依次发送,总共24位二进制数据,分成6组,每组数据间隔820 μs。其中前5组为数据位,第6组为控制位组(包含符号位和公英制位),控制位组的第0位的“0”表示正数,“1”表示负数,第3位“0” 表示公制单位mm,最小单位0.01 mm,“1”表示英制单位inch,最小单位0.000 5 inch,x表示无效。为了能够实时采集数据,采用中断方式检测CK信号,边沿触发。检测CK信号的高电平持续超过820 μs时,当出现下降沿时触发中断,进入中断程序,再持续检测低电平直到出现上升沿,读取DATA信号电平并存储,总共采集24位。返回主函数根据符号位和公英制位进行相应处理。相关程序代码如下:
;延时460 μs
;byte0读取第0位
wb0: JNBCK,wb0 ;CK为0则跳转到wb0
MOVC,DATA ;读取第1位数据
MOVLBYTE.0,C ;存到LBYTE的bit0
wnb0: JBCK,wnb0 ;CK为1则跳转到wnb0
……
;byte1读取第1个字节
;byte2读取第2个字节
3.2 USB程序
因为C8051F321的USB模块高度集成化,所以对USB接口的设计主要是USB固件程序的设计。其中最重要的是USB描述符和USB传输中断的处理。当USB中断到达时,C8051F321首先读取3个中断寄存器(CMINT、IN1INT和OUT1INT)来判断中断来源(USB复位中断、端点0中断、端点1输入中断、端点2输出中断),然后跳入相应的处理模块进行处理。USB中断程序流程如图4所示。
图4 USB中断程序流程
端点0主要用于主机对USB设备的配置、状态信息的获取和设备错误的纠正等,它的中断处理模块由控制输出和控制输入2部分组成[5]。每次传输由设置事务开始,然后根据设置事务数据包中的USB标准命令请求判断该次传输是控制输入还是控制输出。USB复位中断将相关USB变量、寄存器和各端点的状态恢复为初始状态。端点1输入中断和端点2输出中断均为批量传输中断,其主要作用是在收到中断时,在各自预定义好的缓冲区中写入要传输给主机的数据或读取传输过来的数据。
3.3 主程序
系统程序主要包括主程序、时钟初始化子程序、端口初始化子程序、USB控制器配置初始化子程序、延时子程序、采集数据中断子程序、USB中断子程序和附加功能子程序。由于采集数据实时性要求比较高,所以将采集数据中断设为高优先级。
附加功能子程序包括正常计数、数据保持、最大值跟踪、最小值跟踪和清零的功能。对附加功能的实现均是通过控制CK和DATA信号线完成,附加功能转换流程如图5所示。给CK信号线一个负脉冲,即可完成清零操作;在正常计数状态下将DATA信号线置为高电平,容栅传感器将进入保数功能;如果再将CK信号线置为低电平,容栅传感器进入最大值跟踪功能;内部专用芯片将用新测得的数据与上一个数据进行比较,如果新测得数据大,则替换掉,否则丢弃。可以在上位机上通过USB 测试软件发送相关命令来控制系统进行操作。程序中设定一个字节的变量来存放从上位机接收到的命令,当判断是其中的一个命令时就调用相应的处理程序完成操作。
图5 附加功能转换流程
3.4 软件抗干扰
环境的干扰使单片机程序很容易“跑飞”,为了控制程序正常运行,除了硬件上使用光耦隔离技术之外,软件上可采用设置“软件陷阱”的办法来将跑飞的程序拉入正常轨道,即在程序代码空间使用跳转指令将跑飞的程序拉到程序执行的开始位置,具体操作方法是在所有未被使用的代码空间处写入“LJMP 0000H”指令。另外,可利用单片机自带的“看门狗”功能看住程序,一旦程序跑飞,看门狗将强制单片机复位。也就是说,在程序代码中每隔一定时间就设置一个“喂狗指令”,清除看门狗计时器值,不让其达到最大值而发出复位信号。
结语
使用主机上的软件测试出该系统软硬件能够稳定可靠地运行,点击测试软件的相关功能按钮,容栅传感器能够完成相应的功能操作。与传统的RS232/RS485通信方式相比较,该方案解决了不带串行通信方式的上位机的通信困难,抗干扰能力更强,为系统提供更稳定的电源,适用于恶劣环境下的工业现场的高精度测量。