一种基于DHT11的数字温湿度计及设计方法与流程

文档序号:16641193发布日期:2019-01-16 07:34阅读:1744来源:国知局
一种基于DHT11的数字温湿度计及设计方法与流程

本发明属于测量技术领域,尤其涉及一种基于dht11的数字温湿度计及设计方法。



背景技术:

在日常生活中,人们对生活环境中温湿度的要求会因季节的改变而发生改变。其中,室内温湿度在冬天温度为18~25℃,湿度为30%~80%rh;夏天温度为23~28℃,湿度为30%~60%rh,若在装有空调的室内,室温为19~24℃,湿度为40%~50%rh时,即可满足人们对舒适度的要求。

温湿度传感器的研究与发展来自于各个国家不断的创新与钻研,其发展大致经历了三个阶段:a传统分立式(如热电偶):通过电量之间的转化来测量室内环境中温湿度数据,它可对被测环境直接进行测量,精度较高。b模拟集成型(如硅半导体):通过集成技术完成传感器的数据采集与模拟信号输出功能,远距离测量精度较高。c智能型(如dht11):通过复合型传感器可同时对温度和相对湿度进行采集,并以数字量的形式输出供cpu使用。但是数字温湿度计的功能较单一。



技术实现要素:

本发明的目的是提供一种采用51系列单片机作为系统的控制核心,结合外部电路块以及软件程序来实现温度显示精度为±2℃,湿度显示精度±5%rh;并能显示实时时间,对温湿度范围的进行设置的装置。

为实现上述目的,本发明采用的技术方案是:一种基于dht11的数字温湿度计,包括cpu模块、温湿度采集模块、电源模块、实时时钟模块、显示模块、按键模块、报警模块与存储模块,cpu模块分别连接显示模块、温湿度采集模块、存储模块、实时时钟模块、按键模块和报警模块,电源模块为cpu模块和其他模块供电;cpu模块包括mcu电路、时钟电路以及复位电路;cpu模块用于接收温湿度采集模块的数据并进行处理,接收实时时钟模块产生的实时时间数据并进行处理,读取按键模块所设置的温湿度范围数据,对环境温湿度和设置的温湿度范围进行比较,将温湿度数据、温湿度范围、实时时间、报警状态送显示模块显示。

在上述的基于dht11的数字温湿度计中,mcu电路包括stc12c5a60s2单片机、2×20个排针、1个排阻r1以及电阻r2,stc12c5a60s2单片机p0口外接排阻r1,用于增加p0口的驱动能力;stc12c5a60s2单片机ea端口外接r2;stc12c5a60s2单片机40个引脚均连有排针,排针用于温湿度采集模块和实时时钟模块之间的信号传输;其中,r2选用10k电阻;

时钟电路包括11.0592mhz晶振y1和瓷片电容c2、c3,时钟电路与stc12c5a60s2单片机构成一个稳定的自激振荡器;晶振y1的两端分别接stc12c5a60s2单片机的18口和19口,且晶振y1尽可能紧贴stc12c5a60s2单片机;瓷片电容c2、c3用于对晶振y1进行微调,减小晶振的频差使时钟电路输出的频率达到晶振标称值;其中,瓷片电容c2、c3均选用30pf;

复位电路包括四脚按键s1、电解电容c4、定值电阻r3和定值电阻r4;定值电阻r4与电解电容c4构成rc充电电路,同时定值电阻r4作为限流电阻保护电容;其中,电解电容c4选用10uf电容;定值电阻r3选用33ω电阻,定值电阻r4选用10kω电阻。

在上述的基于dht11的数字温湿度计中,温湿度采集模块包括dht11温湿度传感器和电阻r7;dht11温湿度传感器数据引脚data与电源引脚vcc之间接入电阻r7,用于将数据端拉至高电平;其中,电阻r7选用4.7kω电阻。

在上述的基于dht11的数字温湿度计中,电源模块采用usb接口接5v直流电源直接供电,usb接口的电源正极与电源负极分别接入六脚自锁开关s7的两个常开接口并通过发光二极管d1来显示电源供电情况;六脚自锁开关s7的常闭端口为1和5与2和4两组,将通过usb接口的电源正极与电源负极分别连六脚自锁开关s7的1和5与2和4;同时在电源正极与负极之间接入电阻r8和发光二极管d1,其中电阻r8用于发光二极管d1的过流保护;其中,usb接口的输出电压和电流分别为5v和500ma。

