DHT22 温湿度传感器:参数、原理与应用深度解析

电子说

1.4w人已加入

描述

DHT22 温湿度传感器:参数、原理与应用深度解析

在电子工程领域,温湿度的精确测量是许多项目不可或缺的部分。DHT22 温湿度传感器凭借其高精度和良好的性能,成为众多工程师的首选。下面,我们将详细解读 DHT22 温湿度传感器的产品特点、参数、工作原理、通信格式以及在不同开发板上的操作方法。

文件下载:DHT22 Temperature-Humidity Sensor.pdf

产品特点与参数

产品特点

DHT22 是一款已校准的数字温湿度传感器,它采用 DHT22(AM2302)芯片和标准单总线接口,用于检测环境温湿度。相较于 DHT11,DHT22 具有更高的精度和更大的量程,能满足更广泛的应用需求。

产品参数

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

这些参数清晰地展示了 DHT22 在温湿度测量方面的性能优势,工程师们可以根据实际需求进行合理选择。

接口说明

以接入 MCU 为例,DHT22 的接口连接方式如下:

  • VCC:接 3.3V ~ 5.5V 电源。
  • GND:接 GND。
  • DOUT:接 MCU.IO。

这种简单的接口设计,方便了工程师在不同项目中的连接和使用。

工作原理

引脚定义

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

单总线通信

AM2302 器件采用简化的单总线通信,单总线只有一根数据线,系统中的数据交换、控制均由该数据线完成。通常需要外接一个约 5.1kΩ 的上拉电阻,使总线闲置时状态为高电平。SDA 用于微处理器与 AM2302 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。

通信格式说明

起始信号

微处理器把数据总线(SDA)拉低一段时间(至少 800 μs),通知传感器准备数据。

响应信号

传感器把数据总线(SDA)拉低 80 μs,再接高 80 μs 以响应主机的起始信号。

数据格式

收到主机起始信号后,传感器一次性从数据总线(SDA)串出 40 位数据,高位先出。具体包括:

  • 湿度:湿度分辨率是 16Bit,高位在前;传感器串出的湿度值是实际湿度值的 10 倍。
  • 温度:温度分辨率是 16Bit,高位在前;传感器串出的温度值是实际温度值的 10 倍;温度最高位(Bit15)等于 1 表示负温度,等于 0 表示正温度;温度除了最高位(Bit14 ~ Bit0)表示温度值。
  • 校验位:校验位 = 湿度高位 + 湿度低位 + 温度高位 + 温度低位。

单总线通信时序

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

外设读取步骤示例

步骤一

AM2302 上电后要等待 2S 以越过不稳定状态,在此期间读取设备不能发送任何指令。之后测试环境温湿度数据并记录,传感器自动转入休眠状态。此时 AM2302 的 SDA 数据线由上拉电阻拉高一直保持高电平,SDA 引脚处于输入状态,时刻检测外部信号。

步骤二

微处理器的 I/O 设置为输出,同时输出低电平,且低电平保持时间不能小于 800us,典型值是拉低 1MS。然后微处理器的 I/O 设置为输入状态,释放总线,由于上拉电阻,微处理器的 I/O 即 AM2302 的 SDA 数据线也随之变高。等主机释放总线后,AM2302 发送响应信号,即输出 80 微秒的低电平作为应答信号,紧接着输出 80 微秒的高电平通知外设准备接收数据。

步骤三

AM2302 发送完响应后,随后由数据总线 SDA 连续串行输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据。

  • 位数据“0”的格式为:50 微秒的低电平加 26 - 28 微秒的高电平。
  • 位数据“1”的格式为:50 微秒的低电平加 70 微秒的高电平。

AM2302 的数据总线 SDA 输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随之变为高电平。同时 AM2302 内部重测环境温湿度数据并记录,测试记录结束,单片机自动进入休眠状态。单片机只有收到主机的起始信号后,才重新唤醒传感器,进入工作状态。

在不同开发板上的操作与现象

NUCLEO - F103RB

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

Arduino UNO

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

Open103Z

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

DHT22 温湿度传感器以其高精度、大测量范围和简单的通信接口,为电子工程师在温湿度测量项目中提供了可靠的解决方案。通过对其工作原理、通信格式和不同开发板使用方法的深入了解,工程师们可以更加灵活地将其应用到各种实际项目中。大家在使用过程中是否遇到过一些特殊问题呢?可以一起交流探讨。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分