李远哲, 贺海文, 万 丽, 刘慧丰, 易 兵
(1.中国人民解放军32184部队,北京 100093; 2.中国人民解放军63966部队,北京 100072; 3.中国人民解放军32183部队,辽宁 锦州 121000)
装甲车辆试验鉴定需要对诸多参数进行长期连续测试[1],温度参数在直观表征被测对象技术状态的同时,也与压力、流速、扭矩等参数有着强相互关系,是对被测对象进行分析评估的基本参数,也是实现过程控制、故障诊断、状态监测以及健康管理(PHM)、视情维修等必选的参数。因此,应对装甲车辆不同分系统的多路温度参数进行测量。
在多个文献中都有关于多路温度测量的研究[2-4],提出了多种解决途径,较好地满足了使用环境相对较好的场合的需要。由于装甲车辆试验鉴定过程是一个长期持续的过程,且对测量系统适应冲击振动、宽温等恶劣环境要求苛刻,同时不同被测对象在通道数上存在差异,故要求测量系统具有良好的扩展性设计。目前所查询到的方案存在着环境适应性、扩展性、经济性、可靠性等方面的不足,因此,应设计适应恶劣工作环境的柔性可扩展的多路温度测量系统,从而满足装甲车辆以及其他相关领域需要长期车载持续测量的迫切需要。
在工业、军工等测量领域,目前多用铂电阻传感器作为温度传感器。铂电阻传感器是利用金属铂(Pt)的电阻值随温度变化的物理特性而制成的温度传感器。铂电阻温度传感器有Pt1000和Pt100两种,温度每变化1 ℃,Pt1000和Pt100热电阻分别增加或减小约3.8 Ω和0.38 Ω,由于阻值变化区间不同,相比之下Pt1000灵敏度更高。根据铂电阻分度表或者其温度电阻特性公式即可获得对应的温度值。显然,电阻值的精确测量是实现温度值测量的关键。测量电阻有二线制、三线制和四线制等不同接法,为保证精度,一般多采用三线制或四线制方法。
四线制能够严格消除线路电阻的影响。其原理是4根线中2根通电流(r1、r4,常称电流线),另外2根作为电压测量的引线(r2、r3,常称电压线或补偿线),这2根线上流过的电流非常小,可以忽略不计,也就是说线路上没有压降,这样测量到的就是两端的真实电压,反映的是真实的电阻。若4根线的线型一样、长度一样,接触电阻可以忽略不计。四线制需要从热电阻Rt两端引出4根导线,其优点是测量精度高,缺点是需要导线多。如图1(a)所示,I为恒流激励源,r1,r2,r3,r4分别为近似相等的传感器引线电阻,Rt为铂电阻,AIN1,AIN2为A/D转换器的两个差分输入端,对电流的分流可忽略不计,得到的铂电阻上的电压U,即U=I×(Rt+ΔR)。
采用三线制,将导线一根接到电桥的电源端,其余2根分别接到热电阻所在的桥臂及与其相邻的桥臂上,这样消除了导线线路电阻带来的测量误差。如图1(b)所示,图中为恒流激励电流源,Rt为铂电阻,r1,r2,r3为近似相等的引线电阻,AIN1,AIN2为A/D转换器的两个差分输入端。若引线电阻随温度变化的阻值为Δr,则其测量电压误差为Uerr=I×Δr。
与四线制接法电路相比,由于环境、激励电流等因素造成引线电阻的变化会造成测量电压的误差,使得测量精度下降。在实际的应用中,出于性价比的考虑,三线制热电阻测量温度的方式更加常用,但对于同时要求测量精度较高的场合,图1(b)所示的三线制接法将无法满足。为提高三线制接法的测量精度,使用两路恒流源I1,I2作为激励,即改进的三线制,如图1(c)所示,则测量电压误差为Uerr=2×(I1-I2)×Δr。可以看出,减小I1,I2的差值即可减小测量电压误差,如果I1=I2,将可完全消除引线电阻引入的测量电压误差。
图1 温度传感器测温电路原理示意图
通过上述分析,改进的三线制采用双恒流激励源的方式,既避免了四线制方式导线过多的缺点也能保证测量精度。
为满足上述精度、环境适应性、可靠性、扩展性等多方面的要求,系统设计按照“模块化、可级联”的思想,提出以飞思卡尔的MC9S12DT128单片机为控制单元、以AD7794为核心转换单元、以CAN总线为扩展通信总线的设计方案,形成单个模块具有6路温度通道、可通过CAN总线扩展的温度测量系统。系统逻辑架构如图2所示,主要由温度采集单元、数据采集单元、数据处理系统和CAN总线组成。
图2 系统逻辑架构示意图
在数据处理系统(上位机软件)的集控下,通过数据采集单元及其嵌入式系统软件完成对各温度采集单元进行地址编址、初始标定、数据接收和存储等。系统通过CAN总线实现数据传输和单元级通道扩展,可形成柔性组合的多模块、分布式采集系统,满足多通道、高精度、恶劣环境下长期持续使用的需要。
如前所述,MC9S12DT128型单片机和AD7794芯片为核心器件的该测量系统的核心。
MC9S12DT128型单片机成本低、功耗小、资源丰富,工作温度达到-40~125 ℃,其内部集成了3个CAN总线接口、2个SPI接口和定时器等多种资源,以该单片机为MCU进行设计不需要额外设计CAN总线接口、SPI接口资源等,对于CAN总线接口通信只需增加收发器(如82C251)通过软件配置即可实现,操作简单方便,满足了温度采集单元模块及扩展和AD7794控制的需要。
AD7794是ADI公司生产的一款低功耗24位∑-Δ模数转换器,采用2.7~5.25 V单电源供电,功耗电流仅400 μA,同时噪声只有40 nVrms,非常适合于低功耗且高精度的测量。它集成了6个差分传感通道的24位ADC,片上还有低噪声的仪用放大器,这意味着幅度比较小的信号可以直接输入到ADC。另外,它还具有两路可编程恒流源输出(10 μA,210 μA,1 mA),可以为电阻类型的传感器提供电流,并且两路恒流源匹配误差为±0.5%,保证了采用改进的三线制温度传感器的测量精度。同时其基准电压可通过内部寄存器选择,数据输出速度可以通过编程设置为4~500 Hz,在16.6 Hz条件下它们能够提供同步抑制50 Hz和60 Hz干扰信号的功能。
综上所述,MC9S12DT128单片机的资源配合AD7794提供的恒流源、基准电压控制、数模转换等功能,能够很好地满足温度测量的需要。为提高测量的精度和稳定性,AD7794的基准电压采用了外部比率式设计,即采用其自身的恒流源与定制的低温漂电阻产生的电压作为外部基准电压,以消除恒流源的变化而引起的测量误差。由于AD7794提供了两个外部基准电压选择,若不采用通道切换方法,单片AD7794只能测量两路温度。因此实现6路温度参数的测量,可以有“3片AD7794”和“1片AD7794+4片ADG608”两种方法实现。综合考虑经济性和可靠性,在不大于6通道时采用“3片AD7794”的方法来完成更适宜。
系统设计中,使用MC9S12DT128单片机内嵌的CAN总线通信模块和强大的数据处理功能,通过对AD7794的控制,读取AD7794转换获得的前端铂电阻温度传感器的输出信号,根据标定系数转换为实测的铂电阻的电阻值,然后经过查询“电阻-温度”对照表,获得对应的温度值。
图3给出了单个AD7794芯片实现两路三线制温度传感器的温度采集电路。温度采集电路大体上又分为信号调理和A/D转换两大部分。信号调理部分所要完成的任务是把非电量的信号转化电压类型。采用改进的三线制温度测量电路,T1-、T1+和T2-、T2+分别经RC滤波后为AD7794提供测量电压信号,通过AD7794内部控制打开恒流源,IOUT1从TI1流出,IOUT2从TI2流出,经Ref1和Ref2两个低温漂高精度电阻为AD7794提供基准电压,同时TI1、TI2也分别作为通道1和通道2的Pt1000温度传感器的激励电流,以产生测量电压。由于采用同一恒流源产生基准电压和测量电压,实现了外部比率式基准电压,消除了由于恒流源的变化而产生的误差。
图3 温度采集电路的设计
输入信号通过低通滤波、开关选通、滤波消噪等单元后再进入相应的AD7794的模拟输入端。为保证测量精度,引线电阻和AD7794的基准电压是必须要考虑的因素。测量信号经过消噪处理后,进入AD7794的AIN1、AIN2两个差分输入端。通过MC9S12DT128单片机的SPI1口实现对AD7794的控制操作,主要包括模式设置、配置设置,从而完成采集模式、放大倍数、基准电压、通道等的设置和选择。其主要的初始化模块AD7794_SPI_Init和读写模块AD7794_SPI_WR_Byte代码如下:
#define AD7794_SPI &SPI1CR1
#define AD7794_SPI_CS_DDR DDRP_DDRP3
#define AD7794_SPI_CS PTP_PTP3
static byte *AD7794_SPISR;
static byte *AD7794_SPIDR;
void AD7794_SPI_Init(void)
{
*AD7794_SPI=0x5C;//分别设置LSBF、SSOE、CPHA、CPOL、MSTR、SPTIE、SPE、SPIE
*(AD7794_SPI+1)=0x00;//设置SPI1CR2,AD7794最大5M
AD7794_SPI_CS_DDR=1;
AD7794_SPI_CS=0;
AD7794_SPISR=AD7794_SPI+3;
AD7794_SPIDR=AD7794_SPI+5;
*(AD7794_SPISR);//SPISR;
*(AD7794_SPIDR);//SPIDR;
}
static byte AD7794_SPI_WR_Byte(byte SendData)
{
while(!((*AD7794_SPISR)&0x20));//等待.SPTEF为1,才能写入数据
*AD7794_SPIDR=SendData;
while(!((*AD7794_SPISR)&0x80));//等待接收完成
return (*AD7794_SPIDR);
}
为操作方便,可在软件设计中根据模式寄存器与配置寄存器的定义建立两个联合AD7794_MOD、AD7794_CFG,定义如下:
typedef union
{
unsigned short regValue;
struct
{
byte MR8 :1;//Bit8:必须为0
byte AMP_CM :1;//Bit9:仪表共模位
byte MR10 :2;//Bit10-11:必须为0
byte PSW :1;//Bit12:电源开关控制位
byte MOD :3;//Bit13-15:模式选择位
byte FS :4;//Bit0-3:滤波器更新选择
byte CHOP_DIS:1;//Bit4:斩波使能位
byte MR5 :1;//Bit5:必须为0
byte CLK_SEL :2;//Bit6-7:选择时钟源
}DATA;
}AD7794_MOD;
typedef union
{
unsigned short regValue;
struct
{
byte Gain :3;//Bit8-10:增益选择
byte BOOST :1;//Bit11:必须为0
byte Psolar :1;//Bit12:极性选择位
byte BO :1;//Bit13:熔断电流使能
byte VBIAS :2;//Bit14-15:偏置电压
byte Channel:4;//Bit0-3:通道选择
byte BUF :1;//Bit4:缓冲模式
byte RFE_DET:1;//Bit5:基准电压检测
byte REF_SEL:2;//Bit6-7:基准电压选择
}DATA;
}AD7794_CFG;
单片AD7794可支持两路温度信号的采集,在采集过程中需要修改AD7794的模式寄存器和配置寄存器以完成采集模式、放大倍数、基准电压、通道等的设置和选择等操作,其典型操作流程如图4所示。
图4 AD7794典型操作流程图
嵌入式系统软件主要包括主程序模块、AD7794设置模块、温度标定模块、温度采集转换模块、CAN总线初始化模块、CAN总线接收模块、FM25640铁电随机存储器模块和开发系统支撑单元等。为克服铂电阻的非线性带来的计算难度,测量系统采用查分度表和线性差值的方式获得最终的温度测试值。为此,通过“标定”建立“码值-阻值”之间的线性关系,即
R测=ADCode×A+B
式中,R测为测量电阻值;A,B为转换系数;ADCode为AD7794输出码值。
由此,可以计算实际的测量阻值。但这样的一种对应关系由于硬件设计和电子元器件等因素,对于不同的通道,其A,B并不相同,因此在软件设计中,提供了温度标定模块,用于实现对每个通道进行标定。大体的过程是通过标准电阻提供两个标准电阻值(894 Ω、1385 Ω),计算出当前通道的标定系数,并保存至FM25640中,使得该系数能够掉电不丢失且可以多次标定,方便后续计量标校。
“阻值-温度”对照表按铂电阻分度表给出,并将对应的温度值放大10倍表示,以保证测试结果的分辨率,同时,为表示负温度值的方便,采用了测量值加上500的处理方法,使得最终显示的测量结果在0~2000之内,以方便CAN总线传输。温度采集执行流程如图5所示。
图5 温度采集流程图
为了增强抗干扰能力和容错性,电路中采用了多种软、硬抗干扰措施。从硬件设计上分析,主要的干扰源在高频时钟,主要的传播路径是导线传导,由此可能造成恒流源的变化,所以在硬件设计上,采用电源接地抗干扰、电路板每个IC并接一个0.01~0.1 μF的高频电容,以减少对电源的影响,同时注意布线的合理性,连线尽量靠近电源端并尽量粗短等抗干扰措施[5-6]。在软件计上,采用去极值滑动平均滤波抑制叠加在模拟输入信号上的噪声[7];采取软件拦截技术、软件看门狗技术等措施使受到干扰而“跑飞”的程序回到正常的轨道上来,有效地提高了系统的可靠性。
为验证系统的环境适应性和测量精度,利用ZX21型旋转式电阻箱提供标准电阻值模拟Pt1000温度传感器,进行了常温、低温(-43 ℃)、高温(+110 ℃)等环境条件下的实验测试,并与分度表标准值进行对比分析,结果如表1所示。
实验结果表明,在-48~350 ℃范围内温度点的测量偏差在±0.1 ℃以内,完全满足常见过程管理、状态监测、健康管理等领域的测量要求。
通过合理运用MC9S12DT128单片机和AD7794芯片资源,结合软件设计实现了可通过CAN总线扩展的模块化多路温度测量[8-9]。该测量系统在多型装备试验鉴定过程中得到普遍应用,随车完成了长期持续数据采集,为装备状态监测、故障分析等提供了高精度的测量数据,保障了装备的鉴定定型。实践证明,该测量系统精度高、适应性好、扩展性强、经济性好、使用方便,可广泛应用于其他相关领域的温度测量,推广应用前景广阔。
表1 实验数据对比