在上述的基于dht11的数字温湿度计中,实时时钟模块包括ds1302时钟芯片和32.768khz晶振y2,并采用电源模块和后备电源配合供电;其中,正常工作时,采用5v直流电源供电,掉电时,采用后备电源供电;后备电源选用纽扣电池;ds1302时钟芯片使用ce、i/o和sclk3根通信引脚,其中ce为使能引脚,sclk为单方向时钟引脚,i/o为双向流通的数据引脚。

在上述的基于dht11的数字温湿度计中,显示模块包括lcd1604液晶与103电位器r5;lcd1604液晶采用5v直流电源直接供电,并通过调节电位器r5的阻值来调节液晶屏的对比度;其中,电位器r5为10kω电位器。

在上述的基于dht11的数字温湿度计中,按键模块包括4个独立按键,从左至右依次为s2温度范围设置键、s3湿度范围设置键、s4加设置键和s5减设置键,s6报警状态设置键。

在上述的基于dht11的数字温湿度计中,报警模块包括有源蜂鸣器bell、发光二极管d2和发光二极管d3;其中有源蜂鸣器bell的工作电压为+5v直流电源,在报警模式下,当环境温湿度超出设置范围时,p2.5引脚为低电平,三极管q1导通,有源蜂鸣器bell报警,相应的报警指示灯点亮;若环境温湿度适宜或非报警模式下,p2.5引脚为高电平则不会触发报警;r6为限流电阻,用于三极管q1的过流保护;r9、r10均为限流电阻,用于发光二极管d3、d2的过流保护。

在上述的基于dht11的数字温湿度计中,存储模块采用24c02掉电保存芯片作为存储模块的核心,采用5v直流电源供电,24c02掉电保存芯片的a0、a1和a2为空引脚直接接地,写保护端口wp接地,允许数据正常读写操作。

一种基于dht11的数字温湿度计的设计方法,包括以下步骤:开机后,usb接+5v电源对数字温湿度计直接供电;dht11温湿度传感器采集环境中的温湿度数据,并经过dht11温湿度传感器数据端data将所采集到数据送入stc12c5a60s2单片机进行处理;通过s2温度范围设置键、s3湿度范围设置键和s6报警状态设置键分别对温湿度的范围和报警状态进行设置;通过ds1302时钟芯片进行实时时间设定;通过24c02掉电保存芯片保存数据;通过液晶lcd1604显示数据;stc12c5a60s2单片机用于接收dht11温湿度传感器的数据并进行处理,接收ds1302时钟芯片产生的实时时间数据并进行处理,读取按键模块所设置的温湿度范围数据,对环境温湿度和设置的温湿度范围进行比较,将温湿度数据、温湿度范围、实时时间、报警状态送显示模块显示;具体步骤如下:

步骤1、首先stc12c5a60s2单片机在数据线data上发送开始信号,当dht11温湿度传感器和cpu模块通信建立成功后将数据线拉高;延时后将采集的数据发送给cpu模块,当数据发送结束后,释放总线;dht11温湿度传感器数据总线在其空闲时为高电平,当通信开始时cpu模块将数据总线拉低至少18ms之后释放;在主机拉高20~40us之后开始检测dht11温湿度传感器响应信号80us的低电平;将温湿度传感器dht11拉至高电平80us后开始进行数据传输;在80us高电平之后dht11温湿度传感器开始发送数据,每一个bit数据位均由一个低电平时隙与一个高电平组成,其中低电平时隙为一个50us的低电平,通过高电平的长短来确定数据位是0还是1,其中,长为1,短为0;每次传输40bit数据,当最后一个bit数据传输完毕后,dht11温湿度传感器拉低总线50us用于释放总线,之后由上拉电阻将总线拉高进入空闲状态为下一组数据传输做准备;

步骤2、ds1302时钟芯片在进行读写操作时读和写均分为两步,其中写操作为:第一步写寄存器地址,第二步写入初值;读寄存器操作为:第一步读寄存器地址,第二步读取数值;首先将使能引脚ce置高,写操作的时序为:第一步写所要指向的寄存器地址,第二步在第一步设置的寄存器中写入初值,当sclk由低电平变为高电平时数据被写入ds1302中;读操作的时序为:第一步写所要指向的寄存器地址,第二步读由写操作在第一步设置的寄存器写入的值,当sclk由高电平变为低电平时数据读取到stc12c5a60s2单片机中;

