用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

I2C总线数字式温湿度传感器SHT11及其在单片机系统的应用

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:02:11
3.3 寄存器配置

SHT11传感器中的一些高级功能是通过状态寄存器来实现的,寄存器各位的类型及说明见表2所列。下面对寄存器相关位的功能说明:

(1)加热

使芯片中的加热开关接通后,传感器温度大约增加5℃,从而使功耗增加至8mA@5V。加热用途如下:

●通过对启动加热器前后的温、湿度进行比较,可以正确地区别传感器的功能;

●在相对湿度较高的环境下,传感器可通过加热来避免冷凝。

(2)低电压检测

SHT11工作时可以自行检测VDD电压是否低于2.45V,准确度为±0.1V。

(3)下载校准系数

为了节省能量并提高速度,OTP在每次测量前都要重新下载校准系数,从而使每一次测量节省8.2ms的时间。

(4)测量分辨率设定

将测量分辨率从14位(温度)和12位(湿度)分别减到12位和8位可应用于高速或低功耗场合。
javascript:window.open(this.src);" style="cursor:pointer;"/>
4 应用说明

4.1 运行条件

测量量程以外的温度会使湿度信号暂时地偏移+3%。然后传感器会慢慢返回到校准条件。若将芯片在湿度小于5%环境下加热24小时到90℃,芯片就会迅速恢复高相对湿度、高温度环境的影响,但是,延长强度条件会加速芯片的老化。

4.2 安装注意事项

由于大气的相对湿度与温度的关系比较密切,因此,测量大气温度时的要点是将传感器与大气保持同一温度,如果传感器线路板上有发热元件,SHT11应与热源保持良好的通风,为减少SHT11和PCB之间的热传导,应使铜导线最细并在其中加上窄缝,同时应避免使传感器在强光或UV下曝晒。

传感器在布线时,SCK和DATA信号平行且相互接近,或信号线长于10cm时,均会产生干扰信息,此时应在两组信号之间放置VDD或GND。

5 具体应用

图5是AT89C2051单片机与SHT11的接口电路。由于AT89C2051不具备I2C总线接口,故使用单片机通用I/O口线来虚拟I2C总线,并利用P1.0来虚拟数据线DATA,利用P1.1口线来虚拟时钟线,并在DATA端接入一只4.7kΩ的上拉电阻,同时,在VDD及GND端接入一只0.1μF的去耦电容。下面给出与上述硬件电路配套的C51应用程序。

#define DATA P1_1

#define SCK P1_0

#define ACK 1

#define noACK 0

#define MEASURE_TEMP 0x03 //测量温度命令

#define MEASURE_HUMI 0x05 //测量湿度命令

//读温湿度数据

char s-measure(unsigned char *p- value, un-signed char *p_checksum, unsigned char mode)

{

unsigned char 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) reeor+=1;

*(p_value)=s_read_byte(ACK);

*(p_value+1)=s_read_byte(ACK);

*p_checksum=s_read_byte(noACK);

return error;

}

//温湿度值标度变换及温度补偿

void calc_sth15(float *p_humidity,float *p_tempera-ture)

{

const float c1=-4.0;

const float c2=0.0405;

const float c3=-0.0000028;

const float t1=-0.01;

const float t2=0.00008;

float rh=×p_humidity;

float t=×p_temperature;

float rh_lin;

float th_ture;

float t_c;

t_c=t×0.01-40;

rh_lin=c3×rh×rh+c2×rh+c1;

trh_ture=(t_c-25)×(t1+t2×rh)+rh_lin;

×p_temperature=t-c;

×p_humidity=rh_ture;

}

//从相对温度和湿度计算露点

char calc_dewpoint(float h,float t)

{float logex,dew_point;

logex=0.66077+7.5×t/(237.3+t)+[log10(h)-2];

dew_point=(logex-0.66077)×237.3/(0.66077+7.5-logex);

return dew_point;

}

限于篇幅,上述程序中未给出传输开始、写字节数据、读字节数据函数。

6 结束语

SHT11数字式温湿度传感器由于将温度传感器、湿度传感器、信号调理、模/数转换器、标定参数及I2C总线接口全部集成到传感器内部,因此,既提高了传感器的性能,又降低了成本、减少了体积,同时也非常便于和微控制器接口,由此可见,该传感器是嵌入式系统温湿度测试的理想选择。



上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:6,531.25000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号