温湿度监测系统.docx

上传人:b****1 文档编号:12516043 上传时间:2023-04-19 格式:DOCX 页数:36 大小:155.42KB
下载 相关 举报
温湿度监测系统.docx_第1页
第1页 / 共36页
温湿度监测系统.docx_第2页
第2页 / 共36页
温湿度监测系统.docx_第3页
第3页 / 共36页
温湿度监测系统.docx_第4页
第4页 / 共36页
温湿度监测系统.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

温湿度监测系统.docx

《温湿度监测系统.docx》由会员分享,可在线阅读,更多相关《温湿度监测系统.docx(36页珍藏版)》请在冰豆网上搜索。

温湿度监测系统.docx

温湿度监测系统

智能温湿度监测系统

摘要

防潮、防霉、防腐、防爆是车间日常工作的重要内容,是衡量环境管理质量的重要指标。

它直接影响到储备物资的使用寿命和设备工作可靠性。

为保证日常工作的顺利进行,首要问题是加强工作环境温度与湿度的监测工作。

但传统的方法是用湿度表、毛发湿度表、双金属式测量计和湿度试纸等测试器材,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。

这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。

因此就需要一种造价低廉、使用方便且测量准确的温湿度测量仪。

所以在测量仪上安装温度传感器,湿度传感器,通过单片机计算、显示和报警,可以实现室内温度和空气湿度自动调控功能,对于管理库房节省了时间,为设备安全运行提供了可靠的保障。

随着社会的发展,该系统具有一定的实用价值和广泛的应用前景。

关键词:

温度传感器;湿度传感器;单片机;空气湿度;自动调控

 

第一章引言

1.1概述

随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。

常规的测试仪器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高。

1.2传感器的技术简介和发展前景

信心革命的三大重要支柱是信息的采集、传输和处理。

信息采集中,首先要获得原始的信息,其最基本的元件是传感器,关键技术是传感器技术。

因此,传感器及其相关的应用技术(传感器、与传感器相关的电子技术、信息处理)是信息领域的源头技术。

传感器技术是新技术革命和信息社会的重要技术基础,是现代科技的开路先锋,也是当代科学技术发展的一个重要标志。

传感器技术、通信技术、计算机技术、分别对应信息技术中的采集、传输和处理。

如果说计算机是人类大脑的扩展,那么传感器就是人类五官的延伸。

当集成电路、计算机技术飞速发展时,电脑的运算速度和信息处理能力得以成倍的提高,这时人们才逐步认识到信息摄取装置:

传感器没跟上信息技术的发展,因而惊呼“大脑发达、五官不灵”。

世界上技术发达的国家对传感器技术开发都十分重视。

目前,传感器及其应用技术已成为我国国民经济发展不可或缺的一部分,传感器在工业部门的应用普及率已被国际社会作为衡量一个国家智能化、数字化以及网络化的重要标志之一。

1.3传感器的实现的功能

传感器作为测试系统的第一环节,将被测系统或过程中需要观测的信息转化为人们所熟悉的各种信号,这是测试过程中必须完成的首要任务。

通常,传感器将被测物流量转化成以电量为主要形式的电信号。

第二章系统总体方案设计

本设计是基于单片机对数字信号的高敏感和可控性、温湿度传感器可以产生模拟信号,和A/D模拟数字转换芯片的性能,此设计以89S51基本系统为核心的一套检测系统,其中包括A/D转换、单片机、复位电路、温度检测、湿度检测、键盘及显示、报警电路、系统软件等部分的设计。

系统总体方框图如图2.1。

图2.1系统总体框图

本设计由信号采集、信号分析和信号处理三个部分组成的:

(1)信号采集由AD590、HS1100及多路开关CD4051组成;

(2)信号分析由A/D转换器MC14433、单片机89S51基本系统组成;

(3)信号显示由串行口LED显示器和报警电路组成。

2.1温度传感器