步骤3、lcd1604液晶使用rs、r/w、e与db0~7来进行数据通信,其中rs为寄存器选择信号可进行读写命令l或读写数据h,r/w为读/写信号,en为使能信号,且下降沿触发,db为数据引脚用于数据传输;

步骤4、24c02掉电保存芯片使用scl、sda与i2c总线协议来进行数据通信,其中scl为串行时钟输入引脚,sda为串行数据/地址输出引脚;当cpu模块发送一次开始信号后,按照时序要求依次进行写操作与读操作,最后以一个停止信号来终止数据的传输;

步骤5、通过低电平触发来实现按键的基本功能,其中分别使用硬件电路中温度范围设置键s2、湿度范围设置按键s3对应软件程序中温/湿度按键temp_set和hum_set,通过温/湿度按键标志位temp_flag和hum_flag,初始值为0,来设置按键功能;分别使用硬件电路中加、减设置键s4和s5对应软件程序中加/减设置键位add和red;按下s4和s5分别实现0~99的数字加、减功能;

步骤6、当系统上电初始化之后s6报警状态设置键标志位alarm_flag=0,此时系统处于非报警状态,报警电路不工作;当按下s6报警状态设置键,且按键去抖动后alarm_set=0,此时处于报警状态,报警电路开始工作;如果室内温湿度超出所设定的温湿度范围,此时beep=1且temp_led=0,触发温湿度声光报警;若工作在所设置温湿度范围内或再次按下s6报警状态设置键调至非报警模式时,则自动退出报警。

本发明的有益效果:本发明采用了51系列单片机作为系统的控制核心,并结合外部电路块以及软件程序来实现以下多种功能:a温度显示的精度达到±2℃;b湿度显示的精度达到±5%rh;c能够显示实时时间;d能够设置温湿度范围,并根据所设置的范围进行报警,满足标准测温精度与测湿精度。

附图说明

图1为本发明一个实施例硬件电路图;

图2为本发明一个实施例cpu模块原理图;

图3为本发明一个实施例温湿度采集模块电路图;

图4为本发明一个实施例电源模块电路图;

图5为本发明一个实施例实时时钟模块原理图;

图6为本发明一个实施例ds1302时钟芯片接线图;

图7为本发明一个实施例显示模块原理图;

图8为本发明一个实施例按键模块原理图;

其中,s2-温度范围设置键、s3-湿度范围设置键、s4-加设置键、s5-减设置键,s6-报警状态设置键;

图9为本发明一个实施例报警模块电路图;

图10为本发明一个实施例存储模块原理图;

图11为本发明一个实施例基于dht11的数字温湿度计设计方法流程图;

图12为本发明一个实施例cpu模块控制结构图;

图13为本发明一个实施例dht11温湿度传感器流程图;

图14为本发明一个实施例ds1302时钟芯片读操作时序图;

图15为本发明一个实施例ds1302时钟芯片写操作时序图;

图16为本发明一个实施例ds1302时钟芯片实际时序图;

图17为本发明一个实施例lcd1604液晶读操作时序图;

图18为本发明一个实施例lcd1604液晶写操作时序图;

图19为本发明一个实施例24c02掉电保存芯片总线时序图;

图20为本发明一个实施例时钟的起始/停止信号时序图;

图21为本发明一个实施例温湿度设置流程图;

图22为本发明一个实施例报警模块流程图。

具体实施方式

下面结合附图对本发明的实施方式进行详细描述。

本实施例提供的技术方案是:如图1所示,一种基于dht11的数字温湿度计,采用51系列单片机作为系统的控制核心,并结合外部电路块以及软件程序来实现其基本功能。该数字温湿度计包括cpu模块、温湿度采集模块、电源模块、实时时钟模块、显示模块、按键模块、报警模块与存储模块。其中,电源模块对数字温湿度计直接供电;温湿度采集模块采集家居环境中的温湿度数据,并将所采集到数据送入cpu模块进行处理;通过按键模块对温湿度的范围进行设置;通过实时时钟模块进行实时时间设定;通过报警模块设置报警功能;通过存储模块保存数据;通过显示模块来显示数据。能够实现温度测量精度为±2℃,湿度测量精度为±5%rh;以及显示温度、湿度和实时时间,设置温湿度的范围。

