header
×
嵌入式 > 技术百科 > 详情

基于单片机的温湿度感测系统的实现

发布时间:2020-06-20 发布时间:
|
    温湿度的测量与控制在工业生产、气象、环保及日常生活的许多领域得到越来越广泛的应用,有很多地方都需要对温度和湿度进行定时或实时监控。人们除对温湿度传感器的普通性能(如精确度、长期漂移特性等)感兴趣外,还把目光聚集到其在不同环境下的耐久性、元件尺寸、数字化、简单和快速的系统综合特性上。SHTll是瑞士Sensirion公司生产的具有二线串行接口的单片全校准数字式新型相对湿度和温度传感器,可用来测量相对湿度、温度和露点等参数,具有数字式输出、免调试、免标定、免外围电路及全互换的特点。该传感器将CMOS芯片技术与传感器技术融合,为开发高集成度、高精度、高可靠性的温湿度测控系统提供了解决方案。

1 系统组成及硬件设计
    温湿度感测系统将单片机与温湿度传感器等技术相结合,以PIC单片机为微控制器,利用数字温湿度传感器SHTll对环境的温度和相对湿度进行检测,通过二线串行接口将数字温湿度信号送至PIC微控制器,最后利用PIC微控制器完成相对湿度的非线性补偿和温度补偿,并将实际温度和相对湿度值送液晶显示器显示,从而实现对环境温湿度的测控。温湿度感测系统主要由温湿度传感器SHTll和PIC单片机以及162字符型液晶显示屏组成。
