温湿度传感器SHT11

合集下载

带I 2C总线的数字式智能温湿度传感器SHT11设计参考

带I 2C总线的数字式智能温湿度传感器SHT11设计参考
露点计算 空气 的露 点值可 根据 相对湿 度 和温度值 由下面 的公式计 算 出来 :
应 用 接 口 电路 。
关键 词 :温 湿度检 测 ;智 能传 感器 ;便携 式检 测仪 ;全校 准 ;温度补 偿
郭涛 石家 庄经济学院物理实 验室
S T 是瑞士 Snio 公司推出 H1 1 esin r
● 湿度值输 出分辨率为 1 , 能指 标如 表 1所列 。 4位
S HT1 的湿度检 测采用 的是电 1
表 1 S T 智能温湿度传感器的性能参数 H1 1
供 电 电压 测 量
24 .
线性非 常好 ,故可用 下式 将温度数
S5 .

字输 出直 接转换 成 实际 的温度值 :
uA 2
供 电 电流
平 均 睡 眠



Td ( f =11 y +2 r s 对 于上式 ,在 电源 电压为 5 v、 温度传感器 的分辨率为 1 4位时 ,d . 可取 4 ,d 可取 0 l 0 , . ,而当温度传感 0 器的分辨率为 1 位时,d 应取 一 O 2 . 4,
的基于 C S nT 技术的新型智能温 温度值输 出分辨率为 1 位 , MO es M 2 也可编程
湿度 传感器 。该传感 器 采用独 特 的 降至 1 位和 8 ; 2 位
C S n 技术将 C S MO e s MO 芯片技术与 强大的优势互补作用 。S T 智能温 H1 1 传感器技术结合起来 ,从而可发挥 出 2 . r 3 m) 5 n 表贴封装 ;
维普资讯
带 -C 总 线 的 数 字 式 智 雕 温 湿 度 传感 器 2
S T 设计蚕 考 H 1 1

基于51单片机SHT11温湿度传感器检测程序

基于51单片机SHT11温湿度传感器检测程序