如图2所示,cpu模块采用stc12c5a60s2系列单片机作为cpu模块的核心控制器,包括mcu电路,时钟电路,复位电路。

mcu电路包括stc12c5a60s2单片机、2×20个排针(j1、j2)、1个排阻(r1)以及电阻r2(10k)。stc12c5a60s2系列单片机采用5v直流电压直接供电,其40个引脚均连有排针。排针主要用于stc12c5a60s2单片机与dht11温湿度模块以及实时显示时钟模块之间的信号的传输。由于stc12c5a60s2单片机p0口内部未集成上拉电阻,因此在stc12c5a60s2单片机p0口外接上拉电阻r1将p0口电位拉高,来增加p0口的驱动能力。在stc12c5a60s2单片机的ea端口外接电阻r2(10k),stc12c5a60s2单片机从内部存储单元开始寻址。

时钟电路主要包括11.0592mhz晶振y1和瓷片电容(30pf)c2和c3,该时钟电路可与stc12c5a60s2单片机内部电路构成一个稳定的自激振荡器。晶振y1的两端分别接stc12c5a60s2单片机的18口和19口,在设计硬件电路时应将晶振尽可能的紧贴stc12c5a60s2单片机,其原因是晶振属于高频工作元件,与单片机之间连接的导线过长会引起不必要的电磁干扰,影响正常工作。瓷片电容c2、c3两个负载电容可对晶振进行微调,减小晶振的频差,使时钟电路输出的频率达到晶振标称值。

复位电路主要包括四脚按键s1、10uf电解电容c4、330定值电阻r3(33ω)和10kω定值电阻r4。电阻r4与c4构成rc充电电路,同时r4可作为限流电阻保护电容。当电源接通的瞬间,复位引脚rst为高电平(vcc);当电源接通后,电容c4开始通过rc充电电路进行充电,复位引脚rst电位逐渐拉低;当电容充电完毕后,复位引脚rst被拉低为低电平;当按下复位按键s1时,电容c4会通过r3回路进行放电来实现复位功能。cpu模块的i/o口分配及其功能见表1。

表1cpu模块的i/o口分配及其功能表

如图3所示,本实施例温湿度采集模块主要包括dht11温湿度传感器和4.7kω电阻r7。在数据引脚data与电源引脚vcc之间数据线之间接入4.7kω的上拉电阻,将数据端拉至高电平(当信号传输距离超出20m时需根据实际情况调整上拉电阻的阻值)。温湿度采集模块的i/o口分配及其功能见表2

表2温湿度采集模块的i/o口分配及其功能

dht11是一种复合型传感器,可同时对温度和相对湿度进行采集,并以数字量的形式输出供cpu模块使用。dht11温湿度传感器具体参数见表3。

表3dht11温湿度传感器具体参数

stc12c5a60s2单片机的指令代码与stc89c52完全兼容,但其响应速度却是stc89c52单片机的8倍。由于本实施例数字温湿度计实现的功能较为复杂且dht11温湿度传感器对时序的要求非常严格,传统的stc89c52系列的单片机不能满足要求,致使系统不能正常工作。而stc12c5a60s2系列单片机能够完美的驱动dht11温度传感器以及其他各个外部电路模块。因此本实施例采用stc12c5a60s2单片机作为核心控制器。

如图4所示,本实施例电源模块使用usb接口接5v直流电源直接供电,将usb接口的电源正极与电源负极分别接入六脚自锁开关s7的两个常开接口并通过电源指示灯d1来显示电源供电情况。

usb接口的输出电压和电流分别为5v和500ma,但在实际使用中会存在些许误差,其电压的误差最大不超过±0.2v(输出电压范围是:4.8-5.2v),能够满足本实施例所设计系统的基本要求。在usb接通+5v直流电源之后,通过六脚自锁开关控制电源的通断。s7的常闭端口分为1和5与2和4两组,将通过usb接口的电源正(vcc)与电源负(gnd)分别连s7的1和5与2和4即可实现六脚自锁开关控制电源通断的功能。同时在电源正极与负极之间接入电阻r8和发光二极管d1,其中电阻r8的作用是保护发光二极管使其不会因系统工作时电流过大而烧坏。

