1基于单片机温室大棚温度控制设计摘要:本系统以AT89C51单片机为控制核心,利用温度传感器AD590对蔬菜大棚内的温度进行实时采集与控制,实现温室温度的自动控制。本系统由单片机小系统模块、温度采集模块、加热模块、降温模块、按键以及显示模块六个部分组成。可以通过按键设定温室的温度值,采集的温度和设定的温度通过LED数码管显示。当所设定的温度值比采集的温度大时,通过加热器加热,以达到设定值;反之,开启降温风扇,以快速达到降温效果。通过该系统,对蔬菜大棚内的温度进行有效、可靠地检测与控制。从而保证大棚内作物在最佳的温度条件下生长,提高质量和产量。关键词:单片机、温室大棚、温度控制一、硬件设计(一)设计目标本系统要控制的对象为这样一个规模的温室。温室结构的参数为:屋脊高5.2m,檐高3m,单跨度6.5m,长为20m,地面面积为130平方米。要实现的目标是,使薄膜温室的温度保持在20℃——30℃之间,在这个区域内温度值是可设定的。(二)设计思路系统原理框图如图1所示。本系统由单片机小系统模块、温度采集模块、WP型温室加热器、降温模块、按键以及显示模块六个部分组成。通过按键设定温度值,设定的温度值和采集的温度值都可以通过LED数码管显示。当所设定的温度值比采集的温度大时,通过加热器加热,以达到设定值;反之,开启降温风扇,以快速达到降温效果。该系统对温度的控制范围在20℃——30℃,温度控制的误差小于等于0.5℃。通过使用该系统,对蔬菜大棚内的温度进行有效、可靠地检测与控制,保证大棚内作物在最佳的温度条件下生长,提高质量和产量。1图1系统原理框图该系统分为六个模块,分别是单片机小系统模块、温度采集模块、显示模块、键盘扫描模块、加热模块和降温模块。(三)基于AT89C51的单片机小系统本系统采用Atmel公司所生产的AT89C51单片机。AT89C51单片机小系统如图2所示:图2单片机小系统这个小系统由时钟脉冲和复位电路组成,AT89C51内部已具备振荡电路,只要在接地引脚上面的两个引脚(即19、18脚)连接简单的石英晶体即可。AT89C51的时钟频率为温度采集键盘扫描显示WP型温室加热器AT89C51控制系统降温模块112MHz。AT89C51的复位引脚为第9脚,当此引脚连接高电平超过2个机器周期(一个机器周期为6个时钟脉冲),即可产生复位的动作。以12MHz的时钟脉冲为例,每个时钟脉冲1μs,两个机器周期为12μs,因此,在第9脚上连接一个12μs以上的高电平脉冲,即可产生复位的动作。对于上电复位,复位引脚上串接了一个电容,当复位引脚接+5V电压时,电容相当于短路,经过一段时间(在这段时间内完成复位)后,电容处于充电状态,相当于断开。还有一种是手动复位,它的接法是在AT89C51复位引脚所串连的电容上并联接一个按钮开关。当按钮没按下时,电容处于充电状态;当按钮按下时,电容对复位引脚放电,从而在这个引脚上产生高电平,达到复位的目的。(四)温度采集模块本系统的温度采集和转换电路原理图如图3所示,它的工作过程为:系统通过AD590采集外界的温度参数,并通过三个放大器的作用将温度转化为电流模拟量;此模拟量通过ADC0804的转化变成数字量,以便单片机辨认接收。图3AD590温度传感器工作的系统结构电路图根据电路图,说明各个器件的功能如下:OPA1:以0℃为标准,调节可变电阻R10使其输出电压为2.73伏特。1OPA2:减2.73伏特,并反相。OPA3:放大5倍并反相。例如:AD590输出电压为1.5伏特,则其温度为:1.5/5(OPA3)+2.732(OPA2)=3.302伏特;3.302/10K=303.2微安培;303.2-273.2=30微安培→30℃。温度值OPA1OPA2OPA3ADCVINADC输出值0℃2.732V0V0V0V00H10℃2.832V-0.1V0.5V0.5V19H20℃2.932V-0.2V1V1V32H30℃3.032V-0.3V1.5V1.5V4BH40℃3.132V-0.4V2V2V64H50℃3.232V-0.5V2.5V2.5V7DH60℃3.332V-0.6V3V3V96H70℃3.432V-0.7V3.5V3.5VAFH80℃3.532V-0.8V4V4VC8H90℃3.632V-0.9V4.5V4.5VE1H100℃3.732V-1V5V5VFAH表1各温度与3个OPA及ADC0804的输入与输出关系图4ADC0804如图4,A/D转换器就是模拟/数字转换器,是将输入的模拟信号转换成数字信号。信1号输入端的信号可以是传感器或是转换器的输出,而ADC输出的数字信号可以提供给微处理器,以便更广泛地应用。ADC0804电压输入与数字输出关系如下表2所示:十六进制二进制码二与满刻度的比率相对电压值VREF=2.56伏高四位字节低四位字节高四位字节电压低四位字节电压F111115/1615/2564.8000.300E111014/1614/2564.4800.280D110113/1613/2564.0600.260C110012/1612/2563.8400.240B101111/1611/2563.5200.220A101010/1610/2563.2000.200910019/169/2562.8800.180810008/168/2562.5600.160701117/167/2562.2400.140601106/166/2561.9200.120501015/165/2561.6000.100401004/164/2561.2800.080300113/163/2560.9600.060200102/162/2560.6400.040100011/161/2560.3200.0200000000表2ADC0804电压输入与数字输出关系例如:VIN=3V,由上表可知2.880+0.120=3V,为10010110B=96H。AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V——30V,检测的温度范围为-55℃——+150℃,它有非常好的线性输出性能,温度每增加1℃,其电流增加1微安培。当摄氏温度为0℃时,AD590的电流为273.2微安培,经10千欧姆电阻后其电压为2.732伏特。余者依上述方法类推。利用AD590以及接口电路把温度转换成模拟电压,经由ADC0804转换成数字信号后传送给AT89C51处理。温度采集和AD590温度传感器工作的系统结构电路图为图3。1(五)显示模块译码IC及温度显示的电路图如图5所示。显示部分的工作原理是,它将温度转换的数字量,即温度值,经由AT89C51的P1口由两个译码IC输出并分别送入两个七段数码管显示,这两个LED都是共阳极的。图5译码IC及温度显示BCD码转换成7段LED数码管的译码驱动IC,如图6所示,首推7447系列,包括7446、7449、74LS49。其中的7446及7447输出低电平驱动的显示码,用以推动共阳极7段LED数码管;而7448及74LS49输出高电平驱动显示码,用以推动共阴极7段LED数码管,7446、7447与7448的引脚相同(双并排16pins)。1图6译码IC7447D、C、B、A:BCD码输入引脚。a、b、c、……g:7段数码管输出引脚。LT:本引脚为测试引脚,当接高电平时,所连接的7段LED数码管全亮。正常显示下应接低电平。RBI:本引脚为涟波淹没输入引脚,正常显示下应接低电平。BI和RBO:本引脚为淹没输入或涟波淹没输出引脚,正常显示下应接低电平。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(小数点)。(六)键盘扫描1图7键盘扫描电路图7是键盘扫描的电路图,其中74922是键盘扫描IC。键盘扫描电路的原理是,将键盘接在一个键盘扫描IC74922上,当在键盘上按下键时,相关的键码将通过74922的A、B、C、D口线传递给AT89C51单片机。键盘采用电话式键盘,结构如图8所示。键盘是接在键盘扫描IC74922(上图6所示)上面的,键盘的输入通过74922的X1——X3和Y1——Y4输入。X1X2X3图8电话式键盘鉴于键盘扫描IC为4*4形式,以下键盘编码每行后面都有0FFH,以配合硬件使用。按键123456对应编码01H02H03H04H05H06H按键789*0#123456789*0#Y1Y2Y3Y41对应编码07H08H09H0AH00HOBH表3键盘编码键盘扫描IC74922的工作过程:X1—X3接键盘的行,Y1——Y4接键盘的列,按键信息由这几个口输入,由A、B、C、D四个口输出到P3口的低四位,再通过P1口经过译码IC显示在LED上。键盘扫描芯片不断查询是否有按键输入,当查询到有按键时,DA置1,同时执行相应的程序,比较温度是否超出上、下限,进而决定是加热还是降温。(七)WP型温室加热器如图7所示,在AT89C51的P2.1口上接一个继电器,将加热器接在此继电器上。需要提高温度时,单片机控制P2.1口,使之置1,进而控制加热器加热。(八)降温模块如图7所示,在AT89C51的P2.2口上接一个继电器,将降温风扇接在此继电器上。需要降温时,单片机控制P2.2口,使之置1,进而控制降温风扇降温。二、软件设计本系统的工作流程是,操作人员可以从键盘上输入要设定的温度值。当此温度值与当前温度不同时,单片机控制系统采取调节的动作。当设定温度大于测定温度时,则使加热器工作;当设定温度小于测定温度时,则开启降温风扇。此程序流程包括4个部分。第一部分是主程序,它描述的是程序的总体结构;第二部分是定时器T0的描述,它的功能是将实际温度和设定的温度比较,再作出相应的动作;第三部分是键盘扫描部分;第四部分是显示部分,用于显示温度值。(一)主程序YN开始系统初始化A/D转换判断有无按键?按键程序1图9主程序本温度控制系统的总体设计思路见图9的主程序流程图,系统采用温度传感器AD590采集温度数据,再由ADC0804模数转换器将温度转化为单片机可以处理的数据。本系统将温度总体控制在20℃到30℃之间,并且可以通过键盘输入要设定的温度值,并通过7段数码管显示出来。在整个系统的运行期间,有一个定时器T0中断每隔20ms扫描一次,用于当前温度与设定温度的比较,然后发出加温或降温的命令。程序代码如下:ORG00HJMPSTARTORG0BHJMPTIM0START:MOVTMOD,#01HMOVTH0,#60MOVTL0,#76SETBTR0MOVIE,#82HMOVR4,#09HMOVR0,#30H1CLEAR:MOV@R0,#00HDJNZR4,CLEARMOVA,#00HMOVDPTR,#TABLE1MOVCA,@A+DPTRMOV34H,AMOVA,#01HMOVDPTR,#TABLE1MOVCA,@A+DPTRMOV35H,AMOV36H,#0FFHSTART0:MOVX@R0,AWAIT:JBP3.4,KEYINJBP2.0,ADCJMPWAITADC:MOVXA,@R0MOV37H,ACLRCSUBBA,36HJCTDOWNTUP:MOVA,37HCLRCSUBBA,34HJNCPOFF1JMPLOOPPON:CLRP2.1JMPSTART0POFF:SETBP2.1JMPLOOPTDOWN:MOVA,37HCLRCSUBBA,35HJCPONJMPLOOPLOOP:MOV36H,37HCLRAMOVR4,#0FFHDJNZR4,$CALLL1