当前位置: 首页 > 传感测量产品 > 工业传感器 > 温湿度传感器

类型分类:
科普知识
数据分类:
温湿度传感器

湿度传感器dht11:DHT11温湿度传感器

发布日期:2022-10-09 点击率:94


湿度传感器dht11:DHT11<a title=温湿度传感器 第1张" title="湿度传感器dht11:DHT11温湿度传感器 第1张-传感器知识网"/>

湿度传感器dht11:DHT11温湿度传感器

一、器材?
arduino UNO、面包板、DHT11温湿度传感器、连接线?
这里说一下DHT11的基本情况:?
(1)引脚说明:?
1、VDD 供电 3.5V-5.5V DC?
2、DATA 串行数据,单总线?
3、GND 接地,电源负极。?
(2)DHT11data数据格式:?
一次传输40位数据=8bit湿度整数数据 + 8bit湿度小数数据 + 8bint温度整数数据 + 8bit温度小数数据 + 8bit校验位?
3、时序图?
二、连接图?
?
如图所示,将DHT11的正极与5V电源接口相连,负极与GND相连,中间的数据接口与2号引脚相连。?
三、代码
四、注意事项?
1、代码中引用了,这个是操作DHT11的库文件,有了它,就可以轻松操作我们这个温湿度传感器了。但是引用这个库文件的操作步骤是:?
(1)在网上找到并下载该库文件,包括一个头文件和一个.cpp文件。?
(2)在arduinoIDE中点击菜单:程序–导入库–add library,然后选择你存放库文件的那个文件夹。?
(3)在代码中引用,这样就可以使用了。?
2、#define DHT11PIN 2,表示定义引脚2的名字为DHT11PIN ,注意这个定义语句后面没有分号。?
五、原理分析?
在硬件编程过程中,当你拿到一个器件,首先要了解他的引脚定义,这会告诉你这个东西应该怎么连接,在一个就是要看他的时序图,看了时序图你就知道主从设备之间进行数据采集过程中的代码应该怎么写,比如怎么启动,如何握手,怎么采集真正的数据等等。?
在我们这个试验中,DHT11的时序图是这样的:?
下面对照dht11.cpp源代码说说我们采集温湿度信息的原理(在代码中加了注释,说明相关内容。):
六、运行结果?
通电之后,在电脑上打开串口就可以看到采集到的温湿度信息。?

湿度传感器dht11:dht11温湿度传感器中文资料(dht11工作原理特性参数及应用电路)

DHT11概述
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。

DHT11引脚说明

1、传感器性能说明

2、接口说明
建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。

3、电源引脚
DHT11的供电电压为3-5.5V。传感器上电后,要等待1s以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。
4、串行接口(单线双向)
DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零。操作流程如下:
一次完整的数据传输为40bit,高位先出。
数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集。采集数据后转换到低速模式。

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

湿度传感器dht11:DHT11温湿度传感器  第2张

湿度传感器dht11:dht11温湿度传感器工作原理

