资讯详情

DHT11温湿度传感器使用介绍

DHT11温湿度传感器

在这里插入图片描述

产品概述

DHT11数字温湿度传感器温湿度复合传感器。采用特殊的数字模块采集技术和温湿度传感技术,保证产品的高可靠性和优异的长期稳定性。

传感器包括电阻式感湿元件和NTC测温元件与高性能8位单片机连接。DHT11传感器在极其精确的湿度校验室中校准。校准系数以程序的形式存储OTP这些校准系数应调用于传感器内部的检测信号处理。

,使系统集成简单快捷。体积超小,功耗极低,信号传输距离可达20米以上,成为各种应用甚至最苛刻的应用场合的最佳选择。

特点

  • 测量相对湿度和温度
  • 所有校准,数字输出
  • 长期稳定性
  • 超长信号传输距离:20米
  • 超低能耗:休眠
  • 4 引脚安装:可购买包装好的
  • 完全互换 : 结果不需要直接转换

引脚定义及接线

DHT供电电压为11 。传感器上电后,等待 1s 在此期间,无需发送任何指令,以跨越不稳定状态。电源引脚(VDD,GND)可以增加1000nF 用于去耦滤波的电容器

串行接口 (单线双向)

DATA 用于微处理器和 DHT采用11之间的通信和同步数据格式,

通信时间4ms数据分为小数部分和整数部分,具体格式如下所示,

目前小数部分用于以后的扩展,现在读出为零.操作流程如下:

数据格式:

当数据传输正确时,验证和数据等于8bit湿度数据 8bit湿度小数据 8bit温度整数据 8bit温度小数据结果最后8位。

通信时序图

用户MCU发送开始信号后,DHT从低功耗模式到高速模式,等待主机开始信号结束,DHT11发送响应信号40bit用户可以选择读取部分数据,触发信号采集。从模式下,DHT如果没有接收到主机发送的开始信号,11接收到开始信号触发温湿度采集,DHT不主动采集温湿度。采集数据后,转换为低速模式。

初始化时序

总线的空闲状态是高电平,主机拉下总线等待DHT11响应时,主机必须拉下总线超过18毫秒,以确保DHT起始信号可以检测到。DHT11收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号。主机发送开始信号后,延迟等待20-40us后, 读取DHT11响应信号,主机发送开始信号后,可切换到输入模式,或平均输出高电,总线由上拉电阻拉高。

时序分析:

DATA = 1 DATA = 0 延时30ms(至少18ms) DATA = 1 在60us后读取DATA如果状态为低电平(被从机拉低),则表明从机响应 
/** * @brief 检测DHT11模块是否响应 * @param无 * @retval无 */ void DHT11_Init() { 
          DATA = 1;  DATA = 0;  Delay1ms(30);  DATA = 1;  Delay60us();  if(DATA == 0) ///读取数据线的电平,如果是0,则表示从机响应  { 
           LED1 = 0; //点亮LED1     } } 

数字0信号表示方法:

数字1信息表示方法:

只有数据0和数据1,因为DHT11发送的数据共40个bit,每8位组成一个有效的信息,每次读取的1bit,所以每次读8位,共读5轮就能读出所有数据

char rec[5];  ////接收所有温湿度数据  /** * @brief DHT11读取温湿度 * @param 无 * @retval无 */ void DHT11_ReadByte() { 
          unsigned int i,j;
	unsigned char temp = 0;
	unsigned char flag;
	DHT11_Start();				//最后时序电平为高
	while(DATA);
	for(i = 0; i < 5; i++)		//读5轮,共读40bit
	{ 
        
		for(j = 0; j < 8; j++)	//读温湿度整数或小数值,每次读8bit
		{ 
        
			while(!DATA);
			Delay50us();		//延时50us后再去读DATA的电平
			if(DATA == 1)
			{ 
        
				flag = 1;
			}
			else
			{ 
        
				flag = 0;
			}
			temp <<= 1;
			temp |= flag;
		}
		rec[i] = temp;			//每获得8bit数据后放入rec数据中
	}
}

读出来后,数据都存在了rec数组中,然后就可以往串口上打印输出

/** * @brief 数据处理以及通过串口显示 * @param 无 * @retval 无 */
void Data_Dispose()
{ 
        
	unsigned char i;
	DHT11_ReadByte();
	Delay1ms(1000);
	
	for(i = 0; i < 4; i++)
	{ 
        
		if(i == 0){ 
        Uart_SendString("湿度:");}
		if(i == 2){ 
        Uart_SendString("温度:");}
		Uart_SendChar(rec[i]/10+0x30);			//+0x30是为了转为字符显示
		Uart_SendChar(rec[i]%10+0x30);
		if(i == 0 || i == 2){ 
        Uart_SendChar('.');}
	}
	Uart_SendString("\r\n");
}

标签: 轮速传感器传感头模块温湿度变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台