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

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

湿度传感器实验:基于STM32 -DTH11 数字温湿度传感器实验

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


湿度传感器实验:基于STM32 -DTH11 数字<a title=温湿度传感器实验 第1张" title="湿度传感器实验:基于STM32 -DTH11 数字温湿度传感器实验 第1张-传感器知识网"/>

湿度传感器实验:基于STM32 -DTH11 数字温湿度传感器实验

基于STM32 -DHT11 数字温湿度传感器实验

实验目的:
这个实验的目的使用 STM32来读取DHT11 数字温湿度传感器,从而得到环境温度和湿度等信息,并把从温湿度值显示在串口打印助手上。

实验原理
DHT11 是一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个 NTC测温元件,并与一个高性能 8 位单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。 DHT11 与单片机之间能采用简单的单总线进行通信,仅仅需要一个 I/O 口。传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。 DHT11 功耗很低, 5V 电源电压下,工作平均最大电流 0.5mA。
DHT11 的技术参数如下:
? 工作电压范围: 3.3V-5.5V
? 工作电流 :平均 0.5mA
? 输出:单总线数字信号
? 测量范围: 湿度 20~90%RH,温度 0~50℃
? 精度 :湿度±5%,温度±2℃
? 分辨率 :湿度 1%,温度 1℃
虽然 DHT11 与 DS18B20 类似,都是单总线访问,但是 DHT11 的访问,相对 DS18B20 来说要简单很多。
DHT11 数字湿温度传感器采用单总线数据格式。即,单个数据引脚端口完成输入输出双向传输。其数据包由 5Byte( 40Bit)组成。数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。 DHT11 的数据格式为: 8bit 湿度整数数据+8bit 湿度小数数据+8bit 温度整数数据+8bit 温度小数数据+8bit 校验和。其中校验和数据为前四个字节相加。
传感器数据输出的是未编码的二进制数据。数据(湿度、温度、整数、小数)之间应该分开处理。例如,某次从 DHT11 读到的数据如图所示:

上图某次读取到 DHT11 的数据
由以上数据就可得到湿度和温度的值,计算方法:
湿度= byte4 . byte3=45.0 (%RH)
温度= byte2 . byte1=28.0 ( ℃)
校验= byte4+ byte3+ byte2+ byte1=73(=湿度+温度)(校验正确)
可以看出,DHT11 的数据格式是十分简单的,DHT11 和 MCU 的一次通信最大为 3ms 左右,建议主机连续读取时间间隔不要小于 100ms。
下面,我们介绍一下 DHT11 的传输时序。 DHT11 的数据发送流程如图所示:
图DHT11 数据发送流程
首先主机发送开始信号,即:拉低数据线,保持 t1(至少 18ms)时间,然后拉高数据线 t2( 20~40us)时间,然后读取 DHT11 的响应,正常的话, DHT11 会拉低数据线,保持 t3 ( 40~50us)时间,作为响应信号,然后 DHT11 拉高数据线,保持 t4( 40~50us)时间后,开始输出数据。
DHT11 输出数字‘ 0’的时序如图所示:
DHT11 输出数字‘ 1’的时序如图所示:
通过以上了解,我们就可以通过 STM32 来实现对 DHT11 的读取了。 DHT11 的介绍就到这里,更详细的介绍,请参考 DHT11 的数据手册

软件设计部分:打开DTH11温度串口实验例程,可以看见user目录下有bsp_usart1.c与main.c,bsp_dht11.c.这几个部分的代码这个实验必备的。
代码部分:
打开 DHT11 数字温湿度传感器实验工程可以发现,我们在工程中添加了 bsp_dht11.c 文件和
dht11.h 文件,所有 DHT11 相关的驱动代码和定义都在这两个文件中,打开 bsp_dht11.c 代码如下:这个文件下的各个函数都有注释说明。简单易懂:

这部分代码通过函数 DHT11_Init 初始化传感器。

然后通过上述操作时序来读取 DHT11 的温湿度值的。

这部分代码通过Read_DHT11函数读取温湿度数据。

最后通过主函数调用串口打印函数,通过串口打印数据

文章中源码请参考:
湿度传感器实验:基于STM32 -DTH11 数字温湿度传感器实验  第2张

湿度传感器实验:树莓派基础实验27:温湿度传感器DHT11 实验