基于单片机的DHT11温湿度 传感器设计
:史延林 指导老师:黄智伟 学院:电气工程学院 学号:
摘要:
温湿度是生活生产中的重要的参数。本设计为基于单片机的温湿度检测与控制 系统,采用模块化、层次化设计。用新型的智能温湿度传感器DHT11主要实现对温度、 湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运 用单片机STC89C52进行数据的分析和处理,为显示和报警电路提供信号,实现对温
湿度的控制报警。报警系统根据设定报警的上下限值实现报警功能,显示部分采用 LCD1602液晶显示所测温湿度值。系统电路简单、集成度高、工作稳定、调试方便、 检测精度高,具有一定的实用价值。
关键词:单片机;DHT11温湿度传感器; LCD1602显示
第一章:课程构思
1.1课题背景
温湿度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生 产和生活中的更加广泛的应用。在生产中,温湿度的高低对产品的质量影响很大。 由于温湿度的检测控制不当,可能使我们导致无法估计的经济损失。为保证日常工 作的顺利进行,首要问题是加强生产车间温度与湿度的监测工作,但传统的方法过 于粗糙,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降 温等工作。这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随 机性大。目前,在低温条件下(通常指100℃以下),温湿度的测量已经相对成熟。利 用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发。但人们 对它的要求越来越高,要为现代人工作、科研、学习、生活提供更好的更方便的设 施就需要从数字单片机技术入手,一切向着数字化,智能化控制方向发展。
对于国外对温湿度检测的研究,从复杂模拟量检测到现在的数字智能化检测越 发的成熟,随着科技的进步,现在的对于温湿度研究,检测系统向着智能化、小型 化、低功耗的方向发展。在发展过程中,以单片机为核心的温湿度控制系统发展为 体积小、操作简单、量程宽、性能稳定、测量精度高,等诸多优点在生产生活的各 个方面实现着至关重要的作用。
温湿度传感器除电阻式、电容式湿敏元件之外,还有电解质离子型湿敏元件、 重量型湿敏元件(利用感湿膜重量的变化来改变振荡频率)、光强型湿敏元件、声 表面波湿敏元件等。湿敏元件的线性度及抗污染性差,在检测环境湿度时,湿敏元
湿度传感器dht11:DHT11温湿度传感器  第3张

湿度传感器dht11:DHT11温湿度传感器编程思路以及代码的实现

在我们刚开始进入单片机的学习中,练习写传感器的时序是必不可少的,其实我比较推荐大家刚开始练习的时候使用DHT11来练习。

推荐的原因:

因为DHT11的时序简单。DHT11是国产的,全中文的参考手册,不用担心英文看不懂。功能少,就只有一个测量温湿度的功能。
综上,因此DHT11我认为是非常适合刚开始入门单片机的朋友学习的。

?

那么在使用传感器前,我们必须要先看数据手册,并不需要全部浏览,我们只需要看他重要的点,就OK了。

这就是DHT11温湿度传感器的外观,我们了解一下就好。

?

接下来我们看一起DHT11的参数特性

用红框圈出来的,就是重点,我们必须知道,这个DHT11温湿度传感器的测量范围,以及精度、分辨率。如果超出了这个范围,那么DHT11就不能够使用了。

接下来看一下引脚说明。 ? ? ? ? ? ?我们要注意的是:这个器件使用的是单总线协议是总所周知的了,但是他的供电范围我们也需要了解一下,范围是3.5-5.5v。如果超出这个范围,传感器可能会烧、假如低于这个范围,可能传感器会读出错误的温湿度数据或者压根就罢工了。 ? 因此,我们在使用那些3.3v单片机做编程的时候,就要注意这一点了。

这个是数据手册上显示的DHT11典型的电路连接方法,我们再数据口上要接上一个上拉电阻。供电所使用的为7805的稳压电源,也就是5V。实际上,只要我们满足他的供电电压范围,都是能够工作的。

接下来我们看一下它的数据格式(重点)

? ? ? ? DHT11用的是单总线协议,一次传送40位的数据。 ? ? 注意了,看到这一句话,也就是说我们每次读取DHT11的数据时,都要一次性读取40次,也就是读取40位。并且数据前16位是与湿度相关的,中间16位是与温度相关的,最后八位是用来校验的,当我们校验成功后,证明这一次的温湿度结果正确的,我们单片机就可以使用这个温湿度值;如果校验不通过,那么就代表我们这次读取出来的温湿度值,是错误的(也许是我们的时序错误了,也许是传感器的问题),我们不进行采样。

? ? ? ? 同时呢,商家的数据手册还给出了一个校验数据的示例图,而且还是全中文的,所以说我说的没错吧,这个器件是真的简单到不能再简单了,非常适合新手入门练习如何写时序。

