I2C总线数字式温湿度传感器SHT11及其在单片机系统的应用
摘要:SHT11是瑞士Sensirion公司生产的具有I2C总线接口的单片全校准数字式相对湿度和温度传感器。该传感器采用独特的CMOSens TM技术,具有数字式输出、免调试、免标定、免外围电路及全互换的特点。文中对传感器的性能特点、接口时序与命令进行了详细的阐述,给出了SHT11与单片机的接口电路及相应程序。
关键词:数字式;温湿度传感器;I2C总线;单片机
1 概述
温湿度的测量在仓储管理、生产制造、气象观测、科学研究以及日常生活中被广泛应用,传统的模拟式湿度传感器一般都要设计信号调理电路并需要经过复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复性、互换性、一致性等方面往往不尽人意。SHT11是瑞士Sensirion公司推出的基于CMOSensTM技术的新型温湿度传感器。该传感器将CMOS芯片技术与传感器技术结合起来,从而发挥出它们强大的优势互补作用。
2 性能特点javascript:window.open(this.src);" style="cursor:pointer;"/>
SHT11温湿度传感器的主要特性如下:
●将温湿度传感器、信号放大调理、A/D转换、I2C总线接口全部集成于一芯片(CMOSensTM技术);
●可给出全校准相对湿度及温度值输出;
●带有工业标准的I2C总线数字输出接口;
●具有露点值计算输出功能;
●具有卓越的长期稳定性;
●湿度值输出分辨率为14位,温度值输出分辨率为12位,并可编程为12位和8位;
●小体积(7.65×5.08×23.5mm),可表面贴装;
●具有可靠的CRC数据传输校验功能;
●片内装载的校准系数可保证100%互换性;
●电源电压范围为2.4~5.5V;
●电流消耗,测量时为550μA,平均为28μA,休眠时为3μA。
javascript:window.open(this.src);" style="cursor:pointer;"/>
SHT11温湿度传感器采用SMD(LCC)表面贴片封装形式,管脚排列如图1所示,其引脚说明如下:
(1)GND:接地端;
(2)DATA:双向串行数据线;
(3)SCK:串行时钟输入;
(4)VDD电源端:0.4~5.5V电源端;
(5~8)NC:空管脚。
3 工作原理
SHT11的湿度检测运用电容式结构,并采用具有不同保护的“微型结构”检测电极系统与聚合物覆盖层来组成传感器芯片的电容,除保持电容式湿敏器件的原有特性外,还可抵御来自外界的影响。由于它将温度传感器与湿度传感器结合在一起而构成了一个单一的个体,因而测量精度较高且可精确得出露点,同时不会产生由于温度与湿度传感器之间随温度梯度变化引起的误差。CMOSensTM技术不仅将温湿度传感器结合在一起,而且还将信号放大器、模/数转换器、校准数据存储器、标准I2C总线等电路全部集成在一个芯片内。SHT11传感器的内部结构框图如图2所示。
SHT11的每一个传感器都是在极为精确的湿度室中校准的。SHT11传感器的校准系数预先存在OTP内存中。经校准的相对湿度和温度传感器与一个14位的A/D转换器相连,可将转换后的数字温湿度值送给二线I2C总线器件,从而将数字信号转换为符合I2C总线协议的串行数字信号。
javascript:window.open(this.src);" style="cursor:pointer;"/>
由于将传感器与电路部分结合在一起,因此,该传感器具有比其它类型的湿度传感器优越得多的性能。首先是传感器信号强度的增加增强了传感器的抗干扰性能,保证了传感器的长期稳定性,而A/D转换的同时完成,则降低了传感器对干扰噪声的敏感程度。其次在传感器芯片内装载的校准数据保证了每一只湿度传感器都具有相同的功能,即具有100%的互换性。最后,传感器可直接通过I2C总线与任何类型的微处理器、微控制器系统连接,从而减少了接口电路的硬件成本,简化了接口方式。
3.1 输出特性
(1)湿度值输出
SHT11可通过I2C总线直接输出数字量湿度值,其相对湿度数字输出特性曲线如图3所示。由图3可看出,SHT11的输出特性呈一定的非线性,为了补偿湿度传感器的非线性,可按如下公式修正湿度值:
RHlinear=c1+c2SORH+c3SORH2
式中,SORH为传感器相对湿度测量值,系数取值如下:
12位:SORH:c1=-4,c2=0.0405,c3=-2.8×10-6
8位:SORH:c1=-4,c2=0.648,c3=-7.2×10-4
(2)温度值输出
由于SHT11温度传感器的线性非常好,故可用下列公式将温度数字输出转换成实际温度值:
T=d1+d2SOT
当电源电压为5V,且温度传感器的分辨率为14位时,d1=-40d2=0.01,当温度传感器的分辨率为12位时,d1=-40d2=0.04。
(3)露点计算
空气的露点值可根据相对湿度和温度值来得出,具体的计算公式如下:
LogEW=(0.66077+7.5T/(237.3+T)+[log10(RH)-2]
Dp=[(0.66077-logEW)×237.3]/(logEW-8.16077)
3.2 命令与接口时序
SHT11传感器共有5条用户命令,具体命令格式见表1所列。下面介绍一下具体的命令顺序及命令时序。
表1 SHT11传感器命令列表
命 令 | 编 码 | 说 明 |
测量温度 | 00011 | 温度测量 |
测量湿度 | 00101 | 湿度测量 |
读寄存器状态 | 00111 | “读”状态寄存器 |
写寄存器状态 | 00110 | “写”状态寄存器 |
软启动 | 11110 | 重启芯片,清除状态记录器的错误记录11毫秒后进入下一个命令 |
(1)传输开始
初始化传输时,应首先发出“传输开始”命令,该命令可在SCK为高时使DATA由高电平变为低电平,并在下一个SCK为高时将DATA升高。
接下来的命令顺序包含三个地址位(目前只支持“000”)和5个命令位,当DATA脚的ack位处于低电位时,表示SHT11正确收到命令。
(2)连接复位顺序
如果与SHT11传感器的通讯中断,下列信号顺序会使串口复位:即当DATA线处于高电平时,触发SCK 9次以上(含9次),此后应接着发一个“传输开始”命令。
表2 SHT11状态寄存器类型及说明
位 | 类型 | 说 明 | 缺 省 | |
7 | 保留 | 0 | ||
6 | 读 | 工检限(低电压检查) | X | |
5 | 保留 | 0 | ||
4 | 保留 | 0 | ||
3 | 只用于试验,不可以使用 | 0 | ||
2 | 读/写 | 加热 | 0 | 关 |
1 | 读/写 | 不从OTP重下载 | 0 | 重下载 |
0 | 读/写 | '1'=8位相对湿度,12位温度分辨率。'0'=12位相对湿度,14位湿度分辨率 | 0 | 12位相对湿度,14位湿度 |
(3)温湿度测量时序
当发出了温(湿)度测量命令后,控制器就要等到测量完成。使用8/12/14位的分辨率测量分别需要大约11/55/210ms的时间。为表明测量完成,SHT11会使数据线为低,此时控制器必须重新启动SCK,然后传送两字节的测量数据与1字节CRC校验和。控制器必须通过使DATA为低来确认每一个字节,所有的量均从右算,MSB列于第一位。通讯在确认CRC数据位后停止。如果没有用CRC-8校验和,则控制器就会在测量数据LSB后保持ack为高来停止通讯,SHT11在测量和通讯完成后会自动返回睡眠模式。需要注意的是:为使SHT11的温升低于0.1℃此时的工作频率不能大于标定值的15%(如:12位精确度时,每秒最多进行3次测量)。测量温度和湿度命令所对应的时序如图4所示。
图4