基于51单片机SHT11温湿度传感器检测程序(含电路图)下面是原理图:下面是SHT11与MCU连接的典型电路:下面是源代码:#include <reg52.h>#include <intrins.h>/******************************************************** 宏定义********************************************************/ #define uint unsigned int#define uchar unsigned char#define noACK 0#define ACK 1#define STATUS_REG_W 0x06#define STATUS_REG_R 0x07#define MEASURE_TEMP 0x03#define MEASURE_HUMI 0x05#define RESET 0x1eenum {TEMP,HUMI};typedef union //定义共用同类型{unsigned int i;float f;} value;/******************************************************** 位定义********************************************************/ sbit lcdrs=P2^0;sbit lcdrw=P2^1;sbit lcden=P2^2;sbit SCK = P1^0;sbit DATA = P1^1;/******************************************************** 变量定义********************************************************/ uchar table2[]="SHT11 温湿度检测";uchar table3[]="温度为:℃";uchar table4[]="湿度为:";uchar table5[]=".";uchar wendu[6];uchar shidu[6];/******************************************************** 1ms延时函数********************************************************/ void delay(int z){int x,y;for(x=z;x>0;x--)for(y=125;y>0;y--);}/******************************************************** 50us延时函数********************************************************/ void delay_50us(uint t){uint j;for(;t>0;t--)for(j=19;j>0;j--);}/******************************************************** 50ms延时函数********************************************************/ void delay_50ms(uint t){uint j;for(;t>0;t--)for(j=6245;j>0;j--);}/******************************************************** 12864液晶写指令********************************************************/ void write_12864com(uchar ){lcdrs=0;delay_50us(1);P0=;lcden=1;delay_50us(10);lcden=0;delay_50us(2);}/******************************************************** 12864液晶写数据********************************************************/ void write_dat(uchar dat){lcdrs=1;lcdrw=0;delay_50us(1);P0=dat;lcden=1;delay_50us(10);lcden=0;delay_50us(2);}/******************************************************** 12864液晶初始化********************************************************/ void init12864lcd(void){delay_50ms(2);write_12864com(0x30);delay_50us(4);write_12864com(0x30);delay_50us(4);write_12864com(0x0f);delay_50us(4);write_12864com(0x01);delay_50us(240);write_12864com(0x06);delay_50us(10);write_12864com(0x0c);delay_50us(10);}/********************************************************12864液晶显示函数********************************************************/ void display1(void){uchar i;write_12864com(0x80);for(i=0;i<18;i++){write_dat(table2[i]);delay_50us(1);}}/******************************************************** 12864液晶显示函数********************************************************/ void display2(void){uchar i;write_12864com(0x90);for(i=0;i<18;i++){write_dat(table3[i]);delay_50us(1);}}/******************************************************** 12864液晶显示函数********************************************************/ void display3(void){uchar i;write_12864com(0x88);for(i=0;i<8;i++){write_dat(table4[i]);delay_50us(1);}}/******************************************************** 12864液晶显示函数********************************************************/void displaywendu(void) {uchar i;write_12864com(0x94); for(i=0;i<3;i++){write_dat(wendu[i]); delay_50us(1);}for(i=0;i<1;i++){write_dat(table5[i]); delay_50us(1);}for(i=4;i<5;i++){write_dat(wendu[i]); delay_50us(1);}}/******************************************************** 12864液晶显示函数********************************************************/ void displayshidu(void){uchar i;write_12864com(0x8C);for(i=0;i<3;i++){write_dat(shidu[i]);delay_50us(1);}for(i=0;i<1;i++){write_dat(table5[i]);delay_50us(1);}for(i=4;i<5;i++){write_dat(shidu[i]);delay_50us(1);}}/******************************************************** SHT11写字节程序********************************************************/ char s_write_byte(unsigned char value){unsigned char i,error=0;for (i=0x80;i>0;i>>=1) //高位为1,循环右移{if (i&value) DATA=1; //和要发送的数相与,结果为发送的位else DATA=0;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;}DATA=1; //释放数据线SCK=1;error=DATA; //检查应答信号,确认通讯正常_nop_();_nop_();_nop_();SCK=0;DATA=1;return error; //error=1 通讯错误}/******************************************************** SHT11读字节程序********************************************************/ char s_read_byte(unsigned char ack){unsigned char i,val=0;DATA=1; //释放数据线for(i=0x80;i>0;i>>=1) //高位为1,循环右移{SCK=1;if(DATA) val=(val|i); //读一位数据线的值SCK=0;}DATA=!ack; //如果是校验,读取完后结束通讯 ;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;_nop_();_nop_();_nop_();DATA=1; //释放数据线return val;}/******************************************************** SHT11启动传输********************************************************/ void s_transstart(void){DATA=1; SCK=0; //准备_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;}/********************************************************SHT11连接复位********************************************************/void s_connectionreset(void){unsigned char i;DATA=1; SCK=0; //准备for(i=0;i<9;i++) //DATA保持高,SCK时钟触发9次,发送启动传输,通迅即复位{SCK=1;SCK=0;}s_transstart(); //启动传输}/********************************************************SHT11温湿度检测********************************************************/char s_measure(unsigned char *p_value, unsigned char *p_checksum,unsigned charmode){unsigned error=0;unsigned int i;s_transstart(); //启动传输switch(mode) //选择发送命令{case TEMP : error+=s_write_byte(MEASURE_TEMP); break; //测量温度case HUMI : error+=s_write_byte(MEASURE_HUMI); break; //测量湿度default : break;}for (i=0;i<65535;i++) if(DATA==0) break; //等待测量结束if(DATA) error+=1; // 如果长时间数据线没有拉低,说明测量错误*(p_value) =s_read_byte(ACK); //读第一个字节,高字节(MSB)*(p_value+1)=s_read_byte(ACK); //读第二个字节,低字节(LSB)*p_checksum =s_read_byte(noACK); //read CRC校验码return error; // error=1 通讯错误}/********************************************************SHT11温湿度值标度变换及温度补偿********************************************************/void calc_sth10(float *p_humidity ,float *p_temperature){const float C1=-4.0; // 12位湿度精度修正公式const float C2=+0.0405; // 12位湿度精度修正公式const float C3=-0.0000028; // 12位湿度精度修正公式const float T1=+0.01; // 14位温度精度5V条件修正公式const float T2=+0.00008; // 14位温度精度5V条件修正公式float rh=*p_humidity; // rh: 12位湿度float t=*p_temperature; // t: 14位温度float rh_lin; // rh_lin: 湿度linear值float rh_true; // rh_true: 湿度ture值float t_C; // t_C : 温度℃t_C=t*0.01 - 40; //补偿温度rh_lin=C3*rh*rh + C2*rh + C1; //相对湿度非线性补偿rh_true=(t_C-25)*(T1+T2*rh)+rh_lin; //相对湿度对于温度依赖性补偿if(rh_true>100)rh_true=100; //湿度最大修正if(rh_true<0.1)rh_true=0.1; //湿度最小修正*p_temperature=t_C; //返回温度结果*p_humidity=rh_true; //返回湿度结果}/********************************************************主函数********************************************************/void main(void){unsigned int temp,humi;value humi_val,temp_val; //定义两个共同体,一个用于湿度,一个用于温度unsigned char error; //用于检验是否出现错误unsigned char checksum; //CRCinit12864lcd();display1();display2();display3();s_connectionreset(); //启动连接复位while(1){error=0; //初始化error=0,即没有错误error+=s_measure((unsigned char*)&temp_val.i,&checksum,TEMP); //温度测量error+=s_measure((unsigned char*)&humi_val.i,&checksum,HUMI); //湿度测量if(error!=0) s_connectionreset(); ////如果发生错误,系统复位else{humi_val.f=(float)humi_val.i; //转换为浮点数temp_val.f=(float)temp_val.i; //转换为浮点数calc_sth10(&humi_val.f,&temp_val.f); //修正相对湿度及温度temp=temp_val.f*10;humi=humi_val.f*10;wendu[0]=temp/1000+'0'; //温度百位wendu[1]=temp%1000/100+'0'; //温度十位wendu[2]=temp%100/10+'0'; //温度个位wendu[3]=0x2E; //小数点wendu[4]=temp%10+'0'; //温度小数点后第一位displaywendu();shidu[0]=humi/1000+'0'; //湿度百位shidu[1]=humi%1000/100+'0'; //湿度十位shidu[2]=humi%100/10+'0'; //湿度个位shidu[3]=0x2E; //小数点shidu[4]=humi%10+'0'; //湿度小数点后第一位displayshidu();}delay(800); //等待足够长的时间,以现行下一次转换}}相关手册资料及源码下载地址:基于51单片机SHT11温湿度传感器检测程序相关资料。

