基于STC12C5410AD单片机的温湿度检测仪

发布时间 : 星期三 文章基于STC12C5410AD单片机的温湿度检测仪更新完毕开始阅读

主程序初始化的具体内容包括时间中断的初始化、外部中断源的初始化、单片机I/O口初始化以及LED初始化等。

§3.2 温湿度检测模块的程序设计

§3.2.1 温度检测模块的程序设计

该检测仪的使用的温度传感器AD590是一种由环境温度决定的恒流输出器件,其输出特性为:

I=Kt·t (1-1)

式中I为AD590输出的电流信号,单位为1uA。t为绝对温度,单位为K。Kt为转换系数,单位为1uA/K。AD590输出电流信号经电阻R转换为电压信号,电阻两端电压为:

VR=Kt·R·t (1-2)

VR从ADC口输入到单片机中,进行A/D转换,变为数字量VT。

温度检测模块程序如图3-2,首先读取测量电路的温度电压VT,并将这一电压信号作为温度转换参数,进行电压→温度转换,具体转换方法为:把经过A/D所得的数字电压值VT作如下计算

T=KT(VT-V0) (1-3)

式中T为需要测量的环境实际温度值,参数V0为环境温度为0℃时A/D转换的数字量电压值,参数KT为环境温度与A/D转换的数字量电压的转换系数:KT=1/(Kt·R15)。它们均作为常量存储在单片机的片内数据EEPROM中。由于V0、KT准确与否直接影响温度测量的精度,可通过以下方法进行校正:用其它高精度的测温仪测量环境温度T1,输入本仪表,单片机同时记录下相应的A/D转换的数字量V1。当环境温度从T1变化到T2时,重复以上过程,单片机同时记录下相应的A/D转换的数字量V2。为保证校准精度,环境温度应在25℃左右变化,并且变化的范围尽可能大一些。仪表的应用软件根据KT=(T1-T2)/(V1-V2)和V0=VT1-T1/KT计算出KT和V0的值,并存储在单片机的EEPROM数据存储器中,既完成该仪表的温度测量精度的校正。

18

开始初始化温度传感电路电压读取温度信号转换NO温度数据存储温度显示测温结束吗?YES返回

图3-2温度检测模块程序流程图

温度检测模块程序流程如图3-2所示,该模块程序最后将计算得到的温度值送入数据存储器,并调用LED显示程序将环境温度显示出来,然后返回主程序继续下面的工作。

§3.2.2 湿度检测模块的程序设计

湿度测量电路由湿度传感器THS11和NE555构成的振荡电路组成。湿度传感器THS11的电容值随温度的变化导致振荡器的振荡频率发生变化,所以可以通过测量振荡器输出频率,再进行相应的转换可获得相对湿度值。

实验得出振荡电路的输出频率(f)与环境温度(T)的关系曲线如图3-3

19

所示:

图3-3 振荡频率f与温度T的关系曲线

由上图可知,在环境相对湿度不变的条件下,温度和振荡频率呈近似的线性关系,可忽略其非线性误差对测量精度的影响。

当环境中的温度相同,而相对湿度不同时,振荡器的频率差异比较大,且这种差异是非线性的。要准确地测量湿度,必须对振荡频率作温度补偿。

对于不同的环境湿度,振荡频率的温度补偿系数也是不同的。研究表明,相对湿度为X%RH时振荡频率的温度补偿系数(ΔfRHX)与相对湿度为0%RH时振荡频率的温度补偿系数(ΔfRH0)具有如下关系:

ΔfRHX=ΔfRH0(fRH/fRH0) (1-4)

式中ΔfRH0的值为297/65(Hz/℃),fRH0是温度为0℃时相对湿度为0%RH的振荡频率,值为7588(Hz),fRHX是温度为0℃时相对湿度为X%RH的振荡频率。

我们通过实验得出了相对湿度(RH)与湿度传感电路输出的振荡频率(f)在环境温度为25℃时的大致关系曲线,如图3-4所示:

20

图3-4 25℃时相对湿度RH与振荡率f的关系曲线

表3-1给出了该关系曲线上的10个点的数据。可以看出,相对湿度在20%RH—80%RH范围内线性度较好,两端的线性较差。

表3-1 在25℃环境温度时相对湿度(RH)与振荡频率(f)的关系

相对湿度(RH)0102030405060708090100输出频率(f )74737344721970926967684067106575643562916133 由图3-4知:当相对湿度值升高时,振荡器输出频率会随之降低,而且它们之间的这种变化是非线性的。如果将检测到的频率直接处理显示的话,得到的结果将与环境中的实际湿度值存在较大差别,无法达到性能指标中所要求的测量精度和分辨力。要实现高精度地测量相对湿度,就应当采用软件的方法进行温度补偿和线性化处理。

湿度检测模块程序需要将来自湿度传感电路的频率f转换为相对湿度。由于振荡频率随环境相对湿度变化是非线性的,因此需要对其进行线性化处理。而在不同温度条件下,在同一测量场合测得的湿度也存在差异较大差异,所以还需要对测量频率进行温度补偿。具体流程如图3-5所示。

在湿度检测模块子程序的开始,先读取经过A/D转换的相对湿度的振荡频率fo,并进行存储。然后读取温湿度检测仪测得的环境温度值T,根据温度补偿系数计算出应该补偿的频率,补偿后的频率值为:

f=fo+(25-T)·△fRH0·(fRH/fRH0)

(1-5)

21

联系合同范文客服:xxxxx#qq.com(#替换为@)