当前位置:耘佑范文网 > 作文范文 >

运用KEILC分析HS1101湿度传感器F-RH转换算法

| 浏览次数:

摘 要:针对在单片机湿度测量系统中,将湿度传感器HS1101和555组成振荡器的输出计频后,按技术手册给定的频率-湿度关系,为达到理想的转换精度,设计了几种将频率转换为湿度的算法以及实现该算法相应的C51源程序,在KEIL C软件环境下,进行编译并仿真运行,通过监视反汇编、性能分析等观察窗口,对生成代码长度、执行效率进行了具体分析比较,指出了在C51编程提高程序运行性能方面,应引起重视的算法和一些技术性问题。

关键词:HS1101;F-RH转换函数;转换精度;KEILC;性能分析

中图分类号:G712;TP212文献标识码:B文章编号:1004-373X(2008)24-184-03

Analysis of the Convertible Algorithm about HS1101 Humidity Sensor by KEILC

QIU Yujuan

(Jiangyin Polytechnic College,Jiangyin,214433,China)

Abstract:This article designs several algorithms of the conversion between frequency and humidity with reference to the fixed relation of the tow elements stated in the technical manual to achieve the desired accuracy of the conversion,and provides a realization of these types of algorithms corresponding C51 source program.These algorithms apply to the microcontroller humidity measurements system in which the frequency of the output of the oscillator consisted of humidity sensor and 555 is counted.Apart from it,through the adoption of software KEILC,after compiler and simulation,the length of Generation code,executive efficiency have been compared and analyzed specificly while surveillance of the observation window.And some technical problems about the efficienal processing of C51 which should be stressed on are also pointed out in the article.

Keywords:HS1101;F-RH transfer function;conversion accuracy;KEILC;performance analysis

1 引 言

HS1101法国HUMIREL电容式湿度传感器,采用创新技术、稳定性好、精度高、外带防护罩,抗静电、防灰尘、并可抵抗氯气、氨水等,可测的湿度测量范围为1~99%RH,精度可达到±2%可应用于湿度变送器、湿度仪表、湿度控制器及其他场合,在测量温度Tα=25℃,测量工作频率为10 kHz,C-RH特性曲线如图1,从特性曲线图上可以看出,HS1101具有极好的线性输出。

可以近似看成相对湿度值和电容值成比例,在一般应用中,都将其接入如图2所示的555振荡电路,当555为典型的CMOS类型时,可得如下多项式的反应方程式:

Fmes=F55(1.103 8-1.936 810-3×RH+

3.011 410-6×RH2-3.440 310-8×RH3)

同时实验定点采样可得下列湿度-输出频率F-RH关系表见表1。

表1 湿度-输出频率F-RH关系表

RH 0 10 20 30 40 50

F 7 351 7 224 7 100 6 976 6 8536 728

RH 60 70 80 90 100

F6 600 6 468 6 330 6 186 6 033

图1 HS1101特性曲线

在单片机应用中,一般通过测量振荡电路的频率,然后根据此多项反应式将其转换成湿度,再送出显示或发送上位机的,故F-RH转换程序是湿度测试系统的重要组成部分,该程序的算法关系到F-RH转换精度、经编译后的代码长度以及执行效率,从而也直接影响了系统的性能,由于上述多项反应方程式较为复杂,将此直接作为单片机编程算法,生成的代码长度过长,从实际应用出发,根据表1以及HS1101具有极好的线性输出,又基于C语言语句结构直接支持分段函数的编程,故可将此特性曲线分段,在某一区间内近似为线性,基于此算法思想,本文设计了3种典型转换程序,经KEIL C编译后,实验运行结果逐一分析如下:

图2 湿敏电容构成的555振荡电路

2 线性方程法

分析C-RH特性曲线,并根据F-RH表1进行描点,可发现F-RH近似于一条直线,取表格内两组数据采用系数代入法可推出如下直线方程:

