版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
word文档可自由编辑word文档可自由编辑word文档可自由编辑引言温室控制系统设计背景中国农业的发展必须走现代化农业这条道路,随着国民经济的迅速增长,农业的研究和应用技术越来越受到重视,特别是温室大棚已经成为高效农业的一个重要组成部分。现代化农业生产中的重要一环就是对农业生产环境的一些重要参数进行检测和控制。例如:空气的温度、湿度、二氧化碳含量、土壤的含水量等。在农业种植问题中,温室环境与生物的生长、发育、能量交换密切相关,进行环境测控是实现温室生产管理自动化、科学化的基本保证,通过对监测数据的分析,结合作物生长发育规律,控制环境条件,使作物达到优质、高产、高效的栽培目的。以蔬菜大棚为代表的现代农业设施在现代化农业生产中发挥着巨大的作用。大棚内的温度和湿度参数,直接关系到蔬菜和水果的生长。国外的温室设施己经发展到比较完备的程度,并形成了一定的标准,但是价格非常昂贵,缺乏与我国气候特点相适应的测控软件。而当今大多数对大棚温度、湿度的检测与控制都采用人工管理,这样不可避免的有测控精度低、劳动强度大及由于测控不及时等弊端,容易造成不可弥补的损失,结果不但大大增加了成本,浪费了人力资源,而且很难达到预期的效果。因此,为了实现高效农业生产的科学化并提高农业研究的准确性,推动我国农业的发展,必须大力发展农业设施与相应的农业工程,科学合理地调节大棚内温度、湿度,使大棚内形成有利于蔬菜,水果生长的环境,是大棚蔬菜和水果早熟、优质、高效益的重要环节[1]。影响作物生长发育的环境条件主要包括:温度、湿度、光照、CO2浓度、土壤等。所有这些环境条件之间是相互作用、相互联系、相互耦合的,某个控制变量发生改变,会影响其它控制变量的变化。作物的生长发育是所有这些环境条件综合作用的结果。温度和湿度一直是人类关注的对象,这两种环境因素时刻影响着人们的生产和生活,下面主要就温度和湿度对作物的影响进行简略说明。温度温室内气温、地温对作物的光合作用、呼吸作用、根系的生长和水分、养分的吸收有着显著的影响,因此影响作物生长发育的环境条件中,以温度最为敏感,也最为重要,对温室环境控制的研究也是最先从温度控制开始的。不同种类的作物对温度的要求是不同的,同一作物在不同发育阶段对温度的要求亦有所不同,而且在同一发育期阶段内对温度的要求也会随着昼夜变化而呈周期性地变化。一般说来在白天作物进行光合作用需要的温度较高,晚上维持呼吸作用所需的温度要低一些。作物生长发育适宜的温度,随种类、品种、生育阶段及生理活动的变化而变化。为了增加光合产物的生成,抑制不必要的呼吸消耗,在一天中,随着光照强度的变化,实行变温管理是一种很有效的管理方法[1]。湿度温室内作物对水分的要求体现为对温室内空气湿度和土壤湿度的要求。空气湿度用相对湿度来表示,因为相对湿度更能反应事实。根据有关研究记载,除了阴雨天以外,温室内午后过低的空气湿度会导致作物发生光合作用的午休现象,因此空气相对湿度的大小直接影响到作物的光合作用,这时就需要增加温室内的空气湿度。当温室内的空气湿度较高时,可能会诱发一些病虫害。温室中空气湿度的管理包括增湿和降湿。土壤湿度对作物的影响也很大。如果土壤中水分过剩,湿度过高,导致土壤中的氧气含量减少,作物根部呼吸困难,进而危害作物的生长发育。相反,当土壤中含水量减少时,作物根部吸收的水分就相应的减少,从而阻碍作物的生长,严重时作物出现萎蔫现象。不同的作物对湿度的要求不同,即使是同一种类在不同发育阶段对湿度的要求也不尽相同。土壤湿度的管理就是把包括渗灌、滴灌、微灌等灌溉技术应用到温室中来。传统的大水漫灌既浪费水资源,又容易使土壤发生板结,提高了室内湿度。在温室中应用渗灌技术具有灌水均匀,提高地温,保持土壤疏松,降低室内湿度,减轻病害发生,生育期提前等优点。从很久以前人类就想出各种方法控制温度和湿度,以满足人们生产生活的需要。从古代人们通过扇子、雨伞、毛巾等试图去控制温度和湿度到今天高科技发展迅速的社会所发明出的各种工具,如风扇、空调、加热器等,表明人类一直努力去控制这两种和人类密切相关的环境因素。现代科技的发展,使得温度和湿度的控制更容易,更高效,特别是传感器和单片机的应用,使得温度和湿度控制系统性能有了根本性的提高,精度更高,而且实现了自动化[2]。人们使用温度计、湿度计来采集温度和湿度,通过人工操作加热、加湿、通风和降温设备来控制温湿度,这样不但控制精度低、实时性差,而且操作人员的劳动强度大。即使有些用户采用半导体二极管作温度传感器,但由于其互换性差,效果也不理想。在某些行业中对温湿度的要求较高,特别是在大型的电力系统中,由于温度过高或过低引起的元器件失效或由于环境湿度过高而引起的漏电事故时有发生。对电力系统的可靠运行造成影响,甚至危及到电力系统局部及操作人员的安全。为了避免这些故障,需要在电力设备柜体内安装控温、除湿设备。本设计的内容及意义1.2.1本设计的主要内容本设计以STC89C51单片机的温度、湿度测量和控制系统为核心来对温湿度进行实时巡检。单片机能独立完成各自功能,同时能根据主控机的指令对温度进行定时采集。测量结果不仅能在本地显示,而且可以利用单片机的串行口和RS-232总线通信协议能把温室中的温度、湿度等参数及时上传至上位机,并与设定值进行比较,与设定值不符时采取相应的处理措施,以实现恒温恒湿环境。在设计的过程中充分考虑到性价比和精度,在选用低价格、通用元件的的基础上,尽量满足设计要求,并使系统具有高的精度。本控制系统以单片机的控制为核心,实时监测环境的温度和湿度,并设定了这两个参数的上下限定值,并具有相应的报警系统,当超过设定的限定值时,单片机控制报警系统进行报警,而且同时驱动继电器打开相应的开关使相应的执行机构运行。当参数值恢复到设定值范围内时,单片机控制执行机构停止运行。从而使环境的温湿度在一定的范围内得到控制。本设计主要内容包括以下几个方面:掌握STC89C51单片机的主要功能和特性,以其为核心设计控制系统。设计简单的人机对话接口系统,如键盘、显示、报警等。利用RS232实现单片机与上位机的通信。实现系统的可靠性和抗干扰性。选择适合的传感器,设计相应的信号采集和处理电路。1.2.2本设计的意义传统的方法,人们主要采用温度计、湿度计来采集温度值和湿度值,通过人工操作加热、加湿、通风和降温设备来控制温湿度。但是由于温度计、湿度计精度比较低,以及人工读数的人为因素等原因,温湿度检测不仅速度慢,精度低,实时性差,而且操作人员的劳动强度大。随着科技的发展,采用各种传感器、模数转换器、报警器等组成的温湿度监测系统的出现,可对环境内的各个测点进行巡回检测,检测速度、精度有了一定的提高,降低了劳动强度,但由于所采用的传感器灵敏度比较低、稳定性比较差,致使检测精度、系统可靠性还不够理想,同时在农业生产和农业科研过程中的很多场合需要对上面提到的物理量进行精确的检测和控制。由于现在基本沿用人工的测控方法,这就不可避免的存在着劳动强度大、繁琐、测量精度低,并且由于检测报警不及时,给生产和科研工作造成了一定的损失[2]。近年来,随着单片机功能的日益强大和计算机的广泛应用,人们对参数监测的准确性、稳定性要求也越来越高。本设计就是针对此问题,设计相对精度高、性能稳定的、的温度湿度控制装置。该仪器可广泛应用于大棚、仓库、体育场等领域。温室控制系统总体设计测控系统的设计要求能够实时采集与显示室内环境温度、湿度等参数。主要参数的监测范围和检测精度如表2.1所示:表2.1主要环境参数参数名参数名检测范围检测精度温度-30℃~+50℃±0.5℃相对湿度10%~100%RH±3.0%RH能够根据每天各个阶段以及季节等的外部环境变化通过键盘输入改变对参数的设置,以满足不同的要求达到最佳效益;声音报警功能;根据检测到的信号,实时控制执行机构的开启与关断。自带+5V和+12V直流稳压电源。设计目标本设计是基于STC89C51单片机的温湿度智能控制采集系统,主要完成一下主要任务:选择STC89C51单片机,了解其基本特性和功能,使用STC89C51实现对温湿度的智能控制。使用温度传感器测量环境的温度,进行数据的采集并传送到单片机进行数据处理,实现范围为-30℃~+50℃温度采集和控制。使用湿度传感器对现场环境湿度数据采集,由单片机进行数据处理和控制,实现范围为10%~100%RH的湿度控制。采用串行总线RS-232实现单片机和上位机通讯。设计人机对话接口,键盘、显示和报警系统。设计执行机构电路,使单片机能自动控制执行机构工作。使系统完成特定功能的同时,要保证系统的可靠性和稳定性,使系统能够长期稳定的工作。还要尽量实现系统的低成本、低功耗和高精度。测控系统的组成及控制原理本设计是以STC89C51单片机为核心的自动控制系统,硬件系统由键盘输入电路、LCD显示电路、传感器和A/D转换电路、和执行电路、报警电路等组成。硬件系统原理框图如图2.1所示:键盘输入键盘输入温度传感湿度传感A/D转换MCUSTCT89C51LCD显示报警电路图2.1测控系统硬件组成原理框图传感器一般输出的为模拟量,需要通过A/D转换,转换为单片机能够接收的数字信号,若模拟信号太弱,还需经过运算放大器放大信号。键盘输入的是系统参数的上、下限极限值,若检测到的信号值出现不在此极限区间的情况,单片机就会驱动蜂鸣器产生报警,此时就需要执行机构控制室内环境相应的改变,使得环境参数重新回到设定的理想区间。硬件设计硬件元器件的选择,必须考虑到功能的实现、器件的适时性、价格和通用性等几个方面。在电路的设计中,在实现所要求功能的基础上,尽量使电路简单。单片机的选择及其特性计算机的产生加快了人类改造世界的步伐,但是它毕竟体积庞大。单片机(微控制器)就是在这种情况下诞生的。微控制器,亦称单片机或者单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(1/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。它的结构与指令功能都是按照工业控制的要求设计的,在智能控制系统中,微控制器得到了广泛的应用。单片机目前己被广泛地应用于家电、医疗、仪器仪表、工业自动化、航空航天等领域。市场上比较流行的单片机种类主要有Intel公司、Atmel公司和Philip公司的8951系列单片机,Motorola公司的M6800系列单片机,Intel公司的MCS96系列单片机,Microchip公司的PIC系列单片机等。各个系列的单片机各有所长,在处理速度、稳定性、I/O能力、功耗、功能、价格等方面各有优劣。这些种类繁多的单片机家族,给我们单片机的选择也提供了很大的余地。本设计选用STC89C51单片机,它是一种低功耗、低价格,高性能8位微处理器[3]。STC89C51系列单片机介绍STC89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的STC89C51单片机适合于许多较为复杂控制应用场合。3.2.1STC89C51基本特性STC89C51系列单片机主要性能参数如下:·与MCS-51产品指令和引脚完全兼容·4k字节可重擦写Flash闪速存储器·1000次擦写周期·全静态操作:0Hz-24MHz·三级加密程序存储器·256字节内部RAM·32个可编程I/O口线·3个16位定时/计数器·8个中断源·可编程串行UART通道·低功耗空闲和掉电模式。STC89C51提供以下标准功能:4k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,STC89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。word文档可自由编辑word文档可自由编辑word文档可自由编辑空闲方式停止空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.2.2STC89C51单片机的内部组成结构STC89C51单片机的内部结构如图3.1所示:图3.1STC89C51单片机的内部结构3.2.3STC89C51的引脚功能引脚功能说明如图3.2:·Vcc:电源电压·GND:地·P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。图3.2STC89C52单片机封装图·P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与STC89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见表3.1。表3.1引脚P1.0和P1.1的第二功能引脚号功能特性P1.0T2(定时\计数器2外部计数脉冲输入),时钟输出P1.1T2EX(定时\计数器2捕获\重装载触发和方向控制Flash编程和程序校验期间,P1接收低8位地址。·P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。·P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(I)。ILP3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表3.2所示:表3.2引脚P3口的第二功能端口引脚号第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INTO(外中断0)P3.3/INT1(外中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器1)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)此外,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。·ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。·PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52word文档可自由编辑word文档可自由编辑word文档可自由编辑由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。此期间,当访问外部数据存储器,将跳过两次PSEN信号。·EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。·XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。·XTAL2:振荡器反相放大器的输出端[4]。3.2.4STC89C51的存储器·中断寄存器:STC89C51有6个中断源,2个中断优先级,IE寄存器控制各中断位,IP寄存器中6个中断源的每一个可定为2个优先级。·数据存储器:STC89C51有256个字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128字节的RAM和特殊功能寄存器的地址是相同的,但物理上它们是分开的。当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128字节RAM还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。例如,下面的直接寻址指令访问特殊功能寄存器0A0H(即P2口)地址单元。MOV0A0H,#data间接寻址指令访问高128字节RAM,例如,下面的间接寻址指令中,R0的内容为0A0H,则访问数据字节地址为0A0H,而不是P2口(0A0H)。MOV@R0,#data堆栈操作也是间接寻址方式,所以,高128位数据RAM亦可作为堆栈区使用。·定时器0和定时器1:STC89C51的定时器0和定时器1的工作方式与STC89C51的相同。·定时器2:定时器2是一个16位定时/计数器。它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄存器T2CON的C/T2位选择。定时器2有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由T2CON的控制位来选择。·波特率发生器:当T2CON中的TCLK和RCLK置位时,定时/计数器2作为波特率发生器使用。如果定时/计数器2作为发送器或接收器,其发送和接收的波特率可以是不同的,定时器1用于其它功能。若RCLK和TCLK置位,则定时器2工作于波特率发生器方式。波特率发生器的方式与自动重装载方式相仿,在此方式下,TH2翻转使定时器2的寄存器用RCAP2H和RCAP2L中的16位数值重新装载,该数值由软件设置。·中断:STC89C51共有6个中断向量:两个外中断(INT0和INT1),3个定时器中断(定时器0、1、2)和串行口中断。这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。IE也有一个总禁止位EA,它能控制所有中断的允许或禁止。定时器2的中断是由T2CON中的TF2和EXF2逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除,事实上,服务程序需确定是TF2或EXF2产生中断,而由软件清除中断标志位。定时器0和定时器1的标志位TF0和TF1在定时器溢出那个机器周期的S5P2状态置位,而会在下一个机器周期才查询到该中断标志。然而,定时器2的标志位TF2在定时器溢出的那个机器周期的S2P2状态置位,并在同一个机器周期内查询到该标志[5]。·STC89C51的直流参数有一定的温度适用范围,见表3.3:表3.3T=-40℃~+85℃和Vcc=5.0V±20%下的直流参数符号符号参数条件最小值最大值单位LV输入低电压(ExceptEA)-0.50.2VCC-0.1VL1V输入低电压-0.5VCC-0.30.2VHV输入高电压Except(XTAL1,RST)0.2VCC+0.9VCC+0.5VH1V输入高电压(XTAL,RST)0.7VCCVCC+0.5VOLV输出低电压(P1,2,3)I=1.6mA0.45VOL1V输出低电压(P0,ALE/PSEN)I=32mA0.45VOHV输出高电压I=-25uA0.75VCCVOH1V输出高电压I=-300uAVCC0.75VILI逻辑0输入电流(P1,2,3)V=0.45V-50uATLI逻辑1到0转换电流(P1,2,3)V=2V-650uARST复位下拉电阻50300KIOC引脚电容1MHz,pFCCI消耗电流ActiveMode,12MHz25mA·Flash存储器的编程:STC89C51单片机内部有4k字节的FlashPEROM,这个Flash存储阵列出厂时已处于擦除状态(即所有存储单元的内容均为FFH),用户随时可对其进行编程。编程接口可接收高电压(+12V)或低电压(Vcc)的允许编程信号。低电压编程模式适合于用户在线编程系统,而高电压编程模式可与通用EPROM编程器兼容。STC89C51单片机中,有些属于低电压编程方式,而有些则是高电压编程方式,用户可从芯片上的型号和读取芯片内的签名字节获得该信息,见表3.4。表3.4顶面标记及签名字节Vpp=12VVpp=5V顶面标记AT89C52XxxxyywwAT89C52xxxx-5yyww签名字节(030H)=1EH(031H)=52H(032H)=FFH(030H)=1EH(031H)=52H(032H)=05HSTC89C51的程序存储器阵列是采用字节写入方式编程的,每次写入一个字节,要对整个芯片内的PEROM程序存储器写入一个非空字节,必须使用片擦除的方式将整个存储器的内容清除。word文档可自由编辑word文档可自由编辑word文档可自由编辑图3.5STC89C51编程电路·程程序序校验:如果加密位LB1、LB2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,采用如图3.5的电路。加密位不可直接校验,加密位的校验可通过对存储器的校验和写入状态来验证。·编程方法:在地址线上加上要编程单元的地址信号。在数据线上加上要写入的数据字节。激活相应的控制信号。在高电压编程方式时,将EA/Vpp端加上+12V编程电压。每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。每个字节写入周期是自身定时的,通常约为1.5ms。重复1—5步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。·Ready/Busy:字节编程的进度可通过“RDY/BSY输出信号监测,编程期间,ALE变为高电平“H”后,P3.4(RDY/BSY)端电平被拉低,表示正在编程状态(忙状态)。编程完成后,P3.4变为高电平表示准备就绪状态。·芯片擦除:利用控制信号的正确组合并保持ALE/PROG引脚10mS的低电平脉冲宽度即可将PEROM阵列(4k字节)和三个加密位整片擦除,代码阵列在片擦除操作中将任何非空单元写入“1”,这步骤需再编程之前进行[11]。3.3传感器的选型及其性能特征用于测温的传感器种类繁多,但大多是模拟传感器,在以往组建温度采集系统时,由于经传感器输出的是模拟信号,系统必须接入A/D转换器,由此增加了构件系统的复杂性且成本较高。温度的检测方法,一般采用热电偶、热敏电阻以及集成温度传感器等测温元件。热电偶的工作原理:两种不同成份的导体两端经焊接,形成回路,直接测温端叫工作端,接线端叫冷端,也称参比端。当工作端和参比端之间存在温差时,就会在回路中产生热电动势,接上显示仪表,仪表上就会指示出热电偶所产生的热电动势的对应温度值。热敏电阻的工作原理:热敏电阻的阻值随温度的升高而成非线性急剧变化,一般具有负的温度系数,其阻值随温度升高而急剧减小,只有少数具有正的温度系数。集成温度传感器的工作原理:集成温度传感器实质上是一种半导体集成电路,它是利用晶体管的b一e结压降的不饱和值Vbe与热力学温度T和通过发射极电流I的关系实现对温度的检测[12]。热电偶和热敏电阻的测量精度都比较高,成本比较低,而且测量的范围也比较宽,但是它容易受到测量场所以及环境的限制,高温或长期使用时由于环境的影响会使其性能下降,需要定期检查与更换,给实际应用带来了很大不便。经过论证及多次实验,本设计决定采用SHT11传感器[6]。3.3.1温度传感器SHT11SHT11的内部结构和工作原理:温湿度传感器SHT11将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上,其内部结构如图七所示。该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大;然后进入一个14位的A/D转换器;最后经过二线串行数字接口输出数字信号。SHT11在出厂前,都会在恒湿或恒温环境巾进行校准,校准系数存储在校准寄存器中;在测量过程中,校准系数会自动校准来自传感器的信号。此外,SHT11内部还集成一个加热元件,加热元件接通后能将SHT11的温度升高5℃左右,同时功耗也会有所增加。此功能主要为了比较加热前后的温度和湿度值,能综合验证两个传感器元件的性能。在高湿(>95%RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。加热后SHT11温度升高、相对湿度降低,较加热前,测量值会略有差异[7]。图3.6SHT11内部结构微处理器是通过二线串行数字接口和SHT11进行通信的。通信协议和通用的I2C总线协议是不兼容的,因此需要用通用微处理器I/O口模拟该通信时序。微处理器对SHT11的控制是通过5个5位命令代码来实现的,命令代码的含义如表3.7所列。表3.7SHT11控制命令代码SHT11应用设计:微处理器采用二线串行数字接口和温湿度传感器芯片SHT11进行通信,所以硬件接门设计非常简单;然而,通信协议是芯片厂家自己定义的,所以在软件设计中,需要用微处理器通用I/O口模拟通道。SHT11通过二线数字串行接口来访问,所以硬件接口电路非常简单。需要注意的地方是:DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHT11之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频率没有需求;当工作电压高于4.5V时,SCK频率最高为10MHz,而当工作电压低于4.5V时,SCK最高频率则为1MHz[11]。硬件连接如图3.8所示。图3.8SHT11硬件连接应用信息:工作与贮存条件超出建议的工作范围可能导致高达3%RH的临时性漂移信号。返回正常工作条后,传感器会缓慢地向校准状态恢复。要加速恢复进程/可参阅7.3小节的“恢复处理”。在非正常工作条件下长时间使用会加速产品的老化过程。暴露在化学物质中电阻式湿度传感器的感应层会受到化学蒸汽的干扰,化学物质在感应层中的扩散可能导致测量值漂移和灵敏度下降。在一个纯净的环境中,污染物质会缓慢地释放出去。下文所述的恢复处理将加速实现这一过程。高浓度的化学污染会导致传感器感应层的彻底损坏。恢复处理置于极限工作条件下或化学蒸汽中的传感器,通过如下处理程序,可使其恢复到校准时的状态。在50-60℃和<10%RH的湿度条件下保持2小时(烘干);随后在20-30℃和>70%RH的湿度条件下保持5小时以上。温度影响气体的相对湿度,在很大程度上依赖于温度。因此在测量湿度时,应尽可能保证湿度传感器在同一温度下工作。如果与释放热量的电子元件共用一个印刷线路板,在安装时应尽可能将DHT11远离电子元件,并安装在热源下方,同时保持外壳的良好通风。为降低热传导,DHT11与印刷电路板其它部分的铜镀层应尽可能最小,并在两者之间留出一道缝隙。光线长时间暴露在太阳光下或强烈的紫外线辐射中,会使性能降低。配线注意事项DATA信号线材质量会影响通讯距离和通讯质量,推荐使用高质量屏蔽线。焊接焊接信息手动焊接,在最高260℃的温度条件下接触时间须少于10秒。注意事项:避免结露情况下使用,长期保存条件:温度10-40℃,湿度60%以下[10]。3.4单片机外围控制电路设计在本系统中单片机的外围电路较多,可分为以下几部分:看门狗电路、系统电源、3.4.43.4.4执行机构电路常用的温室环境调控设备主要有以下几种:①加热系统②降温系统③加湿系统④降湿系统其电路图相似,现仅示加热系统的电路,电路图分别如图3.10:图3.10加热电路图3.10中,当反向驱动器7404左边输入为高电平时,经7404变为低电平,使发光二极管发光,从而使光敏三极管导通,同时是三极管9013导通,因而使继电器J的线圈通电,继电器的触点闭合,使交流220V电源接通。反之当反向驱动器7404左边输入为低电平时,使继电器触点断开。图中电阻为限流电阻,二极管D的作用是保护晶体管T。当继电器J吸合时,二极管D截止,不影响电路工作。继电器释放时,由于继电器线圈存在电感,这时晶体管T已经截止,所以会在线圈的两端产生较高的感应电压。此电压的极性为上正下负,正端接在晶体管的集电极。当感应电压与与12V之和大于晶体管T的集电结反向电压时,晶体管T有可能损坏。加入二极管D后,继电线圈产生的感应电流由二极管D流过,因此,不会产生很高的感应电压,因而使晶体管T得到保护[7]。3.4.5键盘输入与报警电路单片机的按键输入一般可分为简单的独立式按键输入及行列式键盘输入两种。独立式键盘输入适合于按键输入不多的情况,具有占用口线较少、软件编写简单容易等特点。通常所用的按键为轻触机械开关,正常情况下按键的接点是断开的,当我们按压按钮时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在按钮时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而机械触点在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性及操作人员按键动作决定,一般为5ms~20ms;按键稳定闭合时间的长短是由操作人员的按键按压时间长短决定的,一般为零点几秒至数秒不等。由于该款温湿度计应用于对空气中的温湿度进行测量,当湿度达到某一数值时需要启动加湿功能,因此需要设定一个湿度值。为此,本设计增加了4个按键,其中K1光标移位键,K2键为确定,K3为循环加1键,K4为循环减1键,分别与单片机的P1.0、P1.1、P1.2、P1.3口相连。按键未被按下时,4个I/O口均为高电平;一旦按键按下,对应的I/O口被拉为低电平。以此来实现软件程序设计中的按键扫描。报警采用单片机外接一个三极管驱动蜂鸣器来实现。图3.11键盘输入电路图3.12报警电路4.温室控制系统软件设计4.1中断服务程序:图4.1中断服务程序4.2主程序开始P2.0=?温度转显示湿度转显示结束图4.2主程序软件设计的主程序,开始后先经过初始化再根据要求来选择对应的通道,然后结束。图五为中断服务程序,开始后看P2.0等于多少,对应的选择温度转换还是湿度转换,对应着显示,然后结束。微处理器和温湿度传感器通信采用串行二线接口SCK和DATA,其中SCK为时钟线,DATA为数据线。该二线串行通信协议和I2C协议是不兼容的。在程式开始,微处理器需要用一组"启动传输"时序表示数据传输的启动,如图3所示。当SCK时钟为高电平时,DATA翻转为低电平;紧接着SCK变为低电平,随后又变为高电平;在SCK时钟为高电平时,DATA再次翻转为高电平[8]。图4.3数据传输启动程序4.3显示原理图图4.4LCD显示原理图图4.4为软件方面的显示原理图,开始后,单片机经过初始化后接收数据,然后进行地址校验,校验不合格继续接受数据,校验合格的话取湿度给定值进而采样温湿度值,然后数码显示后上传数据,继续循环。温度和湿度值的计算:(1)SHT11可通过DATA数据总线直接输出数字量湿度值。该湿度值称为“相对湿度”,需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值:单片机初始接收数取温湿度给定采样温湿度液晶显示上传数开始NY地址校验式中:RHlinear为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3为线性补偿系数,取值如表4.5所列。由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线性补偿后的湿度值进行温度补偿非常有必要。补偿公式如下:式中:RHtrue为经过线性补偿和温度补偿后的湿度值,T为测试湿度值时的温度(℃),t1和t2为温度补偿系数,取值如表4.6所列。表4.5湿度线性补偿系数表4.6湿度值温度补偿系数(2)温度值输出由于SHT11是采用PTAT能隙材料制成的温度敏感元件,因而具有非常好的线性输出。实际温度值可由下式算得:Temperature=d1+d2×SOT式中:d1和d2为特定系数,d1的取值和SHT11工作电压有关,d2的取值则和SHT11内部A/D转换器采用的分辨率有关,其对应关系分别如表4.7和表4.8所列[9]。表4.7d1与工作电压关系表4.8d2与分辨率的关系4.4C语言和控制程序设计软件对整个系统来说是至关重要的,是整个系统的灵魂,整个系统的执行操作都是在软件的协调指挥下进行的。用于计算机程序设计的语言分为机器语言、汇编语言和高级语言。本测控系统的软件的编写主要采用C语言编写。本系统软件设计采用模块化的设计思路,即整个系统的程序软件由许多独立的子程序模块组成,它们之间通过软件接口进行连接。连接的原则是:模块内数据关系紧凑,模块间数据关系松散,按功能划分模块。word文档可自由编辑word文档可自由编辑word文档可自由编辑整个软件系统的程序可分为四个大模块,即主程序模块、参数设置程序模块、现场数据采集显示模块和执行处理程序模块。每个模块都具有一定的功能,每个模块又可分为许多子模块,既相互独立又相互联系,低级模块可以被高级模块调用。主程序是整个测控系统中最重要的程序,各个子程序都在主程序的协调指挥下运行,是一个顺序执行的无限循环程序,可以被任何优先级的中断请求所打断。各个环境参数的测试和控制指令的判断都在各个测控子程序中进行,主程序的主要功能是实现系统的初始化、实现系统自检、响应中断请求进而调用数据处理子程序。主程序如下:/****************************************************************************文件名称:main.c版本:KeiluVision4控制器:STC89C52RC晶振频率:12MHz说明:基于单片机的温湿度测试仪程序****************************************************************************//*includes-----------------------------------------------------------------*/#include<reg52.h>#include<SHT1X.h>#include<intrins.h>#include<LCD1602.h>#include<Button.h>#include<BuzzePhone.h>#include<Simulate_IIC.h>/*defines-------------------------------------------------------------------*/#defineTime0_TH00xc6//定义计数器0计数寄存器装载的高8位值,可自行修改#defineTime0_TL00x0d//定义计数器0计数寄存器装载的低8位值,可自行修改#defineState_Idle0x00//定义空闲状态#defineState_AdjustHumidity0x01//定义湿度调整状态#defineState_AdjustTemperature0x02//定义温度调整状态/*variable-------------------------------------------------------------------*/unsignedcharDHT22_ValueArray[5];//定义SHT22读取数据的存储数组变量unsignedintTemperatureValueLimit;//定义温度极限值变量unsignedintHumidityValueLimit;//定义湿度极限值变量unsignedintValue_Measured;//定义数据转换值变量unsignedintTemperatureValue;//定义SHT22的读出温度值变量unsignedintHumidityValue;//定义SHT22的读出湿度值变量unsignedcharButtonValue;//定义读出的P1口按键值变量unsignedcharCheckValue;//定义温湿度数据效验值变量unsignedcharSweepInterval_Show;//定义显示扫描时间累加变量unsignedcharSweepInterval_Button;//定义按键扫描时间累加变量unsignedcharSweepInterval_Alarm;//定义报警扫描时间累加变量unsignedcharState_Control=0;//定义状态转换变量bitFlag_Show=0;//定义显示处理标志变量bitFlag_Alarm=0;//定义报警处理标志变量bitFlag_Button=0;//定义按键处理标志变量/*****************************************************************************函数名称:System_DelayMicrosecond(unsignedintNumber)入口参数:unsignedintNumber出口参数:无函数功能:延时Number个机器周期备注:此延时函数是使用1T的指令周期进行计算,与传统的12T的MCU不同*****************************************************************************/voidSystem_DelayMicrosecond(unsignedintNumber){while(Number--){_nop_();_nop_();}}/*****************************************************************************函数名称:Time0_Initialization(void)函数功能:定时器0初始化函数备注:定时器工作于方式1,定时器计数寄存器16位全部用于计数******************************************************************************/voidTime0_Initialization(void){TMOD=0x21;//T0,工作方式1TH0=Time0_TH0;//装载定时器0寄存器高8位值TL0=Time0_TL0;//装载定时器0寄存器低8位值TR0=1;//开启T0定时器ET0=1;//允许T0定时器中断EA=1;//开启总中断允许}/*****************************************************************************函数名称:LCD1602_ShowTemperatureAndHumidity(void)输入参数:void输出参数:void功能书名:LCD1602显示湿度和温度值******************************************************************************/voidLCD1602_ShowTemperatureAndHumidity(void){Value_Measured=SHT1X_MeasuredData(HUM_TEST,55);HumidityValue=SHT11_ConvertFor12BitHumidity(Value_Measured);LCD1602_DisplayTwoNumber(3,0,HumidityValue);LCD1602_SetCursorPosition(16,0);Value_Measured=SHT1X_MeasuredData(TEM_TEST,210);TemperatureValue=SHT11_ConvertFor14BitTempeture(Value_Measured);LCD1602_DisplayTwoNumber(12,0,TemperatureValue);LCD1602_SetCursorPosition(16,0);}/*****************************************************************************函数名称:HandleFunctionButton(void)输入参数:void输出参数:void功能书名:功能按键处理函数******************************************************************************/voidHandle_FunctionButton(void){if(State_Control==State_AdjustTemperature){State_Control=State_Idle;}else{State_Control++;}}/****************************************************************************函数名称:KeyHandle_AffirmControl(void)入口参数:void出口参数:void函数功能:确认按键处理函数****************************************************************************/voidKeyHandle_AffirmControl(void){State_Control=State_Idle;//进入调整空闲状态}/*****************************************************************************函数名称:Handle_UpButton(void)输入参数:void输出参数:void功能书名:向上按键处理函数******************************************************************************/voidHandle_UpButton(void){switch(State_Control){caseState_AdjustHumidity:{if(HumidityValueLimit<99){HumidityValueLimit=HumidityValueLimit+1;LCD1602_DisplayTwoNumber(3,1,HumidityValueLimit);}else{HumidityValueLimit=HumidityValueLimit;LCD1602_DisplayTwoNumber(3,1,HumidityValueLimit);}LCD1602_SetCursorPosition(2,1);break;}caseState_AdjustTemperature:{if(TemperatureValueLimit<75){TemperatureValueLimit=TemperatureValueLimit+1;LCD1602_DisplayTwoNumber(12,1,TemperatureValueLimit);}else{TemperatureValueLimit=TemperatureValueLimit;LCD1602_DisplayTwoNumber(12,1,TemperatureValueLimit);}LCD1602_SetCursorPosition(11,1);break;}default:LCD1602_SetCursorPosition(16,1);break;}}/****************************************************************************函数名称:Handle_DownButton(void)输入参数:void输出参数:void功能书名:向下按键处理函数******************************************************************************/voidHandle_DownButton(void){switch(State_Control){caseState_AdjustHumidity:{if(HumidityValueLimit>2){HumidityValueLimit=HumidityValueLimit-1;LCD1602_DisplayTwoNumber(3,1,HumidityValueLimit);}else{HumidityValueLimit=HumidityValueLimit;LCD1602_DisplayTwoNumber(3,1,HumidityValueLimit);}LCD1602_SetCursorPosition(2,1);break;}caseState_AdjustTemperature:{if(TemperatureValueLimit>1){TemperatureValueLimit=TemperatureValueLimit-1;LCD1602_DisplayTwoNumber(12,1,TemperatureValueLimit);}else{TemperatureValueLimit=TemperatureValueLimit;LCD1602_DisplayTwoNumber(12,1,TemperatureValueLimit);}LCD1602_SetCursorPosition(11,1);break;}default:LCD1602_SetCursorPosition(16,1);break;}}/******************************************************************************函数名称:main()函数功能:主函数备注:******************************************************************************/voidmain(){/*************************存储器AT24C02初始化************************/TemperatureValueLimit=IIC_ReadOneByteFromE2PROM(0x01);if(TemperatureValueLimit>=99){TemperatureValueLimit=25;IIC_WriteOneByteToE2PROM(0x01,TemperatureValueLimit);}/*************************存储器AT24C02初始化************************/HumidityValueLimit=IIC_ReadOneByteFromE2PROM(0x02);if(HumidityValueLimit>=99){HumidityValueLimit=65;IIC_WriteOneByteToE2PROM(0x02,HumidityValueLimit);}/*-----------------------------LCD160初始化-----------------------------*/LCD1602_Initialization();/*------------------------------清屏LCD160------------------------------*/LCD1602_ClearScreen();/*-----------------------------显示等待界面-----------------------------*/LCD1602_DisplayOneCharacterString(0,0,"SensorInitialize");LCD1602_DisplayOneCharacterString(0,1,"LH:40%RHLT:24C");LCD1602_DisplayOneCharacter(14,1,0xdf);//显示温度符号LCD1602_DisplayTwoNumber(3,1,HumidityValueLimit);LCD1602_DisplayTwoNumber(12,1,TemperatureValueLimit);LCD1602_SetCursorPosition(15,0);//光标消隐/*--------------------------状态控制变量初始化--------------------------*/State_Control=State_Idle;//初始化状态值变量/*----------------------------清屏显示样板-----------------------------*/LCD1602_DisplayOneCharacterString(0,0,"CH:%RHCT:C");LCD1602_DisplayOneCharacter(14,0,0xdf);//显示温度符号LCD1602_ShowTemperatureAndHumidity();//显示测量的温湿度LCD1602_SetCursorPosition(16,1);//光标消隐System_DelayMicrosecond(0xff);//延时等待DHT22传感器释放/*------------------------------Time0初始化-----------------------------*/Time0_Initialization();while(1){/*-------------------------按键状态更新操作--------------------------*/while(Flag_Button){EA=0;//关闭总中断/*------------------------读取按键的状态-------------------------*/ButtonValue=Check_ButtonState();switch(ButtonValue){case0x01:{Handle_FunctionButton();IIC_WriteOneByteToE2PROM(0x01,TemperatureValueLimit);BuzzePhone_Music(1,400);IIC_WriteOneByteToE2PROM(0x02,HumidityValueLimit);break;}case0x02:BuzzePhone_Music(1,200);KeyHandle_AffirmControl();break;case0x03:BuzzePhone_Music(1,200);Handle_UpButton();break;case0x04:BuzzePhone_Music(1,200);Handle_DownButton();break;default:break;}Flag_Button=0;//按键扫描标志变量清零EA=1;//打开总中断}/*--------------------------显示状态更新操作-------------------------*/while(Flag_Show){EA=0;//关闭总中断LCD1602_ShowTemperatureAndHumidity();//显示温湿度值switch(State_Control){caseState_Idle:LCD1602_SetCursorPosition(16,1);break;caseState_AdjustHumidity:LCD1602_SetCursorPosition(2,1);break;caseState_AdjustTemperature:{LCD1602_SetCursorPosition(11,1);break;}default:LCD1602_SetCursorPosition(16,1);break;}Flag_Show=0;//显示扫描标志变量清零EA=1;//开启总中断}/*-------------------------报警状态更新操作--------------------------*/while(Flag_Alarm){EA=0;//关闭总中断if(HumidityValue<=(HumidityValueLimit)){BuzzePhone_Music(2,200);//蜂鸣器发连续的三声报警}elseif(TemperatureValue>=(TemperatureValueLimit)){BuzzePhone_Music(4,200);//蜂鸣器发连续的三声
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《创新教学与》课件
- 设计工程质量保障措施(3篇)
- 学校与外国学校交流协议书(2篇)
- 观迎南农大各位同学参加茂施公司的校园招聘宣讲会课件
- 2023年河南省信阳市公开招聘警务辅助人员(辅警)笔试模拟自测题(B)卷含答案
- 2021年河南省鹤壁市公开招聘警务辅助人员(辅警)笔试冲刺自测题一卷含答案
- 2024年浙江省湖州市公开招聘警务辅助人员(辅警)笔试高频必刷题试卷含答案
- 2024年XX系统性能优化服务合同2篇
- 《电子控制悬架系统》课件
- 2024年标准劳动协议模板一
- 文化执法大练兵大比武考试题库大全(含各题型)
- 冬至英文课件
- 幼儿园小小美食食谱播报员播报课件
- 复垦方案审批流程(2篇)
- 2024年保安员证考试题库附参考答案(a卷)
- 《湖南省医疗保险“双通道”管理药品使用申请表》
- 部编版四年级语文上册词语练习
- 2024年内蒙古恒正集团呼和浩特第二工贸有限公司招聘笔试参考题库含答案解析
- 探索·鄱阳湖智慧树知到期末考试答案2024年
- 国开2024年《0-3岁婴幼儿亲子活动设计与指导》形考作业1-3答案
- 光伏电站安全培训
评论
0/150
提交评论