蔬菜大棚温度控制系统设计.doc

上传人:good****022 文档编号:116818124 上传时间:2022-07-06 格式:DOC 页数:26 大小:356.50KB
返回 下载 相关 举报
蔬菜大棚温度控制系统设计.doc_第1页
第1页 / 共26页
蔬菜大棚温度控制系统设计.doc_第2页
第2页 / 共26页
蔬菜大棚温度控制系统设计.doc_第3页
第3页 / 共26页
点击查看更多>>
资源描述
上海农林职业技术学院毕业设计(论文)题 目: 蔬菜大棚温度控制系统的设计 系 别: 农业信息工程 专 业: 图文信息技术 班 级: 图文121 学 号: 146312115 姓 名: 许永冠 指导教师: 聂爱丽 完成日期: 2015年4月30 日 蔬菜大棚温度控制系统的设计摘要:温度控制是蔬菜大棚最重要的一个管理因素,温度过高或过低,都会影响蔬菜的生长。传统的温度控制是用温度计来测量,并根据此温度人工来调节其温度。但仅靠人工控制既耗人力,又容易发生差错。为此,现代的蔬菜大棚管理中通常需要温度自动控制系统,以简单方便、快速的的控制大棚内的温度。本设计以AT89C51单片机为控制中心,用AD590为温度检测元件,由温度测量控制电路、键盘、显示电路、报警电路等组成,实现对大棚环境温度测量与控制,用户可通过键盘设置需要报警的上下限值。文中从硬件和软件两方面介绍了温度控制系统,对硬件原理图和程序流程图进行了系统的描述。该系统可扩展性强,配置简单,操作方便,具有通用性,有效地节省了人力物力。关键词:AT89C51单片机 AD590温度传感器 越限报警 自动测控目 录1 引言51.1选题背景及意义51.2 方案论证51.3 方案组成62 硬件电路设计72.2温度采集电路82.3 A/D转换电路102.4 按键电路设计102.5 温度显示电路112.6 其它电路123 软件系统设计133.1程序流程图及分析144 总结18参考文献19附 录201 引言1.1选题背景及意义蔬菜的生长与温度息息相关,对于蔬菜大棚来说,最重要的一个管理因素是温度控制。温度太低,蔬菜就会被冻死或则停止生长,所以要将温度始终控制在适合蔬菜生长的范围内。为此,智能的大棚温度控制系统已经成为农民的迫切需要。传统的测温系统是在分立式温度传感器的基础上发展起来的。由于这类传感器的主要缺点是外围电路比较复杂、测量精度较低、分辨率不高、需经行温度校正等,虽然它与被测对象直接接触,不受中间介质的影响,具有较高的精度;测量范围广,可从-501600进行连续测量。但它的体积较大,使用也不够方便。因此,分立式温度传感器逐渐被淘汰,所以在其基础上发展起来的温度测控系统也逐渐被淘汰。模拟集成温度传感器的主要特点是功能单一、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温,不需要进行非线性校准,外围电路简单。本设计的目的是让管理者能够及时的观测到蔬菜大棚内的温度,将温度始终控制在适合蔬菜生长的范围内,帮助农民提高农作物的产量,减少管理者的工作量。1.2 方案论证在现代化的蔬菜大棚管理中通常有温度自动控制系统,以控制蔬菜大棚温度,适应生产需要,并以监控采大棚内各个角落的温度变化情况,一旦出现异常现象就能报警,并能及时处理。但温度自动测控系统有好多种方案,为此,需要进行讨论和比较,以找到最佳的设计方案。1、测量部分方案一:采用热敏电阻,可满足4090的测量范围,但热敏电阻精度、重复性、可靠性都比较差,对于检测小于1的温度信号是不适用的。方案二:采用DS18B20。它是DALLAS公司专利产品,在2075范围内精度为0.5,但是在此范围外的温度测量却误差较大,而且其串行数字输出方式采用软件处理比较困难,开销也大。方案三:采用温度传感器AD590。它具有较高的精度和重复性,相比于热敏电阻精度有很大提高,非线性误差为0.3,且检测温度范围为:-55+155,完全满足要求。综上比较分析,选择方案三,以实现较好的温度测量实现。2、主机部分方案一:采用89C51,其内部有4KB的闪烁存储器,且编码后以并行方式传输数据。它的优点是方便实现,软件开销小。方案二:采用8051,其内部无片内程序存储器,因此,必须在片外扩展EPROM。综合分析,采用方案一比较方便。1.3 方案组成由方案论证得到,温度自动控制系统电路是以AT89C51单片机为控制核心来进行整体设计的,并用集成温度传感器AD590为温度的检测元器件。因此,整个系统的硬件部分包括温度采集放大电路、模数转换电路、按键电路、数码管显示电路、声光报警电路等。本设计的基本框图如图1-1所示。图1-1 设计框图蔬菜大棚温度控制系统的基本功能: l 温度检测:采用AD590温度传感器作为检测端。l 具有显示功能:利用数码管显示温度。l 具有用户输入功能:利用键盘输入对温度的上下限进行设置。l 具有报警功能:声光报警。l 具有自动加热制冷保护功能:如果实际测定的温度值超过了系统设置的最高温度,单片机就会发出命令,进行制冷;如果实际测定的温度值超过了系统设置的最低温度,单片机会发出命令,进行加热;并伴随着声光报警。l 温度历史记录查询:蔬菜大棚管理人员可以随时查询采集过来的温度历史记录。1 硬件电路设计本设计的温度自动控制系统电路以AT89C51单片机为控制核心来进行整体设计的。整个系统的硬件部分包括AD590的温度采样放大电路、ADC0809的模数转换电路、按键电路、驱动电路、LED显示电路、声光报警电路、电源转换电路等。再配上C语言的程序使软件得以实现,进而实现温度自动控制的基本功能。系统硬件框图如图2-1所示:图2-1 系统硬件框图通过温度传感器对大棚中空气进行温度采集,将采集的温度信号经放大滤波处理后,送给ADC0809进行转换,在传输给单片机,由单片机控制数码管显示器,并比较采集的温度与设定的温度范围是否一致,如果超出设定的温度范围,进行声光报警,再驱动继电器对大棚进行加热或降温处理。2.1 AT89C51单片机2.1.1 AT89C51内部结构AT89C51单片机内部包括一个8位的CPU,片内振荡器和时钟电路,由4K字节的FLASH存储器,128KB的数字存储器,四个8位并行的I/O口,一个全双工串行口,两个16位的可编程的定时/计数器,6个中断源,3个中断矢量,提供两个中断优先级,21个特殊功能寄存器,可寻址各64KB的外部程序存储器和数据存储器,有位寻址功能和较强的布尔数据处理能力,有两种软件可选的低功耗运行方式(空闲和掉电方式)。2.1.2 AT89C51的最小系统 (1)最小系统 单片机接上时钟电路和复位电路,就构成了最小系统,因此,最小系统如图2-2所示。图2-2 AT98C51的最小系统(2)复位电路 复位是单片机的初始化操作。单片机系统在上电启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。因此,复位是一个很重要的操作方式。但单片机本身不能自动复位的,必须配合相应的外部复位电路才能实现的。(3)时钟电路单片机的各个功能部件的运行都是以时钟控制信号为基准,有条不紊的一拍一拍的工作。因此,时钟频率直接影响到单片机的速度。 2.2温度采集电路温度检测电路由温度传感器、LM741 型运算放大器等构成。温度传感器将温度变成电信号,通过放大器使得信号在A/D转换器的量程范围内放大,在单片机的控制下,A/D 转换器完成信号的A/D 转换,然后将转换后的数字信号送入单片机进行数据分析与处理。2.2.1 温度采集工作原理 因为AD590是将温度转换为电流,而单片机对电压信号更好测量,所以要将电流转换为电压,同时对电压信号进行放大,之后输入给A/D转换器ADC0809的D0D7端口,其电路如图2-3所示。图2-3 温度采集放大电路2.2.2 低通滤波电路由于温度传感器采集到的信号中能夹有高频的噪声信号和干扰信号,在经过放大后,这样的信号会对采集的结果和转换的结果产生很大的误差和不良的后果。无限增益低通滤波器既可以将高频信号除去。其电路如图2-4所示。图2-4 无限增益低通滤波电路2.3 A/D转换电路由于温度是一种模拟信号,则由信号采集电路采集的信号是一种模拟信号,而且频率很低,但是单片机所识别的是具有高低电位的数字信号,这就要求在信号处理中必须把模拟信号转换成数字信号从而输出给单片机处理。2.3.1 ADC0809芯片ADC0809是采样分辨率为8位的、以逐次逼近原理进行的A/D转换器件。内有一个8通道多路开关以及微处理机兼容的控制逻辑的CMOS组件。它由比较器、逐次逼近器、D/A转换器及控制和定时5部分组成,输出具有TTL三态锁存缓冲器,可以直接连到单片机数据总线上。 2.3.2 ADC0809与单片机的接口方式在本设计中,采用中断控制方式使ADC0809与单片机相接。 ADC0809与单片机的连接电路如图2-5所示。图2-5 ADC0809与单片机的连接电路2.4 按键电路设计按键是一组按压式开关集合,是微机系统不可缺少的输入设备,用于输入数据和命令。这里主要介绍非编码键盘的接口电路。1.4.1 键盘的结构和工作方式 本设计就有三个按键,共需要三个I/O口线,占用的口线不多,因此可采用独立式按键,为了提高CPU的效率,应采用的是独立式中断扫描结构。2.4.2 按键电路图2-6所示为中断扫描方式的接口电路。键盘电路的行线与单片机的P2.4、P2.5、P2.6直接相连,列线与一个与门的三输入端相连,与门的输出端与单片机的/INT0相连接。当P2.4、P2.5、P2.6 全为0时,若无键闭合,/INT0保持高电平;若有键闭合时,/INT0变成低电平,CPU开中断,进而产生中断,转向中断服务程序。S2按键是温度设定模式,S3按键是温度的加一模式,S4按键是温度的减一模式。 图2-6 中断式独立键盘2.4.3 按键电路的消抖 消除抖动的方法有两种,一种是采用硬件电路来实现,如用滤波电路和双稳态电路等;另一种实用软件来实现,即当发现有按键按下时,延时10ms20ms,再查询是否有按键按下,若没有按键按下,说明上次查询结果为干扰或者抖动;若仍有按键按下,则说明闭合键已稳定,即可判断其键码。2.5 温度显示电路 为了方便管理者能明确的观察到某一路的温度,这里要有显示电路,共有六个数码管,两位是用来显示设定的最高温度,两位用来显示设定的最低温度,两位是用来显示当前某一路的温度。2.5.1 LED数码管 动态扫描显示的扫描方式有程序控制和定时中断扫描两种。程序控制扫描方式要占用许多CPU时间,在计算机的任务较重时,难以得到好的效果,所以在实际中常采用定时中断扫描方式,这种方式是每隔一定时间(如1ms)显示一位数码管,假设有8位数码管,显示扫描周期为8ms,显示效果十分良好。本次设计采用这种方法。2.5.2 LED驱动电路 7447是一块BCD码转换成7段LED数码管的译码驱动IC。7447的主要功能是输出低电平驱动显示码,用以推动共阳极的7段LED数码管显示相应的数字。2.6 其它电路2.6.1 电源电路在这个设计中,采用了简单的实用的变压器,根据理想变压器原副边匝数比公式,则可通过计算来调节参数达到转换为低电压所谓目的。低压的交流信号在通过整流稳压等操作实现了交流向直流转换的要求了。其电路图如图2-7所示。图2-7 电源电路2.6.2 声音报警电路在单片机检测系统检测到当前温度超出设定的温度范围时,单片机就会控制P3.7引脚的电平,进而来控制蜂鸣器,提醒管理者注意报警信号,常见的报警信号可分为闪光报警、鸣音报警和音乐报警,这里主要用的是鸣音报警电路。如图2-8所示。当P3.7引脚输出高电平时,晶体管导通,压电蜂鸣器两端获得约5V的电压而鸣叫;当P3.7输出低电平时,晶体管截至,蜂鸣器停止发音。图2-8 鸣音报警电路2.6.3 光报警电路电路如图2-9所示,使用74HC164的并行输出引脚接8个发光二极管,利用它的串入并出功能把发光二极管从轮流点亮,并反复循环。Q0Q7代表18路的温度是否在设定的温度范围内,如果第i(i的范围从0到7)个发光二极管亮,证明第(i+1)路的温度超出设定的温度范围。图2-9 串口显示电路2 软件系统设计 软件采用模块化设计。系统软件主要包括主程序和按键处理、中断、显示和报警等子程序。主程序完成器件的初始化,并判断有无按键按下、有无中断请求,然后根据判断结果调用相应的子程。3.1程序流程图及分析主程序主要是对采集数据的处理、显示以及与设定的数据进行比较,为是否报警、是否开继电器做准备;A/D转换子程序主要完成的是对信号的采样和A/D转换,并将转换的数据放到A寄存器中,为后面的调用做准备;监控程序就是对按键中断,A/D转换中断进行监控,如果按键有中断,就调用A/D转换程序,如果A/D中断,就调用A/D转换程序。(1)主程序主程序主要是对采集数据的处理、显示以及与设定的数据进行比较,为是否报警、是否开继电器做准备。其流程图如图3-1所示。图3-1 主程序流程图(2)A/D转换的程序:其流程图如图3-2所示。图3-2 A/D转换流程图 (3)独立按键程序在图2-6所示的电路中,当W1W3任何一个按键按下,与门的输出都为低电平,此时/INT0引脚为低,延时一段时间后,再判断/INT0引脚是否为低电平,如果仍为低电平,则向CPU申请中断。CPU响应中断后,在中断服务程序中判断是哪个按键按下,进而调用该按键对应的相应功能,执行完中断服务程序后,返回主程序。因此按键控制流程图如3-3所示。 图3-3 独立键盘流程图(4)显示程序首先从段选线上送出字段码,再通过74HC138译码器来控制位选线,字符就显示在指定位置上,持续15ms时间,然后关闭所有显示;接下来又送出新的字段码,位选移位,按照上述过程又显示在新的位置上,直到每一位数码管都扫描完为止,即为一个扫描周期。由于人的视觉停留效应,因此当扫描周期小到一定程度时,人就感觉不出字符的移动或闪烁,觉得每位数码管到一直在显示。显示流程图如图3-4所示。 图3-4 显示流程图4 总结 本次毕业设计遇到不问题,也收获到不少知识。在制作,设计,实际操作过程中,我也深深感受到每一次问题解决的骄傲与自信。例如设计过程中遇到的许多新名词以及新的元件代码,在整理思路总是会被这些那些数字,字母弄得头昏眼胀。然而我的导师却教导我说:“不必害怕这些数字,它们的代号就表示着一个元件的功能及类别,例如AT89C51,它是单片机的代号,也是整个机器的身体。还有AD590,是温度传感器,它是感知温度的。另外ADC0809,是A/D转换器件,相当于神经。再加上其他零零碎碎的电路元件,依照电路图组合起来就形成完整的蔬菜大棚温度控制系统。”虽然大学期间我并不是主修电子设备,对电子设备也并不是很感兴趣。但当我真正投入到毕业设计中时,我逐渐认识到电子组装的精密性以及逻辑性。它需要用百分之百的耐心与细心去研究这个元件为何这么组装,还有没有更简便的方法来实现它。它也需要你有一定的逻辑思维,电子元件的搭配是有其依据的,一个引脚的桥接错误会导致整个设备的损坏。在整个实际操作以及后期调节的过程了,我也逐渐产生了微妙的变化。虽然看上去是十分枯燥的拼接,调节,轮回往复的动作,但当一个灯泡的亮起,一段数字的显示都能带给我无比的快乐。虽然这个设备现在还依旧在实践调教中,还并不是很成熟,但只要我心里明白开心就好,至少它还能够测量温度,显示温度,提醒调节温度。参考文献1 张毅刚. 单片机原理及应用M. 北京:高等教育出版社,2003.2 万光毅. 单片机实验与实践教程M. 北京:北京航空航天大学出版社,2003.3 付家才. 单片机控制工程实践技术M. 化学工业出版社,2004.4 彭佳文,姚志成,彭佳红一种单片机多机通信系统的设计J微计算机信息,2008,24(2):1311335 于还业温室环境自动监测系统J农业工程学报,1997,13:2621696 刘士光. 温室大棚多功能测试仪的智能化自校方法J农业工程学报,2000,16(3):135137附 录附录1:原理图 附录2:主程序程序void main() uint i;Sys_Init();EX0 = 1;EX1 = 1;EA = 1;/开总中断ad_start1(0);LED_display();LED_display();ad_oe = 0;while(1) LED_display(); i = ad_temp1;ad_bufnow_channel =(uchar)(i*100)/255);/-debugsw_status();LED_display();void sw_detect() interrupt 0unsigned char temp,i;IE0 = 0;sw = 0;P2 &= 0 x8f;for(i = 0;i 4;switch(sw_temp0) case 6:sw_temp0 = max;break; case 5:sw_temp0 = min;break; case 3:sw_temp0 = mode;break; default:sw_temp0 = sw_temp0; if(sw_temp0 != 0)sw_flag = 1;/有新的按键中断发生,置标志位 LED_display();void ad() interrupt 2char i;IE1 = 0;for(i = 0;i 2;i+);ad_oe = 1;for(i = 0;i 2;i+);ad_temp1 = P0;ad_oe = 0;LED_mormal();LED_mormal();LED_mormal();ad_start1(now_channel);附录3:AD转换程序/*通道选择*/void select(uchar chnnel)switch(channel)case 0:a=0;b=0;c=0;break;case 1:a=1;b=0;c=0;break;case 2:a=0;b=1;c=0;break;case 3:a=1;b=1;c=0;break;case 4:a=0;b=0;c=1;break;case 5:a=1;b=0;c=1;break;case 6:a=0;b=1;c=1;break;case 7:a=1;b=1;c=1;break;default:break;/*初始化0809,并开定时器,开中断*/void initdac0809()TMOD=0 x02;/*定时器0产生500KHZ的时钟信号*/TH0=253/*约1.085Us*2中断一次,周期略小于500KHz*/TL0=253;TR0=1;ET0=1;EA=1;/*开总的中断*/*开始转换ADC0809*/void startadc()if(i=8)i=0;else select(i);/*选择通道i*/ST=0;ALE=0;ST=1;ALE=1;delay(1);ALE=0;ST=0;/*地址锁存,并开始转换*/i+;void main()initdac0809();startadc();while(1)while(EOC=0)/*ADC0809正常转换*/OE=1;/*转换完毕,打开输出*/ ad_data-i=P0/*从P0读取结果*/startadc();/*开始第二次AD转换*/OE=0;/*禁止输出*/附录4:按键程序void main(void)int0_flag=0;/*设置中断0标记*/TCON=0 x55;/*电平触发外部中断*/IE=0 x81;/*开外部中断int0*/doif(int0_flag) /*如果有中断*/switch(KEY_Value) /*根据中断源分支*/case 1:processS1( ); /*可在此处插入按键0的处理程序*/break;case 2:processS2();/*可在此处插入按键1的处理程序*/break;case 3:processS3();/*可在此处插入按键2的处理程序*/break;default:break;int0_flag=0; /*清中断0标记*/while(1);/*外部中断0服务程序*/void exint0(void) interrupt 0EA=0; /*开总中断*/int0_flag=1; /*设置中断0标记*/*读取外部中断源输入,并屏蔽高五位*/KEY_Value=KEY_PORT & 0 x07;EA=1; /*开总中断*/附录5:显示程序void LED_mormal()char i;LED_wei = 0;for(i = 0;i LED_Len;i+)P1 = (P1 & 0 x0f0) | (LED_duani & 0 x0f); /*送段码*/P2 = (P2 & 0 x0f8) | (LED_wei & 0 x07); /*送位码*/P2 = (P2 & 0 x0f8) | (0 x07); /*清零*/P1 = (P1 & 0 x0f0) | (LED_duani & 0 x0f);P2 = (P2 & 0 x0f8) | (LED_wei & 0 x07);P2 = (P2 & 0 x0f8) | (0 x07);LED_wei+;void LED_display()ad_buf_now = ad_bufnow_channel;LED_duan0 = buf_H / 10;LED_duan1 = buf_H % 10;LED_duan2 = buf_L / 10;LED_duan3 = buf_L % 10;LED_duan4 = (ad_buf_now / 10) - (ad_buf_now / 100)*10;LED_duan5 = ad_buf_now % 10;LED_mormal();void main()while(1) ad_bufnow_channel =(uchar)(i*100)/512);/*debug*/LED_display();
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 外文翻译


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!