一、介绍
数字温湿度传感器DHT11是一种复合传感器,包含温度和湿度的校准数字信号输出。采用专用数字模块采集技术和温湿度传感技术,确保产品具有高可靠性和优异的长期稳定性。
该传感器包含一个电阻湿感元件和一个NTC温度测量设备,并与一个高性能8位微控制器连接。其精度:湿度+-5%RH, 温度+-2℃。量程:湿度20-90%RH, 温度0~50℃。采样周期:大于等于1秒/次。
在我们刚开始练习写传感器的时序时,DHT11非常适合新手入门练习如何写时序。
二、组件
★Raspberry Pi主板*1
★树莓派电源*1
★40P软排线*1
★湿度传感器DHT11模块*1
★面包板*1
★跳线若干
三、实验原理
温湿度传感器
温湿度传感器模块原理图
DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器。它具有超小体积、极低功耗的特点。它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上。非常适用于对精度和实时性要求不高的温湿度测量场合。
DHT11硬件原理图
数据总线DATA使用上拉电阻拉高,因此总线空闲时为高电平。上拉电阻阻值推荐范围:4.7K~5.1K。必要时在VDD和GND之间并一个100nF的去耦电容。
1. DHT11的数据格式:
DATA 用于树莓派与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,操作流程如下:
DHT11用的是单总线协议,一次传送40位的数据。     注意了,看到这一句话,也就是说我们每次读取DHT11的数据时,都要一次性读取40次,也就是读取40位。并且数据前16位是与湿度相关的,中间16位是与温度相关的,最后八位是用来校验的,当我们校验成功后,证明这一次的温湿度结果正确的,我们的树莓派就可以使用这个温湿度值;如果校验不通过,那么就代表我们这次读取出来的温湿度值,是错误的(也许是我们的时序错误了,也许是传感器的问题),我们不进行采样。
DHT11数据格式示例
2. DHT11的工作原理:
数据时序图
DHT11的总体通信流程:
第一步:主机(树莓派)先发送开始信号,从机(DHT11)会返回一个相应信号进行应答。
第二步:主机信号线拉高准备接收数据。
第三步:开始接收数据(一次接收40位)。
DHT11使用单一总线通信,即DATA引脚和单片机连接的线。总线总是处于空闲状态和通信状态这个2个状态之间。当树莓派没有与DHT11交互时,总线处于空闲状态,在上拉电阻的作用下,处于高电平状态。
当单片机和DHT11正在通信时,总线处于通信状态,一次完整的通信过程如下:
第一步:DHT11 上电后(DHT11 上电后要等待 1秒以越过不稳定状态在此期间不能发送任何指令),测试环境温湿度数据,幵记录数据,同时 DHT11 的 DATA 数据线由上拉电阻拉高一直保持高电;此时 DHT11 的DATA 引脚处于输入状态,时刻检测外部信号。
第二步:微处理器的 I/O 设置为输出,同时输出低电平,且低电平保持时间不能小于 18ms,然后输出高电平20~40us,再树莓派的 I/O设置为输入状态,等待 DHT11 作出回答信号,发送信号如图所示:
主机发送起始信号
第三步:DHT11 的 DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后 DHT11 的 DATA引脚处于输出状态,输出 80 微秒的低电平作为应答信号,紧接着输出 80 微秒的高电平通知外设准备接收数据,树莓派的 I/O 此时处于输入状态,检测到 I/O 有低电平(DHT11 回应信号)后,等待 80 微秒的高电平后的数据接收,发送信号如图所示:
DHT11应答信号
第四步:由 DHT11 的 DATA 引脚输出 40 位数据,树莓派根据 I/O 电平的变化接收 40 位数据,位数据“0”的格式为: 50 微秒的低电平和 26-28 微秒的高电平;位数据“1”的格式为: 50 微秒的低电平加 70微秒的高电平。位数据“0”、“1”格式信号如图所示:
位数据“0”、“1”的格式
我们可以把这一段的时序理解为,DHT11先把数据线拉低50us,然后我们再去对比高电平持续的时间,如果持续时间较短,则为位“0”;如果持续时间较长,则为位“1”。
结束信号:DHT11 的 DATA 引脚输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随之变为高电平。但 DHT11 内部重测环境温湿度数据,幵记录数据,等待外部信号的到来。
注意事项:
1、DHT11上电后,要等待 1秒 以越过不稳定状态,在此期间不能发送任何指令。
2、DHT11属于低速传感器,两次通信请求之间的间隔时间不能太短,一般来说要不能低于1秒。
对DHT11的时序做一个总结:
一. 主机(单片机)发送起始信号:
1.主机先拉高data。
2.拉低data延迟18ms。
3.拉高data(单片机引脚设置为输入)。
二. 从机(DHT11)收到起始信号后进行应答:
从机拉低data,主机读取到data线被拉低持续80us后从机拉高data线, 持续80us,直到高电平结束,意味着主机可以开始接受数据。
三. 主机开始接收数据:
1.主机先把data线拉高(io设置为输入)。
2.从机把data线拉低,主机读取data线电平,直到低电平结束(大约50us)从机拉高data线后,对比高电平持续的时间,如果持续时间较短,则为位“0”;如果持续时间较长时,则为位“1”。
3.继续重复上述1,2步骤累计40次。
四. data线拉低50us代表读取结束
五. 校验数据
更多资料请参考DHT11 官方手册:
四、实验步骤
第1步:连接电路。
树莓派
T型转接板
温湿度传感器
GPIO0
G17
OUT(DATA)
5V
5V
VCC
GND
GND
GND
温湿度传感器DHT11 实验电路图
温湿度传感器DHT11 实验实物接线图
第2步:编写控制程序。将提取的二进制数据转化为十进制数据,校验后打印出来。
本次编程中将用到NumPy(Numerical Python)扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。详情参考NumPy 教程:
为便于对比DHT11高电平持续的时间,我们设置了一个计数器参数k,如果持续时间较短,则k值较小;如果持续时间较长时,则k值较大。当然,也可以使用时间函数直接对比时间长短,但是程序相对要复杂一些。比如使用GPIO.add_event_detect()和time.time()函数。
执行结果截图
从上面的截图中可以看出,高电平持续的时间较短,26-28 微秒时,参数k等于5或6;高电平持续的时间较长,70 微秒时,参数k等于17或18。
湿度传感器实验:基于STM32 -DTH11 数字温湿度传感器实验  第3张