? ? ? ? DHT11的总体通信流程。第一步:主机先发送开始信号,从机会返回一个相应信号进行应答。 ? ?第二步:主机信号线拉高准备接收数据。 ? ?第三部:开始接收数据(一次接收40位)。

那么这个就是一个人数据读取的一个流程,那么我们每一个流程又应该怎么做呢?

?

步骤一:DHT11 上电后(DHT11 上电后要等待 1S 以越过不稳定状态在此期间不能发送任何指令),测试环境
温湿度数据,幵记录数据,同时 DHT11 的 DATA 数据线由上拉电阻拉高一直保持高电平;此时 DHT11 的
DATA 引脚处于输入状态,时刻检测外部信号。

步骤二:微处理器的 I/O 设置为输出同时输出低电平,且低电平保持时间不能小于 18ms,然后微处理器的 I/O
设置为输入状态,由于上拉电阻,微处理器的 I/O 即 DHT11 的 DATA 数据线也随之变高,等待 DHT11 作
出回答信号,发送信号如图所示:

步骤三:DHT11 的 DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后 DHT11 的 DATA
引脚处于输出状态,输出 80 微秒的低电平作为应答信号,紧接着输出 80 微秒的高电平通知外设准备接
收数据,微处理器的 I/O 此时处于输入状态,检测到 I/O 有低电平(DHT11 回应信号)后,等待 80 微秒
的高电平后的数据接收,发送信号如图所示:
?

步骤四:由 DHT11 的 DATA 引脚输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据,位数据“0”
的格式为: 50 微秒的低电平和 26-28 微秒的高电平,位数据“1”的格式为: 50 微秒的低电平加 70
微秒的高电平。位数据“0”、“1”格式信号如图所示:

(我们可以把这一段的时序理解为,我们主机先把数据线拉低50us,然后延时等待40us,然后再去读取信号线的电平,如果为低电平,则为位“0”;如果为高电平,则为位“1”)。

结束信号:DHT11 的 DATA 引脚输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随
之变为高电平。但 DHT11 内部重测环境温湿度数据,幵记录数据,等待外部信号的到来。

我们在数据手册上了解的就这么多就可以了。

?

同时,我自己也对DHT11的时序做了一个总结

一. 单片机上点后1s内不读取(不重要)

二. 主机(单片机)发送起始信号:1.主机先拉高data。2.拉低data延迟18ms。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.拉高data(单片机引脚设置为输入)。
 ? ? ? ? ? ? ? ?
三. 从机(DHT11)收到起始信号后进行应答:
 ? ?从机拉低data,主机读取到data线被拉低持续80us后从机拉高data线,
 ? ?持续80us,直到高电平结束,意味着主机可以开始接受数据。
 ?
四. 主机开始接收数据:
 ? ?1.主机先把data线拉高(io设置为输入)。
 ? ?2.从机把data线拉低,主机读取data线电平,直到低电平结束(大约50us)
 ? ?从机拉高data线后,延迟40us左右(28~70us之间)主机再次读取data线
 ? ?电平,如果为低电平,则为“0”,如果为高电平,则为“1”。
 ? ?3.继续重复上述1,2步骤累计40次。

五. data线拉低50us代表读取结束

六. 校验数据

?

那么我们在程序上应该如何设计呢?(这里我的程序是基于stm32微处理器来讲解的,其他单片机也一样的操作,时序都是相同的)

?

准备阶段我们先要有3个函数,数据引脚初始化函数,还有数据引脚切换输入输出方向的函数。

接下来我们就再写一个函数,来读取dht11数据即可

只要按照上述的时序步骤来操作,就能够读取出DHT11的温湿度值啦。

同时我们要注意,只有读出来的数据校验通过了,我们才使用这一次的温湿度数据。

还有他读取出来40位数据的数据结构: 8位湿度整数数据+8位湿度小数数据+8位温度整数数据+8位温度小数数据+8位校验位

下一篇: PLC、DCS、FCS三大控

上一篇: 电气控制线路图控制原

推荐产品

更多