温室大棚智能监测系统设计.docx
《温室大棚智能监测系统设计.docx》由会员分享,可在线阅读,更多相关《温室大棚智能监测系统设计.docx(30页珍藏版)》请在冰点文库上搜索。
温室大棚智能监测系统设计
毕业设计报告书
题目:
温室大棚智能监测系统设计
专业机电一体化
班级
姓名
指导教师
第一部分设计任务与调研
1、本设计的主要任务
本设计的主要任务是设计一个温室大棚的温度监测系统,其应具有以下主要功能:
(1)可以自行设定所要监测的温度值;
(2)实际温度与设定监测的温度相差在不同范围内做出不同的提示:
♦不大于1℃时,绿灯常亮;
♦不小于3℃时,红灯常亮;
♦大于1℃且小于3℃时,绿灯闪烁。
(3)LCD显示温室内的实时温度。
2、本设计的意义
温室坏境测控,即根据植物生长发育需要,自动调节温室内环境的总称。
进行环境测控是实现温室生产管理自动化、科学化的基本保证,通过对监测数据的分析,结合作物生长发育规律,控制环境条件,使作物在不适宜生长发育的反季节中,可获得比室外生长更优的环境条件,达到作物优质、高产、高效的栽培目的。
3、设计的思路和方法
温室智能测控系统能监测温室的温、湿度,并根据温室环境实现自动温湿度调节。
操作人员通过输入设备键盘设定温度、湿度数值,传感器分布在温室内多个位置,对温室环境进行多点实时动态采集,经过A/D转换,送入单片机处理,驱动执行装置,从而实现温室环境的自动智能调节。
显示装置实时显示温室内的温度、湿度数值,当温度、湿度偏差超出一定限度一定时间,发出报警。
其中执行装置为调节温度、湿度的装置。
目前,温室内温度的调节和控制包括加温、降温和保温三个方面。
加温有热风采暖系统、热水采暖系统、土壤加温三种形式。
降温最简单的途径是通风,但在温度过高,依靠自然通风不能满足作物的要求时,必须进行人工强制降温。
降温包括遮光降温法、屋面流水降温法、蒸发冷却法及强制通风法。
保温包括减少贯流放热和通风换气量、增大保温比、增大地表热流量。
空气湿度的调控,主要是防止作物沾湿和降低空气湿度两个直接目的。
除湿的方法有通风换气、加温除湿、适当地控制灌水量、使用除湿型热交换通风装置。
加湿的方法包括喷雾加湿、湿帘加湿、温室内顶部安装喷雾系统。
本系统分别采用热风采暖系统、通风降温除湿和喷雾加湿的方法。
当湿度低于设定值即打开滴灌电磁阀进行喷水,当湿度与设定值的偏差满足要求时即关闭电磁阀;当温度高于设定值一定幅度或湿度高于设定值一定幅度时,单片机控制风扇进行排风;当温度低于设定值一定幅度时,单片机控制电热丝进行加热。
所以,温室智能测控系统的执行装置是风扇、电热丝和滴灌电磁阀。
第二部分设计说明
1、整体方案设计
系统采用单片机AT89C52系统进行温度和湿度的监测控制。
其中温度信号和湿度信号都由温湿度传感器DHT90提供。
由DHT90内置存储器存储温湿度范围,当温湿度超出相应的范围,系统通过蜂鸣器来报警。
系统完成的温度和湿度的测量值在液晶显示器LCD1602上显示相应的温度和湿度,系统具有较高的测量精度和控制精度。
系统整体结构如图2-1:
图2-1系统结构框图
2、主要硬件介绍
2.1单片机AT89C52介绍
AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
其内部主要由CPU、RAM、ROM、通用I/O及总线构成,其引脚分布和内部结构分别如图如2-2、图2-3所示。
图2-2AT89C52引脚图
AT89C52
时钟
程序存储器
数据存储器
定时计数器
并行I/O口
串行通信口
中断系统
数据
总线
地址
总线
控制
总线
图2-3AT89C52内部结构图
CPU:
由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:
用以存放程序、一些原始数据和表格;
AT89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.2机器周期和指令周期
(1)振荡周期:
也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期。
(2)状态周期:
每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。
(3)机器周期:
一个机器周期包含6个状态周期S1-S6,也就是12个时钟周期。
在一个机器周期内,CPU可以完成一个独立的操作。
(4)指令周期:
它是指CPU完成一条操作所需的全部时间。
每条指令执行时间都是有一个或几个机器周期组成。
MCS-51系统中,有单周期指令、双周期指令和四周期指令。
2.3DHT90温湿度传感器
DHT90温、湿度传感器将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号。
传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与14位的A/D转换器以及串行接口电路实现无缝连接,带有两线制的串行接口和内部的电压调整功能。
因此DHT90具有数字式输出、免调试、免标定、免外围电路及全互换的特点。
以下是DHT90传感器实物图。
图2-4DHT90温湿度传感器
DHT90温湿度传感器的主要特性如下:
(1)将温、湿度传感器、信号放大调理、A/D转换、I2C总线接口全部集成于一芯片(CMOsenstm技术);
(2)可给出全校准相对湿度及温度值输出;
(3)带有工业标准的I2C总线数字输出接口;
(4)具有露点值计算输出功能;
(5)具有卓越的长期稳定性;
(6)湿度值输出分辨率为14位,温度值输出分辨率为12位,并可编程为12位和8位;
(7)小体积(7.65*5.08*23.5mm),可表面贴装;
(8)具有可靠的CRC数据传输校验功能;
(9)片内装载的校准系数可保证100%互换性;
(10)电源电压范围为2.4~5.5V;
(11)电流消耗,测量时为550uA,平均为28uA,休眠时为3uA。
(一)温度传感器部分
测量范围:
-40℃—+124℃;
允许偏差值:
±0.5℃
由能隙材料PTAT(正比于绝对温度)研发的温度传感器具有极好的线性。
可用如下公式将数字输出(SOt)转换为实际温度值:
T=d1+d2*Sot
其中在5V标准电压下,d1=-40,d2=0.01
表2-1为温度转换系数表:
表2-1温度转换系数表
VDD
d1(℃)
d2(℃)
5V
-40.1
0.01
4V
-39.8
0.04
3.5V
-39.7
0.04
(二)湿度传感器部分
敏感元件(湿度):
电容性聚合体测湿敏感元件;
分辨率:
8bitmin,12bitmax;
湿度变送范围:
0~100%RH;
精度(湿度准确度):
±3%RH;
湿度值输出DHT90可通过I2C总线直接输出数字量湿度值,DHT90的输出特性呈一定的非线性,为了补偿湿度传感器的非线性,可按如下公式修正湿度值:
RHlinear=c1+c2*SORH+c3*SORH²
表2-2为湿度转换系数表。
表2-2湿度转换系数表
SORH
C1
C2
C3
12bit
-2.0468
0.0367
-1.5955E-6
8bit
-2.0468
0.5872
-4.0845E-4
考虑湿度型号的温度补偿,由于实际温度于测试参考温度25℃的显著不同,湿度型号需要温度补偿。
温度校正粗略对应于0.12%RH/℃@50%RH。
RHtrue=(T℃-25)*(t1+t2*SORH)+RHlinear
表2-3为0温度补偿系数表:
表2-3温度补偿系数表
SORH
t1
t2
12bit
0.01
0.00008
8bit
0.01
0.00128
DHT90数据串口DATA:
DATA引脚为三态结构,用于读取传感器数据。
当向传感器发送命令时,DATA在SCK上升沿有效且在SCK高电平时必须保持稳定。
DATA在SCK下降沿之后改变。
为确保通讯安全,DATA的有效时间在SCK上升沿之前和下降沿之后应该分别延长至TSUandTHO。
当从传感器读取数据时,DATATV在SCK变低以后有效,且维持到下一个SCK的下降沿。
DHT90工作指令:
(1)传输开始初始化传输时,应首先发出“传输开始”命令,该命令可在SCK为高时使DATA由高电平变为低电平,并在下一个SCK为高时将DATA升高。
接下来的命令顺序包含三个地址位(目前只支持“000”)和5个命令位,当DATA脚的ack位处于低电位时,表示DHT90正确收到命令。
(2)连接复位顺序如果与DHT90传感器的通讯中断,下列信号顺序会使串口复位:
即当DATA线处于高电平时,触发SCK9次以上(含9次),此后应接着发一个“传输开始”命令。
初始化命令和传输开始命令如图2-5所示:
图2-5初始化命令和传输开始命令
(3)温湿度测量时序当发出了温(湿)度测量命令,控制器就要等到测量完成。
使用8/12/14位的分辨率测量分别需要大约11/55/210ms的时间。
为表明测量完成,DHT90会使数据线为低,此时控制器必须重新启动SCK,然后传送两字节的测量数据与1字节CRC校验和。
控制器必须通过使DATA为低来确认每一个字节,所有的量均从右算,MSB列于第一位。
通讯在确认CRC数据位后停止。
如果没有用CRC校验和,则控制器就会在测量数据LSB后保持ack为高来停止通讯,DHT90在测量和通讯完成后会自动返回睡眠模式。
需要注意的是:
为使DHT90的温升低于0.1℃此时的工作频率不能大于标定值的15%。
如表2-4所示温湿度测量命令:
表2-4温、湿度测量命令
温度测量
00000011
湿度测量
00000101
图2-6描述了整个湿度测量和数据读取的通讯过程:
图2-6湿度测量和数据读取的通讯过程
2.4LCD1602显示器
2.4.11602字符型LCD简介
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。
下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。
一般1602字符型液晶显示器实物如图2-7:
图2-71602字符型液晶显示器实物图
在单片机系统中应用液晶显示器作为输出器件的几个优点:
(1)显示质量高:
由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
(2)数字式接口:
液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
(3)体积小,重量轻:
液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
(4)功耗低:
相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
2.4.2液晶显示器的原理和分类
1.液晶显示原理:
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
2.液晶显示器的分类:
液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(SimpleMatrix)和主动矩阵驱动(ActiveMatrix)三种。
3.液晶显示器各种图形的显示原理:
线段显示:
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。
这就是LCD显示的基本原理。
字符显示:
用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。
这样一来就组成某个字符。
但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
汉字显示:
汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5……右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整汉字。
2.4.31602LCD的基本参数及引脚功能
(1)1602LCD主要技术参数:
显示容量:
16×2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×4.35(W×H)mm
(2)引脚功能说明:
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2-5所示:
表2-5引脚功能表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
3、硬件电路设计
3.1系统时钟的设计
时钟电路是用来产生AT89C52单片机工作时所必须的时钟信号,AT89C52本身就是一个复杂的同步时序电路,为保证工作方式的实现,AT89C52在唯一的时钟信号的控制下严格的按时序执行指令进行工作,时钟的频率影响单片机的速度和稳定性。
通常时钟由于两种形式:
内部时钟和外部时钟。
我们系统采用内部时钟方式来为系统提供时钟信号。
AT89C52内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一个自激励振荡器。
电路中的C1、C2的选择在30PF左右,但电容太小会影响振荡的频率、稳定性和快速性。
晶振频率为在1.2MHZ~12MHZ之间,频率越高单片机的速度就越快,但对存储器速度要求就高。
为了提高稳定性我们采用温度稳定性好的NPO电容,采用的晶振频率为12MHZ。
本电路的时钟设计也是根据AT89C52单片机原理来设计,如图2-8。
图2-8系统时钟电路
3.2DHT90电路
DATA数据线接一个10k的上拉电阻,防止信号干扰。
SCK和DATA接单片机的两个I/O口。
图2-9DHT90电路
3.3显示电路
1602液晶显示模块可以和单片机AT89C52直接接口,电路如图2-10:
图2-101602液晶显示接口电路
3.4报警电路
在微型计算机控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意,或采取紧急措施。
其方法就是把计算机采集的数据或记过计算机进行数据处理、数字滤波,标度变换之后,与该参数上下限给定值进行比较,如果高于上限值(或低于下限值)则进行报警,否则就作为采样的正常值,进行显示和控制。
本设计采用峰鸣音报警电路。
峰鸣音报警接口电路的设计只需购买市售的压电式蜂鸣器,然后通过MCS-51的1根口线经驱动器驱动蜂鸣音发声。
压电式蜂鸣器约需10mA的驱动电流,可以使用TTL系列集成电路7406或7407低电平驱动,也可以用一个晶体三极管驱动。
在图中,P3.2接晶体管基极输入端。
当P3.2输出高电平“1”时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫;当P3.2输出低电平“0”时,三极管截止,蜂鸣器停止发声。
图2-11是一个简单的使用三极管驱动的峰鸣音报警电路。
图2-11三极管驱动的峰鸣音报警电路
本设计是为在温湿度测量中对温湿度的上下限超出是的提示报警,接口位于单片机AT89C52的P3.2口,但温湿度过限时,P3.2口被置0,本系统开始工作。
4、系统软件设计与调试
4.1系统的软件设计介绍
本系统的软件设计采用C语言编写,主要通过AT89C52单片机读取DHT90端口送出的温、湿度数字信号,并按照相应转换公式转化成实际温、湿度数值,在数码管上显示。
当温、湿度超出门限时报警,另外,该软件还可实时显示时间。
4.2主程序设计
在主程序系统流程中先是系统初始化,再进行温湿度预测报警值,然后在进行温湿度的采集和数据的处理进行温湿度显示,同时显示时间并校准。
温湿度没有超值的情况下程序流程结束,如果温湿度超值系统会进行报警。
图2-12系统主流程图
4.3温湿度读取与显示程序设计
本设计的湿度读取主要是由DHT90温湿度传感器的初始化后,再延时0.2S后读取温湿度读取成功后在进行线性拟和数据然后在进行显示再延时0.8S进行循环,假如读取失败DHT90通信将重启。
图2-14温湿度采集和显示流程图
4.4报警子程序设计
报警子程序的主要流程如图2-15所示。
图2-15报警子程序流程图
4.5系统调试
在硬件设计完成和软件设计完成后,毕业设计工作进入系统调试阶段。
烧入程序过后,接上电源后出现的第一个问题是液晶显示屏出现乱码现象,这个主要原因是编程序的时候出现了差错,而且许多通信协议没有搞清楚。
出现的第二个问题是,P0口负责的时钟显示没有显示,用万用表检查发现P0八个I/O全为高,没有信号输出。
通过对线路的检查之后发现许多地方还存在着虚焊,短路的现象,通过外用表的检查之后,线路上基本不存在了这些基本问题。
虽然制作出了实物,也经过很多次的尝试,调节,但是未能实现许多效果,只是设计焊接了一个样本,感到非常的遗憾。
另外,报警部分采用NPN管作为触发开关,由单片机的管脚输出高电平触发NPN管导通,刚开始发现报警电路不正常,一接电源后蜂鸣器不停的报警,原来P3.2口一直输出的是高电压,根据NPN管导通调节,需要集电极电压>基极电压>发射极电压,才能正常导通。
于是,蜂鸣器就一直在报警了,通过对程序的修改之后,只有温湿度超过了设定上下限值后P3.2口才会变为高电平,之后报警电路就能工作正常。
:
第三部分设计成果
1、系统总原理图
总电路图如图3-1所示:
图3-1总电路原理图
2、程序清单
nsignedcharRead_Sensor(void){
unsignedchari;
Sensor_SDA=0;
Delay_N1ms
(2);//延时2Ms,保持主机电位为低电平(Min=800usMax220ms)
Sensor_SDA=1;
Delav_Nl0us
(1);//延时30us,保持主机电位为高电平(Min=30usMax250us)
Sensor_SDA=1;
Sensor_AnswerFlag=0;//传感器响应标志
if(Sensor_SDA==0){
Sensor_AnswerFlag=1;//收到起始信号
Sys_CNT=0;
while((!
Sensor_SDA)){
if(++Sys_CNT>300){//防止进入死循环
Sensor_ErrorFlag=1;
return0;
}}
Sys_CNT=0;
while((Sensor_SDA))
if(++Sys_CNT>300){//防止进入死循环
Sensor_ErrorFlag=l;
return0;
}
}
//判断从机是否发出80us的高电平,如发出则进入数据接收状态
for(i=0;i<5;i++){
Sensor_Data[i]=Read_SensorData();//对40位数据接收
}
}
else{
Sensor_AnswerFlag=0;
}
return1:
}
unsignedcharRead_SensorData(void){
unsignedchari,cnt;
unsignedcharbuffer,tmp;
buffer=0;
for(i=0;i<8;i++){
cnt=0;
while(!
Sensor_SDA){//检测上次低电平是否结束
if(++cnt>=300){
break;
}}//延时Min=26usMax50us跳过数据“0”的高电平
Delay_N10us
(2);//延时30us
tmp=0;
if(Sensor_SDA){
tmp=1;
}
cnt=0;
while(Sensor_SDA){//等待高电平结束
if(++cnt>=200){
Break;
}
}
buffer<<=1;
buffer=tmp;
}
returnbuffer;
}