电源模块使用usb接5v直流电源,并通过六脚自锁开关对整块硬件电路进行供电,并使用一个发光二极管灯作为电源指示灯。

usb接口有四个引脚在内部从左到右依次接红白绿黑四种颜色的导线,其各自的接口定义见表4。

表4usb各接口定义

如图5所示,为实时时钟模块原理图。实时时钟模块使用ds1302时钟芯片产生实时时间数据,此芯片采用串行通信方式且单片机连接简单。

ds1302时钟芯片接线原理如图6所示,为产生比较准确的时间基准,y2选用32.768khz的晶振。当系统正常工作时,ds1302时钟芯片由5v电压直接供电,当系统掉电时因对保存时间数据并持续更新时间的需求,则需要3v的后备电源(纽扣电池)对其供电。实时时钟模块的i/o口分配及其功能见表5。

表5实时时钟模块的i/o口分配及其功能

ds1302时钟芯片共有8个引脚,当它与单片机相连时只占据3个i/o口,既经济又能满足要求。

如图7所示,为显示模块原理图,显示模块主要包括lcd1604液晶与103电位器r5(10k)两部分组成。lcd1604由5v直流电源直接供电,通过调节电位器r5的阻值来调节液晶屏的对比度。显示模块的i/o口分配及其功能见表6。

表6显示模块的i/o口分配及其功能

本实施例数字温湿度计需要显示的有:dht11温湿度传感器采集的温湿度数据、温湿度范围、实时时间以及报警模式显示等4个部分。数码管显示电路因其驱动电路复杂导致系统的空间利用率大大降低,因此选用lcd1604液晶。lcd1604液晶显示的数据分布见表7。

表7lcd1604液晶显示的数据分布

如图8所示,为按键模块原理图,本实施例使用5个四脚独立按键来完成按键模块的主要功能。按键模块硬件电路由4个独立按键从左至右依次为s2温度范围设置键、s3湿度范围设置键、s4加设置键和s5减设置键,s6报警状态设置键。其中s2(s3)按键的功能为:按第一下时设置温(湿)度最小值;按第二下时设置温(湿)度最大值;按第三下时确定保存所设置的数据。

本实施例数字温湿度计需要实现的功能有:复位、温度设置、湿度设置、加、减以及报警方式设置等。其中各个按键所需实现的功能对照表见表8。

表8按键功能对照表

并且,采用的是轻触按键,其中有两对“常开”引脚,有两对引脚是相连引脚,所以在使用时只需要将两个引脚(横着或者对角)接入硬件电路即可。

如图9所示,报警模块包括有源蜂鸣器bell和发光二极管d2(温度报警)、d3(湿度报警)作为系统的报警装置。其中有源蜂鸣器bell的工作电压为+5v直流电源,在报警模式下,当环境中温湿度超出设置范围时,p2.5引脚为低电平,三极管导通,蜂鸣器报警,相应的报警指示灯点亮。若当环境中的温湿度适宜亦或系统工作在非报警模式下,p2.5引脚为高电平则不会触发报警。r6为限流电阻,保护三极管q1不会因电流过大被击穿;r9、r10也为限流电阻,保护发光二极管不会因电流过大被烧坏。报警模块的i/o口分配及其功能见表9。

表9报警模块的i/o口分配及其功能

存储模块采用24c02掉电保存芯片作为存储模块的核心,存储模块的原理如图10所示。

24c02掉电保存芯片由5v直流电源直接供电,a0、a1和a2为24c02的器件地址输入引脚,但由于在本系统中为使用器械地址引脚,a0、a1和a2为空引脚直接接地即可。写保护端口wp接地,允许数据正常读写操作。存储模块的i/o口分配及其功能见表10。

表10存储模块的i/o口分配及其功能

本实施例各模块所需元件的汇总见表11。

表11元件汇总表

以下为本实施例基于dht11的数字温湿度计的设计方法,

其设计流程图如图11所示,在系统开机之后,使用硬件直接对系统进行初始化(按键s1),之后进入工作模式,通过对各个模块的子程序设计来实现各个模块的功能。各模块流程设计如下:

1)cpu模块;cpu模块需要完成对温湿度采集、实时时钟、显示、按键、报警与存储等七个模块的程序控制。其中cpu模块的控制结构图如图12所示。

引脚设置程序及功能如下:

2)温湿度采集模块;dht11温湿度传感器流程设计如图13所示,当cpu模块发送一次开始信号后,dht11温湿度传感器从低功耗模式转换为高速模式;当开始信号结束后,dht11温湿度传感器发送响应信号,将40bit的温湿度数据送出,并触发下一次的温湿度信号采集。因此,所显示的温湿度值均为单片机从dht11温湿度传感器中获得的前一次的测量值。

dht11温湿度传感器主要工作时序如下:首先stc12c5a60s2单片机在数据线data上发送开始信号,当dht11温湿度传感器和cpu模块通信建立成功后将数据线拉高;延时后将采集的数据发送给cpu模块,当数据发送结束后,释放总线。

dht11数据总线在其空闲时为高电平,当通信开始时cpu模块将数据总线拉低至少18ms之后释放;在主机拉高20~40us之后开始检测dht11温湿度传感器响应信号(80us的低电平);将dht11温湿度传感器拉至高电平80us后开始进行数据传输。

在80us高电平之后dht11温湿度传感器开始发送数据,每一个bit数据位均由一个低电平时隙与一个高电平组成,其中低电平时隙为一个50us的低电平,通过高电平的长短来确定数据位是0还是1(长的为1,短的为0)。每次传输40bit数据,当最后一个bit数据传输完毕后,dht11拉低总线50us用于释放总线,之后由上拉电阻将总线拉高进入空闲状态为下一组数据传输做准备。

3)实时时钟模块;ds1302时钟芯片主要使用ce、i/o和sclk等3根通信引脚,其中ce为使能引脚,sclk为单方向时钟引脚,i/o为双向流通的数据引脚。具体的读操作时序图如图14所示,写操作时序图如图15所示。

系统在进行读写操作时读和写均分为两步,其中写操作为:第一步写寄存器地址,第二步写入初值;读寄存器操作为:第一步读寄存器地址,第二步读取数值。具体时序分析如下:首先将使能引脚ce置高(高电平有效),其次写操作的时序为:第一步写所要指向的寄存器地址,第二步在第一步设置的寄存器中写入初值,当sclk由低电平变为高电平时数据被写入ds1302时钟芯片中;读操作的时序为:第一步写所要指向的寄存器地址,第二步读由写操作在第一步设置的寄存器写入的值,当sclk由高电平变为低电平时数据读取到stc12c5a60s2单片机中。

ds1302时钟芯片实际时序图如图16所示。在读、写操作中高、低电平均不能突变,都需要一个缓慢上升或下降的过程。因此在编程时应严格注意时序问题,如果在电平未稳定的时刻进行读、写操作将会致使读写失败,不能得到正确的实时时间。

4)显示模块;lcd1604液晶主要使用rs、r/w、e与db0~7来进行数据通信,其中rs为寄存器选择信号可进行读写命令(l)或读写数据(h),r/w为读/写信号,en为使能信号(下降沿触发),db为数据引脚用于数据传输。lcd1604液晶读操作时序如图17所示,lcd1604液晶的写操作时序如图18所示。由图17和图18可知,在读、写操作中高、低电平均不能突变,都需要一个缓慢上升或下降的过程。因此在编程时应严格注意时序问题,如果在电平未稳定的时刻进行读、写操作将会致使读写失败,不能得到正确的显示。其中lcd1604液晶读写操作的具体时序参数见表12。

表12液晶读写操作的具体时序参数

5)存储模块;24c02掉电保存芯片主要使用scl、sda与i2c总线协议来进行数据通信,其中scl为串行时钟输入引脚,sda为串行数据/地址输出引脚。24c02总线时序图如图19所示。由图19可知,当cpu模块发送一次开始信号后,按照时序要求依次进行写操作(字节写)与读操作(立即地址读),最后以一个停止信号来终止数据的传输。其中时钟的起始/停止信号时序图如图20所示。

