温室温度自动控制系统设计毕业论文.docx
《温室温度自动控制系统设计毕业论文.docx》由会员分享,可在线阅读,更多相关《温室温度自动控制系统设计毕业论文.docx(27页珍藏版)》请在冰豆网上搜索。
温室温度自动控制系统设计毕业论文
温室温度自动控制系统设计毕业论文
目 录
第1章温室控制系统的总体设计.................................5
1.1温室环境因子.......................................................5
1.2控制系统设计要求...................................................5
1.3控制系统总体设计...................................................6
第2章温室控制系统硬件设计..................................8
2.1基于AT89C51的单片机系统..........................................8
2.1.1时钟脉冲.........................................................8
2.1.2复位电路.........................................................9
2.2温度采集模块.......................................................9
2.2.1AD转换器ADC0804的功能..........................................11
2.3.1译码IC7447....................................................13
2.3.2七段LED数码管...................................................14
2.4键盘扫描..........................................................15
第1章温室控制系统的总体设计
本系统要控制的对象为这样一个规模的温室。
温室结构的参数为:
屋脊高5.2m,檐高3m,单跨度6.5m,长为20m,地面面积为130平方米[3]。
要实现的目标是,使薄膜温室的温度保持在20℃——30℃之间,在这个区域内温度值是可设定的。
1.1温室环境因子
作物的生长发育及产品的最终形成,其产量与质量一方面取决于作物本身的遗传特性,另一方面取则决于外部环境条件。
在实际生产中,一方面通过育种技术来获得具有新遗传性的品种,另一方面要通过先进的栽培技术及适宜的环境条件来控制其生长和发育。
温室内气温、地温对作物的光合作用、呼吸作用、根系的生长和水分、养分的吸收有着显著的影响,因此影响作物生长发育的环境条件中,以温度最为敏感,也最为重要,对温室环境控制的研究也是最先从温度控制开始的。
不同种类的作物对温度的要求是不同的,同一作物在不同发育阶段对温度的要求亦有所不同,而且在同一发育期阶段内对温度的要求也会随着昼夜变化而呈周期性地变化。
一般说来在白天作物进行光合作用需要的温度较高,晚上维持呼吸作用所需的温度要低一些。
另外温室内的气温要受到太阳辐射强度和室外气温变化的影响,在温室环境自动控制系统的研制中应该考虑到这种情况。
作物生长发育适宜的温度,随种类、品种、生育阶段及生理活动的变化而变化。
为了增加光合产物的生成,抑制不必要的呼吸消耗,在一天中,随着光照强度的变化,实行变温管理是一种很有效的管理方法。
1.2控制系统设计要求
本系统以温室温度为主要控制参数,进行控制系统的设计,主要完成以下功能。
1.实现对温室温度参数的实时采集,测量空间多点温度:
根据测量空间或设备的实际需要,由多路温度传感器对关键温度敏感点进行测量,由单片机对各路数据进行循环检测、数据处理、存储,实现温度的智能、多空间点的测量。
2.显示报警功能:
实现超数据的及时报警。
温度检测范围:
20-30ºC,检测精度
0.5ºC。
3.存储一定时间的温室环境参数值。
由于单片机对温室环境的检测是一个连续不断的过程,单片机数据存储器的容量需足够大,能够存储数天的数据。
需要保存一组由室内、外环境参数及其本组数据采集时间组成的一条测控记录。
本控制系统保存一条测控记录需要30个字节的存储单元。
32K外部数据存储器中的0300H~7FFFH为测试数据存储区,共计32000个字节,最多可以存储1066条记录。
如果每隔lO分钟存储一条记录,则一天需要存储144条记录。
扩展32K数据存储器可以存储7天的数据。
完全可以满足本控制系统的需要。
4.能够根据季节、地区和作物的不同,设置不同的控制参数。
操作人员可以根据不同的季节、地区和作物,来设置不同的环境控制参数,以满足不同的需要达到最佳效益。
5.自动调节温室内的环境参数。
当强电柜的转换开关都放在“自动”档位时,控制系统能够完全自动的控制温室内温度调节机构,将温室内温度调节到操作人员设定的参数值附近。
1.3控制系统总体设计
系统原理框图如图1所示,温室温度自动控制系统总体电路图见附录一。
本系统由单片机系统模块、温度采集模块、WP型温室加热器、降温模块、按键以及显示模块六个部分组成。
通过按键设定温度值,设定的温度值和采集的温度值都可以通过LED数码管显示。
当所设定的温度值比采集的温度大时,通过加热器加热,以达到设定值;反之,开启降温风扇,以快速达到降温效果。
该系统对温度的控制范围在20℃——30℃,温度控制的误差小于等于0.5℃。
通过使用该系统,对蔬菜大棚内的温度进行有效、可靠地检测与控制,保证大棚内作物在最佳的温度条件下生长,提高质量和产量。
图1系统原理框图
第2章温室控制系统硬件设计
该系统分为六个模块,分别是单片机系统模块、温度采集模块、显示模块、键盘扫描模块、加热模块和降温模块。
现分别介绍如下:
2.1基于AT89C51的单片机系统
本系统采用Atmel公司所生产的MCS—51系列中的AT89C51单片机[4]。
主芯片的功能:
AT89C51单片机系统如图2所示:
图2单片机系统
这个系统由两部分组成,现介绍如下:
AT89C51的内容:
2.1.1时钟脉冲
AT89C51内部已具备振荡电路,只要在接地引脚上面的两个引脚(即19、18脚)连接简单的石英晶体即可。
AT89C51的时钟频率为12MHz。
2.1.2复位电路
AT89C51的复位引脚(Reset)[5]为第9脚,当此引脚连接高电平超过2个机器周期(一个机器周期为6个时钟脉冲),即可产生复位的动作。
以12MHz的时钟脉冲为例,每个时钟脉冲1us,两个机器周期为12us,因此,在第9脚上连接一个12us以上的高电平脉冲,即可产生复位的动作。
对于上电复位,复位引脚上串接了一个电容,当复位引脚接+5伏电压时,电容相当于短路,经过一段时间(在这段时间内完成复位)后,电容处于充电状态,相当于断开。
还有一种是手动复位,它的接法是在AT89C51复位引脚所串连的电容上并联接一个按钮开关。
当按钮没按下时,电容处于充电状态;当按钮按下时,电容对复位引脚放电,从而在这个引脚上产生高电平,达到复位的目的。
2.2温度采集模块
本系统的温度采集和转换电路原理图如图3所示,它的工作过程为:
系统通过AD590[6]采集外界的温度参数,并通过三个放大器的作用将温度转化为电流模拟量;此模拟量通过ADC0804[7]的转化变成数字量,以便单片机辨认接收。
图3AD590温度传感器工作的系统结构电路图
根据电路图,说明各个器件的功能如下:
温度传感器AD590的功能:
如上图3所示:
OPA1:
以0℃为标准,调节可变电阻R10使其输出电压为2.73伏特。
OPA2:
减2.73伏特,并反相。
OPA3:
放大5倍并反相。
例如:
AD590输出电压为1.5伏特,则其温度为:
1.5/5(OPA3)+2.732(OPA2=3.032伏特;
3.032/10K=303.2微安培;
303.2-273.2=30微安培→30℃。
注意:
ADC0804的VREF=2.56V。
表1各温度与3个OPA及ADC0804的输入与输出关系
温度值
OPA1
OPA2
OPA3
ADCVIN
ADC输出值
0℃
2.732V
0V
0V
0V
00H
10℃
2.832V
-0.1V
0.5V
0.5V
19H
20℃
2.932V
-0.2V
1V
1V
32H
30℃
3.032V
-0.3V
1.5V
1.5V
4BH
40℃
3.132V
-0.4V
2V
2V
64H
50℃
3.232V
-0.5V
2.5V
2.5V
7DH
60℃
3.332V
-0.6V
3V
3V
96H
70℃
3.432V
-0.7V
3.5V
3.5V
AFH
80℃
3.532V
-0.8V
4V
4V
C8H
90℃
3.632V
-0.9V
4.5V
4.5V
E1H
100℃
3.732V
-1V
5V
5V
FAH
2.2.1AD转换器ADC0804的功能
图4ADC0804
(1)如图4所示,所谓A/D转换器就是模拟/数字转换器,是将输入的模拟信号转换成数字信号。
信号输入端的信号可以是传感器或是转换器的输出,而ADC输出的数字信号可以提供给微处理器,以便更广泛地应用。
(2)ADC0804电压输入与数字输出关系如下表2所示:
表2ADC0804电压输入与数字输出关系
十六进制
二进制码二
与满刻度的比率
相对电压值VREF=2.56伏
高四位字节
低四位字节
高四位字节电压
低四位字节电压
F
1111
15/16
15/256
4.800
0.300
E
1110
14/16
14/256
4.480
0.280
D
1101
13/16
13/256
4.060
0.260
C
1100
12/16
12/256
3.840
0.240
B
1011
11/16
11/256
3.520
0.220
A
1010
10/16
10/256
3.200
0.200
9
1001
9/16
9/256
2.880
0.180
8
1000
8/16
8/256
2.560
0.160
7
0111
7/16
7/256
2.240
0.140
6
0110
6/16
6/256
1.920
0.120
5
0101
5/16
5/256
1.600
0.100
4
0100
4/16
4/256
1.280
0.080
3
0011
3/16
3/256
0.960
0.060
2
0010
2/16
2/256
0.640
0.040
1
0001
1/16
1/256
0.320
0.020
0
0000
0
0
例如:
VIN=3V,由上表可知2.880+0.120=3V,为10010110B=96H。
(3)AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V——30V,检测的温度范围为-55℃——+150℃,它有非常好的线性输出性能,温度每增加1℃,其电流增加1微安培。
当摄氏温度为0℃时,AD590的电流为273.2微安培,经10千欧姆电阻后其电压为2.732伏特。
余者依上述方法类推。
(4)利用AD590以及接口电路把温度转换成模拟电压,经由ADC0804转换成数字信号后传送给AT89C51处理。
(5)温度采集和AD590温度传感器工作的系统结构电路图为图3.2。
2.3显示模块
译码IC及温度显示的电路图如图5所示。
显示部分的工作原理是,它将温度转换的数字量,即温度值,经由AT89C51的P1口由两个译码IC输出并分别送入两个七段数码管显示[8],这两个LED都是共阳极的。
图5译码IC及温度显示
2.3.1译码IC7447
BCD码转换成7段LED数码管的译码驱动IC,如图6所示,首推7447系列,包括7446、7449、74LS49[9]。
其中的7446及7447输出低电平驱动的显示码,用以推动共阳极7段LED数码管;而7448及74LS49输出高电平驱动显示码,用以推动共阴极7段LED数码管,7446、7447与7448的引脚相同(双并排16pins)。
7447引脚说明:
1、D、C、B、A:
BCD码输入引脚。
2、a、b、c、……g:
7段数码管输出引脚。
3、/LT:
本引脚为测试引脚,当接高电平时,所连接的7段LED数码管全亮。
正常显示下应接低电平。
4、/RBI:
本引脚为涟波淹没输入引脚,正常显示下应接低电平。
5、/BI和/RBO:
本引脚为淹没输入或涟波淹没输出引脚,正常显示下应接低电平。
图6译码IC7447
2.3.2七段LED数码管
7段LED数码管是利用7个LED组合而成的显示设备,可以显示0到9共10个数字。
当要显示多个数码管,可分别驱动每个数码管;当要利用人类的视觉暂留现象,则可以采用快速扫描的方式,只要一组驱动电路即可达到显示多个数码管的目的。
一般来说,7段LED数码管可分为共阳极和共阴极两种,共阳极就是把所有LED的阳极连接到共同的接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);同样的,共阴极就是把所有LED的阴极连接到共同的接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点)。
2.4键盘扫描
图7是键盘扫描的电路图,其中74922[10]是键盘扫描IC。
键盘扫描电路的原理是,将键盘接在一个键盘扫描IC74922上,当在键盘上按下键时,相关的键码将通过74922的A、B、C、D口线传递给AT89C51单片机。
图7键盘扫描电路
2.4.1键盘
本键盘采用电话式键盘,其结构如图8所示。
键盘是接在键盘扫描IC74922(上图7所示)上面的,键盘的输入通过74922的X1——X4和Y1——Y4输入。
X1X2X3
Y1
1
2
3
4
5
6
7
8
9
*
0
#
图8电话式键盘
但鉴于键盘扫描IC为4*4形式,以下键盘编码每行后面都有0FFH,以配合硬件使用。
按键及分别对应的键盘编码如表3所示:
表3键盘编码
按键
1
2
3
4
5
6
对应编码
01H
02H
03H
04H
05H
06H
按键
7
8
9
*
0
#
对应编码
07H
08H
09H
0AH
00H
OBH
2.4.2键盘扫描芯片
键盘扫描芯片74922的图形如图7所示。
键盘扫描IC74922的工作过程是这样的:
X1——X4接键盘的行,Y1——Y4接键盘的列,按键信息由这几个口输入,由A、B、C、D四个口输出到P3口的低四位,再通过P1口经过译码IC显示在LED上。
键盘扫描芯片不断查询是否有按键输入,当查询到有按键时,DA置1,同时执行相应的程序,比较温度是否超出上、下限,进而决定是加热还是降温。
第3章软件设计
本系统的工作流程是,操作人员可以从键盘上输入要设定的温度值。
当此温度值与当前温度不同时,单片机控制系统采取调节的动作。
当设定温度大于测定温度时,则使加热器工作;当设定温度小于测定温度时,则开启降温风扇。
此程序流程包括4个部分。
第一部分是主程序,它描述的是程序的总体结构;第二部分是定时器T0的描述,它的功能是将实际温度和设定的温度比较,再作出相应的动作;第三部分是键盘扫描部分;第四部分是显示部分,用于显示温度值(系统总程序见附录2)。
3.1主程序
主程序流程图如图9所示:
图9主程序流程图
本温度控制系统的主程序流程图,温度控制系统采用温度传感器AD590采集温度数据,再由ADC0804模数转换器将温度转化为单片机可以处理的数据。
本系统将温度总体控制在20℃到30℃之间,并且可以通过键盘输入要设定的温度值,并通过7段数码管显示出来。
在整个系统的运行期间,有一个定时器T0中断每隔20ms扫描一次,用于当前温度与设定温度的比较,然后发出加温或降温的命令。
程序代码如下:
ORG00H
JMPSTART
ORG0BH
JMPTIM0;定时器T0中断子程序
START:
MOVTMOD,#01H;选择TIMER0,MODE1
MOVTH0,#60
MOVTL0,#76
SETBTR0;启动定时器T0
MOVIE,#82H
MOVR4,#09H;(30H)--(38H)寄存器
MOVR0,#30H
CLEAR:
MOV@R0,#00H;清除RAM(30H)--(38H)
DJNZR4,CLEAR
MOVA,#00H
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOV34H,A;(34H)为上限温度--30度
MOVA,#01H
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOV35H,A;(35H)为下限温度--20度
MOV36H,#0FFH;(36H)为存储的旧温度值
START0:
MOVX@R0,A;/WR=0,ADC0804开始转换
WAIT:
JBP3.4,KEYIN;P3.4=1表示有按键,转往按键子程序
JBP2.0,ADC;检测ADC0804转换完成否?
P2.0=1,
;则完成
JMPWAIT
ADC:
MOVXA,@R0;将转换好的数据送入累加器
MOV37H,A;温度的比较。
将现温度值存入37H
CLRC
SUBBA,36H;现温度值减去旧温度寄存器的值
JCTDOWN
TUP:
MOVA,37H;将现温度值存入A
CLRC
SUBBA,34H;与上限温度作比较
JNCPOFF;C=0表示比上限温度大,必须停止加热
JMPLOOP
PON:
CLRP2.1
JMPSTART0
POFF:
SETBP2.1;继电器不动作,即停止加热
JMPLOOP
TDOWN:
MOVA,37H;将现温度值存入A
CLRC
SUBBA,35H;与下限温度作比较
JCPON;C=1表示比下限温度小,须加热
JMPLOOP
LOOP:
MOV36H,37H;将现温度值存入36H中
CLRA
MOVR4,#0FFH;延迟
DJNZR4,$
CALLL1;二--十进制转换程序
MOV21H,#10H;显示延迟
NOVR1,#30H
DISP1:
CALLDISP;温度值的显示
DJNZ21H,DISP1
JMPSTART0
3.2定时器T0中断
定时器T0中断的工作流程如图10所示。
当定时器T0发生中断时,就将按键输入的设定的温度值与当前的温度值比较。
当输入的温度值大于当前测定的温度值,单片机就控制加热器加热;当设定的温度值小于当前测定的温度值,就开启降温风扇。
图10定时器T0中断子程序
程序代码如下:
TIM0:
PUSHACC
PUSHPSW
MOVTH0,#60;重设中断时间
MOVTL0,#76
MOVA,33H
CJNEA,31H,T;设定温度的十位是否等于所
;测温度的十位数
MOVA,32H
CJNEA,30H,T;设定温度的个位是否等于所
;测温度的个位数
JMPOFF;个位相等,则令加热器停止加热
T:
JCOFF;设定温度小于现在温度,停止加热
CLRP2.1;否则加热
RETURN:
POPPSW
POPACC
RETI
OFF:
SETBP2.1;停止加热
JMPRETURN
DELAY:
MOVR7,#06;显示器扫描时间
D1:
MOVR6,#248
DJNZR6,$
DJNZR7,D1
RET
3.3显示模块
显示子程序流程图如图11所示:
(说明:
30H用于暂时存放要显示温度的高四位,31H用于暂时存放要显示温度的低四位,38H用于存放最终要显示在7段数码管上的温度值;D1、D2分别表示两个7段数码管的存储地址。
)
图11显示子程序
系统提供温度的显示功能,将温度用两个7段数码管显示出来。
程序如下:
DISP:
MOVA,@R1
ANLA,#0F0H;D1值:
取(30H)高4位
SWAPA
MOV38H,A
INCR1
MOVA,@R1
ANLA,#0FH;D2值:
取(31H)低4位
SWAPA
ORLA,38H;D1,D2合成为8位
MOVP1,A;送给7段数码管显示
CALLDELAY;扫描延迟
RET
3.4按键扫描
按键扫描子程序流程图如图12所示:
图12按键子程序
将键盘接在一个键盘扫描IC74922上,所按键将被此芯片处理后传送给单片机处理。
工作流程如图12所示。
如果要设定新的温度值,操作流程为:
按“*”→要设定的温度值→按“*”,这样就完成了温度的设定。
程序代码如下:
KEYIN:
JBP3.4,$;有按键,放开否?
MOVA,P3;是则读74922的按键值
ANLA,#0FH;取有效的低4位
MOVDPTR,#TABLE;至TABLE取键盘转换码
MOVCA,@A+DPTR
XRLA,#0AH;是否按“*”?
JNZSTART0;不是,回到现在温度模式
JBP3.4,KEYIN1;有新的按键否?
MOVR1,#32H;无,设定温度显示地址
CALLDISP;显示设定温度地址中的值
MOVR5,4FH;几秒钟后无按键则自动解除
;设定温度模式
D4:
MOVR7,#0FFH
D3:
MOVR6,#0FFH
D2:
JBP3.4,KEYIN1
DJNZR6,D2
DJNZR7,D3
DJNZR5,D4
JMPSTART0
KEYIN1:
JBP3.4,$;按键放开否?
MOVA,P3;放开则读74922键盘值
ANLA,#0FH
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOV20H,A;按键值存入(20H)
XRLA,#0AH;是否按“*”?
JZX1;是,则温度设定完成
MOVA,20H
XRLA,#0BH;"#"未设定键
JZWAIT1
MOVA,20H;不是"*"、"#",则为数字键
XCHA,32H;按键值存入(32H),(33H)
XCHA
附录
附录1系统电路图
附录2源程序代码
程序要完成的功能是将总体温度控制在20℃——30℃之间,在这个范围内,可以设定任一温度值,并使之达到恒温效果;如果超出这个范围,则程序自动控制继电