SHT-11传感器特性及设定

SHT-11传感器特性及设定

SHT-11引脚图其引脚说明如下:(1)GND:接地端;(2)DATA:双向串行数据线;(3)SCK:串行时钟输入;(4)VDD电源端:0.4~5.5V电源端;(5~8)NC:空管脚。

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。

SHT-11输出特性(1)湿度值输出SHT11可通过I2C总线直接输出数字量湿度值,其相对湿度数字输出特性曲线如图3所示。

由图3可看出,SHT11的输出特性呈一定的非线性,为了补偿湿度传感器的非线性,可按如下公式修正湿度值:RHlinear=c1+c2SORH+c3SORH2式中,SORH为传感器相对湿度测量值,系数取值如下:12位:SORH:c1=-4,c2=0.0405,c3=-2.8×10-68位:SORH:c1=-4,c2=0.648,c3=-7.2×10-4(2)温度值输出由于SHT11温度传感器的线性非常好,故可用下列公式将温度数字输出转换成实际温度值:T=d1+d2SOT0.01,当温度传感器的分辨率为12位时,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所列。

SHT11_原理和使用(中文版)

SHT11_原理和使用(中文版)

SHT1x / SHT7x 系列温湿度 温度传感器
图 6 测量时序概览 (TS = 启动传输)
2.3 状态寄存器 SHTxx 的某些高级功能可以通过状态寄存器实现。下 面的章节概括介绍了这些功能。 详情可参阅应用说明“状态寄存器”。
图 7 状态寄存器写
图8
状态寄存器读
Bit 类型 说明
0.3 1 µA 0 20% Vdd
75% 100% Vdd
0 20% Vdd
80% 100% Vdd
1 µA 4 mA
三态门 10 µA
表4
SHTxx DC 特性
参数
条件
Min Typ Max 单位
校验存储器