6)按键模块;在按键程序中通过低电平触发来实现按键的基本功能。其中分别使用硬件电路中温度范围设置键、湿度范围设置键s2和s3对应软件程序中温/湿度按键temp_set和hum_set,通过温/湿度按键标志位temp_flag和hum_flag(初始值为0)来设置按键功能。分别使用硬件电路中加、减设置键s4和s5对应软件程序中加/减设置键位add和red。按下s4和s5分别实现0~99的数字加、减功能。其温湿度设置程序原理图(以温度设置为例)如图21所示。

当按下温度范围设置键s2(湿度范围设置键s3)且按键去抖动后temp_set=0,此时temp_flag=1(hum_flag=1)并通过加/减设置键s4和s5实现对温度最小值的设置;当再次按下温度范围设置键s2(湿度范围设置键s3)且按键去抖动后temp_set=0(hum_set),此时temp_flag=2(hum_flag=2)并通过另、减设置键s4和s5实现对温度最大值的设置;当第三次按下温度范围设置键s2(湿度范围设置键s3)且按键去抖动后temp_set=0(hum_set),此时储存温度的最大值与最小值并将温度按键标志位置0,即temp_flag=0(hum_flag=0)重新开始此循环。

7)报警模块;报警模块包括按键s6、有源蜂鸣器bell和温湿度发光二极管d2和d3。其中s6以及d2和d3为低电平触发,bell高电平触发。其中,使用报警设置按键s6对应软件程序中的alarm_set,通过报警按键标志位alarm_flag(初始值为0)来设置报警功能。报警模块的程序流程图如图22所示。

当系统上电初始化之后报警按键标志位alarm_flag=0,此时系统处于非报警状态,报警电路不工作;当按下s6且按键去抖动后alarm_set=0,此时系统处于报警状态,报警电路开始工作。如果室内温(湿/温湿)度超出所设定的温度范围,此时beep=1且temp_led=0(hum_led=0/temp_led=0;hum_led=0)触发温(湿/温湿)度声光报警。当工作在所设置温湿度范围内或再次按下s6将系统调至非报警模式时系统变会自动退出报警状态。

(1)硬件调试

由于系统调试季节为夏季,所以按照人们的舒适度要求且因实验条件的局限性,将温度设置为23~28℃,湿度设置为30%~60%rh。在系统采集温湿度均正常的状态下,当系统工作在非报警模式时(温度为26℃,湿度为43%rh),液晶显示实时时间、温湿度与温湿度范围。

当系统工作在报警模式时(温度为26℃,湿度为42%rh),温湿度均未超出各自范围,液晶显示实时时间、温湿度、温湿度范围与报警状态标志。

在系统采集到室内温湿度超出设置范围但系统工作在非报警模式下时(温度为27℃,湿度为28%rh),如温度未超出温度范围,湿度超出湿度范围,系统不进行报警工作。

当温度超出所设置的温度范围时(温度为28℃,湿度为31%rh),蜂鸣器报警、温度报警发光二极管d2点亮。

当湿度超出所设置的湿度范围时(温度为27℃,湿度为28%rh),蜂鸣器报警、湿度报警发光二极管d3点亮。

当温湿度均超出所设置的温度范围时(温度为28℃,湿度为30%rh),蜂鸣器报警、温湿度报警发光二极管d2、d3点亮。

综上所述,该系统由usb接+5v电源对系统直接供电;由dht11采集家居环境中的温湿度数据,并通过dht11数据端(data)将所采集到数据送入单片机中进行处理;通过按键对温湿度的范围进行设置;通过ds1302进行实时时间设定;通过报警模块设置报警功能;通过存储模块保存系统数据;通过液晶lcd1604来显示系统数据。

(2)精度分析

在本设计中所使用的dht11温湿度传感器的标准测温精度为±2℃,测湿精度为±5%rh,但在实际使用过程中需对dht11温湿度传感器的实际温湿度精度进行测量与分析。其中,在dht11测量温湿度范围内的温度测精数据见表13,湿度测精数据见表14。

表13温度测精数据

由表13可知,在实际测量过程中,将由dht11测量的温度数据与当下标准温度进行对比,可得到dht11的实际度测温精度为±2℃。

表14湿度测精数据

由表14可知,在实际测量过程中,将由dht11温湿度传感器测量的湿度数据与当下标准湿度进行对比,可得到dht11温湿度传感器的实际度测湿精度为+3%rh,-5%rh。

综上所述,在本实施例的基于dht11的数字温湿度计能够满足标准测温精度与测湿精度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1