查看: 1203|回复: 0

[主题月] LPC2378+DHT11温湿度传感器

[复制链接]
  • TA的每日心情
    开心
    2021-12-8 10:59
  • 签到天数: 305 天

    [LV.8]以坛为家I

    7

    主题

    1147

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    13662
    最后登录
    2024-1-4
    发表于 2021-5-21 16:00:07 | 显示全部楼层 |阅读模式
    本帖最后由 dutu-1 于 2021-5-21 16:10 编辑

    1.1温度、湿度的相关概念
      由于温度与湿度不管是从由于温度与湿度不管是从物理量本身还是在实际人们的生活中都有着密切的关系,所以温湿度一体的传感器就会相应产生。 温湿度传感器是指能将温度量和湿度量转换成容易被测量处理的电信号的设备或装置。 市场上的温湿度传感器一般是测量温度量和相对湿度量。
    温度:度量物体冷热的物理量,是国际单位制中7个基本物理量之一。在生产和科学研究中,许多物理现象和化学过程都是在一定的温度下进行的,人们的生活也和他密切相关。

      湿度:湿度很久以前就与生活存在着密切的关系,但用数量来进行表示较为困难。

    日常生活中最常用的表示湿度的物理量是空气的相对湿度。用%RH表示。在物理量的导出上相对湿度与温度有着密切的关系。一定体积的密闭气体,其温度越高相对湿度越低,温度越低,其相对湿度越高。其中涉及到复杂的热力工程学知识。

      有关湿度的一些定义:

    绝对湿度:指单位容积的空气里实际所含的水汽量,一般以克为单位。温度对绝对湿度有着直接影响,一般情况下,温度越高,水蒸气发得越多,绝对湿度就越大;相反,绝对湿度就小。

    饱和湿度:在一定温度下,单位容积,空气中所能容纳的水汽量的最大限度。如果超过这个限度,多余的水蒸气就会凝结,变成水滴,此时的空气湿度变称为饱和湿度。空气的饱和湿度不是固定不变的,它随着温度的变化而变化。温度越高,单位容积空气中能容纳的水蒸气就越多,饱和湿度就越大。

    露点:指含有一定量水蒸气(绝对湿度)的空气,当温度下降到一定程度时所含的水蒸气就会达到饱和状态

    (饱和湿度)并开始液化成水,这种现象叫做凝露。水蒸气开始液化成水时的温度叫做“露点温度”简称“露点”。如果温度继续下降到露点以下,空气中超饱和的水蒸气就会在物体表面上凝结成水滴。此外,风与空气中的温湿度有密切关系,也是影响空气温湿度变化的重要因素之一。

    1.2温度、湿度的测量方法

      湿度测量技术来由已久。随着电子技术的发展,近代测量技术也有了飞速的发展。湿度测量从原理上划分二、三十种之多。对湿度的表示方法有绝对湿度、相对湿度、露点、湿气与干气的比值(重量或体积)等等。但湿度测量始终是世界计量领域中最著名的难题之一。一个看似简单的量值,深究起来,涉及相当复杂的物理—化学理论分析和计算,初涉者可能会忽略在湿度测量中必需注意的许多因素,因而影响[2]的合理使用。
      
      常见的湿度测量方法有:动态法(双压法、双温法、分流法),静态法(饱和盐法、硫酸法),露点法、干湿球法和形形色色的电子式传感器法。
      
      这里双压法、双温法是基于热力学P、V、T平衡原理,平衡时间较长,分流法是基于绝对湿气和绝对干空气的精确混合。由于采用了现代测控手段,这些设备可以做得相当精密,却因设备复杂,昂贵,运作费时费工,主要作为标准计量之用,其测量精度可达±2%RH -±1.5%RH。
      
      静态法中的饱和盐法,是湿度测量中最常见的方法,简单易行。但饱和盐法对液、气两相的平衡要求很严,对环境温度的稳定要求较高。用起来要求等很长时间去平衡,低湿点要求更长。特别在室内湿度和瓶内湿度差值较大时,每次开启都需要平衡6~8小时。
      
      露点法是测量湿空气达到饱和时的温度,是热力学的直接结果,准确度高,测量范围宽。计量用的精密露点仪准确度可达±0.2℃甚至更高。但用现代光—电原理的冷镜式露点仪价格昂贵,常和标准湿度发生器配套使用。

      干湿球法,这是18世纪就发明的测湿方法。历史悠久,使用最普遍。干湿球法是一种间接方法,它用干湿球方程换算出湿度值,而此方程是有条件的:即在湿球附近的风速必需达到2.5m/s以上。普通用的干湿球温度计将此条件简化了,所以其准确度只有5~7%RH,明显低于电子湿度传感器。显然干湿球也不属于静态法,不要简单地认为只要提高两支温度计的测量精度就等于提高了湿度计的测量精度。
      本文想强调两点:第一,由于湿度是温度的函数,温度的变化决定性地影响着湿度的测量结果。无论那种方法,精确地测量和控制温度是第一位的。须知即使是一个隔热良好的恒温恒湿箱,其工作室内的温度也存在一定的梯度。所以此空间内的湿度也难以完全均匀一致。第二,由于原理和方法差异较大,各种测量方法之间难以直接校准和认定,大多只能用间接办法比对。所以在两种测湿方法之间相互校对全湿程(相对湿度0~100%RH)的测量结果,或者要在所有温度范围内校准各点的测量结果,是十分困难的事。例如通风干湿球湿度计要求有规定风速的流动空气,而饱和盐法则要求严格密封,两者无法比对。最好的办法还是按国家对湿度计量器具检定系统(标准)规定的传递方式和检定规程去逐级认定。

    2数字温湿度传感器DHT11

    2.1DHT11简介

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

    11.png

    2.2DHT11的应用领域


      DHT11广泛应用在一下几个方面:暖通、空调、测试及检测设备、汽车数据记录器、消费品自动控制、气象站、家电、湿度调节器、医疗、除湿器
    2.3DHT11的产品特点

    特点
    相对湿度和温度测量
    全部校准,数字输出
    卓越的长期稳定性
    无需额外部件
    超长的信号传输距离
    超低能耗
    4引脚安装
    完全互换

    2.4DHT11的外形尺寸

    22.png

    2.5产品参数
    2.5.1产品电路图

    3.png

    2.5.2DHT11引脚说明

    Pin        名称        注释
    1        VDD        供电 3-5.5VDC
    2        DATA        串行数据,单总线
    3        NC        空脚,请悬空
    4        GND        接地,电源负极

    2.6典型电路
    2.6.1典型应用1
    建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。

    44.png

    2.6.2典型应用2
    微处理器与 DHT11 的连接典型应用电路如图4.5.7所示,DATA 上拉后与微处理器的 I/O 端口相连。
    1.典型应用电路中建议连接线长度短于 20 米时用 5.1K 上拉电阻,大于 20 米时根据实际情况降低上拉电阻的阻值。
    (2) 使用 3.5V 电压供电时连接线长度不得大于 20cm。否则线路压降会导致传感器供电不足,造成测量
    偏差。
    (3) 每次读出的温湿度数值是上一次测量的结果,欲获取实时数据,需连续读取两次,但不建议连续多次 读取传感器,每次读取传感器间隔大于 5 秒即可获得准确的数据。

    55.png

    2.7串行通信说明(单线双向)
    2.7.1单总线说明
    DHT11 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由单总线 完成。设备(主机或从机)通过一个漏枀开路或三态端口连至该数据线,以允许设备在不发送数据时能够 释放总线,而让其它设备使用总线;单总线通常要求外接一个约 5.1kΩ 的上拉电阻,这样,当总线闲置时, 其状态为高电平。由于它们是主从结极,只有主机呼叫从机时,从机才能应答,因此主机访问器件都必须 严格遵循单总线序列,如果出现序列混乱,器件将不响应主机。
    2.7.2单总线传送及数据位定义
    DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。
    数据格式:8bit 湿度整数数据 + 8bit 湿度小数数据+8bit 温度整数数据 + 8bit 温度小数数据+8bit 校验位。
    2.7.3校验位数据定义

    77.png

    66.png

    2.8数据时序图

    88.png

    总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。
    总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。

    99.png

    数字0信号表示方法如图3所示

    10.png

    数字1信号表示方法.如图4.5.10所示

    111.png


    2.9应用信息
    2.9.1工作与贮存条件
    超出建议的工作范围可能导致高达3%RH的临时性漂移信号。返回正常工作条后,传感器会缓慢地向校准状态恢复。在非正常工作条件下长时间使用会加速产品的老化过程。
    2.9.2暴露在化学物质中
    电阻式湿度传感器的感应层会受到化学蒸汽的干扰,化学物质在感应层中的扩散可能导致测量值漂移和灵敏度下降。在一个纯净的环境中,污染物质会缓慢地释放出去。下文所述的恢复处理将加速实现这一过程。高浓度的化学污染会导致传感器感应层的彻底损坏。
    2.9.3恢复处理
    置于极限工作条件下或化学蒸汽中的传感器,通过如下处理程序,可使其恢复到校准时的状态。在50-60℃和< 10%RH的湿度条件下保持2小时(烘干);随后在20-30℃和>70%RH的湿度条件下保持 5小时以上。
    2.9.4温度影响
    气体的相对湿度,在很大程度上依赖于温度。因此在测量湿度时,应尽可能保证湿度传感器在同一温度下工作。如果与释放热量的电子元件共用一个印刷线路板,在安装时应尽可能将DHT11远离电子元件,并安装在热源下方,同时保持外壳的良好通风。为降低热传导,DHT11与印刷电路板的其它部分的铜镀层应尽可能最小,并在两者之间留出一道缝隙。
    2.9.5光线
    长时间暴露在太阳光下或强烈的紫外线辐射中,会使性能降低。
    2.9.6配线注意事项
    DATA信号线材质量会影响通讯距离和通讯质量,推荐使用高质量屏蔽线。
    3.实验内容
    1.实验器材连线
    2222.png
    将温湿度传感模块安装到开发板上,然后用JLINK仿真器的一端用USB接口与电脑相连,一端的20Pin的JTAG引脚与NXP LPC2378节点板的J2相连,并给NXP LPC2378节点板上电
    3333.png
    2.温湿度测量实验
    本实验通过DHT11实验模块测量实验室室内的温湿度,并通过LCD显示在屏幕上,模拟万年历上的温度和湿度功能。
    1. //delay(100000);
    2.     timcount=0;
    3.     //通讯板IO控制引脚设置
    4.     IO1DIR &=~(1<<16); //IOZ/A          输入--接收开关状态信号
    5.     delay(10);
    6. //传感板IO控制引脚设置
    7.     FIO3DIR =0;//初始设置引脚为输入
    8.     if((IO1PIN&(1<<16))==(1<<16))
    9.     {
    10.      PINSEL6=PINSEL6&0xFFFFFFF3;//温湿模块,使用IO_2口作GPIO
    11.      FIO3DIR=FIO3DIR|0x00000002; //温湿模块,设置IO_2连接的引脚为输出
    12.     }

    13.     //传感板类型识别CODE0~CODE3,作为输入端
    14.     FIO2DIR &=~(1<<5);
    15.     FIO2DIR &=~(1<<6);
    16.     FIO2DIR &=~(1<<7);
    17.     FIO2DIR &=~(1<<8);


    18.     Uart1ToUart0=0;

    19. //设置LCD屏幕引脚   
    20.     PINSEL3=PINSEL3 & 0x00000000;
    21.     IO1DIR=IO1DIR|0x05700000;


    22. //初始化串口操作
    23.     ClearRcvBuf();
    24.     UART0_Init();//蓝牙模块设置模式下速率9600,运行模块速率自设


    25.     // 设置串口0,P0.2-TXD0 P0.3-RXD0
    26.     //PINSEL0 = PINSEL0 & 0x00000050;   
    27.     //P0.2 P0.3不使用上拉电阻
    28.     PINMODE0 = PINMODE0 & 0x000000A0;   
    29.     //去除P0.16上拉电阻
    30.     //PINMODE0 |= 0x80000000;
    31.     PINMODE1 |= 0x00000002;

    32. //屏幕初始化   
    33.     RESET0;     //复位                           
    34.     delay(50);
    35.     RESET1;                     
    36.     delay(100);
    37.     lcd_init();
    38.     delay(20);
    39.     LCD_Frame();



    40.     DispAscStr(0,12," ",1,&xpos,&ypos);
    41.     DispChnStr(xpos,ypos,"温湿度模块测试",7,&xpos,&ypos);


    42.     U8T_data_H=0;
    43.     U8T_data_L=0;
    44.     U8RH_data_H=0;
    45.     U8RH_data_L=0;


    46.     PINSEL6 &= ~(3<<2);//P3.1引脚0xFFFFFFF3;//温湿模块,使用IO_2口作GPIO
    47.     PINMODE6 &=~(3<<2);  //使用内部上拉电阻
    48.     FIO3DIR |=(1<<1);
    49.     FIO3PIN |=(1<<1);
    50.     while(1)
    51.     {

    52.         RH_read();
    53.         //在这里只是为了方便观察实验结果            
    54.         DispAscStr(0,40,"AirC:",5,&xpos,&ypos);
    55.         //温度过低,智能开启空调
    56.         if(U8T_data_H<=27)
    57.         {
    58.              DispAscStr(xpos,ypos,"Heating",7,&xpos,&ypos);
    59.         }
    60.         //温度过高时,智能降温
    61.         else if(U8T_data_H>=29)
    62.         {
    63.              DispAscStr(xpos,ypos,"colding",7,&xpos,&ypos);
    64.         }
    65.         //否则,保持停机状态
    66.         else
    67.         {
    68.              DispAscStr(xpos,ypos,"closed",7,&xpos,&ypos);
    69.         }
    70.         //控制空气加湿器
    71.         DispAscStr(0,60,"Humidf:",7,&xpos,&ypos);
    72.         //空气湿度过低时,自动加湿
    73.         if(U8RH_data_H<50)
    74.         {
    75.              DispAscStr(xpos,ypos,"opening",7,&xpos,&ypos);
    76.         }
    77.         else
    78.         {
    79.              DispAscStr(xpos,ypos,"closed",6,&xpos,&ypos);
    80.         }
    81.         DispChnStr(0,100,"温度",2,&xpos,&ypos);
    82.         DispAscStr(xpos,ypos,":+",1,&xpos,&ypos);
    83.         if(U8T_data_H>=10)
    84.         {
    85.             sndBuf[0]=U8T_data_H/10+'0';
    86.             sndBuf[1]=U8T_data_H%10+'0';
    87.             sndBuf[2]='.';
    88.             sndBuf[3]=U8T_data_L/10+'0';
    89.             DispAscStr(xpos,ypos,sndBuf,4,&xpos,&ypos);
    90.             DispChnStr(xpos,ypos,"度",1,&xpos,&ypos);
    91.         }
    92.         else
    93.         {
    94.             sndBuf[0]=U8T_data_H%10+'0';
    95.             sndBuf[1]='.';
    96.             sndBuf[2]=U8T_data_L/10+'0';
    97.             DispAscStr(xpos,ypos,sndBuf,3,&xpos,&ypos);
    98.             DispChnStr(xpos,ypos,"度",1,&xpos,&ypos);
    99.         }

    100.         DispChnStr(0,120,"湿度",2,&xpos,&ypos);
    101.         if(U8RH_data_H>=10)
    102.         {
    103.             sndBuf[0]=':';
    104.             sndBuf[1]=U8RH_data_H/10+'0';
    105.             sndBuf[2]=U8RH_data_H%10+'0';
    106.             sndBuf[3]='.';
    107.             sndBuf[4]=U8RH_data_L/10+'0';
    108.             sndBuf[5]='%';
    109.             sndBuf[6]='R';
    110.             sndBuf[7]='H';
    111.             DispAscStr(xpos,ypos,sndBuf,8,&xpos,&ypos);

    112.         }
    113.         else
    114.         {
    115.             sndBuf[0]=':';
    116.             sndBuf[1]=U8RH_data_H%10+'0';
    117.             sndBuf[2]='.';
    118.             sndBuf[3]=U8RH_data_L/10+'0';
    119.             sndBuf[4]='%';
    120.             sndBuf[5]='R';
    121.             sndBuf[6]='H';
    122.             DispAscStr(xpos,ypos,sndBuf,7,&xpos,&ypos);
    123.         }
    124.         Delay_1us(500000);         
    125.     }
    126.    return 0;
    复制代码


    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-25 14:38 , Processed in 0.120866 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表