14-bit

D


A
两线 数字接口

CRC 校验
时 钟线 数据线
SHT1x / SHT7x 系列温湿度 温度传感器
1 传感器性能说明
参数
条件
Min. Typ. Max. 单位
湿度 分辨率 (2)
0.5 0.03 0.03 %RH
数字温湿度传感器
SHT 1x / SHT 7x
(请以英文为准,译文仅供参考)
SHT7x
SHT1x
_ 相对湿度和温度测量 _ 露点测量 _ 全标定输出,无需标定即可互换使用 _ 卓越的长期稳定性 _ 两线制数字接口,无需额外电路 _ 基于请求式测量,低能耗 _ 表面贴片或 4 针引脚安装 _ 超小尺寸 _ 自动休眠 _ 超快响应时间
TV DATA 有效时间
250 ns
TSU DATA 设定时间
100 ns

SHT11数据手册

SHT11数据手册

SHT1x/SHT7x温湿度传感器-相对湿度和温度的传感器-兼有露点-完全校准,数字输出-极好的长期稳定性-无需外部组件-超低能耗-表面贴片或者4引脚完全可互换-尺寸小-自动休眠SHT1x/SHT7x 产品概述SHTxx 系列产品是包含有已校准数字输出的单芯片温湿度复合传感器。

它应用专利的微加工工业CMOS进程(CMOSens®),以确保产品极高的可靠性和极好的长期稳定性。

传感器包含一个电容式聚合体测湿元件和一个能隙测温元件。

并且与一个14位的A/D转换器以及串行接口电路在同一个芯片上无隙耦合。

依次该芯片信号优良、响应迅速、抗扰能力强、性价比高。

每一个SHTxx 传感器都在极为精确的湿度校验室中进行校准。

校准系数都以程序形式存储在OTP内存中。

在传感器测量的时候这些系数在传感器内部调用来修正信号。

两线制串行接口和内部基准电压使系统集成变的简易快捷。

它超小的体积、极低的能耗使其成为甚至是最为苛刻的应用场合的最佳选择。

产品提供表面贴片LCC(无铅芯片)或者4针单排可插入式引脚封装。

特使封装形式可根据客户的需求提供。

应用-空调系统HV AC -测试或检验-汽车-数据记录-消费品-自动化-气象站-大型家用电器-加湿器-医疗-除湿器订购信息型号湿度精度[%RH] 温度精度[%RH]封装SHT 11 ± 3.0 ±0.4 SMD(LCC) SHT 15 ± 2.0±0.3 SMD(LCC) SHT 71 ± 3.0 ±0.4 4针单排直插SHT 75 ± 1.8 ±0.3 4针单排直插1 传感器性能说明参数条件最小典型值最大单位湿度分辨率0.5 0.03 0.03 %RH8 12 12 bit重复性± 0.1%RH线性化见图一精度不确定性互换性完全可互换非线性度原始数据± 3%RH线性化<<1 %RH范围0 100 %RH响应时间1/e(63%)4 S缓慢流动的空气迟滞± 1%RH长期稳定性典型值<0.5 %RH/yr温度分辨率0.04 0.01 0.01 ℃0.07 0.02 0.02 °F12 14 14 bit重复性± 0.1℃± 0.2°F精确度见图一范围-40 123.8 ℃-40 254.9 °F响应时间1/e(63%) 5 30 S表1 传感器性能说明2 接口说明2.1 电源引脚SHTxx的供电电压在2.4 - 5.5V.上电后,传感器需要11ms月过期“休眠”状态。

dht11使用手册

dht11使用手册