RH=588-0.8F (6 033

RH=588-0.08F (6 330

RH=586-0.08F (6 075≤F≤6 330)

调整后的F′-RH表格如表2所示:

表2 调整后的F-RH表格

RH 0 10 20 30 40 50

F 7 351 7 224 7 100 6 976 6 8536 728

F′010.020.029.939.749.7

RH 60 70 80 90 100

F 6 600 6 468 6 330 6 186 6 033

F′6070.579.691.1100

程序如下:

yfloat hs1101(void)

{float RH;

if(F>=6033&&F<=7351)

if(F>6330)RH=588-0.08*F;

else RH=586-0.08*F;

return RH;

}

为分析子函数的性能,将该函数HS1101()单独加入主函数,经编译后,在fsc=12 MHz,F=7 000 Hz时可通过DISASSEMBLY WINDOWN窗口(见图3)可查出生成的代码长度为984行,在PERFORMANCE ANALYZER WINDOW窗口下可以看到其运行平均执行时间为(见图3)556 μs。

图3 DISASSEMBLY WINDOWN窗口

3 分段等差法

由于线性方程法运行后产生的误差较大,通过分析上表各10%湿度之区间频率并不是等差的,权衡后,将各区间频率差值逐一分析后,进行多次分段处理,可得近似转换值F′如表3所示:

表3 转换值F′

RH 0 10 20 30 40 50

F 7 351 7 224 7 100 6 976 6 8536 728

F′010.0203039.950

RH 60 70 80 90 100

F6 600 6 468 6 330 6 186 6 033

F′6069.679.690100

程序如下:

float hs1101(void)

{float RH;

if(F<=7351&&F>=6330)

if(F>7224)RH=(7351-F)/12.7;

else if(F>6600)RH=10+(7224-F)/12.4;

else if(F>6186)RH=60+(6600-F)/13.8;

else RH=90+(6186-F)/15.3;

return RH;

}

经编译后,可通过DISASSEMBLY WINDOWN窗口(见图4)可查出生成的代码长度为977行,在PERFORMANCE ANALYZER WINDOW窗口下可以看到其运行平均执行时间为1 148 μs,尽管精度得到了改善,由于51系列单片机只支持8位数据的运算,但程序中多次用到实数计算,故必须调用浮点数运算程序包,所致代码长度加长,执行时间也比线性方程法长。

4 查表等差法

将F-RH关系表直接作为二维数组,用测得频率值frequency作为数组下标值,查表后确认落在某一RH区域,可采用下列公式计算:

RH=RHleft+Fright-frequency(Fright-Fleft)/10

其中,left,right 分别为区域下限值和上限值。

图4 生成代码

由于该程序精确跟踪表格内每10%RH采样点,故精度比较高,具体程序如下:

const unsigned int tab[2][11]={0,10,20,30,40,50,60,70,80,90,100,7351,7224,7100,6976,6853,6728,6600,6468,6330,6186,6033};

{float RH;

unsigned char i;

for(i=0;i<=10;i++)

if(F<=tab[1][i]&&F>tab[1][i+1])

{RH=tab[0][i]+(tab[1][i]-F)/((tab[0][i]-tab[0][i+1])/10);break;}//

return RH;

}

通过DISASSEMBLY WINDOWN窗口可看出生成的代码长度为505行, ANALYZER WINDOW窗口(见图5)下可以看到其运行平均时间为436 μs,该算法生成的代码较少,尽管采用循环算法,执行的效率还是比较高。

图5 代码长度和运行时间

5 结 语

从上述3种算法程序编译生成的代码和运行性能来看,可得出如下结论:

(1) 对于HS1101传感器,接入555振荡电路后, F-RH反应方程式为复杂的多项式,由于51单片机运算能力的限制,程序编译后所消耗的资源过多,故可根据实验采样,具体分析采样数据的特点,将特性曲线分段,用近似线性的方法来处理。

(2) 由于51系列CPU为8位机,直接支持的是8位整数运算,凡涉及到浮点数的运算,都要调用浮点数运算函数。该函数的体积庞大,生成的机器代码较长,并将占用大量的ROM,无论是从执行效率,还是合理利用存储器出发,程序中应尽量精简实数计算式。

(3) 在C51中,程序生成的代码长度和执行效率不仅与C语言本身所采用的语句结构有关,更与51系列单片机本身的指令系统有关,故要提高C51程序的效率,在算法设计等环节必须综合考虑单片机硬件支持条件。由于51系列CPU直接支持ROM查表指令,故当系统需要数值计算时,尤其对于在总字节小于127 B内的数据表,采用查表算法,用空间换时间,可以大幅度提高执行效率。

参考文献

[1]徐爱均,彭秀华 .单片机高级语言C51Windows环境编程与应用.北京:电子工业出版社,2001.

[2]马宗梅.单片机C语言应用程序设计.北京:北京航空航天大学出版社,2001.

[3]赖麒文.8051单片机C语言彻底应用.北京:科学出版社,2007.

[4]张永枫.单片机应用实训教程.西安:西安电子科技大学出版社,2005.

[5]常君,李延.湿度传感器HS1101在智能家居控制系统中的应用.电子测试,2007(12):71-73.

[6]梅丽凤.单片机原理及接口技术.北京:清华大学出版社,2007.

[7]眭碧霞.单片机及其应用.2版.西安:西安电子科技大学出版社,2003.

[8]沈红卫.单片机应用系统设计实例与分析.北京:北京航空航天大学出版社,2003.

[9]何立民.单片机应用技术选编(8).北京:北京航空航天大学出版社,2000.

[10]李广弟.单片机基础.北京:北京航空航天大学出版社,1994.

作者简介 邱玉娟 女,1963年出生,江苏江阴人,实验师,本科。研究方向为单片机应用。

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文


推荐访问:湿度 传感器 算法 转换 分析

热门排行

春节晚会观后感600字14篇

春节晚会观后感600字14篇春节晚会观后感600字篇1晚上八点,吃完年夜饭后,我们一家人整整齐齐坐在

2020央视春晚观后感3篇

2020央视春晚观后感3篇2020央视春晚观后感篇1“爆竹声中一岁除,春风送暖入屠苏。千门万门曈曈日

2023特殊符号图案大全(全文)

๑• •ั๑๑฀฀๑♬✿ 。 :*★☆⊙☺☻☼♠♥♡♣♤♥♦♧♨♩ิε฀฀䁠iddot;฀bull;●○●ゃ卣䁠hearts;♡๑฀฀☜☞☎☏♡⊙◎☺☻✖╄►◄▧▨♨◐◑...

2022央视虎年春晚观后感高中作文7篇

2022央视虎年春晚观后感高中作文7篇2022央视虎年春晚观后感高中作文篇1时间匆匆流逝,已经到了农

积极分子谈话记录30篇_确定入党积极分子谈话会议记录

确定入党积极分子谈话会议记录篇一谈话时间:XXXX年6月19日谈话地点:谈话对象:入党联系人:记录人

春晚观后感300字4篇

春晚观后感300字4篇春晚观后感300字篇1春节是每个中国人都颇为期待的一天,它不仅仅代表家庭团圆的

幼儿园谈话记录:幼儿园晨谈记录100篇

坦直幼儿园党团结对谈心记录(2010年)序号时间去谈心人姓名被谈心人姓名谈心内容备注110 2 26

2020年医院党员谈心谈话记录_2020年谈话记录

职工医院谈心谈话记录单位:职工医院谈心交心对象签名年月日

2022年党支部领导班子“迎盛会、铸忠诚、强担当、创业绩”主题教育专题组织生活会对照检查材料(思想学习工作生活四个方面)【完整版】

2022年党支部领导班子“迎盛会、铸忠诚、强担当、创业绩”主题教育专题组织生活会对照检查材料(思想学习工作生活四个方面)【完整版】下面是小编为大家整理的《20...

【幼儿园谈话记录】 幼儿园晨谈记录100篇

坦直幼儿园党团结对谈心记录(2010年)