集成温度传感器AD590是美国模拟器件公司生产的集成两端感温电流源。

AD590是电流型温度传感器,通过对电流的测量可得到所需要的温度值。

2.1.1温度传感器主要特性

流过器件的电流(μA)等于器件所处环境的热力学温度(开尔文)度数:

Ir/T=1,式中,Ir—流过器件(AD590)的电流,单位为μA;T—热力学温度,单位为K;AD590的测温范围为-55℃~+150℃;AD590的电源电压范围为4~30V,可以承受44V正向电压和20V反向电压,因而器件即使反接也不会被损坏;输出电阻为710mΩ;精度高,AD590在-55℃~+150℃范围内,非线性误差仅为±0.3℃。

2.1.2AD590的工作原理

AD590温度感测器是一种已经IC化的温度感测器,它会将温度转换为电流。

其规格如下:

温度每增加1℃,它会增加1μA输出电流。

可量测范围-55℃至150℃。

供应电压范围+4V至30V。

AD590的接脚图及零件符号如图2.2所示:

 

图2.2AD590的接脚图及零件符号

AD590的输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其输出电流Io=(273+25)=298μA。

Vo的值为Io乘上10K,以室温25℃而言,输出值为2.98V(10K×298μA)。

量测Vo时,不可分出任何电流,否则量测值会不准。

2.1.3电路设计

AD590的输出电流I=(273+T)μA(T为摄氏温度),因此量测的电压V为(273+T)μA×10K=(2.73+T/100)V。

为了将电压量测出来又需使输出电流I不分流出来,我们使用电压追随器其输出电压V2等于输入电压V。

由于一般电源供应较多零件之后,电源是带噪声的,因此我们使用齐纳二极管作为稳压零件,再利用可变电阻分压,其输出电压V1需调整至2.73V。

接下来我们使用差动放大器其输出Vo为(100K/10K)×(V2-V1)=T/10,如果现在为摄氏28℃,输出电压为2.8V,输出电压接A/D转换器,那么A/D转换输出的数字量就和摄氏温度成线形比例关系。

AD590温度传感器使用原理如图2.3。

 

图2.3AD590温度传感器使用原理图

2.2湿度传感器

测量空气湿度的方式很多,其原理是根据某种物质从其周围的空气吸收水分后引起的物理或化学性质的变化,间接地获得该物质的吸水量及周围空气的湿度。

电容式、电阻式和湿涨式湿敏原件分别是根据其高分子材料吸湿后的介电常数、电阻率和体积随之发生变化而进行湿度测量的。

下面介绍HS1100(顶端接触)/HS1101(侧面接触)湿度传感器及其应用。

2.2.1主要特性

(1)监测速度快;

(2)高精度和高可靠性;(3)快速响应时间和长期稳定性;(4)使用方便体积小;(5)适用于线性电压输出和频率输出两种电路;(6)适宜于制造流水线上的自动插件和自动装配过程等。

相对湿度在1%~100%RH范围内,电容量由16pF变到200pF,其误差不大于±2%RH、响应时间小于5S、温度系数为0.04pF/℃,可见精度是较高的。

2.2.2工作原理

HS1100/HS1101电容传感器,在电路构成中等效于一个电容器件,其电容量随着所测空气湿度的增大而增大。

如何将电容的变化量准确地转变为计算机易于接受的信号,常用方法是将该湿敏电容置于555振荡电路中,将电容值的变化转为与之成反比的电压频率信号,可直接被计算机所采集。

HS1100/HS1101湿度传感器在不同的相对湿度中的电容值不同,而容值得改变使输出的频率发出相应的改变,HS1100/HS1101的容值随着相对湿度的增大而增大,因此输出频率随着相对湿度值的变大而变小,即频率降低。

表2.1给出了输出频率的典型值。

表2.1典型频率值(参考点:

25℃,相对湿度:

50%,输出频率:

6728KHZ)

湿度%RH

频率HZ

湿度%RH