dht11使用手册DHT11是一款常用的温湿度传感器,它能够测量并监测环境中的温度和湿度。

以下是关于DHT11的使用手册,希望能够帮助您更好地使用这款传感器。

一、简介DHT11是一款由AM2301温湿度传感器和数字模块构成的测温湿度模块。

它采用单总线通信方式,能够同时测量环境中的温度和湿度,具有测量精度高、稳定性好等优点。

DHT11的使用非常方便,只需将其连接到单片机的某个I/O口即可。

二、使用步骤1.硬件连接将DHT11的VCC引脚连接到单片机或开发板的+5V电源,GND引脚连接到地线,OUT引脚连接到单片机的I/O口(推荐使用GPIO)。

2.初始化在开始数据读取之前,需要先对DHT11进行初始化。

将I/O 口初始化为输出模式,然后输出低电平(0)至少18ms,再输出高电平(1)并保持60-400us。

此时DHT11会响应并开始工作。

3.数据读取初始化完成后,DHT11会自动开始测量环境中的温度和湿度。

等待40ms后,DHT11会自动将测量到的数据通过I/O口发送给单片机或开发板。

单片机或开发板可以通过读取I/O口的状态来获取数据。

4.数据解析从DHT11读取的数据是一个8位的湿度数据和一个8位的温度数据,需要对其进行解析才能得到实际的湿度和温度值。

根据DHT11的通信协议,我们可以使用以下公式来计算湿度和温度值:湿度值= (湿度数据×10) % 100 温度值= (温度数据/10) + 25三、注意事项在使用DHT11时,需要注意以下几点:1.DHT11的VCC引脚电压应保持在4.5-5.5V之间。

2.在读取数据时,需要等待一定的时间以保证数据传输的稳定。

通常情况下,建议等待大约80-200ms。

3.如果连续读取几次数据都失败,可能需要重新初始化DHT11。

4.在连接DHT11时,需要保证OUT引脚处于低电平状态。

如果OUT引脚处于高电平状态,可能会导致DHT11无法正常工作。

5.DHT11的工作环境温度应保持在0-50℃之间,如果环境温度过高或过低,可能会导致测量值不准确。

sht10温湿度传感器说明.

sht10温湿度传感器说明.

