铂电阻温度传感器是利用其电阻和温度成一定函数关系而制成的温度传感器,由于其测量准确高、测量范围大、复现性和稳定性好等,被广泛用于中温(-200℃~650℃)范围的温度测量中。
但在这种检测电路中,不平衡电桥中以及铂电阻的阻值和温度之间的非线性特性给zui后的温度测量带来了一定的误差。早期通常采用硬件电路来减小这种误差。但硬件法不但增加了电路的复杂性,而且由于包括传感器在内的各种硬件本身的缺陷和弱点,所以往往难以达到较高的指标要求。因此,在系统的设计上引入与检测技术直接相关的数据处理算法,即软件算法来实现线性化处理的要求,可以有效地提高系统的精度,降低成本。
本测温仪通过采用查表线性化得出温度各点对应的A/D转换值,并且利用软件算法实现了电路中各参数的自适应调整选取,在尽可能提高分辨率的情况下使设计的电路在给定的温度范围内各点的分辨率近似相等,从而方便了硬件电路的设计和电阻的选取,也减小了铂电阻测温电路的非线性误差。
1 系统结构
测温仪的系统硬件结构框图如图1所示。考虑到功耗及整机的精度和价格等问题,测温仪的单片机控制器采用ENC的8位78K0系列单片机,并启用了看门狗功能,以提高测温义的抗干扰性能。测温系统采用不平衡电桥测量铂电阻随温度变化的电压信号,经过放大、A/D转换后,送到单片机中进行处理和显示。采集时显示zui值温度,超过设定值则报警。本测温仪通过USB接口与PC机连接,上位机负责设置采集开始时间、采集间隔时间等参数,并读取下位机数据,进行数据分析和处理。 2 系统硬件设计 测温仪的测温电路采用典型的铂电阻电桥电路,如图2所示。该测温仪的测温电路采用软件算法中的查表线性化方法,利用软件算法对电路参数进行自适应调整选取,在保证高分辨率的情况下,使得在给定的温度范围内各点的分辨率近似相等,误差可达到0.5级仪表的要求,提高了测温仪的整体性能。 图2中zui后输出的U5将被送到A/D转换器转换为数字量,然后由微处理器读入再进行处理。通过对温度测量电路的数字分析可以得出,U5和Us是完全成正比的。因此,在设计中将Us设为A/D转换过程中的参考电压。这样,即使Us有所变化,也不会影响A/D转换器的转换结果。 由于将Us设为了参考电压,为了zui大化测量的分辨率,希望U5的输出在温度低限时向0V靠拢,而在温度高限时向Us靠拢。这样,首先存在的一个问题便是运算放大器的输出问题。通常,运算放大器的输出并不等于电源电压,因为存在一个饱和问题,这样便降低了整个电路的测量分辨率。在实际设计中,使用的是Rail-to-Rail的运算放大器,即输出上限可以达到电源电压,而下降可以达到0V。这一点对于整个电路来讲是非常关键的。 下面具体介绍测温电路参数自适应调整选取的设计过程。 确定参数的原则是达到尽可能高的分辨率,以及尽量消除由于铂电阻的强非线性带来的各个温度段分辨率的明显差异。整个计算和赋值过程通过软件程序来实现。 *步,通过输入获取温度zui大值和zui小值,得出温度的范围。 第二步,通过输入获取电阻R1、R2、R4的阻值。 为了使节点①的电压大于节点②的电压(因为放大电路是单电源供电的,不可能输出负电压),R1的值必须大于RT在温度测量范围内的zui大值。同时,为了保证桥路的灵敏度,R1的值仅需稍微大于(或等于)RT的zui大值即可。同时明确放大电路中的要求R4=R5、R6=R7,而且为了降低功耗,它们的取值通常都大于100kΩ,作为它的临时计算初值;取R4=R5=100kΩ。 第三步,确定剩下的参数值R6、R7。 由于桥路的要求,R3=R2,R4~R7的阻值比较大,这里可以忽略它们的影响来计算节点①和②之间的电压差(U12)的变化范围,从而求出R6、R7的阻值(R4阻值乘以放大倍数K)。 第四步,计算RT取zui大值和zui小值时刻电路的分辨率。 由于此时已知R1~R7的所有电阻阻值,因此可以计算出具备这些参数的电路的RT取zui大值处的分辨率。例如当温度为-30℃时RT取zui大值,求出U5的值;然后查铂电阻分度表得RT在-29℃时的电阻值,再次求出另一个U5的值,二者之间的值即相对表示了该电路在此点的分辨率,差值越大,则分辨率越高。同理,可以求得该电路在RTzui小值处的两个输出电压U5之差。 第五步,迭代取优。 迭代的目标是尽量使得两端(即RT取zui大值和zui小值时)的分辨率相同。如果二者不相同,则以一定的步长增加R2,直到两端的分辨率基本相同为止。这时便可以确定R2、R3和R6、R7的值了。 zui后,输出电路各给定值以及得出的所有参数值和温度各点对应的A/D转换数值。用来确定测量电路中各参数的程序流程图如图3所示。 为了给实际应用中元器件值的选择提供参考,对温度测量电路进行了误差分析。当电阻值精度取0.1%时,-30℃~40℃各个整数点的相对误差见表1。 表1 电阻精度为0.1%时各温度点的相对误差 -30℃ -20℃ -10℃ 0℃ 10℃ 20℃ 30℃ 40℃ 0.141% 0.187% 0.251% 0.325% 0.400% 0.470% 0.528% 0.574% 由于整个仪表的误差是按照zui大误差来计算的,所以对于0.5级的仪表来讲,这样的误差有些偏大了。但是由于0.1%的电阻精度已经比较高了,因此单靠提高电阻精度来减小相对误差已经不太可能。在实际生产中,为了保证一定的精度,可以对所使用的精度电阻进行进一步的筛选,将电阻分为大于标称值和小于标称值两组,使用时在某个系统中使用特定组中的电阻。这样做实际上是将电阻的精度提高了一倍,这时本系统在各个整数温度点的系统相对误差见表2。 表2 使用经过筛选的精度为0.1%的电阻时各温度点的相对误差 -30℃ -20℃ -10℃ 0℃ 10℃ 20℃ 30℃ 40℃ 0.076% 0.100% 0.134% 0.172% 0.209% 0.242% 0.267% 0.287% 可以看出,此时的误差完全满足0.5级仪表的要求,因此建议在实际生产中使用这样的方法来提高仪表的整体性能。 3 系统软件 系统的软件分为上位机即PC端软件和下位机即单片机模块的软件两部分。下位机由于采用的是NEC的78K0系列单片机,因此编译调试环境为NEC的Project Manager和ID78K0,程序均用NEC单片机的C语言编写;上位机使用Visual Basic语言编写。 上位机主要负责初始参数的设置以及数据采集完以后的数据统计及保存。 测温仪初始化时,需要和上位机连接,然后通过上位机软件来确定测温开始时间、测温总时间、温度报警zui大值和zui小值以及采样间隔时间等参数;测温仪完成一次参数采集后,可以将数据传送到上位机,通过上位机软件来画出温度数据的波形,进行统计分析,然后将数据存储在PC机中。由于测温仪外扩了256K的EEPROM24C256,基本上可以满足多次测温的要求。 下位机主要负责温度采集。首先用户通过上位机软件来设定温度采集的开始时间、采集时间间隔以及报警温度等各个参数,然后开始采集温度数据。采集时显示zui值温度,当温度超出报警温度值时,蜂鸣器发出报警信号。下位机程序的流程图如图4所示。 该测温仪已经投入生产,应用在食品等生产运输过程的温度监控中。铂电阻测温电路的查表线性化的方法,自适应调整选取了电路参数,减少了铂电阻的阻值和温度之间的非线性特性以及不平衡电桥中非线性特性所引起的系统访问,使得系统误差达到0.5级仪表的要求,提高了测温仪的整体性能,可以满足一些对温度变化比较敏感的食品加工等场合的温度监控的需求。