y温湿度传感器SHT11的感测系统设计
中心议题:
- 介绍SHTll的基本特点、引脚功能、内部结构和工作原理
- 给出SHTll的实用电路、软件设计方法和温湿度及露点的计算方法
解决方案:
- SHTll温湿度传感器采用SMD表面贴片封装形式,接口非常简单
- 微处理器采用二线串行数字接口和温湿度传感器芯片SHTll进行通信
- 采用通用I/O口模拟该通信协议
SHTll简介
SHTll是瑞士Sensirion公司推出的一款数字温湿度传感器芯片。该芯片广泛应用于暖通空调、汽车、消费电子、自动控制等领域。共主要特点如下:
◆高度集成,将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上;
◆提供二线数字串行接口SCK和DATA,接口简单,支持CRC传输校验.传输可靠性高;
◆测量精度可编程调节,内置A/D转换器(分辨率为8~12位,可以通过对芯片内部寄存器编程来选择);
◆测量精确度高,由于同时集成温湿度传感器,可以提供温度补偿的湿度测量值和高质量的露点计算功能;
◆封装尺寸超小(7.62 mm×5.08 mm×2.5 mm),测量和通信结束后,自动转入低功耗模式;
◆高可靠性,采用CMOSens工艺,测量时可将感测头完全浸于水中。
SHTll的引脚功能
SHTll温湿度传感器采用SMD(LCC)表面贴片封装形式,接口非常简单,引脚名称及排列顺序如图l所示。
各引脚的功能如下:
◇脚1和4——信号地和电源,其工作电压范围是2.4~5.5 V;
◇脚2和脚3——二线串行数字接口,其中DA-TA为数据线,SCK为时钟线;
◇脚5~8——未连接。
SHTll的内部结构和工作原理
温湿度传感器SHTl1将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上,其内部结构如图2所示。该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大;然后进入一个14位的A/D转换器;最后经过二线串行数字接口输出数字信号。SHT11在出厂前,都会在恒湿或恒温环境中进行校准,校准系数存储在校准寄存器中;在测量过程中,校准系数会自动校准来自传感器的信号,此外,SHT11内部还集成了一个加热元件,加热元件接通后可以将SHTll的温度升高5℃左右,同时功耗也会有所增加。此功能主要为了比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。在高湿(>95%RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。加热后SHTll温度升高、相对湿度降低,较加热前,测量值会略有差异。
微处理器是通过二线串行数字接口与SHTl1进行通信的。通信协议与通用的I2C总线协议是不兼容的,因此需要用通用微处理器I/O口模拟该通信时序。微处理器对SHTll的控制是通过5个5位命令代码来实现的,命令代码的含义如表1所列。
SHTll应用设计
微处理器采用二线串行数字接口和温湿度传感器芯片SHTll进行通信,所以硬件接口设计非常简单;然而,通信协议是芯片厂家自己定义的,所以在软件设计中,需要用微处理器通用I/O口模拟通信协议。
a.硬件设计
SHTl1通过二线数字串行接口来访问,所以硬件接口电路非常简单。需要注意的地方是:DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHTll之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频率没有要求;当工作电压高于4.5V时,SCK频率最高为10 MHz,而当工作电压低于4.5 V时,SCK最高频率则为1 MHz。硬件连接如图3所示。
b. 软件设计
微处理器和温湿度传感器通信采用串行二线接口SCK和DATA,其中SCK为时钟线,DATA为数据线。该二线串行通信协议和I2C协议是不兼容的。在程序开始,微处理器需要用一组“启动传输”时序表示数据传输的启动,如图4所示。当SCK时钟为高电平时,DATA翻转为低电平;紧接着SCK变为低电平,随后又变为高电平;在SCK时钟为高电平时,DATA再次翻转为高电平。
SHTll湿度测试时序如图5所示。其中,阴影部分为SHTll控制总线。主机发出启动命令,随后发出一个后续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)则表示测量结束。
由于微处理器通过二线串行数字接口访问湿度传感器SHTll,而访问协议是芯片生产商自定义的,所以需要用通用I/O口模拟该通信协议。我们选用Atmel公司的微处理器ATmegal28。通过对I/O口寄存器的编程,该处理器的I/O口可以根据需要设置成输入、输出、高阻等状态,这为模拟该通信协议提供了条件。在软件实现过程中,通过宏定义来实现I/O口状态的改变。
通过以上宏定义,可以实现SCK和DATA总线的各种输入和输出状态。为了模拟该二线串行数字协议,还需要一个延时函数。WINAVR库函数提供了一个延时函数_delay_loop_2(unslgned char s),该延时函数运行用4个时钟周期,所以白定义延时1μs函数可以定义如下:#deftne CPU_CRYSTAL 7.3728
基于以上宏定义和延时函数,可以方便地使SCK和DATA总线输出持续一定时间的高电平或低电平,从而可以模拟图5所示的温湿度传感器SHTll的读写协议。
c. 温度和湿度值的计算
湿度线性补偿和温度补偿
SHTll可通过DATA数据总线直接输出数字量湿度值。该湿度值称为“相对湿度”,需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值:
式中:RHincar为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3为线性补偿系数,取值如表2所列。
由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线件补偿后的湿度值进行温度补偿很有必要。补偿公式如下:
式中:RHtrue为经过线性补偿和温度补偿后的湿度值,T为测试湿度值时的温度(℃),t1和t2为温度补偿系数,取值如表3所列。
温度值输出
由于SHTll是采用PTAT能隙材料制成的温度敏感元件,因而具有很好的线性输出。实际温度值可由下式算得:
Temperture=dl+d2×SOT
式中:d1和d2为特定系数,d1的取值与SHTll工作电压有关,d2的取值则与SHTll内部A/D转换器采用的分辨率有关,其对应关系分别如表4和表5所列。
露点计算
露点是一个特殊的温度值,是空气保持某一定湿度必须达到的最低温度。当空气的温度低于露点时,空气容纳不了过多的水分,这些水分会变成雾、露水或霜。露点可以根据当前相对湿度值和温度值计算得出,具体的计算公式如下:
式中:T为当前温度值,SORH为相对湿度值,DP为露点。
结论
温湿度传感器SHTll集温度传感器和湿度传感器于一体,因此采用SHTll进行温湿度实时监测的系统具有精度高、成本低、体积小、接口简单等优点;另外SHTll芯片内部集成了14位A/D转换器,且采用数字信号输出,因此抗干扰能力也比同类芯片高。该芯片在温湿度监测、自动控制等领域均已得到广泛应用。