• 传感器系列之4.5温湿度传感器


    4.5 温湿数据采集实验

    一、实验目的

    1. 了解智能传感器DHT11的原理与应用
    2. 掌握智能传感器DHT11的编程与操作方法
    3. 理解微处理器与湿度传感器DHT11之间的通讯

    二、实验材料

    1. 具有USB 串口通讯的PC 机1 台
    2. ADS1.2 集成开发软件1 套
    3. J-Link-ARM 仿真器及软件1 套
    4. NXP LPC2378 实验节点板1 个
    5. LCD 显示实验板1 个
    6. 温湿度传感器模块1个

    三、实验原理

      振动传感器实验环境由PC机(安装有Windows XP操作系统、ADS1.2集成开发环境和J-Link-ARM-V410i仿真器)、J-Link-ARM仿真器、NXP LPC2378实验节点板、振动传感器、实验模块和LCD显示实验模块组成,如图4.5.1所示。

      这里写图片描述
    图4.5.1 传感器实验环境

    1.温湿度传感器简介

    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 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。

    这里写图片描述
    图4.5.2 DHT11产品实物图

    2.2DHT11的应用领域

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

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

    2.4DHT11的外形尺寸

    这里写图片描述
    图4.5.3DHT11的外形尺寸图

    2.5产品参数
    2.5.1产品电路图
    这里写图片描述
    图4.5.4 DHT11引脚图

    2.5.2DHT11引脚说明
    表4.5.1 DHT11 引脚说明

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


    2.5.3DHT11特性

    表4.5.2 DHT11特性表

    参数 条件 Min Typ Max 单位
    湿度
    分辨率 1 1 1 %RH
    8 Bit
    重复性 ±1 %RH
    精度 25℃ ±4 %RH
    0-50℃ ±5 %RH
    互换性 可完全互换
    量程范围 0℃ 30 90
    25℃ 20 90 %RH
    50℃ 20 80 %RH
    响应时间 1/e(63%)25℃,1m/s 空气 6 10 15 S
    迟滞 ±1 %RH
    长期稳定性 典型值 ±1 %RH/yr
    温度
    分辨率 1 1 1
    8 8 8 Bit
    重复性 ±1
    精度 ±1 ±2
    量程范围 0 50
    响应时间 1/e(63%) 6 30 S


    2.5.4电气特性
    VDD=5V,T = 25℃,除非特殊标注

    表4.5.3 DHT11电气特性

    参数 条件 min type max 单位
    供电 DC 3 5 5.5 V
    供电电流 测量 0.5 2.5 mA
    平均 0.2 1 mA
    待机 100 150 uA
    采样周期 1

    注:采样周期间隔不得低于1秒钟。

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

    这里写图片描述
    图4.5.5 DHT11典型应用1

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

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

    2.8数据时序图
    这里写图片描述
    图4.5.7 数据时序图

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

    数字0信号表示方法如图3所示
    这里写图片描述
    图4.5.9 数字0信号表示方法

    数字1信号表示方法.如图4.5.10所示
    这里写图片描述

    图4.5.10 数字0信号表示方法
    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.DHT11获取温湿度的流程

    温湿度采集程序的流程图如图4.5.12所示。

    Created with Raphaël 2.1.0初始化驱动DHT11读取温湿度数据数据处理校验错误?数据处理其他应用yesno

    图4.5.12 温度采集及处理过程 (流程图由MD语法画出)

    温度获取的子程序的流程如图4.5.13所示。

    Created with Raphaël 2.1.0开始主机拉低18us总线上拉电阻拉高40us从机是否响应?从机发出80us低电平从机发出80us高电平数据读取数据校验yesno

    图4.5.12 温度采集子函数 (流程图由MD语法画出)

    四、实验内容

    1.实验器材连线

      本实验所使用的振动传感器实物图如图4.5.14所示

    这里写图片描述
    图4.5.14 DHT11模块实物图

      将温湿度传感模块安装到开发板上,然后用JLINK仿真器的一端用USB接口与电脑相连,一端的20Pin的JTAG引脚与NXP LPC2378节点板的J2相连,并给NXP LPC2378节点板上电,如图4.5.15所示。
    这里写图片描述
    图4.5.15 实验电路连接图

    2.温湿度测量实验

      本实验通过DHT11实验模块测量实验室室内的温湿度,并通过LCD显示在屏幕上,模拟万年历上的温度和湿度功能。

    //delay(100000);
        timcount=0; 
        //通讯板IO控制引脚设置
        IO1DIR &=~(1<<16); //IOZ/A          输入--接收开关状态信号
        delay(10);
    //传感板IO控制引脚设置
        FIO3DIR =0;//初始设置引脚为输入
        if((IO1PIN&(1<<16))==(1<<16))
        {
         PINSEL6=PINSEL6&0xFFFFFFF3;//温湿模块,使用IO_2口作GPIO
         FIO3DIR=FIO3DIR|0x00000002; //温湿模块,设置IO_2连接的引脚为输出
        } 
    
        //传感板类型识别CODE0~CODE3,作为输入端
        FIO2DIR &=~(1<<5);
        FIO2DIR &=~(1<<6);
        FIO2DIR &=~(1<<7);
        FIO2DIR &=~(1<<8);
    
    
        Uart1ToUart0=0;
    
    //设置LCD屏幕引脚   
        PINSEL3=PINSEL3 & 0x00000000;
        IO1DIR=IO1DIR|0x05700000;
    
    
    //初始化串口操作
        ClearRcvBuf();
        UART0_Init();//蓝牙模块设置模式下速率9600,运行模块速率自设
    
    
        // 设置串口0,P0.2-TXD0 P0.3-RXD0
        //PINSEL0 = PINSEL0 & 0x00000050;   
        //P0.2 P0.3不使用上拉电阻
        PINMODE0 = PINMODE0 & 0x000000A0;   
        //去除P0.16上拉电阻
        //PINMODE0 |= 0x80000000;
        PINMODE1 |= 0x00000002;
    
    //屏幕初始化    
        RESET0;     //复位                           
        delay(50);
        RESET1;                     
        delay(100); 
        lcd_init();
        delay(20);
        LCD_Frame();
    
    
    
        DispAscStr(0,12," ",1,&xpos,&ypos);
        DispChnStr(xpos,ypos,"温湿度模块测试",7,&xpos,&ypos);
    
    
        U8T_data_H=0;
        U8T_data_L=0;
        U8RH_data_H=0;
        U8RH_data_L=0;
    
    
        PINSEL6 &= ~(3<<2);//P3.1引脚0xFFFFFFF3;//温湿模块,使用IO_2口作GPIO
        PINMODE6 &=~(3<<2);  //使用内部上拉电阻
        FIO3DIR |=(1<<1);
        FIO3PIN |=(1<<1);
        while(1)
        {
    
            RH_read();
            //在这里只是为了方便观察实验结果            
            DispAscStr(0,40,"AirC:",5,&xpos,&ypos);
            //温度过低,智能开启空调
            if(U8T_data_H<=27)
            {
                 DispAscStr(xpos,ypos,"Heating",7,&xpos,&ypos);
            }
            //温度过高时,智能降温
            else if(U8T_data_H>=29)
            {
                 DispAscStr(xpos,ypos,"colding",7,&xpos,&ypos);
            }
            //否则,保持停机状态
            else
            {
                 DispAscStr(xpos,ypos,"closed",7,&xpos,&ypos);
            }
            //控制空气加湿器
            DispAscStr(0,60,"Humidf:",7,&xpos,&ypos);
            //空气湿度过低时,自动加湿
            if(U8RH_data_H<50)
            {
                 DispAscStr(xpos,ypos,"opening",7,&xpos,&ypos);
            }
            else
            {
                 DispAscStr(xpos,ypos,"closed",6,&xpos,&ypos);
            }
            DispChnStr(0,100,"温度",2,&xpos,&ypos);
            DispAscStr(xpos,ypos,":+",1,&xpos,&ypos);
            if(U8T_data_H>=10)
            {
                sndBuf[0]=U8T_data_H/10+'0';
                sndBuf[1]=U8T_data_H%10+'0';
                sndBuf[2]='.';
                sndBuf[3]=U8T_data_L/10+'0';
                DispAscStr(xpos,ypos,sndBuf,4,&xpos,&ypos);
                DispChnStr(xpos,ypos,"度",1,&xpos,&ypos);
            }
            else
            {
                sndBuf[0]=U8T_data_H%10+'0';
                sndBuf[1]='.';
                sndBuf[2]=U8T_data_L/10+'0';
                DispAscStr(xpos,ypos,sndBuf,3,&xpos,&ypos);
                DispChnStr(xpos,ypos,"度",1,&xpos,&ypos);
            }
    
            DispChnStr(0,120,"湿度",2,&xpos,&ypos);
            if(U8RH_data_H>=10)
            {
                sndBuf[0]=':';
                sndBuf[1]=U8RH_data_H/10+'0';
                sndBuf[2]=U8RH_data_H%10+'0';
                sndBuf[3]='.';
                sndBuf[4]=U8RH_data_L/10+'0';
                sndBuf[5]='%';
                sndBuf[6]='R';
                sndBuf[7]='H';
                DispAscStr(xpos,ypos,sndBuf,8,&xpos,&ypos);
    
            }
            else
            {
                sndBuf[0]=':';
                sndBuf[1]=U8RH_data_H%10+'0';
                sndBuf[2]='.';
                sndBuf[3]=U8RH_data_L/10+'0';
                sndBuf[4]='%';
                sndBuf[5]='R';
                sndBuf[6]='H';
                DispAscStr(xpos,ypos,sndBuf,7,&xpos,&ypos);
            }
            Delay_1us(500000);          
        }
       return 0;

    3.自动晾衣架实验

    本实验测量空气中的温度和湿度,当温度和湿度达到临界值时,通知直流电机或者步进电机控制晾衣架开始回收,防止阴雨天气淋湿衣物。

    4.室内空气质量检测

    本实模拟检测实验室内的温度和湿度,当温度过高时开启家电降温功能,当湿度过低时,开启家电增湿功能。

    五、实验思考

    1. 画出实验的流程图?
    2. 列出你身边的含有温湿度传感器的电器。
    3. 调研其他温湿度传感器的信息。
  • 相关阅读:
    排序简介
    排序集锦
    排序图解
    UVA 11809
    uva1588kickdown
    C++中输入输出的重定向
    uva1587BOX
    uva 10340 All in All
    uva 1368 DNA Consensus String
    彻底理解MapReduce shuffle过程原理
  • 原文地址:https://www.cnblogs.com/shugen/p/6863014.html
Copyright © 2020-2023  润新知