Datasheet SHT1x (SHT10, SHT11, SHT15数字温湿度传感器• 完全标定• 数字信号输出• 低功耗• 卓越的长期稳定性• SMD 封装–适于回流焊接外形尺寸图 1 SHT1x 传感器尺寸(1mm=0.039inch,“ 11”表示该传感器型号为 SHT11。

外部接口:1:GND, 2: DATA, 3: SCK, 4: VDD传感器芯片此说明书适用于 SHT1x-V4。

SHT1x-V4 是第四代硅传感芯片,除了湿度、温度敏感元件以外,还包括一个放大器, A/D 转换器, OTP 内存和数字接口。

第四代传感器在其顶部印有产品批次号,以字母及数字表示,如“ A5Z ”,见图 1。

材质传感器的核心为 CMOS 芯片,外围材料顶层采用环氧 LCP ,底层为 FR4。

传感器符合 ROHS 和WEEE 标准,因此不含 Pb, Cd, Hg, Cr(6+, PBB, PBDE 。

实验包如要进行直接的传感器测量,传感器性能检验或者温湿度实验,客户可选用 EK-H2,其中包括传感器和与电脑配套的软、硬件。

如需进行更复杂的,要求更高的测量,可选用 EK-H3。

它可以同时进行 20个点的温湿度测量。

产品概述SHT1x (包括 SHT10, SHT11 和 SHT15 属于 Sensirion 温湿度传感器家族中的贴片封装系列。

传感器将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号。

传感器采用专利的 CMOSens® 技术,确保产品具有极高的可靠性与卓越的长期稳定性。

传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与 14 位的 A/D 转换器以及串行接口电路实现无缝连接。

因此,该产品具有品质卓越、响应迅速、抗干扰能力强、性价比高等优点。

每个传感器芯片都在极为精确的湿度腔室中进行标定,校准系数以程序形式储存在 OTP 内存中,用于内部的信号校准。

SHT10,SHT11,SHT20,SHT21替代品温湿度传感器HTU21D

SHT10,SHT11,SHT20,SHT21替代品温湿度传感器HTU21D

2.传感器的特点
·完整的互换性,在标准环境下无需校准 ·长期处于湿度饱和状态,可以迅速恢复 ·自动组装工艺生产,无铅材料制成,适合回流焊 ·每个传感器具有单独标记,可追溯生产源头
应用举例
·家庭应用 ·医疗领域 ·打印机 ·加湿器
3.性能规格
参数
储藏温度
供电电压(峰值)
湿度测量范围
温度测量范围
VDD to GND 数字 I/O 口引脚(DATA/SCK)to VDD 每个引脚输入电流
电池电量不足警报在电源电压下降到2.25V 以下时激活。内部加热器用于传感器功能性诊断 —温度升高时相对湿度降低。加热器功耗大约为5.5mW ,可使温度升高0.5 – 1.5°C。OTP 重 加载为一个安全功能,可以在每次测量前将整个OTP 设置加载到寄存器,加热器位除外。 HTU21 中此功能默认为禁止状态,且不推荐用户使用。请采用软复位代替-它包含OTP 重加 载。
· 采用 DFN 封装 · 温度和湿度值数字输出,I2C 接口 · 全量程标定 · 无铅材料,适合回流焊 · 低功耗产品 · 快的响应时间和非常低的温度系数
· 温湿度传感器HTU21D郑:18070430980
1.传感器简述 法国Humirel公司新一代HTU21D温度和湿度传感器在尺寸与智能方面建立了新的标准:它嵌
读和写用户寄存器的 I2C 通讯如图 所示:
图中读和写寄存器时序 –灰色部分由HTU21控制。 在此示例中, 分辨率设置为8bit /
12bit。 21、CRC-8 校验和计算
当HTU21传感器通过I2C协议通讯时,8位的CRC校验可被用于检测传输错误,CRC校验 覆盖所有由传感器传送的读取数据。I2C协议的CRC校验属性见下表:
12 位 8位
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

温湿度传感器SHT11
1 SHT11简介SHT11是瑞士Scnsirion公司推出的一款数字温湿度传感器芯片。

该芯片广泛应用于暖通空调、汽车、消费电子、自动控制等领域。

共主要特点如下:
◆高度集成,将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上;
◆提供二线数字串行接口SCK和DATA,接口简单,支持CRC传输校验,传输可靠性高;
◆测量精度可编程调节,内置A/D转换器(分辨率为8~12位,可以通过对芯片内部寄存器编程米选择);
◆测量精确度高,由于同时集成温湿度传感器,可以提供温度补偿的湿度测量值和高质量的露点计算功能;
◆封装尺寸超小(7.62 mm×5.08mm×2.5 mm),测量和通信结束后,自动转入低功耗模式;
◆高可靠性,采用CMOSens工艺,测量时可将感测头完全浸于水中。

2 SHT11的引脚功能
SHT11温湿度传感器采用SMD(LCC)表面贴片封装形式,接口非常简单,引脚名称及排列顺序如图1所示。

各引脚的功能如下:
◇脚1和4--信号地和电源,其工作电压范围是2.4~5.5 V;
◇脚2和脚3--二线串行数字接口,其中DA-TA为数据线,SCK为时钟线;
◇脚5~8--未连接。

3 SHT11的内部结构和工作原理
微处理器是通过二线串行数字接口与SHT11进行通信的。

通信协议与通用的I2C总线协议是不兼容的,因此需要用通用微处理器I/O口模拟该通信时序。

微处理器对SHT11的控制是通过5个5位命令代码来
实现的,命令代码的含义如表1所列。

4 SHT11应用设计
微处理器采用二线串行数字接口和温湿度传感器芯片SHT11进行通信,所以硬件接门设计非常简单;然而,通信协议是芯片厂家自己定义的,所以在软件设计中,需要用微处理器通用I/O口模拟通信协议。

4.1 硬件设计
SHT11通过二线数字串行接口来访问,所以硬件接口电路非常简单。

需要注意的地方是:DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHT11之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频率没有要求;当工作电压高于4.5V时,SCK频率最高为10 MHz,而当工作电压低于4.5 V时,SCK最高频率则为1 MHz。

硬件连接如图3所示。

4.2 软件设计
微处理器和温湿度传感器通信采用串行二线接口SCK和DATA,其中SCK为时钟线,DATA为数据线。

该二线串行通信协议和I2C协议是不兼容的。

在程序开始,微处理器需要用一组"启动传输"时序表示数据传输的启动,如图4所示。

当SCK时钟为高电平时,DATA翻转为低电平;紧接着SCK变为低电平,随后又变为高电平;在SCK时钟为高电平时,DATA再次翻转为高电平。

SHT11湿度测试时序如图5所示。

其中,阴影部分为SHT11控制总线。

主机发出启动命令,随后发出一个后续8位命令码,该命令码包含3个地址位(芯片设定地址为000)和5个命令位;发送完该命令码,将DATA总线设为输入状态等待SHT11的响应;SHT11接收到上述地址和命令码后,在第8个时钟下降沿,将DATA下拉为低电平作为从机的ACK;在第9个时钟下降沿之后,从机释放DATA(恢复高电平)总线;释放总线后,从机开始测量当前湿度,测量结束后,再次将DATA总线拉为低电平;主机检测到DATA 总线被拉低后,得知湿度测量已经结束,给出SCK时钟信号;从机在第8个时钟下降沿,先输出高字节数据;在第9个时钟下降沿,主机将DATA总线拉低作为ACK信号。

然后释放总线DATA;在随后8个SCK 周期下降沿,从机发出低字节数据;接下来的SCK下降沿,主机再次将DATA总线拉低作为接收数据的ACK信号;最后8个SCK下降沿从机发出CRC校验数据,主机不予应答(NACK)则表示测量结束。

基于以上宏定义和延时函数,可以方便地使SCK和DATA总线输出持续一定时间的高电平或低电平,从而可以模拟图5所示的温湿度传感器SHT11的读写协议。

4.3 温度和湿度值的计算 4.3.1 湿度线性补偿和温度补偿SHT11可通过DATA数据总线直接输出数字量湿度值。

该湿度值称为"相对湿度",需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。

由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值:
式中:RHlinear为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3为线性补偿系数,
取值如表2所列。

由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线性补偿后的湿度值
进行温度补偿很有必要。

补偿公式如下:
式中:RHtrue为经过线性补偿和温度补偿后的湿度值,T为测试湿度值时的温度(℃),t1和t2为温度
补偿系数,取值如表3所列。

4.3.2 温度值输出
由于SHT11是采用PTAT能隙材料制成的温度敏感元件,因而具有很好的线性输出。

实际温度值可由下式算得:Temperature=d1+d2×SOT式中:d1和d2为特定系数,d1的取值与SHT11工作电压有关,d2的取值则与SHT11内部A/D转换器采用的分辨率有关,其对应关系分别如表4和表5所列。

4.3.3 露点计算
露点是一个特殊的温度值,是空气保持某一定湿度必须达到的最低温度。

当空气的温度低于露点时,空气容纳不了过多的水分,这些水分会变成雾、露水或霜。

露点可以根据当前相对湿度值和温度值计算得出,具体的计算公式如下:LogEW=0.66077+7.5×T/(237.3+T)+log10(SORH)-2
Dp=((0.66077-logEW)×237.3)/(logEW-8.16077)
式中:T为当前温度值,SORH为相对湿度值,Dp为露点。

5 结论
温湿度传感器SHT11集温度传感器和湿度传感器于一体,因此采用SHT11进行温湿度实时监测的系统具有精度高、成本低、体积小、接口简单等优点;另外SHT11芯片内部集成了14位A/D转换器,且采用数字信号输出,因此抗干扰能力也比同类芯片高。

该芯片在温湿度监测、自动控制等领域均已得到广泛应
用。

相关文档
最新文档