自动浇花系统论文.docx
《自动浇花系统论文.docx》由会员分享,可在线阅读,更多相关《自动浇花系统论文.docx(17页珍藏版)》请在冰豆网上搜索。
自动浇花系统论文
自动浇花系统
成员:
摘要
本次设计的自动灌溉系统由土壤湿度的检测显示部分和控制水泵进行灌溉部分共同构成。
土壤湿度的检测显示部分以土壤湿度传感器为感应部件,以A/D转换器为转换部件,经过AT89S51单片机进行处理后由LCD屏幕显示。
控制水泵自动灌溉部分是通过单片机程序设定启动值与YL69传感器采集到的土壤湿度值相比较,当低于启动值时单片机就会输出一个信号控制电磁阀打开进行浇水灌溉。
关键词:
AT89S51单片机,YL-69土壤湿度传感器,LCD
一、引言
随着生活水平的提高,人们已经不再满足于仅仅追求普通温饱的生活方式,而是希望自己的居住生活的环境变的更加好,有清洁的空气,所以很多人在休闲时间自家的阳台上种植植物。
植物是离不开水的,花盆存储水分容量是有限的,需要定期浇水,很多都市白领因工作可能会忘记给植物浇水,这样会导致植物由于缺乏水分枯萎而死。
因为不同的花和植物需要水的不同特点,所以合理地浇水会使植物生长良好,也能达到节约用水的目的,因此,高效的灌溉系统是能够根据人们的意愿进行适量、适时的方向发展。
所以,本设计主要包括两个方面,一是测量,获取土壤水分信息,并根据土壤水分、湿度和植物需水特性的多少来确定浇水的水量。
这将摆脱过去,只有浇水的经验,给植物浇水要在科学基础上的决策。
二是控制,根据对土壤研究及植物需水特性进行合理的浇水决策,即将传统的只是凭经验由人工手控制洒水器的方式,变化为自动进行适量的、适时的、按需的灌溉控制。
系统根据由测量土壤湿度和植物合理的生活环境,通过抽水装置控制给水量的多少,从而使得水资源能够得到高效的使用,同时也节省了人力,达到智能灌溉的目的。
二、系统设计
2.1方案论证
2.1.1总体方案设计
在国内外都是用自动灌溉装置,其中大部分都是使用虹吸原理进行灌溉的,即是使用渗透的方法灌溉,这种灌溉的方法是连续地、不间断的。
采用这种浇花系统仅仅只能保证花卉不应缺水而干枯死,但是对于植物来讲并不是其生长的良好环境,并且浪费水资源。
本设计提供了一种智能浇灌的系统,这个系统可以在没有人的环境下在对植物进行浇灌,在浇水的过程中,根据植物需要水分的不同,对植物进行浇水控制。
这个系统是根据单片机原理,运用土壤湿度传感器进行数据的收集,然后通过按键调整上下限,在通过单片机对收集数据的分析及处理,进而判断外界土壤湿度值,假如土壤湿度低于设置的下限,单片机控制水泵浇水同时蜂鸣器发出通知,当土壤湿度达到上限就停止浇水,从而达到自动浇花的目的。
本实验重要完成以下的几个功能:
1.用YL-69检测土壤湿度;2.使用LCD1602显示测量的数据3.通过分析植物生存的最佳环境设置浇灌的上下限;4.使用单片机对采集到的数据进行分析和处理,在控制水泵是否需要进行浇灌。
这个系统是由硬件部分及软件部分组成的,硬件划分为单片机主控、显示、土壤湿度的检测、按键输入、水泵浇灌、蜂鸣器发出通知六大模块。
主控模块位AT89C51单片机是负责对数据的分析及处理;YL-69作为湿度检测模块;湿度的上下限是通过按键模块输入;显示模块是显示土壤湿度检测器检测出来的湿度数值及其上限数值;水泵是用来执行系统命令的。
软件结构与硬件配置相适应,同样是使用模块化,它主要包含主程序、湿度采集子程序、显示数据子程序、按键输入子程序、执行子程序及系统定时中断服务程序等组成。
这个系统很灵活,有较强的交互性,可以随时设置湿度的上下限;在系统的开发设计中,应当将软件和硬件相互结合起来,并且个个部件都使用模块化的设计思路。
实验检验说明,该系统测量数据误差小、运行稳定,有着很可靠的使用效果,所以可以被广泛的推广使用。
2.1.2芯片的选择
●芯片的选择:
AT89C51是由Atmel生产的低电压、高性能CMOS8位单片机,同时AT89C51有着便宜的价格,而且它和MCS-51系列有这很好的兼容性。
因此在这个系统中采用AT89C51作为控制芯片。
●A/D转换:
ADC0832是具有双通道和8位分辨率的A/D转换芯片。
由于其性价比高、体积较小、兼容性很强的特点,因此深受广企业欢迎及单片机爱好者喜爱,目前的普及率已经很高。
●继电器选择:
设备在设计过程中是需要一个继电器来控制电磁阀的工作。
由于工作电压在只需要5V左右,并且成本相对而言比较低。
所以在这个系统中选择了型号为松乐SRS-05VDC-SL型号的继电器。
其工作电压在5V,其触电容值为3A/250VAC/30VDC。
●显示器的选择:
在系统的设计过程需要一个显示土壤湿度值的显示器。
LCD1602是一种专门可以显示英文字母、阿拉伯数字及符号的点阵型液晶,其能够同时显示16*02即32个字符。
2.1.3系统结构
系统流程图
2.2系统硬件设置
2.2.1单片机的基本组成
AT89S51是以一种八位的微处理器单片机,128千字节的片内数据存储器随机存储器,64千字节可寻址片内外统一编址的只读存储器,64千字节可寻址片外的随机存储器,四个八位并行的I/O接口(P0—P3),1个全双工通用的异步串行接口通用异步收发传输器,单片机基本构成框图如图所示。
图2.1AT89S51的基本组成
2.2.2振荡电路和时钟电路
时钟电路可以产生所需的时钟信号,时序可以表示当各种指令执行时各地址信号之间的关系。
单片机其实就是一个同步时序电路。
AT89S51单片机各功能部件的都是依靠时钟信号来进行运行,其中时钟频率是很重要的,它会直接影响到工作的速度快慢,其次时钟电路的质量也很重要,它会直接影响到工作的稳定性。
我们这次设计选用的方式是内部时钟。
AT89S51单片机里面有一个用来构成振荡器的高增益反相放大器,放大器的输入端是芯片引脚XTAL1,输出端引脚是XTAL2,在图上位置,两个端的引脚跨界石英晶体和微调电容,共同组成一个稳定自激振荡器。
为了保证振荡器稳定、可靠的工作,在安装中,我们就需要把石英晶体以及电容和芯片安装的近点,近可以防止产生寄生电容。
除此之外我们尽量选用温度稳定性较好的电容。
图2.2振荡和时钟电路
2.2.3复位电路
单片机的复位的电路是让 CPU 和自动灌溉系统中别的功能部件都处于固定初始状态,然后从状态开始动作。
不管单片机刚开始是通电源,还是切断电源后,突然故障之后都需要复位,单片机复位需要一定的条件让 RES/VPD 和 RST 引脚通上持续2个周期及以上的高电平。
复位电路有上电自动复位的方式,另一种是按钮复位的方式,本次选用按键来手动复位,选用按键手动电平的复位是经过RST端,经过电阻与电源VCC的接通方式来实现
图2.3复位电路
2.2.4湿度传感器
传感器是一种输出装置,它能采集到的信息资料转变为有用信号。
它由敏感元件和转换元件和相对应的电子电路共同构成,在使用的过程中直接响应于被测物理量并且产生可用信号输出。
并且当外界的湿度变化时,它里面的电阻值也会随之变化,电阻值的变化范围一般为0欧—10K欧,当电阻变化时,电路的输出电压也会产生变化。
因此当调变电阻的大小,我们能获得一定值的电压,满足电路的需求。
我们这次设计用到的是YL-69土壤湿度传感器 。
图2.4湿度传感器
2.2.5ADC0832AD转换器
ADC0832是八位分辨率A/D转换芯片,它分辨最高可以达到256级,它的体积相对其它的比较小,而且它的兼容性也比较好,在市场里面它的性价比比起其他的高出很多,一般的模拟量转换要求它都能适应。
由于它的内部电源输入和我们选用的参考电压的复用,A/D转换芯片的模拟电压输入一般在0~5V区间内。
A/D转换芯片所需的转换时间很短,仅仅是32微秒,它还能双数据输出,可以减少数据误差,所以它能进行数据校验,总的来说它的转换速度快,仅为32微秒,稳定性能强。
独立的芯片可以让输入方便,挂接多个器件和处理器控制更加容易。
其主要特点如下:
●8位分辨率,基准电压为5V;
●功耗低仅仅为15mW。
●5V的电源供电;
●输入和输出电平与CMOS及TTL兼容;
●输入模拟信号的电压范围在0到5V之间;
●有两种可以供给选择的模拟输入通道;
●在时钟频率为250KHZ时,转换时间是32us;
ADC0832有DIP和SOIC两类,DIP的ADC0832引脚排列如图9所示。
各引脚说明如下:
●CS——片选端,低电平有效。
●CH0,CH1——两路模拟信号的输入端。
●DI——数据信号输入,选择通道控制。
●DO——数据信号输出,转换数据输出。
●CLK——串行时钟输入端。
●Vcc/REF——电源的输入和参考电压输入。
●GND——电源地。
图2.5ADC0832AD转换器
2.2.6液晶显示器LCD
液晶显示在很多家用电子产品中随处可见,它会显示一些数字、特殊符号和一些图形等。
它与单片机电路连接非常简单,可以把主机处理后的数据进行屏幕显示,我们只需把一个8位I/O接口和液晶模块的8位数据段连接在一块,再把3位控制口分别与液晶模块的RS、R/W、E连接在一块。
为了布线可以变简单以及驱动能力变得更强,我们用的是单片机P0口接8位数据,用P2.0、P2.1、P2.2分别于RS、R/W、E相连。
如图所示.
图2.6显示器电路连接图
2.2.7键盘与电源
S0:
复位键 S1:
设置/保存 S2:
加/模式切换 S3:
减/手动灌溉检测:
上电水泵转LCD1602显示当前土壤湿度,将土壤湿度传感器放入水中湿度值上升,水泵停止。
按下S2键,切换为手动浇花模式,按S3键就可以手动开关水泵了。
设定:
按下S1设置键,进入预设湿度值调节模式.按S2键,预设值加.按S3键,预设值减。
设置成功后,再按S1设置键退出,返回到正常模式。
图2.7按键电路图
2.2.8继电器
电磁式继电器由控制线圈、铁芯、衔铁、触点簧片组成,工作时继电器的线圈会加上额定的电压,并且产生了电流,紧接着电流产生电磁效应,产生的电磁力会把衔铁吸起来,衔铁的动触点与静触点吸和,进行动作。
当线圈失电后,电磁力就没有了,在弹簧作用下衔铁返回原来不通电的位置,释放切断,所以说继电器起到了一个开关的作用。
继电器起到开关作用,连接一个三极管,三极管和单片机的p16相连,当引脚被置高电平的时候,继电器动作灌溉。
如图所示
图2.8继电器电路图
YL-69湿度传感器测出湿度模拟数据,然后对测出的进行处理转为二进制值,再经过三线制接口发送给单片机。
为了使采样值变得更加精确,对获得的数据可以进行一些补偿的算法,补偿之后再送到液晶LCD显示器显示。
主要流程图
2.4实物
在安装系统之前我们要检查元器件,例如:
晶体管的型号是否匹配,电容器的耐压是否正确,以及电容器的极性问题。
再次确定原理图,安装电路位置,极性是否正确,在安装过程中最好导线条理清晰。
安装时我们要采用按照单元电路逐级的安装调试,联合的调试的方法。
具体的步骤:
1依据系统原本设计,把所需组成元件找好并进行焊接。
2、依据原件说明书,清楚每个组成元件的动作原理,并且调试每个功能模块。
3、然后把每个功能模块编写成独力的源程序文件,再次进行调试成功之后,我们就可以再把各个部分组合在一起。
4、在调试各个模块之后,我们就可以把各个源程序段组合起来综合调试。
实物如图。
三、仿真设计
3.1仿真设计
本次仿真实现了通过对右边可变电阻模拟湿度传感器,使得LCD显示相应的数值。
再通过对中间按键模块输入相应的温湿度上下限,当湿度低于一定数值时,单片机控制蜂鸣器进行通知处理。
提示湿度已经低于一定数值,需要进行浇水,单片机控制电磁阀进行浇水。
当湿度达到一定值时,单片机控制电磁阀关闭浇水。
仿真如图所示。
仿真图
3.2硬件调试
根据电路原理图,焊接出实物,在将程序烧录到AT89C51单片机中。
接通电源,改变土壤湿度值,观察实物是否正常运行。
若正常运行则不需要进行硬件的调试工作,反之需要进行硬件的调试。
调试步骤如下:
1、检查电路板电路焊接是否正确及各部件是否松动和安装正确;
2、用万用表检查是否有虚焊、引脚短路现象;
3、测试元件是否毁坏;
4、联机仿真调试;
测试结果及结论
1、本系统经过一段时间的运行检测,工作正常,说明本系统稳定性良好;
2、系统可以在不同的土壤湿度条件下进行正常的工作,与理论相符,说明程序正确;
3、系统可以快速准确的测量出土壤的湿度,因此认为系统在响应时间上能满足要求。
四、结论
这次植物自动浇水系统,这系统是根据电子类自动浇水装置工作原理为基准,采用现代传感技术采集土壤水数据进行采集,再通过单片机控制系统对各个部分进行控制,使其浇灌模块是否进行运作。
这个植物自动浇灌系统分为两个部分,一个是通过检测土壤数据并在LCD1602上进行显示,二是通过系统分析对浇灌系统进行控制。
YL-69作为土壤湿度检测的传感器模块,在把土壤检测到的数据传输到单片机系统中,并通过单片机是I/O输出到LCD上进行显示。
在LCD上显示的数值即是土壤湿度值,这也是判断是否进行浇灌的数值。
自动浇花部分和检测到土壤湿度并显示部分构成了系统的控制部分和数据检测部分。
它设计为智能性,自动浇花部分是通过单片机分析有YL-69土壤湿度检测装置检测到的土壤数据,当系统检测到土壤湿度值低于设定的下限值时,那么系统通过控制继电器控制浇灌装置进行浇灌,当开始浇水一段时间后,系统通过土壤湿度检测装置检测都土壤湿度数值高于设定的上限值时,系统再次控制继电器控制浇灌系统停止浇水。
参考文献
[1]张兆明.基于AT89C52的家庭智能浇花器的设计[J].电子设计工程,2011.03
[2]程捷、何晨.基于单片机的温湿度检查系统设计与实现[J].仪表技术,2011.06
[3]赵丽、张春林.基于单片机的智能浇花系统设计与实现[J].长春大学学报,2012.09
[4]袁腾、王帅、梅明、姜天华.基于单片机原里的可定时自动浇花器[J].高科技产品研发,2012.07
[5]刘明真、陈鸿.基于单片机智能节水灌溉系统的设计[J].学术问题研究,2011.01
[6]甘龙辉.基于单片机自动灌溉系统的设计[J]
[7]郭天祥.51单片机C语言教程[M]
附部分程序:
#include
#include"intrins.h"
#defineu8unsignedchar
#defineu16unsignedint
#defineucharunsignedchar
#defineuintunsignedint
ucharyushe_Moisture=20;
ucharyushe_MoistureH=40;
ucharMoisture;
ucharMode=0;
ucharMode_1=0;
sbitLED_Moisture=P1^6;
voiddelay_ms(uintq)
{
uinti,j;
for(i=0;ifor(j=0;j<110;j++);
}
sbitLCDRS=P2^7;
sbitLCDEN=P2^6;
voidLCDdelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=10;y>0;y--);
}
voidwrite_com(ucharcom)
{
LCDRS=0;
P0=com;
LCDdelay(5);
LCDEN=1;
LCDdelay(5);
LCDEN=0;
}
//дÊý¾Ý
voidwrite_data(uchardate)
{
LCDRS=1;
//LCD_WriteData(date);
P0=date;
LCDdelay(5);
LCDEN=1;
LCDdelay(5);
LCDEN=0;
}
voidSelectPosition(unsignedcharx,unsignedchary)
{
if(x==0)
{
write_com(0x80+y);
}
else
{
write_com(0xC0+y);
}
}
voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s)
{
SelectPosition(x,y);
while(*s)
{
write_data(*s);
s++;
}
}
voidLCD_Write_Char(u8x,u8y,u16s,u8l)
{
SelectPosition(x,y);
if(l>=5)
write_data(0x30+s/10000%10);//Íòλ
if(l>=4)
write_data(0x30+s/1000%10);//ǧλ
if(l>=3)
write_data(0x30+s/100%10);//°Ùλ
if(l>=2)
write_data(0x30+s/10%10);//ʮλ
if(l>=1)
write_data(0x30+s%10);//¸öλ
}
voidInit1602()
{
uchari=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
voidDisplay_1602(yushe_Moisture,yushe_MoistureH,temp)
{
LCD_Write_Char(0,12,yushe_MoistureH,3);
LCD_Write_Char(1,12,yushe_Moisture,3);
LCD_Write_Char(0,3,temp,3);
}
sbitADCS=P1^3;
sbitADCLK=P1^0;
sbitADDI=P1^1;
sbitADDO=P1^1;
unsignedintAdc0832(unsignedcharchannel)
{
uchari=0;
ucharj;
uintdat=0;
ucharndat=0;
ucharVot=0;
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;
_nop_();
_nop_();
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;
ADDI=1;
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}