项目十三 XHT11温湿度传感器#
1.项目介绍

XHT11温湿度传感器(XHT11完全兼容DHT11)是一款含有已校准数字信号输出的温湿度复合传感器,其精度:湿度±5%RH,温度±2℃;量程:湿度20-90%RH,温度0~50℃。
XHT11温湿度传感器应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。XHT11温湿度传感器包括一个电阻式感湿元件和一个NTC测温元件,非常适用于对精度和实时性要求不高的温湿度测量场合。
XHT11有三个引脚,分别为V,G,和S。S为数据输出的引脚,使用的是串行通讯。
2.模块相关资料

工作电压: 3.3V-5V(DC)
最大工作电流: 50mA
最大功率: 0.25W
控制接口: 数字双向单总线
温度范围: 0-50℃(±2℃)
湿度范围: 20-90%RH(±5%RH)
工作温度: -25℃~+60℃
XHT11温湿度传感器的单总线格式定义:
名称:单总线格式定义
起始信号:微处理器把数据总线(SDA)拉低一段时间至少 18ms(最大不得超过30ms),通知传感器准备数据。
响应信号:传感器把数据总线(SDA)拉低 83µs,再接高 87µs以响应主机的起始信号。
湿度:湿度高位为湿度整数部分数据,湿度低位为湿度小数部分数据
温度:温度高位为温度整数部分数据,温度低位为温度小数部分数据,且温度低位Bit8 为 1 则表示负温度,否则为正温度。
校验位:校验位=湿度高位+湿度低位+温度高位+温度低位
HT11温湿度传感器数据时序图:用户主机(MCU)发送一次开始信号后,XHT11从低功耗模式转换到高速模式,待主机开始信号结束后,XHT11发送响应信号,送出 40bit 的数据,并触发一次信采集。信号发送如图所示。

3.实验组件
控制板 * 1 |
扩展板 * 1 |
USB线*1 |
XHT11传感器 *1 |
3P 转杜邦线母 *1 |
|---|---|---|---|---|
|
|
|
|
|
4.模块接线图

5.测试代码
/*
Keyes Arduino 智能家居套装
课程 13
DHT11温湿度传感器
http://www.keyes-robot.com
*/
#include <dht11.h> //include the library code:
dht11 DHT;
#define DHT11_PIN 12 //定义DHT11为数子口12
void setup()
{
Serial.begin(9600);
}
void loop()
{
int chk;
chk = DHT.read(DHT11_PIN); // READ DATA
switch (chk)
{
case DHTLIB_OK:
break;
case DHTLIB_ERROR_CHECKSUM: //校检和错误返回
break;
case DHTLIB_ERROR_TIMEOUT: //超时错误返回
break;
default:
break;
}
// DISPLAT DATA
Serial.print("humidity:");
Serial.print(DHT.humidity);
Serial.print(" temperature:");
Serial.println(DHT.temperature);
delay(200);
}
6.实验结果
上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示当前环境中的温湿度数据,如下图:

7.代码说明
(1)在实验中,我们需要先导入DHT11的库文件。
(2)我们把管脚设置为3,DHT.temperature获取温度和DHT.humidity获取湿度。
(3)设置两个小数变量,分别为val1和val2,将所测结果赋值给val1和val2。
(4)串口监视器显示val1和val2的值,显示前需设置波特率(我们默认设置为9600,可更改)。
(5)显示时,我们在数据后面添加单位。如果温度单位直接设置为℃,测试结果可能出现乱码,所以我们直接用C代替℃;湿度单位直接设置为%。