频率HZ

0

7351

60

6600

10

7224

70

6468

20

7100

80

6330

30

6976

90

6168

40

6853

100

6033

 

图2.4给出了HS1101典型555应用电路。

图2.4典型555应用电路

2.3MC14433A/D转换器

2.3.1MC14433A/D转换器的特点

本系统选用了双积分A/D转换器MC14433,可以把温度、湿度检测电路测出的模拟信号转换成数字量送CPU处理,它精度高,分辨率达1/1999。

由于MC14433只有一路输入,而本系统检测的多路温度与湿度信号输入,故选用多路选择电子开关,可输入多路模拟量。

由于双积分方法二次积分时间比较长,所以A/D转换速度慢,但精度可以做得比较高;对周期信号变化的干扰信号积分为零,抗干扰性能也比较好。

2.3.2MC14433A/D转换器件简介

MC14433是三位半双积分型的A/D转换器,具有精度高,抗干扰性能好的优点,其缺点是转换速率低,约1~10次/秒。

在不要求高速转换的场合,在低速数据采集系统中,被广泛采用。

MC14433A/D转换器的被转换电压量程为199.9mV或1.999V。

转换完的数据以BCD码的形式分四次送出。

图2.6MC14433引脚图

2.3.3MC14433的引脚(图2.6)功能说明如表2.2

表2.2功能说明

电源及共地端

外界电阻及电容端

转换启动/结束信号端

过量程信号输出端

VDD:

主工作电源+5V。

VEE:

模拟部分的负电源端,接-5V。

VAG:

模拟地端。

VSS:

数字地端。

VR:

基准电压。

RI:

积分电阻输入端,VX=2V时,R1=47Ω;VX=200M时,R1=27KΩ。

C1:

积分电容输入端。

C1一般为0.1µF。

C01、C02:

外界补偿电容端,电容取值约0.1µF。

R1/C1:

R1与C1的公共端。

CLKI、CLKO:

外界振荡器时钟调节电阻Rc,Rc一般取470KΩ左右。

EOC:

转换结束信号输出端,正脉冲有效。

DU:

启动新的转换,若DU与EOC相连,每当A/D转换结束后,自动启动新的转换。

————OR:

当|Vx|›VR,过量程/OR输出低电平。

位选通控制线DS4~DS1:

选择个、十、百、千位,正脉冲有效。

DS1对应千位,DS4对应个位。

每个选通脉冲宽度为18个时钟周期,两个相应脉冲之间间隔为2个时钟周期。

BCD码输出线

Q0~Q3:

BCD码输出线。

其中Q0为最低位,Q3为最高位。

当DS2、DS3和DS4选通期间,输出三位完整的BCD码数,但在DS1选通期间,输出端Q0~Q3除了表示个位的0或1外,还表示了转化值的正负极性和欠量程还是过量程其含义见表2.2,DS1选通时Q3~Q0表示的结果。

表2.2DS1选通时Q3~Q0表示的结果

Q3

Q2

Q1

Q0

表示结果

1

*

*

0

千位数为0

0

*

*

0

千位数为1

*

1

*

0

结果为正

*

0

*

0

结果为负

0

*

*

1

输入过量程

1

*

*

1

输入欠量程

由表可知Q3表示1/2位,Q3=“0”对应1,反之对应0。

Q2表示极性,Q2=“1”为正极性,反之为负极性。

Q0=“1”表示超量程:

当Q3=“0”时,表示过量程;当Q3=“1”时,表示欠量程。

2.4单片机89S51

为了设计此系统,此系统采用了89S51单片机作为控制芯片,它具有以下特性:

片内程序存储器含有4KB的Flash存储器,允许在线编程,擦写周期可达1000次;片内数据存储器内含128字节的RAM;I/O口具有32根可编程I/O线;具有两个16位I/O线;中断系统具有6个中断源、5个终端矢量、2个中断优先级的中断结构;串行口是一个全双工的串行通信口;具有两个数据指针DPTR0和DPTR1;低功耗节电模式有节电模式和掉电模式;包含3级程序锁定位;AT89S51的电源电压为4.0~5.5V,AT89LS51的电源电压为2.7~4.0V;振荡器频率0~33MHz(AT89S51),0~16MHz(AT89LS51);具有片内看门狗定时器;灵活的在线片内编程模式(字节和页编程模式);具有断电标志模式POF。

89S51引脚如图2.7。

 

图2.789S51的引脚图

功能说明如下:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入1后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

 

第三章系统的硬件设计和连接

3.1MC14433与89S51单片机的接口设计

由于MC14433的A/D转换结果是动态分时输出的BCD码,Q0~Q3HE,DS1~DS4都不是总线式的。

因此,MCS-51单片机只能通过并行I/O接口或扩展I/O接口与其相连。

对于89S51单片机的应用系统来说,MC14433可以直接和其P1口或扩展I/O口8155/8255相连。

下面是MC14433与89S51单片机P1口直接相连的硬件接口,接口电路如图3.1所示。

 

图3.1MC14433与8031单片机P口直接相连的硬件接口

3.2显示与报警的设计

3.2.1显示电路

在单片机应用系统设计中,一般都是把键盘和显示器放在一起考虑。

本设计是利用89S51的串行口实现键盘/显示器接口。

当89S51的串行口未作它用时,使用89S51的串行口来外扩键盘/显示器。

应用89S51的串行口方式0的输出方式,在串行口外接移位寄存器74LS164,构成键盘/显示器接口,8个74LS164:

74LS164(0)~74LS164(7)作为8位段码输出口,74LS138的Y0作为键输入线,Y2作为同步脉冲输出控制线。

这种静态显示方式亮度大,很容易作到显示不闪烁。

静态显示的优点是CPU不必频繁的为显示服务,因而主程序可不必扫描显示器,软件设计比较简单,从而使单片机有更多的时间处理其他事务。

3.2.2报警电路

报警电路在微型计算机控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意,或采取紧急措施。

其方法就是把计算机采集的数据或记过计算机进行数据处理、数字滤波,标度变换之后,与该参数上下限给定值进行比较,如果高于上限值(或低于下限值)则进行报警,否则就作为采样的正常值,进行显示和控制。

本设计采用峰鸣音报警电路。

峰鸣音报警接口电路的设计只需购买市售的压电式蜂鸣器,然后通过MCS-51的1根口线经驱动器驱动蜂鸣音发声。

压电式蜂鸣器约需10mA的驱动电流,可以使用TTL系列集成电路7406或7407低电平驱动,也可以用一个晶体三极管驱动。

在图中,P3.2接晶体管基极输入端。

当P3.2输出高电平“1”时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫;当P3.2输出低电平“0”时,三极管截止,蜂鸣器停止发声。

图3.2是一个简单的使用三极管驱动的峰鸣音报警电路:

 

图3.2三极管驱动的峰鸣音报警电路

三极管驱动的峰鸣音报警电路本设计是为在温湿度测量中对温湿度的上下限超出是的提示报警,接口位于单片机AT89S51的P3.2口,但温湿度过限时,P3.2口被置0,本系统开始工作。

 

第四章软件设计

温/湿度控制主程序的设计应考虑以下问题:

(1)键盘扫描、键码识别和温/湿度显示;

(2)温湿度采样,数字滤波;(3)越限报警和处理。

通常,符合上述功能的温度控制程序由主程序和T0中断服务程序两部分组成。

在该软件系统中,定时器T0为工作方式1,定时周期为125ms,8次定时器中断为1S,由于实际环境温度和湿度变化是连续和平缓的,故这里采用分段定值平缓滤波算法处理每次测得的温度和湿度值,有效防止了突发干扰使测得值波动很大,导致反馈系统关启工作,影响系统的稳定,提高了系统的抗干扰性。

