张 峰, 石现峰 , 张 妮
(1.西安工业大学 电信学院 陕西 西安 710032;2.西安工业大学 北方信息工程学院 陕西 西安 710025)
温度信息是各类监控系统中主要的被控参数之一,温度采集与控制在各类测控系统中应用广泛。随着处理器技术的发展,在温度测量领域,ARM处理器以其高性能、低成本得到了广泛应用。以Luminary公司生产的32位ARM处理器LM3S101为核心,以热敏电阻为温度传感器,并通过引入RC充放电电路以及对热敏电阻测温曲线的分段线性化处理,实现了一种成本低、测温精度高的温度测量模块设计方案。经实际测量实验,这种设计方案在整个测温范围内能够达到较高测温精度,且模块通用性强、成本低且应用广泛。
实现温度的检测需要使用温度传感器。温度传感器种类很多,热敏电阻器是其中应用较多的一种,具有灵敏度高、稳定性好、热惯性小、体积小、阻值大及价格便宜等特点,广泛应用于温度测控领域[1]。热敏电阻应用于温度检测,最核心的一个工作就是要比较精确地获取热敏电阻的阻值变化。常见的处理方式是通过外加电源,把热敏电阻的阻值变化转换为电压或电流变化,再通过A/D转换器进行转换后将数字量传送给处理器进行处理。这种方式硬件电路设计及数据处理相对麻烦,成本较高,并且所获取的热敏电阻阻值精度受电源稳定性和A/D转换器的位数限制,一般比较低,对测温精度造成较大影响。同时,由于热敏电阻的非线性,为提高测温精度通常还需要附加较复杂的补偿电路。在设计中,为解决这一问题,将RC充放电采样方式引入到热敏电阻的阻值测量中,将阻值转换为电容的充放电时间进行检测,原理如图1所示。
图1 热敏电阻阻值获取原理Fig.1 Acquistion principle of thermal resistor’s resistance
图1中,P1.0、P1.1和P1.2均是处理器的通用 I/O口,RF为精密参考电阻,RT为检测温度的热敏电阻,RS为0.1 kΩ普通电阻;C为0.1 μF普通电容。
实现热敏电阻阻值获取的步骤及原理如下:1)先将端口P1.0、P1.1、P1.2都设为低电平输出,使电容C完全放电。2)将P1.1、P1.2设置为输入状态,P1.0设为高电平输出,通过电阻RF对C充电,处理器内部计时器清零并开始计时,检测P1.2口状态,当P1.2口检测为高电平时,即电容C两端的电压达到处理器I/O口高电平输入的门嵌电压时,计时器停止计数,记录下从开始充电到P1.2口检测到高电平的时间T1。3)将P1.0、P1.1、P1.2再次设为低电平输出,使 C完全放电。4)再将P1.0、P1.2设置为输入状态,P1.1设为高电平输出,通过热敏电阻RT对C充电,再进行步骤2)相同的过程,记录下时间T2。
热敏电阻的阻值由T1和T2确定。RC充放电电路中,电容C两端的电压确定为:
由上述过程可得:
简化式(2)即可得到热敏电阻的阻值:
由式(3)计算出热敏电阻阻值后,通过热敏电阻测温曲线,即可把阻值转换为对应的温度值,实现温度信息的获取。
处理器是整个测温模块的控制及数据处理的核心。特别是在本设计中,由于热敏电阻的阻值需要直接由处理器进行检测,其性能会对测温效果、精度、数据处理速度等产生较大影响。综合处理器速度、性能与价格的考虑,选用ARM处理器LM3S101。LM3S101是基于ARM CortexTM-M3内核的控制器,该器件是32位处理器,采用哈佛架构、Thumb-2指令集,主要特点[2]如下:1)具有 32位 RISC 性能;2)具有 2个内部存储器,内部集成了8 KB单周期的Flash ROM,2 KB单周期的SRAM;3)具有2个32位的通用定时器,其中每个都可配置为1个32位定时器或2个16位定时器,同时还有遵循ARM FiRM规范的看门狗定时器;4)具有同步串行接口SSI,和UART串行接口,具有很强的信号传输功能;5)2~18个GPIO端口,可编程灵活配置;6)时钟频率达到20 MHz。
除此之外,该款处理器由于采用CortexTM-M3内核,支持单周期乘法运算,这在测温数据处理时会有较高的数据处理速度与效率。同时,该处理器成本低。
由于采用RC充放电的方式获取热敏电阻阻值,因此整个测温模块所需外围元件很少,热敏电阻阻值获取的精度是影响模块测温精度的主要因素之一。由热敏电阻阻值获取原理可以看出,影响测温精度的主要因素有:1)参考电阻RF的精度;2)热敏电阻RT的精度;3)处理器内部定时器的位数与精度。处理器工作频率越高,定时器位数越大,则处理精度越好。
阻值获取的精度是与处理器的输出电压值、门限电压值、电容C的精度、电阻RD的精度无关的,因此只要合理选择处理器和高精度的RF与RT,就可以使热敏电阻阻值的测量有较小的误差。为保证测温精度,热敏电阻RT选用标称值为 10 kΩ(或 100 kΩ),B 值为 3 950,1%精度热敏电阻,参考电阻RF选用10 kΩ(或100 kΩ),1%精度的金属膜电阻。
以ARM处理器LM3S101为核心,结合上述热敏电阻阻值获取原理,给出该测温模块核心部分电路原理图,如图2所示。
图2 模块核心部分原理图Fig.2 Schematic diagram of main part of the unit
由图2可看出,按上述的电容充放电热敏阻值检测原理进行硬件设计,核心部分电路较为简洁,避免了传统方式中A/D器件的应用,达到了简化硬件电路设计,降低硬件成本的目的。同时,这种设计又不过多占用处理器的I/O端口,对处理器资源的占用也较少。由于这种方式在阻值获取时需处理器具有较高的计数精度,而在阻值到温度值转换时需处理器具有较强的运算能力,因此选用LM3S101进行核心处理,其20 MHz的时钟频率及ARMCortex-M内核集成的硬件乘法单元对此有很好的保证。电路图中,其他部分简要说明:SP6201是集复位功能于一体的低压差线性稳压(LDO)器,将5 V电源转换为处理器LM3S101所需的3.3 V,同时产生处理器工作所需的复位信号。电阻 RF、RT、RS和电容 C6构成RC充放电电路,用以实现热敏电阻阻值的检测,与处理器通过PA2、PA3、PA4 3个GPIO接口相连。LM3S101的10和11引脚使用其UART功能,连接至电平转换电路,以实现模块通过串口的通信及温度数据发送功能。
热敏电阻的测温曲线反映了热敏电阻阻值与被测温度值之间的关系,由Steinhart-Hart方程确定:
式中,RT是热敏电阻在T1温度下的电阻值;R是热敏电阻在常温T2(T2=25℃)下的标称电阻值;B值是热敏电阻的材料常数;T1和T2为开尔文温度。
由Steinhart-Hart公式可知热敏电阻的阻值温度特性曲线是一条非线性的指数曲线,直接使用该方程运算量大并且编程麻烦,需要进行线性化处理。由于该方程非线性程度较大,同时阻值到温度值的转换也是影响测温精度的主要原因之一,为使线性化处理不至于带来较大的误差,线性化过程进行了以下特殊处理:
1)如果用一条直线代替该指数测温曲线,则不管采用什么样的线性化处理方法,误差都比较大。为解决这一问题,在整个测温范围之内对该曲线进行了分段的线性化处理,使误差能够控制在合理的范围内;
2)分段线性化时,对测温曲线的分段采用非等间隔分段,在曲线非线性程度较小的区域内采用5℃分段间隔,在曲线非线性较为严重的区域内,采用较小的1℃分段间隔,以减小处理误差;
3)在每一段测温曲线的线性化处理中,采用最小二乘法确定直线方程,以减小直线拟合的均方误差。
实测结果证明,采用上述的线性化处理方法,可以有效提高处理精度,大大减小线性化处理的误差,保证测温的精度要求,同时运算速度也能得到保证。
测温模块工作过程中不可避免会受到噪声干扰。为减少测温过程中噪声干扰信号,特别是突发噪声的影响,提高测温模块的工作稳定性,需要结合滤波算法对测温数据进行滤波处理[3]。这里采用简单的加窗平滑低通滤波的方法,即连续测量N个值,取平均后作为测量的有效值,即:
在具体的应用中,N越大对数据的平滑越好,但N过大会降低测温的速度和灵敏度。经实际试验,选择N=5~10之间较为合适,可在计算速度和平滑滤波效果之间取得较好平衡,实际应用中,可根据具体的测温要求进行合理设置。
以上述的数据处理思路为基础,结合串口通信编程及必要的初始化处理工作,即可进行测温模块的软件设计。完成一次温度测量及测温结果传输的主流程如图3所示。
图3 测温模块软件设计流程图Fig.3 Flow chart of temperatue measuement unit software design
整个模块的软件设计编程基于Crossworks1.7开发环境进行,将整个程序的核心部分划分为4个函数进行设计,即:1)主函数,完成系统参数配置、端口初始化及滤波处理等功能;2)测温函数,完成热敏电阻的阻值获取,并将其转换为实际的温度值;3)测温结果传输函数,完成测温结果通过串口的发送传输功能;4)串口接收函数,通过串口接收控制指令,完成测温间隔时间、串口通信速率、平滑滤波加窗宽度、及测温结果显示格式等工作参数的设置。
所设计的测温模块结合精密恒温槽进行了实际测温效果的实验测试。利用精密恒温槽在-10~+80℃的测温范围内,设置3个温度检测点,把热敏电阻放在精密恒温槽内,利用该模块进行温度的测量。各个温度点的温度测量值通过串口调试工具进行观测,实验测试数据如表1所示。
表1所示的测量数据表明,所设计的测温模块测温稳定,在整个测量温度范围内测温精度基本上能够达到0.2℃,优于传统热敏电阻测温采用单片机结合A/D器件的方式,同时也证明了测温曲线分段线性化处理的有效性。
表1 实际测量数据Tab.1 Actual test data
本文提出了一种简单实用、性价比高、测温效果好的热敏电阻温度测量模块的设计,所设计的测温模块由于对热敏电阻阻值的获取引入RC充放电方式,简化了硬件设计和模块成本;而选用32位ARM处理器LM3S101[4-5]以及数据处理所采用的分段线性化处理方式则有效保证了测温精度与数据处理的速度。通过测温实验及在具体温度测控系统中的使用,该测温模块在-10~80℃范围内有良好的测温效果。在具体的模块设计与应用过程中,还有其他一些因素会对测温的精度产生影响,若要进一步提高该方案的测温精度,可在以下几个方面做进一步的改进处理[6]:1)电源的稳定性,由于采用RC充放电方式获取热敏电阻的阻值,系统电源的稳定性对充放电时间有较显著的影响,实际设计与应用中,采用低噪声、高稳定的电源有利于测量精度的提高。2)热敏电阻形状,热敏电阻的体积非常小,可以制造成各种形状,应根据具体使用场合的不同,选择合适形状的热敏电阻,使测量值能准确反映测量温度。3)传感器的一致性,传感器的一致性差,会引起很大的测量误差,热敏电阻在作为精密的温度传感器使用时,应选择产品的互换性在0.1%以上。4)计算精度,测温数据的处理运算较为复杂,在进行处理程序编写时,应注意保持较高的计算精度,防止计算过程带来较大的误差。
[1]张洪润,张亚凡.传感器技术与应用教程[M].北京:清华大学出版社,2005.
[2]张美琪,胡国文,董竞宇.基于LM3S101的数字采控器设计[J].电子元器件应用,2009(12):45-48.ZHANG Mei-qi,HU Guo-wen,DONG Jing-yu.The design of digitaldata acquisition and controlsystem based on LM3S101[J].Electronic Component&Device Application,2009(12):45-48.
[3]杨伟涛,苗风东,倪邦发,等.基于ARM的热敏电阻温度计的设计[J].现代电子技术,2007(8):59-61.YANG Wei-tao,MIAO Feng-dong,NI Bang-fa,et al.Design of thermal resister thermometer based on ARM[J].Modern Electronics Technique,2007(8):59-61.
[4]周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.
[5]姚帆,王振臣,王晓宁.基于ARM9的数字温度监测系统设计[J].工业控制计算机,2009,22(3):54-56.YAO Fan,WANG Zhen-chen,WANG Xiao-ning.Design on digital temperature monitoring system based on ARM9[J].Industrial Control Computer,2009,22(3):54-56.
[6]冯荣达,曹柏荣.基于热敏电阻的多点温度测量系统[J].微计算机信息,2008(4):110-112.FENG Rong-da,CAO Bai-rong.The multiple-point temperature measurement system based on heat-variable resistor[J].Control&Automation,2008(4):110-112.