DHT22 Temperature-Humidity Sensor

来自Waveshare Wiki
Waveshare-admin讨论 | 贡献2021年2月23日 (二) 17:10的版本 (Text replace - " EMAIL:3005722301@qq.com<br /> 电话:0755-83040712<br /> QQ:3005722301<br /> 微信:扫下方二维码添加<br /> 200px<br /> <small><nowiki>*</nowiki> 企业微信添加好友时软件无提示,我们无法及)
跳转至: 导航搜索
DHT11 Temperature-Humidity Sensor
{{{name2}}}
{{{name3}}}
功能简介
特性 DHT22温湿度传感器
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 I/Os

产品概述

这是是已校准的数字温湿度传感器,用于检测环境温湿度,采用DHT22(AM2302),标准单总线接口。拥有比DHT11更高的精度和更大的量程。

产品参数

  • 温度
  • 分辨率:0.1°C
  • 精度:±0.5℃
  • 检测范围:-40°C ~ 80°C
    • 湿度
  • 分辨率:0.1%RH
  • 精度:±2%RH (25°C)
  • 检测范围:0%RH ~ 99.9%RH
    • 工作电压 :3.3V ~ 5.5 V
    • 推荐存储环境:
    温度:10°C ~40°C 湿度:60%RH以下

    产品应用

    气象站、温度调节器和测试及检测设备等

    接口说明(以接入MCU为例)

    DHT22 MCU
    VCC: 接3.3V ~ 5.5V
    GND: 接GND
    DOUT: 接MCU.IO

    工作原理

    该产品原理图如下:

    DHT22-Temperature-Humidity-Sensor-User-Manual-2.png

    引脚定义

    引脚 名称 描述
    1 VCC 电源正(3.3V-5.5V)
    2 GND 电源地
    3 DOUT 数据端口,接到AM2302的SDA端

    AM2302 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由数据线完成。单总线通常要求外接一个约 5.1kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。SDA 用于微处理器与 AM2302 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。具体通信时序如图所示。
    DHT22-Temperature-Humidity-Sensor-User-Manual-3.png

    AM2302通信格式说明:

    名称 单总线格式定义
    起始信号 微处理器把数据总线(SDA)拉低一段时间(至少800μs)[1],通知传感器准备数据。
    响应信号 传感器把数据总线(SDA)拉低80μs,再接高80μs以响应主机的起始信号。
    数据格式 收到主机起始信号后,传感器一次性从数据总线(SDA)串出40位数据,高位先出。
    湿度 湿度分辨率是16Bit,高位在前;传感器串出的湿度值是实际湿度值的10倍。
    温度 温度分辨率是16Bit,高位在前;传感器串出的温度值是实际温度值的10倍;温度最高位(Bit15)等于1表示负温度,温度最高位(Bit15)等

    于0表示正温度;温度除了最高位(Bit14~Bit0)表示温度值。

    校验位 校验位=湿度高位+湿度低位+温度高位+温度低位。
    • 单总线通信时序

    用户主机(MCU)发送一次起始信号(把数据总线 SDA 拉低至少 800µs)后, AM2302 从休眠模式转换到高速模式。待主机开始信号结束后, AM2302 发送响应信号,从数据总线 SDA 串行送出 40Bit的数据,先发送字节的高位;发送的数据依次为湿度高位、湿度低位、温度高位、 温度低位、校验位,发送数据结束触发一次信息采集,采集结束传感器自动转入休眠模式,直到下一次通信来临。(注:DHT22(AM2302)的数据格式和DHT11的数据格式不一样。)

    • 外设读取步骤示例

    主机和传感器之间的通信可通过如下三个步骤完成读取数据。
    步骤一:
    AM2302 上电后( AM2302 上电后要等待 2S 以越过不稳定状态,在此期间读取设备不能发送任何指令),测试环境温湿度数据,并记录数据,此后传感器自动转入休眠状态。 AM2302 的 SDA 数据线由上拉电阻拉高一直保持高电平,此时 AM2302 的 SDA 引脚处于输入状态,时刻检测外部信号。 步骤二:
    微处理器的 I/O 设置为输出, 同时输出低电平,且低电平保持时间不能小于 800us,典型值是拉低 1MS,然后微处理器的 I/O 设置为输入状态,释放总线,由于上拉电阻,微处理器的 I/O 即 AM2302的 SDA 数据线也随之变高,等主机释放总线后, AM2302 发送响应信号,即输出 80 微秒的低电平作为应答信号,紧接着输出 80 微秒的高电平通知外设准备接收数据,信号传输如图所示:
    DHT22-Temperature-Humidity-Sensor-User-Manual-4.png
    步骤三:
    AM2302 发送完响应后,随后由数据总线 SDA 连续串行输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据。 位数据“0”的格式为: 50 微秒的低电平加 26-28 微秒的高电平; 位数据“1”的格式为: 50 微秒的低电平加 70 微秒的高电平; 位数据“0”、位数据“1”格式信号如图 所示:
    DHT22-Temperature-Humidity-Sensor-User-Manual-5.png
    AM2302 的数据总线 SDA 输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随之变为高电平。同时 AM2302 内部重测环境温湿度数据,并记录数据,测试记录结束,单片机自动进入休眠状态。单片机只有收到主机的起始信号后,才重新唤醒传感器,进入工作状态。

    操作与现象

    下面章节以三款款不同类型的开发板(Nucleo-F103RB, Arduino UNO, Open103Z)为例,描述具体操作步骤及实验现象。

    NUCLEO-F103RB

    1)用杜邦线将DHT22接到Nucleo-F103RB,DOUT接到Nucleo-F103RB的D2端口。
    2)用keil软件打开工程.\ mbed\Temerature-Humidity Sensor.uvproj ,并编译下载。
    3)打开串口监视软件,选择正确的串口号,并设置如下:
    波特率:9600;数据位:8;停止位:1;校验位:None;控制流:None。
    串口输出温度和湿度。

    Arduino UNO

    1)用杜邦线将DHT22接到UNO,DOUT接到UNO的D2端口。
    2)将DHTxx文件夹复制到Arduino软件的安装目录Arduino\libraries下面。点击File --> Examples --> DHTxx--> DHTxx打开程序,并编译程序下载。
    3)点击 Tools -> Port选择Arduino开发板的串口号,打开串口监视器,设置No line ending, 9600 baud。串口输出温度和湿度。

    Open103Z

    1)用杜邦线将DHT22接到Open103Z,DOUT接到Open103Z的PA3端口。
    2)用keil软件打开程序.\ Open103Z\MDK_Project\DHT22,并编译下载。
    3)打开串口监视软件,选择正确的串口号,并设置如下:
    波特率:9600;数据位:8;停止位:1;校验位:None;控制流:None。
    串口输出温度和湿度。

    文档

    视频

    程序

    软件

    串口调试助手

    数据手册




    联系人:陈工

    EMAIL:3005722301@qq.com
    QQ:3005722301
    微信:扫下方二维码添加
    Cjw.jpg

    说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证