1、温湿度检测控制系统教材1 前言温度和湿度的检测和控制是许多行业的重要工作之一,不论是货品仓库、生产车间,都需要有规定的温度和湿度,然而温度和湿度却是最不易保障的指标,针对这一情况,研制可靠且实用的温度和湿度检测与控制系统就显得非常重要。温湿度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用。在生产中,温湿度的高低对产品的质量影响很大。由于温湿度的检测控制不当,可能使我们导致无法估计的经济损失。为保证日常工作的顺利进行,首要问题是加强生产车间内温度与湿度的监测工作,但传统的方法过于粗糙,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工
2、作。这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。目前,在低温条件下(通常指100以下),温湿度的测量已经相对成熟。利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发。但人们对它的要求越来越高,要为现代人工作、科研、学习、生活提供更好的更方便的设施就需要从数字单片机技术入手,一切向着数字化,智能化控制方向发展。对于国内外对温湿度检测的研究,从复杂模拟量检测到现在的数字智能化检测越发的成熟,随着科技的进步,现在的对于温湿度研究,检测系统向着智能化、小型化、低功耗的方向发展。在发展过程中,以单片机为核心的温湿度控制系统发展为体积小、操作简单、量程宽、性能稳定
3、、测量精度高,等诸多优点在生产生活的各个方面实现着至关重要的作用。温湿度传感器除电阻式、电容式湿敏元件之外,还有电解质离子型湿敏元件、重量型湿敏元件(利用感湿膜重量的变化来改变振荡频率)、光强型湿敏元件、声表面波湿敏元件等。湿敏元件的线性度及抗污染性差,在检测环境湿度时,湿敏元件要长期暴露在待测环境中,很容易被污染而影响其测量精度及长期稳定性。2002年Sensiron公司在世界上率先研制成功SHT10型智能化温度/温度传感器,体积与火柴头相近。它们不仅能准确测量相对温度,还能测量温度和露点。测量相对温度的范围是0100%,分辨力达0.03%RH,最高精度为2%RH。测量温度的范围是-40+1
4、23.8,分辨力为0.01。测量露点的精度1。在测量湿度、温度时A/D转换器的位数分别可达12位、14位。利用降低分辨力的方法可以提高测量速率,减小芯片的功耗。SHT11/15的产品互换性好,响应速度快,抗干扰能力强,不需要外部元件,适配各种单片机,可广泛用于医疗设备及温度、湿度调节系统中。现在虽然单片机的品种繁多,各具特色,但仍以MCS-51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的WinBond系列单片机。STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。使用Atmel 公司高密度
5、非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。本设计以此为出发点,以温湿度控制为核心思想,根据自己所学的专业知识,用新型的智能集成温温度传感器SHT10主要实现对温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52进行数据的分析和处理,为显示和报警电路提供信号,实现对温湿度的控制报警。根据工作环境要求设定系统的温湿度阈值,利用LCD实时地测
6、量显示环境的温湿度值,实现温湿度自动控制,使其在较宽的温度范围内具有较高的测试精度,同时还可以根据预设定报警阈值报警,一旦发现环境温湿度超限,立即报警。为此我设计了操作简单、测量精度高、工作稳定的基于单片机的温湿度检测与控制系统。2 设计内容及方案2.1 设计内容用新型的智能集成温温度传感器DHT11主要实现检测温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52进行数据的分析和处理,为显示和报警电路提供信号。设定模块主要为设定温湿度报警的阈值。如图2-1所示。图2-1 设计模块图要求如下:1、用单片机通过编程来实现温湿度的显示与控制;2、通过
7、LCD来显示温湿度的数值;3、能够实现超阈值的报警;4、检测范围与精度:温度检测范围 : -30+100 测量精度 :1湿度检测范围 : 0100%RH 检测精度 :4.5%RH2.2 温湿度传感器方案选择方案一:湿度检测采用湿敏元件,其主要分为电阻式和电容式。湿敏电阻的种类多,灵敏度高,但是起线性度和产品的互换性差。湿敏电容灵敏度高,产品互换性搞,响应速度快,偏于实现产品小型化和集成化,是精度一般比湿敏电阻要低一些。综合湿敏元件,其线性度可抗污染性差,在湿度的检测环境中湿敏元件需要时刻在检测环境中,很容易受到环境污染从而影响其测量精度和持续的稳定性。温度检测采用最基本的热电偶和热敏电阻。热电
8、偶应用广泛,价格便宜而且耐用。种类多,能够覆盖非常宽的温度范围,最高温度可以到达2000。但是其非线性、响应速度慢、精度中等、灵敏度低、稳定性低、高温下容易老化和有线性漂移,并且测量需要参考量。热敏电阻,该传感器主要随温度的变化阻值发生变化,主要用于-200到500温度范围内的温度测量。其温度系数要大而且需要稳定的温度源,反应速度快,工艺好价格低,测温环境稳定。方案二:温湿度检测采用集成模拟传感器,其灵敏度高、线性度好、响应速度快,而且它可以和信号处理电路及逻辑控制电路集成在一起,使用方便。湿度传感器选用HS1101,温度传感器选择AD590。这两个传感器,在接入电路中,都需要A/D转换器,把
9、模拟信号转换成数字信号从而是单片机存储采集到的数据。方案三:采用数字式传感器,起初选择DS18B20和SHT10作为温度和湿度测量元件,但是SHT10包含相对湿度传感器、温度传感器,所以把SHT10作为温湿度检测的一个整体。SHT10作为典型的温湿度传感器,在测量过程中可对相对温湿度进行自动校准,准确的测量温湿度。产品互换性好,相应速度快,抗干扰性强,不需要外部参考源和外部器件。综上所述,SHT10与温湿敏元件的温湿度测量以及模拟测量的元器件相比,起数字温湿度传感器低成本,内部集成复杂,测量准确,而且能够提供数字输出,简化外部测量电路,精度高,适用广泛的测量范围,并且本设计的温湿度检测系统相适
10、合。因此,选择温度湿度传感器SHT10作为此次设计中的测量元件。2.2 显示器方案选择方案一:数码管显示,数码管按段数分为七段数码管和八段数码管,起驱动方式分别为静态驱动和动态驱动,静态驱动编程简单,显示亮度高但是占用I/O端口多,在十几应用时必须增加译码器驱动进行驱动,增加了硬件电路的复杂性。动态电路是最广泛的显示方式之一,其能够节省大量的I/O端口,而且功耗低。针对数码管,其显示单调不具备数据的直观性。方案二:LCD1602液晶显示,具有字符发生器ROM可显示192种字符(160个57点阵字符和32个510点阵字符)具有64个字节的自定义字符RAM,可自定义8个58点阵字符或四个511点阵
11、字符。具有80个字节的RAM,标准的接口特性,适配M6800系列MPU的操作时序。模块结构紧凑、轻巧、装配容易,像素尺寸小,分辨率高。综上,选择LCD1602能够把温湿度很直观的显示出来,能够在设定阈值时更能简洁明了,所以选择LCD1602为显示元件。3 系统的硬件选择及设计原理3.1 温湿度传感器SHT10温湿度传感器SHT10由Sensirion公司生产,其产品具有无可比你的优越性能。SHT10单芯片传感器内含有已校准数字信号输出的复合传感器,它应用专利的COMS过程微加工技术确保了产品具有极高的可靠性与卓越的长期稳定性。体积与火柴头相近。它们不仅能准确测量相对温度,还能测量露点参数。广泛
12、应用在数据采集器、变送器、自动化过程控制、汽车行业、楼宇控制、暖通空调、电力机房、计量测试、医药业。实体图如图3-1所示。图3-1 SHT10传感器实体与接口图接口定义如表3-1所示:引脚名称描述1GND接地2DATA串行数据,双向3SCK串行时钟,输入口4VDD电源NCNC必须为空表3-1 接口定义SHT10的供电电压范围为2.45.5V, 建议供电电压为3.3V。在电源引脚(VDD,GND)之间须加一个100nF的电容,用以去耦滤波。SHT10的串行接口,在传感器信号的读取及电源损耗方面,都做了优化处理。传感器不能按照I2C 协议编址,但是,如果I2C 总线上没有挂接别的元件,传感器可以连
13、接到I2C 总线上,但单片机必须按照传感器的协议工作。SCK 用于微处理器与SHT10之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小SCK 频率。DATA引脚为三态结构,用于读取传感器数据。当向传感器发送命令时,DATA在SCK上升沿有效且在SCK高电平时必须保持稳定。DATA在SCK下降沿之后改变。为确保通讯安全,DATA 的有效时间在SCK 上升沿之前和下降沿之后应该分别延长至TSU and THO当从传感器读取数据时,DATA TV在 SCK 变低以后有效,且维持到下一个SCK的下降沿。为避免信号冲突,微处理器应驱动DATA 在低电平。需要一个外部的上拉电阻(例如:10k)将
14、信号提拉至高电平。上拉电阻通常已包含在微处理器的I/O电路中。3.2 电路热性电气特性,如能耗,高、低电平,输入、输出电压等,都取决于电源。表3-2详细解释了SHT10的电气特性,若没有标明,则表示供电电压为5V。若想与传感器获得最佳通讯效果。参数条件最小典型最大单位供电电源DC102.43.35.5V供电电流测量状态0.551mA平均值11228A休眠状态0.31.5A低电平输出电压IOL4mA0250mV高电平输出电压RP25 k90%100%VDD低电平输入电压下降0%20%VDD高电平输入电压上升80%100%VDD焊盘上的输入电流1A输出电流开4mA三态(关)1020A表3-2 SH
15、T10直流特性,RP表示上拉电阻,IOL指低电平输出电流VDD 对GND 的绝对最大值为+7V 和-0.3V。如果传感器工作在绝对最大值条件下时间过长,会影响传感器的稳定性(如:热载流效应,氧化)。加重的DATA线由传感器控制,普通的DATA线由单片机控制。有效时间依据SCK 的时序。数据读取的有效时间为前一个切换的下降沿。如图3-2所示。图3-2 SHT10时序图传感器特点:相对湿度和温度一体测量精确露点测量全量程标定,无需重新标定即可互换使用两线制数字接口 (最简单的系统集成,较低的价格)高可靠性 (工业 CMOS 工艺)优化的长期稳定性 基于请求式检测,因此低能耗具有湿度传感器元件的自检
16、测能力传感器元件加热应用,亦可获得极高的精度和稳定性全量程标定技术参数:湿度测量范围: 0100 RH湿度测量精度:4.5 RH(20到80 RH)湿度测量复现性: 0.1 RH湿度测量分辨率: 0.03 RH温度测量范围:-40+123.8温度测量精度: 0.5 在 25时;0.9(0 到 40)温度响应时间: 20 秒温度测量重复性: 0.1 温度测量分辨率: 0.01其温湿度特性曲线如图3-3所示。图3-3 温湿度特性曲线3.3 单片机选择本系统控制电路的核心器件采用的是美国ATMEL生产的STC89C52单片机属于MCS-51系列。STC89C52实物如图3-4所示。图3-4 单片机S
17、TC89C52实物图主要性能:与MCS-51单片机产品兼容8K字节在系统可编程Flash存储器1000次擦写周期全静态操作:0Hz33Hz三级加密程序存储器32个可编程I/O口线三个16位定时器/计数器八个中断源全双工UART串行通道低功耗空闲和掉电模式掉电后中断可唤醒看门狗定时器双数据指针掉电标识符3.4 单片机介绍STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位C
18、PU 和在系统可编程Flash,使STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。本设计电路中STC89C52单片机的电
19、路图如图3-5所示。图3-5 STC89C52框图脚口介绍:8位微控制器8K字节在系统可编程Flash STC89C52。P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1口是一个具有内部上拉电阻8位双向I/O口,p1 输出缓冲器能驱动4个TTL逻辑电平。P1端口写“1”时,内部上拉电阻把端
20、口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能:P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出。P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)。P1.5 MOSI(在系统编程用)。P1.6 MISO(在系统编程用)。P1.7 SCK(在系统编程用)。P2 口:P2 口是一个具有内部上拉电阻的8 位双向
21、I/O 口,P2 输出缓冲器能驱动4个TTL 逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O口,p3 输出缓冲器能驱动4个T
22、TL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,即P3口输出电流(IIL)。 P3口亦作为STC89C52特殊功能(第二功能)使用,如下表3-3所示。 在flash编程和校验时,P3口也接收一些控制信号。端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INTO(外中断0)P3.3INT1(外中断1)P3.4TO(定时/计数器0)P3.5T1(定时/计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)表3-3 P3口引脚与第二功能此外,P3口还
23、接收一些用于FLASH闪存编程和程序校验的控制信号。 RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。 对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOV
24、C指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。 FLASH存储器编程时,该
25、引脚加上+12V的编程允许电源Vpp,当然这必须是器件是使用12V编程电压Vpp。3.5 复位电路RST引脚是单片机复位端,高电频有效。在引脚端输入至少连续两个单片机周期的高电频,单片机复位。使用时,在引脚与VSS引脚之间接一个10K的下拉电阻,与VCC引脚之间接一个约10F的电解电容,即可保证上电自动复位。本设计中复位电路如图3-6所示。图3-6 复位电路3.6 晶振电路在单片机电路中晶振的作用非常大,结合单片机内部的电路,产生单片机所必需的时钟频率,单片机的一切指令的执行都是建立在晶振的基础上。晶振利用一种特殊的晶体,在电能和机械能之间相互转化产生共振,提供稳定精确的单频震荡,为系统提供基
26、本的时钟信号。晶振元器件实物图如图3-7所示。图3-7 晶振实物图C1、C2为负载电容,X1为晶振,12MHz。设计中晶振电路如图3-8所示。图3-8 晶振电路3.7 显示电路本设计显示部分采用字符型TC1602液晶显示所测温湿度值并且显示控制界面。TC1602实物图如图3-9所示。LCD1602显示器主要特点:液晶显示屏是以若干个58或511点阵块组成的显示字符群。每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。主控制驱动电路为HD44780(HITACHI)及其他公司全兼容电路,如SED1278(SEIKO EPSON)、KS0066(SAMSUNG)、NJU6408(NER JA
27、PAN RADIO)。具有字符发生器ROM可显示192种字符(160个57点阵字符和32个510点阵字符)具有64个字节的自定义字符RAM,可自定义8个58点阵字符或四个511点阵字符。具有80个字节的RAM,标准的接口特性,适配M6800系列MPU的操作时序。模块结构紧凑、轻巧、装配容易,像素尺寸小,分辨率高。颜色分单色(黑白)、彩色两种。为便于夜间观察,可采用由LED或ELD器件构成的背景光源。液晶显示器属于被动发光型显示器件,它本身不发光,只能反射或透射外界光线,因此环境亮度越高,显示越清晰。其亮暗对比度可达100:1。单+5V电源供电,采用交流驱动方式。图3-9 TC1602实物图使用
28、时,可将P0与LCD的数据线相连,P2口与LCD的控制线相连,其中,TC1602第4脚RS为寄存器选择,第5脚RW为读写信号线,第6脚E为使能端。第714脚:D0D7为8位双向数据线。这里要注意的是,为了布线方便,单片机端的D0D7是接到LCD/602的D1D0,正好相反,因此在编写软件时需要做处理,使读取正确。LCD显示电路如图3-10所示。图3-10 显示电路3.8 报警电路本设计采用的是声光报警,设定报警的上下限值实现报警功能,使用单片机的中断系统。根据单片机接收到的数据经过处理后与该参数设定的上下限进行比较,高于上限值(或低于下限值)则进行报警,同时能进行正常的显示。报警电路中,以指示
29、灯和蜂鸣器构成,在输入温湿度的上下限后,系统会进行实时采样,并判断测试温湿度与输入温湿度之间的差异,当检测出的温湿度在设定的温湿度上下限外就会报警,即指示灯亮,同时蜂鸣器响,电机转动。报警电路如图3-11所示。图3-11 报警电路4 软件设计整个系统的功能是由硬件电路配合软件程序来实现的,当硬件基本定型的时候软件也基本定下拉了,从软件的功能不同,可以分为两的类:一是主程序,它是整个软件的核心,专门用来协调各个执行模块和操作者的联系。二是子程序,它是用来完成各种实质性的工作的,如测量、计算、显示、通讯等。每一个执行软件就是一个小的执行模块,这里将每一个模块一一列出来,并为每个执行模块进行功能定义
30、和接口定义。各执行模块规划好以后,就可以规划监控软件了。首先要根据系统的总体功能选择一种最合适的主程序结构,然后根据实时性的条件,合理安排监控软件和执行软件之间的调度关系。4.1 主程序模块主程序主要完成硬件初始化,子程序调用等功能。在主程序中,对温湿度传感器,LCD1602液晶显示器的初始化,同时调用传感器数据,进行显示,之后进行阈值判断并启动报警装置。主程序模块框图如图4-1所示。图4-1 主程序模块4.2 SHT10初始化流程该流程主要对传感器的初始化进行设计,流程图如图4-2所示。图4-2 SHT10初始化流程图4.3 LCD初始模块LCD上电时,都必须按照一定的时序对LCD进行初始化操作,主要任务是设置LCD的工作方式,显示状态,清屏,输入方式,光标位置等。LCD初始化如图4-3所示。图4-3 LCD1602初始化流程图5 系统调试5.1 Proteus软件调试软件调试主要使用Proteus软件和Keil4软件。在软件调试中,首先在Proteus中绘制电路图,并设置各元器件的参数。然后在Keil4软件编写程序,并编译后输入Proteus中进行仿真。Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。Proteus软件除了其具有和其它EDA工具软件的一样的原理布图,还可以电路仿真。不止是对单片机的仿真还对其外围器件进行仿真。其特