由于系统中设计有看门狗监视电路,所以在编程时要特别注意,传统的等待按键释放的方法较好的解决了这个问题,既保证当按键按下后,置键按下标志位,在主程序的循环中则反复判断键按下标志位是否被清零。

如果被清零,说明键已被释放,然后才能进行下一轮的键盘按下判断。

在T0中断处理程序中,每次中断均要检测键是否按下。

若无按下,有两种情况,一是系统中确实无键按下(此时键按下标志为0),处于监控状态;二是键按下释放后的情况(此时键按下标志为1)。

这时要清键按下标志,以便主程序进行下一轮的键按下检测。

 

4.1T0中断流程图

N

Y

N

Y

图4.1T0中断流程图

 

4.2温度主程序流程图

图4.2温度主程序流程图

4.3程序清单

main()

{

unsignedcharz;

unsignedchara,b,flag_2=1,count1=0;

unsignedcharphil[]={2,0xce,0x6e,0x60,0x1c,2};

TMOD=0x21;

TH0=0x2f;

TL0=0x40;

SCON=0x50;

PCON=0x00;

TH1=0xfd;

TL1=0xfd;

PS=1;

EA=1;

EX1=0;

ET0=1;

ES=1;

TR0=1;

TR1=1;

high_time=50;

low_time=50;

PIDInit(&spid);/*InitializeStructure*/

spid.Proportion=10;/*SetPIDCoefficients*/

spid.Integral=8;

spid.Derivative=6;

spid.SetPoint=100;/*SetPIDSetpoint*/

while

(1)

{

if(plus==0)

{

EA=0;

for(a=0;a<5;a++)

for(b=0;b<102;b++){}

if(plus==0)

{

set_temper++;

flag=0;

}

}

elseif(subs==0)

{

for(a=0;a<5;a++)

for(b=0;a<102;b++){}

if(subs==0)

{

set_temper--;

flag=0;

}

}

elseif(stop==0)

{

for(a=0;a<5;a++)

for(b=0;b<102;b++){}

if(stop==0)

{

flag=0;

break;

}

EA=1;

}

get_temper();

b=temper;

if(flag_2==1)

a=b;

if((abs(a-b))>5)

temper=a;

else

temper=b;

a=temper;

flag_2=0;

if(++count1>30)

{

display();

count1=0;

}

compare_temper();

}

TR0=0;

z=1;

while

(1)

{

EA=0;

if(stop==0)

{

for(a=0;a<5;a++)

for(b=0;b<102;b++){}

if(stop==0)

disp_1(phil);

//break;

}

EA=1;

}

}

/*DS18b20子程序*/

#include

sbitDQ=P2^1;/*定义端口*/

typedefunsignedcharbyte;

typedefunsignedintword;

/*延时*/

voiddelay(worduseconds)

{

for(;useconds>0;useconds--);

}

/*复位*/

byteow_reset(void)

{

bytepresence;

DQ=0;/*DQ低电平*/

delay(29);/*480us*/

DQ=1;/*DQ高电平*/

delay(3);/*等待*/

presence=DQ;/*presence信号*/

delay(25);

return(presence);;

}/*0允许,1禁止*/

/*从1-wire总线上读取一个字节*/

byteread_byte(viod)

{

bytei;

bytevalue=0;

for(i=8;i>0;i--)

{

value>>=1;

DQ=0;

DQ=1;

delay

(1);

if(DQ)value|=0x80;

delay(6);

}

return(value);

}

/*向1-wire总线上写一个字节*/

voidwrite_byte(charval)

{

bytei;

for(i=8;i>0;i--)/*一次写一个字节*/

{

DQ=0;

DQ=val&0x01;

delay(5);

DQ=1;

val=val/2;

}

delay(5);

}

/*读取温度*/

charRead_Temperature(void)

{

union{

bytec[2];

intx;

}temp;

ow_reset();

write_byte(0xcc);

write

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1