1.1 数字温湿度传感器SHTll
    温湿度传感器SHTll将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上,其内部结构如图1所示。该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大,然后进入一个14位的A/D转换器,最后经过二线串行数字接口输出数字信号。SHTll在出厂前,都会在恒湿或恒温环境中进行校准,校准系数存储在校准寄存器中,在测量过程中,校准系数会自动校准来自传感器的信号。此外,SHTll内部还集成了一个加热元件,加热元件接通后可以将SHTll的温度升高5℃左右,同时功耗也会有所增加。此功能主要为了比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。在高湿(>95%RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。加热后SHTll温度升高、相对湿度降低,较加热前,测量值会略有差异。


    单片机和温湿度传感器通信采用串行二线接口SCK和DATA,其中SCK为时钟线,DATA为数据线,硬件接口电路非常简单。需要注意的是:DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHTll之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频率没有要求,当工作电压高于4.5 V时,SCK频率最高为10 MHz,而当工作电压低于4.5 V时,SCK最高频率为1 MHz。由于所用单片机不具备I2C总线接口,故使用单片机通用I/O口线来虚拟I2C总线,并利用RA0口来虚拟数据线DATA,RA1口线来虚拟时钟线,并在DATA端接入一只10kΩ的上拉电阻,同时,在VDD及GND端接入一只0.1μF的去耦电容。
    硬件连接如图2所示。


1.2 162字符型液晶显示模块
    162字符型液晶显示模块是发展比较成熟的一种液晶显示屏,应用相当广泛。它是一类专用于显示字母、数字、符号等的点阵液晶显示模块,可显示两行,每行可以显示16个字符,162字符型液晶显示模块应用到温湿度感测系统中显示温湿度,直观方便又节约成本。
    该显示屏是一个以若干5x8或5x11点阵块组成的显示字符群。其中,字符群中的每一个字符块为一个字符单位,字符间的点距和行距均为一个点的宽度。它的内部有字符发生器CGROM,可以显示160个5x7和32个5x10点阵字符,具有64个字节的CGRAM,可以自定义8个5x8或4个5x11点阵字符,有80个显示存储器DDRAM的地址。
    162字符型液晶显示模块由16个引脚组成,具体的引脚功能如表1所示。
    控制器接口信号说明:也就是RS、R/W和E信号的配合选择决定控制接口的4种模式,如表2所示。


    162模块与单片机的接口电路如图3所示。
    硬件将162模块的数据总线的低4位接为常态,在软件中设置数据总线长度为4位,4位数据总线时序图如图4所示。

2 系统软件设计
2.1 温湿度读取
    单片机和温湿度传感器通信采用串行二线接口SCK和DATA,该二线串行通信协议和I2C协议是不兼容的。由于采用二线串行接口,对于SHTll的操作按照严格时序,共有5条用户命令,分别是测量温度命令(03H)、测量湿度命令(05H)、读寄存器状态命令(07H)、写寄存器状态命令(06H)和软启动命令(1EH)。
    单片机发出启动命令,随后发出一个后续8位命令码,该命令码包含3个地址位(芯片设定地址为000)和5个命令位,发送完该命令码,将DATA总线设为输入状态等待SHTll的响应,SHTll接收到上述地址和命令码后,在第8个时钟下降沿,将DATA下拉为低电平作为芯片的ACK;在第9个时钟下降沿之后,芯片释放DATA(恢复高电平)总线;释放总线后,开始测量当前湿度,测量结束后,再次将DATA总线拉为低电平;单片机检测到DATA总线被拉低后,得知湿度测量已经结束,给出SCK时钟信号;芯片在第8个时钟下降沿,先输出高字节数据;在第9个时钟下降沿,单片机将DATA总线拉低作为ACK信号,然后释放总线DATA,在随后8个SCK周期下降沿,芯片发出低字节数据;接下来的SCK下降沿,单片机再次将DATA总线拉低作为接收数据的ACK信号;最后8个SCK下降沿芯片发出CRC校验数据,单片机不予应答(NACK)则表示测量结束。CRC寄存器通过计算一个多项式(x8+x5+x4)之和来判定测量过程是否发生错误,一旦发现错误,单片机就发送软启动命令,重新进行测量。如果不使用CRC校验,单片机可以在测量值LSB后保持应答信号ACK高电平,来终止通信。SHTll在测量和通信完成后会自动返回睡眠模式。[page]

    以测量相对湿度,测量值N=0000100100110001为例,整个测量过程时序如图5(a)、(b)、(c)所示。DATA为双向数据口,图5中粗线段表示由SHTll来控制数据线,常态下由单片机控制数据线。


    下面给出与上述硬件电路配套的PIC16的温度传感器读取程序。
             
                                  RETURN
2.2 温度和湿度值的计算
2.2.1 湿度线性补偿和温度补偿
    SHTll可通过DATA数据总线直接输出数字量湿度值。该湿度值称为“相对湿度”,需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值:
   
    式中,RHlineer为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3为线性补偿系数。
    由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线性补偿后的湿度值进行温度补偿很有必要。补偿公式如下:
   
    式中:RHtrue为经过线性补偿和温度补偿后的湿度值,T为测试湿度值时的温度(℃),t1和t2为温度补偿系数。
2.2.2 温度值输出
    由于SHTll是采用PTAT能隙材料制成的温度敏感元件,因而具有很好的线性输出。实际温度值可由下式算得:
   
    式中,d1和d2为特定系数,d1的取值与SHTll工作电压有关,d2的取值则与SHTll内部A/D转换器采用的分辨率有关。
2.3 温湿度显示
    计算出温度、湿度值后,在162字符型液晶显示模块上显示出来,屏幕第一行显示温度值:“TEM:……”第二行显示湿度值:“HUM:……”。程序设定每5 min更新一次温湿度。显示流程图如图6所示。



3 结论
    由PIC单片机和温湿度数字传感器SHTll以及162液晶显示模块组成的温湿度感测系统,充分利用了SHTll的特点,又对温湿度测量功能进行了扩充,使其具有显示直观、运行可靠、扩充方便等优点。利用可控的加热制冷设备对该系统性能进行了测试,实际结果表明:测温范围为-40~+100℃,误差不超过0.5℃,湿度测量范围是2~98%RH,误差不超过4%RH(室温25℃时测量),达到了预期性能指标,满足实际应用要求。

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
LCD的CPU接口和RGB接口
footer