DHT11和DHT22比较及使用方法
DHT11和DHT22(AM2302)技术性能特征
DHT11: DHT22:
工作电压范围:3.3V-5.5V
工作电流 :平均0.5mA
输出:单总线数字信号
测量范围:湿度20–90%RH,温度0~50℃ 湿度0–99.9%RH,温度-40-80℃
精度 :湿度±5%,温度±2℃ 湿度±2%,温度±0.5℃
分辨率 :湿度1%,温度1℃ 湿度:0.1%RH,温度:0.1℃
DHT11和DHT22介绍
DHT11数字湿温度传感器采用单总线数据格式。单个数据引脚端口完成输入输出双向传输。其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。
DHT11的数据格式为:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。
其中校验和数据为前四个字节相加。
传感器数据输出的是未编码的二进制数据。数据(湿度、温度、整数、小数)之间应该分开处理。

由以上数据就可得到湿度和温度的值,计算方法:
湿度= byte4 . byte3=45.0 (%RH)
温度= byte2 . byte1=28.0 ( ℃)
校验= byte4+ byte3+ byte2+ byte1=73(校验正确)
DHT22与DHT11主要有以下不同:
校验格式相同,但是温湿度取值算法不同,传感器输出的温湿度值要除以10才得到真正的温湿度值温度最高位(Bit15)等于1表示负温度,等于0表示正温度,(Bit14-Bit0)表示温度值。

DHT22还具有以下特性:

DHT11和DHT22使用方法分析
//IO方向设置
#define DHT11_IO_IN() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;} //上拉下拉输入模式
#define DHT11_IO_OUT() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;} //推挽输出
////IO操作函数
#define DHT11_DQ_OUT PGout(11) //数据端口 PG11
#define DHT11_DQ_IN PGin(11) //数据端口 PG11
数据发送流程是相同的,但是时间上有差异

数据发送流程图
DHT11:首先主机发送开始信号,即:拉低数据线,保持t1(至少18ms)时间,然后拉高数据线t2(20-40us),然后读取DHT11的响应,正常的话,DHT11会拉低数据线,保持t3(40-50us)作为响应信号,然后DHT11拉高数据线,保持t4(40~50us)时间后,开始输出数据。
DHT22:首先主机发送开始信号,DHT22从低功耗模式转换为高速模式,保持t1(至少500us)时间,然后拉高数据线t2(20-40us),然后读取DHT11的响应,正常的话,DHT11会拉低数据线,保持t3(80us左右)作为响应信号,然后DHT11拉高数据线,保持t4(80us左右)时间后,开始输出数据。
代码解析:
复位:

拉低数据线,保持t1(至少18ms)时间,然后拉高数据线t2(20~40us)时间
//复位DHT11
void DHT11_Rst(void)
{
DHT11_IO_OUT(); //SET OUTPUT
DHT11_DQ_OUT=0; //拉低DQ
delay_ms(20); //拉低至少18ms
DHT11_DQ_OUT=1; //DQ=1
delay_us(30); //主机拉高20~40us
}
//复位DHT22
void DHT22_Rst(void)
{
DHT22_IO_OUT(); //SET OUTPUT
DHT22_DQ_OUT=0; //拉低DQ
delay_ms(1); //拉低至少500us,此处1ms
DHT22_DQ_OUT=1; //DQ=1
delay_us(30); //主机拉高20~40us
}
等待回应:

本文详细介绍了DHT11和DHT22(AM2302)湿度和温度传感器的技术性能特征,包括工作电压、电流、测量范围、精度和分辨率等。DHT11和DHT22的主要区别在于测量范围和精度,DHT22具有更宽的温度范围和更高的精度。此外,文章提供了传感器的使用方法,包括初始化、数据读取流程和代码实现。通过比较和实例,读者可以了解如何正确地在项目中选择和使用这两种传感器。

被折叠的 条评论
为什么被折叠?