湿度传感器实验:正点原子开拓者FPGA开发板资料连载第二十三章TFT-LCD字符显示

上一章,我们介绍了数字温度传感器 DS18B20 的使用,本章我们将介绍数字温湿度
传感器DHT11 的使用,该传感器不但能测温度,还能测湿度。本章我们将向大家介
绍如何使用 STM32F1来读取 DHT11 数字温湿度传感器,从而得到环境温度和湿度
等信息,并把从温湿度值显示在TFTLCD 模块上。本章分为如下几个部分:
36.1 DHT11 简介
36.2 硬件设计
36.3 软件设计
36.4 下载验证
36.1 DHT11 简介
DHT11 是一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个 NTC
测温元件,并与一个高性能 8 位单片机相连接。通过单片机等微处理器简单的电路连接就能够
实时的采集本地湿度和温度。DHT11 与单片机之间能采用简单的单总线进行通信,仅仅需要一
个 I/O 口。传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机,数据采用校验和方式
进行校验,有效的保证数据传输的准确性。DHT11 功耗很低,5V 电源电压下,工作平均最大电流 0.5mA。
DHT11 的技术参数如下:
工作电压范围:3.3V-5.5V
工作电流 :平均 0.5mA
输出:单总线数字信号
测量范围:湿度 20~90%RH,温度 0~50℃
精度 :湿度±5%,温度±2℃
分辨率 :湿度 1%,温度 1℃
DHT11 的管脚排列如图 36.1.1 所示:
图 36.1.1 DHT11 管脚排列图
虽然 DHT11 与 DS18B20 类似,都是单总线访问,但是 DHT11 的访问,相对 DS18B20 来
说要简单很多。下面我们先来看看 DHT11 的数据结构。
DHT11 数字湿温度传感器采用单总线数据格式。即,单个数据引脚端口完成输入输出双向
传输。其数据包由 5Byte(40Bit)组成。数据分小数部分和整数部分,一次完整的数据传输为
40bit,高位先出。DHT11 的数据格式为:8bit 湿度整数数据+8bit 湿度小数数据+8bit 温度整数
数据+8bit 温度小数数据+8bit 校验和。其中校验和数据为前四个字节相加。
传感器数据输出的是未编码的二进制数据。数据(湿度、温度、整数、小数)之间应该分开
处理。例如,某次从 DHT11 读到的数据如图 36.1.2 所示:
图 36.1.2 某次读取到 DHT11 的数据
由以上数据就可得到湿度和温度的值,计算方法:
湿度=byte4 . byte3=45.0 (%RH)
温度=byte2 . byte1=28.0 ( ℃)
校验=byte4+ byte3+ byte2+ byte1=73(=湿度+温度)(校验正确)
可以看出,DHT11的数据格式是十分简单的,DHT11和 MCU的一次通信最大为 3ms 左右,
建议主机连续读取时间间隔不要小于 100ms。
下面,我们介绍一下 DHT11 的传输时序。DHT11 的数据发送流程如图 36.1.3 所示:
图 36.1.3 DHT11 数据发送流程
首先主机发送开始信号,即:拉低数据线,保持 t1(至少 18ms)时间,然后拉高数据线 t2
(20~40us)时间,然后读取 DHT11 的响应,正常的话,DHT11 会拉低数据线,保持 t3(40~50us)
时间,作为响应信号,然后 DHT11 拉高数据线,保持 t4(40~50us)时间后,开始输出数据。
DHT11 输出数字‘0’的时序如图 36.1.4 所示:
图 36.1.4 DHT11 数字‘0’时序
DHT11 输出数字‘1’的时序如图 36.1.5 所示:
图 36.1.5 DHT11 数字‘1’时序
通过以上了解,我们就可以通过 STM32F1 来实现对 DHT11 的读取了。DHT11 的介绍就到这里,更详细的介绍,请参考 DHT11 的数据手册。
36.2 硬件设计
由于开发板上标准配置是没有 DHT11 这个传感器的,只有接口,所以要做本章的实验,
大家必须找一个 DHT11 插在预留的 DHT11 接口上。
本章实验功能简介:开机的时候先检测是否有 DHT11 存在,如果没有,则提示错误。只
有在检测到 DHT11 之后才开始读取温湿度值,并显示在 LCD 上,如果发现了 DHT11,则程
序每隔 100ms 左右读取一次数据,并把温湿度显示在 LCD 上。同样我们也是用 DS0 来指示程
序正在运行。
所要用到的硬件资源如下:
1) 指示灯 DS0
2) TFTLCD 模块
3) DHT11 温湿度传感器
这些我们都已经介绍过了,DHT11 和 DS18B20 的接口是共用一个的,不过 DHT11 有 4 条
腿,需要把 U6 的 4 个接口都用上,将 DHT11 传感器插入到这个上面就可以通过 STM32F1 来
读取温湿度值了。连接示意图如图 36.2.1 所示:
图 36.2.1 DHT11 连接示意图
这里要注意,将 DHT11 贴有字的一面朝内,而有很多孔的一面(网面)朝外,然后然后插入
如图所示的四个孔内就可以了。
36.3 软件设计
打开 DHT11 数字温湿度传感器实验工程可以发现,我们在工程中添加了 dht11.c 文件和
dht11.h 文件,所有 DHT11 相关的驱动代码和定义都在这两个文件中。
打开 dht11.c 代码如下:
//复位 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
}
//等待 DHT11 的回应
//返回 1:未检测到 DHT11 的存在
//返回 0:存在
u8 DHT11_Check(void)
u8 retry=0;
DHT11_IO_IN(); //SET INPUT
while (DHT11_DQ_IN&&retry

湿度传感器实验:湿度传感器实验.

湿度传感器实验

一、实验目的:
了解温度传感器的工作原理及特性。

二、基本原理:
本实验采用的是高分子薄膜湿敏电阻。感测机理是:在绝
缘基板上溅射了一层高分子电解质湿敏膜,其阻值的对数与相对湿度成近似的
线性关系,通过电路予以修正后,可得出与相对温度成线性关系的电信号。

三、需用器件与单元:
±
5V
直流电源、湿敏实验套件、数字电压表。

四、实验步骤:

注:本实验的湿度传感器已由内部放大器进行放大、校正、输出的电压信

号与相对湿度成近似线性关系,标定在:

1
、将主控箱±
5V
接入传感器输入端,输出端与数字电压表相接,电压表

2V
档。

2
、在温度容器中,倒入少许温水,使水份能够蒸发。

3
、将传感器置于容器上方,观察数字电压表变化。

4
、待数字稍稳定后,记录下读数,根据传感器标定值,得出容器中的相对
湿度。

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

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

推荐产品

更多