精华内容
下载资源
问答
  • DHT11温湿度传感器原理剖析

    千次阅读 2018-09-30 09:54:56
    DHT11功能 对温湿度数据进行采集。 DHT11封装尺寸图 在进行PCB封装设计的时候会用到。 引脚说明 1、VDD 供电 3.3~5.5V DC  2、DATA 串行数据,单总线  3、NC 空脚  4、GND 接地,电源负 温湿度采集...

    视频讲解

    =================视频教程==================

    DHT11功能

    对温湿度数据进行采集。

    DHT11封装尺寸图

    在进行PCB封装设计的时候会用到。

    引脚说明

    1、VDD  供电 3.3~5.5V DC 

    2、DATA 串行数据,单总线 

    3、NC  空脚 

    4、GND  接地,电源负

    温湿度采集范围

    湿度采集范围5%~95%,在环境温度为25℃时,湿度采集精度是±5%。温度采集范围是-20℃~60℃,在环境温度为25℃时,温度采集精度是±2℃。

    电气参数

    DHT11供电电压为3.3V~5.5V,测量时的供电电流为1.0mA,待机时的供电电流为0.06mA。

    典型电路

    传感器的DATA口需要接4.7K的上拉电阻。上拉电阻的作用是在单片机不进行输出以及传感器待机时,使得DATA口为高电平,当总线闲置时, 其状态为高电平。

    数据格式

    8bit 湿度整数数据 + 8bit 湿度小数数据 + 8bit 温度整数数据 + 8bit 温度小数数据 + 8bit 校验位。

    数据读取步骤

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

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

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

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

    AT24C02芯片硬件电路设计原理

    多位数码管动态扫描原理分析

    51单片机程序下载失败原因排查

    发光二极管和数码管有什么关系?你知道吗?

    矩阵键盘电路原理视频解析

    下载关键字说明

    51单片机晶振电路原理

    原文来源于微信公众号电子芯

    展开全文
  • DHT11温湿度传感器模块-教程资料-技小新-技小新-温湿度传感器模块-DHT11-原理图.pdf
  • OpenWrt 26.DHT11温湿度传感器 掌握dht11的驱动程序原理 掌握使用dht11温湿度传感器
  • 详解DHT11温湿度传感器原理及驱动程序

    万次阅读 多人点赞 2019-11-22 00:29:45
    DHT11作为一款低价、入门级的温湿度传感器,常用于我们的单片机设计实例中;它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC...
    一.简介

    DHT11作为一款低价、入门级的温湿度传感器,常用于我们的单片机设计实例中;它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
    DHT11为 4 针单排引脚封装,如下图,采用单线制串行接口,只需加适当的上拉电阻,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
    在这里插入图片描述

    二.传感器参数

    1.DHT11电气参数如下:
    型号 测量范围 测湿精度 测温精度 分辨率 封装
    在这里插入图片描述
    在这里插入图片描述

    2.引脚定义
    在这里插入图片描述
    3.典型电路
    DHT11的供电电压为 3-5.5V,电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。DATA引脚并联一个5K以上的上拉电阻,增强信号的抗干扰额能力。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。
    在这里插入图片描述

    三.传感器控制时序

    1.数据格式
    DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零,操作流程如下:
    一次完整的数据传输为40bit,高位先出。
    数据格式:

    8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和

    8位校验和:

    “8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”相加所得结果的末8位。

    2.控制时序
    要实现对DHT11传感器的控制和数据的读取,需先学会分析DHT11的控制时序。时序主要分为三部分:1:触发DHT11采集数数据;2:读取数字0;3:读取数字1;。
    (1)触发DHT11采集数据
    总线空闲状态为高电平,单片机把总线拉低等待DHT11响应,单片机把总线拉低必须大于18ms,保证DHT11能检测到起始信号。
    当DHT11接收到单片机的开始信号后,等待单片机开始信号结束,然后发送80us低电平响应信号。
    单片机发送开始信号结束后,延时等待20-40us后,切换为输入状态,等待DHT11的80us低电平信号结束,然后判断DHT11是否是否发出 80us 的高电平;如果是,即可开始采集数据。
    在这里插入图片描述
    (2)数字0信号时序
    当DHT11输出数字0时, 单片机读取到的信号为50 us的低电平,之后为26-28 us的高电平。
    在这里插入图片描述
    (3)数字1信号时序
    当DHT11输出数字0时, 单片机读取到的信号为50 us的低电平,之后为70 us的高电平。
    在这里插入图片描述
    由此可知DHT11输出数字0和数字1的区别在于高电平的时间,由此单片机可在读取到高电平后,延时30us后,识别此时总线的电平,高电平为数字1,低电平为数字0;

    (4)总时序图
    用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。
    从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集。当一次完整的采集数据后,DHT11会转换到低速模式。
    在这里插入图片描述

    四.控制程序

    1.单字节采集

    void  COM(void)
    {
    	U8 i;		
    	for(i=0;i<8;i++)	   
    	{
    		U8FLAG=2;	
    		while((!P2_0)&&U8FLAG++);
    		Delay_10us();
    		Delay_10us();
    		Delay_10us();
    		U8temp=0;
    		 if(P2_0)U8temp=1;
    			U8FLAG=2;
     		while((P2_0)&&U8FLAG++);
    		//超时则跳出for循环		  
    		 if(U8FLAG==1)break;
    		//判断数据位是0还是1	 	 
    		// 如果高电平高过预定0高电平值则数据位为 1 	 
    	 	U8comdata<<=1;
    		 U8comdata|=U8temp;        //0
    	 }
    }
    

    2.完整一次数据采集

    void RH(void)
    {
    	//主机拉低18ms 
    	P2_0=0;
    	 Delay(180);
    	 P2_0=1;
     	//总线由上拉电阻拉高 主机延时20us
    	 Delay_10us();
    	 Delay_10us();
    	 Delay_10us();
    	 Delay_10us();
     	//主机设为输入 判断从机响应信号 
    	 P2_0=1;
    	 //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行	  
    	 if(!P2_0)		 //T !	  
    	 {
    	 	U8FLAG=2;
     		//判断从机是否发出 80us 的低电平响应信号是否结束	 
    		 while((!P2_0)&&U8FLAG++);
    	 	U8FLAG=2;
     		//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
    	 	while((P2_0)&&U8FLAG++);
     		//数据接收状态		 
    	 	COM();
    	 	U8RH_data_H_temp=U8comdata;
    	 	COM();
    	 	U8RH_data_L_temp=U8comdata;
    		COM();
    	 	U8T_data_H_temp=U8comdata;
    	 	COM();
    	 	U8T_data_L_temp=U8comdata;
    	 	COM();
    	 	U8checkdata_temp=U8comdata;
    	 	P2_0=1;
    		 //数据校验 
    	 	U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
    		if(U8temp==U8checkdata_temp)
    	 	{
    			U8RH_data_H=U8RH_data_H_temp;
    			U8RH_data_L=U8RH_data_L_temp;
    			U8T_data_H=U8T_data_H_temp;
    			U8T_data_L=U8T_data_L_temp;
    			U8checkdata=U8checkdata_temp;
    	 	}
    	 }/
    }
    

    3.获取DHT11数据

    void GetTemp1(void)
    {
    	//------------------------
    	 //调用温湿度读取子程序 
    		RH();
    	 //串口显示程序 
    	 //--------------------------
    	Send_string("Humidity:");
    		str[0]=U8RH_data_H/10+0x30;
    		str[1]=U8RH_data_H%10+0x30;
    		str[2]='.';
    		str[3]=U8RH_data_L/10+0x30;
    		str[4]=U8RH_data_L%10+0x30;
    		str[5]='\0';
    		Send_string(str);
    		Send_string("%\r\n");
    		
    		Send_string("Temperature:");
    		str[0]=U8T_data_H/10+0x30;
    		str[1]=U8T_data_H%10+0x30;
    		str[2]='.';
    		str[3]=U8T_data_L/10+0x30;
    		str[4]=U8T_data_L%10+0x30;
    		str[5]='\0';
    		Send_string(str);
    		Send_string("℃\r\n");
    }
    

    如需DHT11相关资料, 请关注公众号,首页回复“DHT11”获取资料
    在这里插入图片描述

    展开全文
  • DHT11温湿度传感器原理 DHT原理 代码 #include <wiringPi.h> #include <stdio.h> #include <stdlib.h> typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint...

    DHT11温湿度传感器原理

    DHT原理

    代码

    #include <wiringPi.h>
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef unsigned char uint8;
    typedef unsigned int  uint16;
    typedef unsigned long uint32;
     
    #define HIGH_TIME 32
     
    int pinNumber = 7;
    uint32 databuf;
      
    uint8 readSensorData(void)
    {
        uint8 crc; 
        uint8 i;
      
        pinMode(pinNumber, OUTPUT); // set mode to output
        digitalWrite(pinNumber, 0); // output a high level 
        delay(25);
        digitalWrite(pinNumber, 1); // output a low level 
        pinMode(pinNumber, INPUT); // set mode to input
        pullUpDnControl(pinNumber, PUD_UP);
     
        delayMicroseconds(27);
        if (digitalRead(pinNumber) == 0) //SENSOR ANS
        {
            while (!digitalRead(pinNumber))
                ; //wait to high
     
            for (i = 0; i < 32; i++)
            {
                while (digitalRead(pinNumber))
                    ; //data clock start
                while (!digitalRead(pinNumber))
                    ; //data start
                delayMicroseconds(HIGH_TIME);
                databuf *= 2;
                if (digitalRead(pinNumber) == 1) //1
                {
                    databuf++;
                }
            }
     
            for (i = 0; i < 8; i++)
            {
                while (digitalRead(pinNumber))
                    ; //data clock start
                while (!digitalRead(pinNumber))
                    ; //data start
                delayMicroseconds(HIGH_TIME);
                crc *= 2;  
                if (digitalRead(pinNumber) == 1) //1
                {
                    crc++;
                }
            }
            return 1;
        }
        else
        {
            return 0;
        }
    }
      
    int main(void)
    {
        printf("PIN:%d\n", pinNumber);
     
        if (-1 == wiringPiSetup()) {
            printf("Setup wiringPi failed!");
            return 1;
        }
      
        pinMode(pinNumber, OUTPUT); // set mode to output
        digitalWrite(pinNumber, 1); // output a high level 
     
        printf("Starting...\n");
        while (1) 
        {
            pinMode(pinNumber, OUTPUT); // set mode to output
            digitalWrite(pinNumber, 1); // output a high level 
            delay(3000);
            if (readSensorData())
            {
                printf("Sensor data read ok!\n");
                printf("RH:%d.%d\n", (databuf >> 24) & 0xff, (databuf >> 16) & 0xff); 
                printf("TMP:%d.%d\n", (databuf >> 8) & 0xff, databuf & 0xff);
                databuf = 0;
            }
            else
            {
                printf("Sensor dosent ans!\n");
                databuf = 0;
            }
        }
        return 0;
    }
    
    展开全文
  • DHT11温湿度传感器说明书最新版,描述DHT11温湿度传感器的基本用法,电路图,工作原理,操作指南!
  • DHT11温湿度传感器的C语言程序,附带原理图。
  • 传感器实验——DHT11温湿度传感器8MM发光LED实验所选设备DHT11温湿度模块传感器原理接线说明示例代码:串口显示温湿度 首先来认识一下什么是LED,它的中文名是发光二极管,这是一种将电能转换成光能的固体电致发光...

    温湿度传感器多以温湿度一体式的探头作为测温元件,将温度和湿度信号采集出来,经过稳压滤波、运算放大、非线性校正、V/I转换、恒流及反向保护等电路处理后,转换成与温度和湿度成线性关系的电流信号或电压信号输出,也可以直接通过主控芯片进行485或232等接口输出。


    温湿度传感器实验

    所选设备

    MR开发板
    在这里插入图片描述

    DHT11温湿度模块

    在这里插入图片描述
    在这里插入图片描述

    模块介绍:

    • 可以检测周围环境的湿度和温度
    • 传感器采用DHT11
    • 湿度测量范围:20%-95%(0度-50度范围)
    • 湿度测量误差:±5%
    • 温度测量范围:0度-50度 温度测量误差:±2度
    • 工作电压3.3V-5V
    • 输出形式 数字输出
    • 设有固定螺栓孔,方便安装
    • 小板PCB尺寸:3.2cm * 1.4cm
    • 电源指示灯(红色)

    传感器原理

    DHT11的供电电压为 3-5.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。
    DATA 用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次 通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数
    部分用于以后扩展,现读出为零.操作流程如下: 一次完整的数据传输为40bit,高位先出。
    数据格式:8bit湿度整数数据+8bit湿度小数数据
    +8bi温度整数数据+8bit温度小数数据
    +8bit校验和 数据传送正确时校验和数据等于“ 8bit 湿度整数数据 +8bit 湿度小数数据
    +8bi 温度整数数据 +8bit 温度小数数据 ”所得结果的末8位。

    简单了解一下即可,非专业不用深入。

    基本用法

    from pyb import Pin
    from dht import DHT11      #导入模块
    
    dt.measure()         #温湿度采集
    dt.temperature()  	 #获取温度值
    dt.humidity()     	 #获取湿度值
    

    接线说明

    开发板 DHT11温湿度传感器
    5V VCC
    GND GND
    B0 DATA

    示例代码:串口显示温湿度

    Created with Raphaël 2.2.0导入模块设置GPIO获取温湿度在串口工具中显示所或得的温湿度yes
    #引入相关模块
    from pyb import delay,Pin
    from dht import DHT11
    
    #创建DTH11对象dt
    dt=DHT11(Pin('B0'))
    delay(1000)          #首次启动停顿1秒然传感器稳定
    
    while True:
        dt.measure()         #温湿度采集
        tem=dt.temperature()  #获取温度值
        hum=dt.humidity()     #获取湿度值
        print('temperature:'+ str(tem))
        print('humidity:'+ str(hum))
        delay(1000)             
    

    效果:串口工具打印温湿度,需要注意的是DHT11传感器误差较大,需要精准测温的不建议使用
    在这里插入图片描述
    部分开发板没有这个文件,如果缺少此文件,可以复制一下
    dht.py

    # DHT11/DHT22 driver for MicroPython on ESP8266
    # MIT license; Copyright (c) 2016 Damien P. George
    
    try:
        from esp import dht_readinto
    except:
        from pyb import dht_readinto
    
    class DHTBase:
        def __init__(self, pin):
            self.pin = pin
            self.buf = bytearray(5)
    
        def measure(self):
            buf = self.buf
            dht_readinto(self.pin, buf)
            if (buf[0] + buf[1] + buf[2] + buf[3]) & 0xff != buf[4]:
                raise Exception("checksum error")
    
    class DHT11(DHTBase):
        def humidity(self):
            return self.buf[0]
    
        def temperature(self):
            return self.buf[2]
    
    class DHT22(DHTBase):
        def humidity(self):
            return (self.buf[0] << 8 | self.buf[1]) * 0.1
    
        def temperature(self):
            t = ((self.buf[2] & 0x7f) << 8 | self.buf[3]) * 0.1
            if self.buf[2] & 0x80:
                t = -t
            return t
    
    展开全文
  • 芯片手册: https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf C语言读取五个数值
  • DHT11温湿度传感器(详细)

    万次阅读 多人点赞 2020-09-12 00:51:49
    DHT11温度传感器——使用LCD1602显示 ...试环境温湿度数据,并记录数据,同时DHT11的DATA数据线由上拉电阻拉高一直保持高电平; 此时DHT11的DATA引脚处于输入状态,时刻检测外部信号。 步骤二: 微处理器的I/O
  • dht11使用例程,附带传感器使用说明,原理图。使用时只需做相应修改即可。
  • 基于STM32F103ZET DHT11 温湿度传感器程序,DHT11 数字湿温度传感器的原理和应用范例 ,概述:DHT11 是广州奥松有限公司生产的一款湿温度一体化的数字传感器。 该传感器包括一个电阻式测湿元件和一个 NTC 测温元件,...
  • dht11温湿度传感器

    2011-04-27 16:54:23
    温湿度传感器资料,加C程序,原理图,结构图,时序图。
  • DHT11温湿度传感器

    千次阅读 2017-10-30 20:01:03
    数据传输使用串行接口(单线双向)DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次 通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数 部分用于以后扩展,现读出为零.操作...
  • 使用ESP8266_NON-OS_SDK开发——读取DHT11温湿度传感器 本文的目的在于实现在以ESP8266_NON-OS_SDK为基础的ESP8266开发中快速读取DHT11温湿度传感器的功能: 原理说明 DHT11 传感器采用简化的单总线通信。单总线即...
  • dht11温湿度的工作原理,以及时序的实现,我这里就不讲了,因为我录制有视频,如果大家舍不得钱我也没办法,写这个专栏,就是Python部分差不多花了我两个工作日,录制视频的工作量就更大了。 DHT11温湿度视频 13.1 ...
  • 第一步:传感器上电后(DHT11上电后要等到1秒越过不稳定状态,在此期间不能发送任何指令),测试环境温湿度数据,开始记录数据,同时DHT11的data数据线由上拉电阻拉高一直保持高电平;此时DHT11的data引脚处于输入...
  • 温湿度DHT11的测量程序,包括传感器的说明书与测量原理图,数码管同时显示温度和湿度~!
  • DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。 本文使用X-CTR100控制器驱动DHT11传感器,采集温度、湿度数据。 原理 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复....
  • 温湿度传感器实时获取环境温度,当温度高于30℃,蜂鸣器发出警报;低于30℃,蜂鸣器不发出警报。 理论学习 温度传感器是基于热敏电阻(阻值随外界环境温度变化而变化)的工作原理,能够实时感知周边环境温度的变化,...
  • 使用树莓派打造一个属于自己的智能家居(一)—DHT11温湿度传感器的使用 DHT11温湿度传感器的介绍 它的工作原理为: 主机给DHT11传感器发送一个启动信号,进行一系列交互后,传感器发送40位二进制数字,其中前8位...
  • DHT11数字温湿度传感器 是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC...
  • 1、DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传 感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC...
  • 在上一篇《DHT11温湿度传感器通信(上)》中,我们介绍了DHT11的通信原理及实现通信的底层代码,当时由于没有封装成托管代码库,所以应用开发的用户还不能直接获取DHT11的数据。不过今天这个工作我们已经完成,用户...
  • 文章目录前言一、原理图二、由原理图得到的信息三、DHT11初始化四、DHT11在主函数的应用方法 前言 本文是基于嵌入式开发板CT117E,stm32f103RBT6。 一、原理图 二、由原理图得到的信息 只有一个口 HDQ。 与PA7连接...
  • 树莓派的GPIO - DHT11温湿度传感器

    千次阅读 2015-04-11 21:21:40
    所以,网上搜索了一下,一般用DHT11电子积木,十分简单方便。电路原理图如下所示, 为了和Arduino上面的例子保持一致,采用了同样的电路图接法。 引脚1接在3.3V电源上, 引脚2接在GPIO7 (也就是树莓派的PIN 7,...
  • 本人用的MSP430开发板,1602,SD卡,时钟都是开发板自带的,已经上传原理图,在程序文件里面,读者可自行查看。程序写的不规范,只是应付毕业设计,欢迎指正。

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 147
精华内容 58
关键字:

dht11温湿度传感器原理