0引言
磁致伸缩传感器经常应用于恶劣工业环境,能够对石油等液位进行精确测量。由于其不受油渍和尘埃等环境的影响,浮子与敏感材料非接触,从而大大延长了工作寿命;传感器输出绝对位置,断电后无需重新标定[1]。磁致伸缩传感器的测量精度主要由前端信号处理和时间测量这两个电路决定。传统的时间测量方式难以达到纳秒级的精度,因而无法保证测量结果的精度。本文着重介绍了新型芯片TDC-GP2在磁致伸缩传感器中的应用,有效解决了脉冲时差测量精度不高的问题。
1传感器原理
稀土合金材料在外力磁场交互作用下会发生“磁致伸缩”现象。当浮子的磁场与激励脉冲的磁场交叠时会产生应变脉冲,脉冲以一定的速度在波导丝上传播,经信号处理电路后可得到起始脉冲和停止脉冲,两者之间的时间差即为激励脉冲在波导丝上的传播时间。
传感器位移计算公式为:
S=v×tn(1)
式中:S为浮子相对位移;v为感应脉冲在波导丝上的传播速度;tn为激励脉冲和第n个浮子产生的激励脉冲时间差。而对于特定环境下的测量,感应脉冲传播速度恒定,此时只要能精确测出两脉冲之间的时间差,就可以精确地计算出浮子的位置。
目前,国外磁致伸缩传感器的分辨率已经达到小于1μm的水平,因而可以推算出其时间间隔测量必须精确到纳秒级。若采用传统的计时方式,测量晶振频率就要达到GHz的范围。目前,市场上的振荡器很少能达到如此高的频率,且稳定性也不理想。对此,本文利用高精度测时芯片TDC-GP2有效解决了这一难题。
2TDC-GP2时间测量
2.1TDC-GP2时间测量原理
TDC-GP2是ACAM公司通用TDC系列的新一代产品,其时间分辨率可达50ps,远远超过了目前磁致伸缩传感器对时间测量精度的要求。TDC-GP2可进行三次采样,平均电流消耗为15μA,测量范围为500ns~4ms,满足一般场合下传感器测量范围的要求。芯片内部提供了精确的停止脉冲使能窗口,并具有高速脉冲发生器、温度测量和时钟控制等功能,这使得它在低成本、低功耗的精确时间测量方面有着广阔的应用前景。
TDC-GP2是以信号通过内部门电路的传播延迟来进行高精度时间间隔测量的。芯片上的智能电路结构、担保电路和特殊的布线方法使芯片能够精确地记录信号通过门电路的个数。芯片测量时间的精度由内部门电路的传播延迟时间决定。
TDC-GP2芯片采用前置适配器来扩展时间测量范围,并且能够保持分辨率不变。TDC-GP2的高速单元并不测量整个时间间隔,而是仅仅测量起始脉冲和停止脉冲到相邻的基准时钟上升沿的时间间隔。TDC-GP2时间间隔测量原理如图2所示。
图2中:HIT和HIT₂为TDC-GP2在相应区域间内测得的通过的门电路个数,并记录在内部寄存器中;CC为基准时钟在相应区间内测量而得到的时间。在测量过程中,必须对TDC-GP2进行内部校准,即记录在一个和两个基准时钟周期内通过的门电路个数,用Cal₁和Cal₂来表示。
TDC-GP2内部ALU时间间隔计算公式如式(2)和式(3)所示。
Time=RES_X×T×2s(3)式中:T为基准时钟周期;ClKHSDiv为内部时钟预划分数。测量结果存储在内部32位寄存器中。
2.2TDC-GP2的硬件设计
系统采用ATmega128作为磁致伸缩传感器的MCU,其价格低廉,具有丰富的内部资源,使用方便。单片机通过SPI接口与TDC-GP2通信。TDC-GP2核心电压为1.8~3.6V,必须由电池或固定的线性电压调节器供电。稳定的供电电源是获得良好测量结果的基本保证,并且要求电源具有高电容性和低电感性,从而保证测量结果的可靠性。本设计采用3.3V的线性电源供电。在硬件设计中,印刷电路板(PCB)布线要注意对电源进行滤波和去耦。本文使用10μF和0.1μF的电容对进入数字部分的电源进行滤波,并使用0.1μF的电容对芯片和电源进行去耦,去耦电容要尽可能放在靠近TDC-GP2的地方3]。TDC-GP2硬件连接电路如图3所示。
图3中,4MHz晶振作为TDC-GP2的基准时钟和芯片的粗计数器;32.768kHz晶振作为TDC-GP2的校准时钟。测量前必须对基准时钟进行校准。TDC-GP2从校准时钟引出Start和Stop脉冲,启动TDC-GP2单元测量时差,结果存储在结果寄存器中,并对中断标志位置位。微处理器可以计算出基准时钟的频率误差。
测量过程中,RSTN为TDC-GP2复位引脚,测量前要确保其有一个不小于50ns的低电平,否则会导致测量不正常。Start端接收到脉冲之后开始计时,Stop,端接收到指定脉冲次数后停止计时,并使能中断,通知MCU读取数据。
2.3TDC-GP2时间测量软件设计
系统采用ATmegal28对磁致伸缩传感器进行控制和数据处理,其中对TDC-CP2芯片的设置和结果的读取为整个软件的关键部分。TDC-GP2测量结果有八位有效数字,为保证测量结果精度,需使用双浮点型来表示。本设计中采用支持双浮点运算的编译器IAR-AVR来编写程序。TDC-GP2时间测量流程如图4所示。
软件设计首先要对单片机端口和SPI工作方式初始化,主要包括初始化PD₂、PD。端口作为输出和中断输入,SPI为Model1工作方式,在每次读写序列之间SSN至少保持50ns高电平。每次对TDC-GP2初始化之前要对TDC-GP2进行复位,且先进行硬件复位,再进行软件复位,硬件复位持续时间必须大于50ns。然后根据测量模式对TDC-GP2内部写寄存器Reg0~Reg5进行初始化,此时,要注意关闭移向单元和噪声单元,否则会导致测量失败;同时也不能对芯片进行连续读写操作,每个寄存器必须进行单独寻址。读操作前要先发送操作码,在发送操作码之后的第一个时钟上升沿,TDC-CP2发送指定地址的最高位到SO输出。本文采用高精度和高稳定性的32.768kHz时钟对基准时钟和内部TDC进行校准。在写寄存器中设置TDC内部自动校准,并设定标定基准时钟的周期数n。启动校准后,TDC内部ALU自动计算32.768kHz时钟的n个周期与实际基准时钟单个周期的比值,结果存储在结果寄存器中。计算公式如式(4)所示:
RES_x=(n×T₃2768k)/T(4)
单片机通过SPT总线读取TDC校准值后,通过式(5)计算修正因子CAL。
式中:Tz₇为校准时钟的周期值;Tne为基准时钟的理论周期值。TDC-GP2测量的时间要乘以校准因子CAL来修正。部分关键程序代码如下。
//TDC-CP2复位
voidTDC-Reset(void)
SET_RSTN_H;
CLR_RSTN_L;
asm(”nop”);
SET_RSTN_H;
Write_SPI_8byte(0x50);
//TDC-CP2寄存器初始化
voidTDC_Config(void)
Write4ByteToTDC(Reg0.0x008668);//自动校准Write4ByteToTDC(Reg₁,0x314300);//采样点数Write4ByteToTDC(Reg2.OxE00000);//开中断Write4ByteToTDC(Reg3.0x180000);//4ms溢出Write4ByteToTDC(Reg4.0x200000)
Write4ByteToTDC(Reg5.0x080000)
//关闭噪声单元和移相单元
WritelByteToTDC(0x03);//手动校准
WritelByteToTDC(0x70);//准备测量
3滤波算法与调试结果
3.1数字滤波算法
为了防止环境干扰对TDC-GP2测量结果精度的影响,采用数字滤波来提高传感器的稳定性。经仿真比较6],本设计选用了防脉冲干扰平均滤波法,其稳定性更高。
数字滤波算法流程图如图5所示。
图5中:N为数组的元素个数;X。为第n次的测量数据;sum为数组元素值的和。该算法剔除了N次测量数据中的极大值和极小值,并对余下的数据取平均后作为结果输出。这样既能抑制随机干扰,也能防止较大脉冲波动对测量结果带来的影响,从而提高了磁致伸缩传感器的稳定性和重复性。
3.2调试结果
大量测试结果表明,TDC-GP2在磁致伸缩传感器中测量所得到的数据能够满足要求。在量程为1m的传感器中,在量程范围内的两端点位置及中间点位置做定点测量,实测时间数据如表1所示。
次数 | 起始点位置 | 中间点位置 | 末端点位置 |
50484.9 | 156514.4 | 359643.9 | |
2 | 50486.5 | 156510.5 | 359645.1 |
3 | 50486.7 | 156516.2 | 359641.4 |
4 | 50488.2 | 156509.6 | 359645.2 |
5 | 50483.6 | 156514.3 | 359642.5 |
6 | 50485.4 | 156516.8 | 359643.2 |
7 | 50487.5 | 156513.3 | 359639.4 |
8 | 50482.3 | 156517.5 | 359645.2 |
9 | 50489.0 | 156511.7 | 359646.7 |
10 | 50484.6 | 156512.1 | 359644.3 |
最大值-最小值 | 6.7 | 8.4 | 7.3 |
G | 2.1 | 2.7 | 2.1 |
由表1可知,磁致伸缩传感器在定点测量的时间值的最大偏差不超过10ns,标准偏差不超过3ns。
4结束语
TDC-GP2具有高精度、低功耗和封装小等特点,适合于低成本的磁致伸缩传感器领域;具有三次采样能力,可同时测量三层液位,极大地方便了工业领域的应用。本设计解决了磁致伸缩传感器中时间测量模块精度不高的问题,远远超过了国外磁致伸缩传感器最高分辨率对时间测量模块的要求,做到了精度无损测量,为传感器位移精度的提高打下了良好的基础,具有广阔的发展前景。