NTC温度转换的无损压缩解压缩算法
2014-07-02卢玉波石鑫
卢玉波,石鑫
(海信集团有限公司,青岛266071)
引 言
现代家电(如冰箱、空调等),功能越来越多,技术含量越来越高,这些家电大多使用单片机进行控制。近几年来单片机得到了飞速的发展,从8位机发展到目前的32位机,存储器从OTP发展到现在的FLASH,内部资源也越来越丰富。但是家电产品追求利润,单片机在选型时,往往选择能满足要求的最低配置,在复杂的设计中,常常会遇到内部FLASH空间不够的问题。为此,本文针对家电产品常用的温度测量,提出了一种查表数据压缩算法,有效降低了FLASH空间占用。
1 NTC负温度系数热敏电阻选型
1.1 NTC负温度系数热敏电阻
NTC(Negative Temperature Coefficient,负温度系数热敏电阻)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料[1]。NTC当作温度传感器,在家电、汽车电子、医疗仪器、手机电池及充电电器等方面应用广泛。在比较高档的冰箱上,会用到6~10只NTC,各NTC的温度转换是程序设计的重要部分。
1.2 NTC电阻值和温度变化的关系
在实际产品设计应用中发现,NTC电阻值和温度变换是成非线性关系的[2]。二者关系如下所示:
RT=RN×exp[B(1/T-1/TN)] (1)
其中,RT是在温度为T时的NTC热敏电阻值,RN是额定温度为TN时的NTC热敏电阻值,T为所测温度。因为材料常数B本身也是温度T的函数,所以式(1)是经验公式,只有在额定温度TN或额定电阻阻值RN的有效范围内才具有一定的精度,在全部范围内偏差可能超过10%。
1.3 NTC参数选择
在设计冰箱时,会根据具体的应用部位选择不同参数的NTC,并按照冰箱间室的不同特征温度选择NTC的额定温度。如冷藏室温度为1~8℃,特征温度为5℃,测量冷藏室温度的NTC选择R(5℃)=5K06,B(5/25℃)=3 839K;冷冻室的温度为-15~-25℃,特征温度为-18℃,测量冷冻室温度的NTC选择R(-18℃)=16K9,B(-18/25℃)=3 771 K;测量环境温度的 NTC选择R(25℃)=5K0,B(5/25℃)=3 839K。
2 温度测量方法
2.1 单片机测量温度电路
以冷冻室温度测量电路为例,如图1所示,分压电阻R1=10 kΩ,若ADC转换精度为8位,则NTC所测温度经ADC转换后的值为255×RT/(RT+10)。图2给出了1.3节中3种参数的NTC的温度-电阻值-A/D值的部分数据。
图1 冷冻室温度测量电路
图2 RT表及对应的A/D值
2.2 查表算法
在实际应用中,单片机性能和公式的偏差决定了不可能由式(1)直接推算出所测温度,简便可行的办法是查表。以冷冻室温度传感器为例,温度测量范围为-40~40℃,共81个温度值,对应的A/D值为220~25,共196个。
每个温度值对应1~4个A/D值,每个A/D值对应一个温度值。为了处理简便,将温度范围调整为0~80℃,可得到以下数组temp_f1:
由此可得到NTC所测温度:
其中AD值是A/D转换后的值。
这是最普通直接的算法,但在单片机应用领域,存在表格数据所占空间太大的问题。在冰箱中,有多种参数的NTC,表格数据所占空间在0.5 KB以上,对单片机的选型和成本影响很大。必须采用某种形式的压缩算法,并且是无损的压缩方式,这在单片机内存空间紧张时非常有用。
2.3 无损压缩查表算法
鉴于查表法产生的表格数据占据存储空间量大的问题,本文提出了一种实用的无损压缩查表算法。用1个字节表示2个温度值,如:-40℃,对应的A/D值有2个,-39℃,对应的A/D值有2个,可以用十六进制数据0x22表示-40℃和-39℃对应的A/D值。得到数组temp_f2,数组temp_f2比数组temp_f1所占空间减少了79%,但包含的信息是相同的。
当然,还可以进一步压缩,从图2中可以看出,每个温度对应的A/D值不超过4个,因此可以用1个字节的2位表示1个温度值,那么1个字节就表示4个温度值。以上数组可压缩成21个字节,节省空间89.2%,这种压缩方法在解压缩时,耗费的程序空间要大一些。图3为将数组temp_f2压缩/解压缩的流程图。
图3 数组temp_f2压缩/解压缩的流程图
3 实验结果
对于一款ROM为4 KB的单片机而言,使用本文提出的无损压缩算法所占的内存空间为0.08 KB,未使用压缩算法处理的表格数据占内存空间为0.53 KB。选择样本为500台的家用电冰箱做测试,发现程序跑飞的概率二者分别为0%和0.2%,验证了本算法的可行性。
结 语
本文给出的压缩算法,可有效地降低温度转换部分程序占用量,在家电产品巨大的成本压力下,让单片机有限的FLASH存储空间容纳更多的功能。
[1]王恩信,荆玉兰,王鹏程,等.NTC热敏电阻器的现状与发展趋势[J].电子元件与材料,1997(4).
[2]孟凡文.NTC热敏电阻的非线性误差及其补偿[J].传感器世界,2003(5).