通过计算分度函数及反函数实现热电偶高精度测温
编者按:提高测控精度是对温控器的一个永恒要求。为此,要不断地在设计中引入新技术。本文论述通过用嵌套乘法计算热电偶的分度函数(温度到电压)及反函数(电压到温度)多项来进行温度补偿和测量。此法比之常规的查分度表或在表中做线性插值的方法,精度又有提高,可达0.01℃。ARM Cortex-3结构的高性能32位微处理器STM32F103则能保证很好地完成这种计算(保持14位有效数字)。重点是讲述此测温方法在STM32F103上编程实现,包括算法。
作者简介:王昌世(1957-),男,硕士学历,高级自动化工程师,主要研究方向为温度测量与控制,E-mail:wcs_n3@163.com
0 引言
常规的热电偶(简称TC)测温方法是由电压直接查分度表(电压- 温度表)(精度最低)或在表中进行线性插值(要高一些)得到温度值。前者分辨率不高于1 ℃,此法可用在精度要求不高的场合;后者可把分辨率提高一个数量级或更多,且线性插值的密度越高,测温精度也越高,但同时程序量加大很多。热电偶的国家标准[1] 是标准[2] 的替代,其中[1] 首次提到热电偶函数多项式计算的嵌套乘法。该算法的提出,有较大实际意义,它为日后TC 高精度测温的普及,提供了一种简便实用的方法。
1 热电偶的分度函数与反函数多项[1]
1.1 热电偶的分度函数(简称函数)多项[1]
特别注意,唯K 型热电偶特殊,当t90 在0~1 300 ℃时,要在式(1)之上增加了一项(称为指数项),变成:
式(1)、(2)中E 是电动势(简称电压),单位是微伏(μV);t90 是ITS90 的温度,单位是摄氏度(℃);ai 是多项式第i 项系数;c c 0 1 , 是常数[1];n 是多项式阶数。ai 和n 的值根据TC 的类型和温度的范围确定。式(1)、(2)反映的就是热电偶基本原理- 热电效应(或塞贝克效应)。常见的分度表就是由这个函数得到的。
1.2 热电偶的反函数多项[1]
式中E、t90 和n 的含义同上。di 是多项式第i 项系数;di 和n 的值根据TC 的类型和温度的范围确定。
1.3 用嵌套乘法计算式(1)
将式(1) 展开,有
做恒等变形有:
式(4) 就是函数的嵌套乘法的算式。同理可得反函数的嵌套乘法计算法:
嵌套乘法能有效避免直接计算多项式带来的舍入误差[1]。
2 TC高精度测温流程
如图1 所示。
2.1 冷端补偿
补偿方法可参见文献[3]。
1)选择测温芯片
对于高精度测温,选用冷端[1](也称参比)温度测量芯片也是一个关键,要用高于你要求的精度的芯片,如可用Si705[2], 分辨率可达0.1 ℃。也可用精度更高的TMP275 (最高可达0.065 ℃)[4]和ADT7410 (0.007 8 ℃ )[5]。
2)要有流程中的第2、4 步,是因为热电偶的函数关系式(1)是非线性的,所以不能简单地取消2、4 步,而直接把Tcj 加到最后一步的t 中, 完成补偿[3](这样也可以,但精度降低)。
2.2 TC电压测量
这个测量也必须是高精度的:①选择允差最高级别的热电偶;②选择分辨率高的ADC,可选LTC2486(17 位)。
3 编程实现
3.1编程环境
在IAR 7.20.5.624 版下进行,用最新在2011 年发布的3.5.0 版库函数,语言为C。
热电偶函数或反函数的多项式系数大多都很小,如K 型, d9 =-1.0527551-35。[1] 为适应这种情况,计算多项式时,必须采用C 中最高精度的数据类型double(8个字节表示一个数)。在STM32F103 中, 当用double类型且为科学计数法表示一个数时, 会如表1 所示。
从表中可以看到STM32F103 当数字≥ 0.9 时,可以保证15 位有效数字的精度,在15 位后,开始产生舍入误差;当数字<0.9 时,可以保证14 位有效数字的精度。这对于0.01 ℃分辨率的要求已足够。对于8 位的MCU,在进行此类双精度运算时,则要注意能否保证精度要求。
3.2 编程
编程时,要同时熟悉文献[1],它是编程的对象。下面以E 型热电偶为例。
3.2.1 函数式(1)的编程。
1)函数名double TC_TemperatureToVoltage (double t).入口参数为温度t(℃ ); 出口参数是电压E(mV)。
2)算法
①设置15 个局部变量,其含义同上:double
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,t,E
②依据t 的不同范围(2 个:-270~0 ℃和0~1 000 ℃)分别设置不同的系数值( a1 ~ a13 或a1 ~ a10 )和阶数(n=13 或n=10)[1]
③让E=0;
④开始式(1) 的嵌套乘法计算,先计算起始项:
E=a13+ E或a8+E ;
E=t×E;
⑤再计算
E=a12+E或a7+E;
E = t × E ;
……
⑥直到
E = a × E 1 ;
E = t × E ;
⑦将微伏的E 转成毫伏;
⑧返回E。
结束。
特别注意,对K 型热电偶,不要忘记加上指数项
c c t 0 1 90 ×exp[ ×( −126.968 6)2 ]。
3)程序
编程不复杂,略。
3.2.2 反函数式(3)编程。
函数名 double TC_VoltageToTemperature
(double v);
算法和程序略,类似计算函数式(1)。
3.2.3 热电偶高精度测温编程。
1) 函数名float TC_MeasurementTemperature(void)
2)算法
①用测温芯片读出冷端温度(℃)[3];
②调用函数double TC_TemperatureToVoltage(double t),由Tcj 得到冷端补偿电压Ecj :Ecj = TC_TemperatureToVoltage ( Tcj );
③通过温控器的ADC 电路,读出热电偶的输出电压值Etc ;
④合并Ecj到Etc,即让Etc=Ecj+Ecj;
⑤调用函数double TC_VoltageToTemperature (doublev),由得到测量端温度
t = TC_VoltageToTemperature ( Etc );
结束。
3)程序
略。
图2 能分辨0.01℃的E型热电偶温控器
4 结论
直接用热电偶函数及反函数来做测温计算,从源头上解决了TC 的函数关系的非线性、查分度表或在表中做线性插值给测温带来的误差。以E 型热电偶为例,在-200~1 000 ℃的范围内,最大分辨率可达0.01 ℃ ,最小也可达0.022[1] 使用该方法的高精度测温记录如图2 和表2 所示,数据与理论分析基本一致。图2 和表2测量的为室内环境温度。当然,这样的结果要求相关的测温硬件电路也必须是高精度的。测试说明:测试时,为保持环境温度相对稳定, 要减少空气流动,减少热源。所以关闭门窗( 只留小缝隙) 和电脑等。并在温度稳定后(约10~15 min),开始测量。
5 结语
近2 年本实验室对温控器高精度测温做了一些技术性探索总结且已成文。下一个目标,将是高精度控温,向0.5%FS 乃至0.1%FS 控制精度前行。
最后,要特别感谢国标《GB ∕ T 16839.1-2018 热电偶第1 部分:电动势规范和允差》的相关单位和个人。此国标有最重要的指导作用,是对我国的热电偶测温事业的重大贡献。
参考文献:
[1] 中国国家标准管理委员会,GB∕T 16839.1-2018 热电偶第1部分:电动势规范和允差[S],北京,中国标准出版社.2018:3,2,64,5,67,1,67.
[2] 中国国家标准管理委员会,GB∕T 16839.1-1997 热电偶第1部分:分度表[S],北京,中国标准出版社.1997.
[3] 王昌世.高精度温度芯片Si7051在热电偶补偿中的应用[J].电子产品世界,2020,27(1):69-73。
[4] TMP275±0.5°C Temperature Sensor With I 2C and SMBus Interface in Industry Standard LM75 Form Factor and Pinout[M/OL].Texsas Instrsments,2014-11:1[2019-10-8]. https://
www.ti.com/lit/ds/sbos363f/sbos363f.pdf?ts=1600335313639&ref_url=https%253A%252F%252F
www.google.com%252F.
[5] ±0.5°C Accurate, 16-Bit Digital I 2 C Temperature Sensor[M/OL].Analog Device Incorporation,2014-11:1[2019-10-8].https://www.anlog.com/media/en/technical-documentation/data-sheets/ADT7410.pdf.
(本文来源于必威娱乐平台 杂志2021年2月期)
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码