基于单片机的模拟智能灌溉控制系统Word文档下载推荐.docx
《基于单片机的模拟智能灌溉控制系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的模拟智能灌溉控制系统Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
irrigationcontrolsystem,
temperatureandhumidityinthe
soil
wasmonitoredinrealtime,
refertotheactual
temperature
valuesetting
andhumiditylimit
appropriate
value,
accordingtotheset
humidityvalue
forthecorresponding
irrigation.
Theintelligent
irrigationcontrol
systembasedonSTC89C52
singlechipmicrocomputerasthecore,
mainlybythe
temperatureandhumiditysensorDHT11
module,
keyinputmodule,
displaymodule,
pump
module;
softwareusedC
languageprogramming.
Thefunctionofthissystem
is:
accordingtothesoilmoisture,
soilmoisture
sensortodetect
humidity,
if
thedetectedvalueislowerthanthe
lowest
humidity
system
setting,
automaticstarting
system,irrigation.
By
physical
testing,
systemcanrealizethe
functionof
relativelysuccessful.
【Keywords】Single-chipMicrocomputer;
Sensor;
LEDDisplay;
WaterPump;
Lrrigation
1绪论
1.1课题研究背景
水资源是人类生产生活最关键的自然资本,亦是贯穿社会发展和国民经济的最首要的基础资源。
但我国当今水资源存在着两个方面的主要问题:
第一个问题是水资源贫乏。
虽然我国水资源的总量居全球第六位,可人均占有量却只有2500立方米,仅仅只达到了世界人均水量的四分之一,是全世界人均水资源最贫乏的国家之一。
第二个问题是水资源的严重污染和浪费。
就全中国而言,我们对水资源的利用率仅为45%,而那些水资源利用率高的国家已经达到了70%--80%,因此,提高水资源的利用率,对于解决我国的农业灌溉用水和缓解水资源紧缺非常重要[1]。
经过几十年的快速发展,我国的节水智能灌溉技术初步形成了其技术体系,并且在某些方面已经达到或接近了国际先进水平,但由于受到我国经济发展水平及科研体制的限制,我国的智能控制灌溉技术与一些发达国家仍然存在着相当大的差距。
随着我国水资源供需矛盾的日益加剧,农业用水分配额减少的问题势必日益突出,同时为了缓解我国水资源短缺对我国农业发展造成的压力,如何快速发展我国的节水智能控制灌溉技术及其配套设施,从而缓解我国农业用水压力已经成为一个不容忽视的问题[1]。
1.2课题研究的目的和意义
农业是人类社会赖以生存的最古老也是最重要的行业,农业的发展从长远来打算主要存在着两个方面的问题。
一个是水资源的问题、另一个是科技发展方面的问题。
而现阶段我国包括灌溉用水和降水在内的农田利用率很低,单位立方水生产粮食的能力大约为0.84kg,而以色列等一些发达国家大多数都在2kg以上,差距很大。
为了提高灌溉水的利用率,为了保证全中国人口的粮食安全,使单位立方水生产粮食的能力得到提高,依靠传统的灌溉方式是很难达到的,必须从高新技术入手,在管理上下功夫,从过去的“浇地”思想观念转变为“浇植物”的思想观念。
做到作物生长需要多少水,灌溉系统就能及时而准确地提供多少水。
要实现这一目标,只有发展先进的灌溉系统,使灌溉过程达到自动控制才有可能。
因此实现灌溉系统的智能控制,对节水、提高灌溉水的利用率以及对我国的粮食安全将起到极为重要的作用,具有重要的实现意义[3]。
1.3国内外现状
1.3.1国内研究现状
我国一直以来都非常重视灌溉设备的研制,但由于自主开发程度低,且有影响的成果较少,所以我国的灌溉设备大多数都是通过引进国外的成果,可以说我国对于智能灌溉控制技术的研制真正开始于“九五”期间。
目前我国在智能灌溉控制系统方面还处于研制、试用阶段,能真正投入应用,并且应用广泛的智能灌溉控制器还不多见[5]。
节水农业的核心就是节约用水和提高农业用水率,是现代化农业的重要内涵,其核心是在有限水资源的条件下,通过采用先进的工程技术、适宜的农业技术和用水管理等综合技术措施,充分提高农业用水利用率和水的生产效率及效益,保证农业持续稳定发展。
面对WorldTradeOrganization的挑战,节水农业更应该赋予其新的内涵,其内涵应扩展为节水、高产、高效、优质的农业[5]。
要发展节水农业最基本的工作就是要有先进的节水灌溉技术,适当的技术是节水农业发展的前提条件,研究和开发节水灌溉技术,对提高节水农业的效益有很大的帮助。
因此,我们非常有必要对现状节水灌溉技术,节水的水平以及技术的适应性,发展现状及存在问题做认真分析,为真正实现提高农业用水效率和水的生产效率打好基础[5]。
结合我国各地区特点,认为适宜各地区推广应用的节水农业技术主要有,渠道防渗技术、低压管道输水技术、地面灌水技术、雨水利用技术、农业节水配套技术、劣质水利用技术及农业节水管理等技术[5]。
1.3.2国外研究现状
西方的一些先进国家,运用先进的电子技术、计算机和控制技术,在节水灌溉技术方面起步较早,并日趋成熟。
这些国家从最早的水力控制、机械控制,到后来的机械电子混合协调模式控制,到当前应用广泛的计算机控制、模糊控制和神经网络控制等,控制精度和智能化程度越来越高,可靠性越来越好,操作也越来越简单[5]。
在美国,早在1984年,Benami和Offen公司就开发了一套节水灌溉控制器,通过监测土壤水分来确定是否打开灌水阀门,Phene和Howell分别在灌溉系统的控制中使用了土壤湿度传感器,通过土壤水分传感器把湿度反馈给控制系统,根据传感器获得的数据决定是否灌溉,是作物根部总跟保持一定的湿度[5]。
加拿大、澳大利亚和韩国等国家和地区都有发开成功并形成系列的灌溉控制器产品,其中比较有代表性的如澳大利亚的HARDIE
IR-RGATION公司的灌溉控制器,已形成了MICRO-MASTER、RAINJET等多个系列几十种型号的产品[5]。
1.4本文主要工作
经过对大量关于智能灌溉系统、单片机、传感器等文献的学习与研究,本文对基于单片机的智能灌溉控制系统的设计作出了较为详细的介绍,并且还做出了硬件实物,经操作测试,符合目标要求。
本论文的内容安排如下:
第一章,主要介绍了智能灌溉控制系统的研究背景、目的与意义以及国内外智能灌溉系统的发展现状。
对整个论文的书写以及毕业设计的方向起引导作用。
第二章,对整个系统设计做了一个规划。
系统需要实现什么样的功能?
怎样设计才能实现这样的功能?
第三章,对整个灌溉系统的硬件部分进行一个设计,先介绍了系统工作的总原理、总电路,然后再是一一对每个模块进行介绍,将每个模块的电路设计、功能以及一些引脚的特性加以介绍。
第四章,对系统的软件部分进行设计,根据系统需要实现的功能以及各元件的特性,设计出一个总的程序流程图,然后再编写出能够实现此功能的源程序和主要功能模块的程序。
第五章,对硬件实物进行测试并对测试的结果进行分析,并介绍一下测试的环境,然后附上各个阶段的状态图,并加以相应的解释。
第六章,介绍程序的调试过程以及将编写好的程序录入到单片机中的过程。
第七章,结论。
介绍了在毕业设计的整个过程中,我所做的准备工作、碰到的困难、学到的东西以及自己的感想。
最后,在论文的末尾,我介绍了整个设计过程中所参考的文献,对老师、同学、父母的致谢和一些程序、元件清单等的附录。
2系统总体设计
2.1系统功能要求
自动灌溉控制系统要实现的具体任务:
1)本设计采用STC89C52RC单片机为灌溉系统的主控芯片,外接土壤温湿度传感器模块、电源模块、水泵驱动模块、LCD1602液晶显示模块和按键模块。
2)使温湿度传感器对土壤的实际温湿度进行实时监测,并且把检测到的实际温湿度值的数字信号传送给单片机,单片机对其进行处理之后再将实际温湿度值显示在液晶显示屏上。
3)使用者可以通过按键自行调节温湿度的下限值,当传感器检测到的湿度值低于设定湿度值的10%时,启动继电器,开启水泵,进行灌溉,当检测到的湿度值达到设定值时,继续灌溉直至湿度值高于设定值10%再停止灌溉。
本系统的温度值仅仅是一个参考值,用户可以根据液晶显示屏上显示的实际温度来设定相应而合理的湿度下限值。
4)本设计用一个绿色指示灯代表水泵模块,当指示灯亮起时,表示正在进行灌溉,当指示灯熄灭时,表示停止灌溉。
2.2系统总体设计方案
本设计利用STC89C52单片机设计了自动灌溉系统,利用温湿度传感器检测土壤的温湿度,将采集到的温湿度传送到单片机芯片,单片机根据温湿度控制是否进行灌溉,如果需要灌溉,那么单片机的一个引脚将置高电平,给水泵驱动芯片信号,打开水泵抽水,实现自动灌溉(即绿色指示灯亮起)。
设计还配有一块LCD1602液晶显示器,用于显示土壤温湿度实际数值和设定用户温湿度值。
系统还配有4个独立按键辅助设定温湿度值。
自动灌溉系统方框图如图2-1所示。
图2-1自动灌溉系统整体设计框图
3系统硬件设计
3.1硬件电路总原理图
系统硬件部分由单片机核心控制模块、温湿度采集模块、按键输入模块、水泵驱动模块、液晶显示模块、供电模块等组成,硬件系统的总电路图如图3-1所示。
核心控制模块由STC89C52RC芯片、排阻、复位和晶振电路组成;
按键输入模块由4个独立按键组成;
水泵驱动模块由二极管和绿色指示灯组成,显示模块由LCD1602显示屏完成,温湿度数据采集和转换由DHT11芯片完成。
图3-1系统总电路图
3.2STC89C51单片机的硬件结构
STC89C52RC是STC公司出产的一种低功耗、高性能CMOS8位微控制器,具备8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU
和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止,最高运作频率35MHz,6T/12T可选[10]。
3.2.1单片机的结构及信号引脚
1)STC89C52RC单片机的特性(如表3.1所示)
表3.1STC89C52RC单片机的特性
2)芯片引脚介绍:
图3-2为STC89C52单片机的引脚封装图。
图3-2STC89C52引脚封装图
表3.2为单片机的引脚功能说明。
表3.2STC8C52引脚功能说明
3.3电源供电模块
为整个系统的各个模块供电是对于一个完整的电路来讲的首要问题,为了克服STC89C51单片机在实际的操作过程中因容易受到外来因素的干扰而出现程序跑飞或陷入死循环等现象,这就需要为STC89C52RC单片机系统配置一个稳定可靠的电源模块。
本设计采用的是两个电源接口,连接外部电源,图3-3是电源模块原理图。
图3-3电源模块原理图
3.4单片机控制模块
3.4.1单片机的最小系统
单片机是一个完整电路系统的核心控制部分,控制着整个系统是否能成功运行并达到设定的目标。
单片机的最小系统由晶振电路和复位电路组成,如图3-4是复位和晶振部分的原理图。
图3-4复位和晶振部分原理图
(1)复位电路
在系统开始运行的时候,都需要对系统进行一个初始化,而在单片机的最小系统中,复位电路就是为了把电路系统初始化而存在的,复位电路的原理就是在将单片机的电阻和电容接在单片机的复位引脚RST上,实现一个上电复位,只有当复位电平持续两个机器周期以上时复位才有效。
具体的数值可以由RC电路计算出来。
(2)晶振电路(时钟电路)
只要是一个完整的单片机系统,就一定会有晶振,晶振是通过一种能把机械能和电能进行相互转化的晶体在共振的状态下进行工作,从而提供稳定而精确的单频振荡。
晶振在整个单片机系统里的作用是不可或缺的,它与单片机的内部电路相结合,产生一个单片机所需要的时钟频率,晶振提供的时钟频率越高,单片机的运行速度就会越快,单片对整个系统所执行的一切指令都是建立在晶振提供的这个时钟频率之上的。
3.4.2单片机控制的电路设计
在整个系统中,单片机外接电源供电模块、温湿度采集模块、按键输入模块、显示模块和水泵驱动模块(此系统用一个绿色的指示灯来代替)。
当电源为整个系统供电后,温湿度采集模块和按键输入模块对单片机提供数字信号,单片机再依据编写的程序指令来控制显示屏的显示结果以及水泵是否启动继电器进行灌溉(绿色指示灯是否亮)。
图3-5是单片机控制模块(MCU)原理图。
图3-5MCU原理图
3.5湿度采集模块
3.5.1温湿度传感器DHT11的原理
1)DHT11的概述
DHT11传感器是一款温湿度复合传感器,它和单片机之间工作时不需要进行A/D模数转换,直接输送给单片机的信号就是已校准的数字信号,由于它的这一性能,所以专用于温湿度传感技术和数字模块采集技术方面,以确保产品有极高的稳定性与可靠性。
传感器的内部结构由一个电阻式感湿原件和一个NTC测温元件组成,同时还与一个高性能的8位单片机相连接。
因此,该产品具有体积小、接口简单、品质卓越、超快响应、抗干扰能力强、性价比极高等特点,性价比极高。
也正是由于DHT11传感器的这些优势,使它在自动控制和家电品领域中拥有较高的应用价值。
图3-6为温湿度采集模块系统原理图。
图3-6温湿度模块系统原理图
2)DHT11的引脚及硬件电路设计
DHT11传感器采用的是4针单排引脚封装。
引脚说明如表3.4所示
表3.4DHT11引脚说明
DHT11温湿度传感器有4个引脚,其中第一和第四个引脚分别接电源正极和接地,第三个引脚置空,第二个引脚和STC89C52单片机的p2.4引脚连接,当接通电源后,主机(微处理器)发送一次开始信号,DHT11从低功耗模式转换到高速模式,等待主机的开始信号结束后,DHT11发送响应信号,送出40位的测量数据,并触发一次信号采集,用户可选择读取部分数据。
当DHT11接收到开始信号后触发一次温湿度采集,如果没有接收到mcu发送的开始信号,DHT11不会主动对温湿度进行采集。
采集数据后转换到低速模式。
3)DHT11特性(如表3.5所示)
表3.5DHT11特性
3.6液晶显示模块
3.6.1LCD1602液晶模块简介
本系统的显示器采用的是LCD1602液晶显示器,它专门用于数字、字母、符号等的显示。
同时它也是一个2行×
16个字符的字符型液晶显示器。
它是由32个字符点阵块组成的,而每个字符点阵块又由5×
7或5×
11个点阵组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,可以显示ASCII码表中的所有可视的字符。
图3-7为液晶显示模块系统原理图。
液晶显示模块和单片机的p0端口连接,单片机会把传感器传送给它的数字信号进行处理后把实际温湿度值和设定的温湿度下限值显示在显示屏上。
图3-7液晶显示模块系统原理图
3.6.2LCD1602的引脚及电路设计
LCD1602采用标准的16脚接口,其中各引脚的功能如下(表3.3):
表3.3LCD1602各引脚的功能
LCD1602的第1和第2号引脚分别接GND和VCC,第3引脚VEE没有接,这个脚是控制屏幕对比度的。
可以将电位器的两端分别接VCC和GND,中间端接LCD1602的第3脚。
第4号脚与单片机的P1.0端口连接,第5号引脚接地,第6号引脚与单片机的p1.1端口连接,第7—14号引脚与单片机的p0.0—p0.7端口连接,第15和16号引脚分别接VCC和GND。
当单片机与LCD1602显示屏电路连接好后,只要把控制液晶显示模块的程序下载到单片机中,单片机就能控制显示屏的显示结果。
本设计显示屏能够分别显示温湿度的实际值和设定值。
3.7按键输入模块
本设计的按键输入模块是由4个规格为6*6*5的四脚按键构成的,S1接单片机的p2.3,具有增加设定温度值的功能;
S2接单片机的p2.2,具有降低设定温度值的功能;
S3接单片机的p2.1,具有提高设定湿度值的功能;
S4接单片机的p2.0,具有降低设定湿度值的功能(每次按键后增减的幅度值为1)。
用户可以根据植物生长适宜的湿度环境来设定相应的温湿度值。
图3-8是按键输入模块的系统原理图。
图3-8按键输入模块系统原理图
3.8水泵增湿模块
水泵增湿模块与单片机的p1.5连接,当传感器检测的湿度值低于设定值10%时,单片机给IN4148开关二极管一个正向电压,这是二极管的电阻很小,电路处于导通状态,相当于接通一个开关,使水泵进行灌溉(绿色指示灯亮),在灌溉的过程中,当传感器检测到的湿度值高于设定值10%时,单片机又给二极管一个反向电压,这是二极管的电阻值就会很大,相当于一只断开的开关,使水泵停止灌溉(绿色指示灯灭),将程序录入单片机后,通过单片机对二极管的控制便能控制水泵是否进行灌溉。
图3-9是水泵模块的系统原理图。
图3-9水泵模块系统原理图
4系统软件设计
4.1程序设计
4.1.1主程序流程及相关说明
首先依照系统所要实现的功能和实现这个功能的原理,设计一个主程序流程图,智能灌溉控制系统工作流程图如图4-1所示。
然后按照这个流程图在KeilμVision3软件中进行程序的开发(设计与编译)。
接通电源后开始,进行单片机数据初始化、显示器初始化、传感器采集数据并显示到显示器上,接着判断是否处于灌溉状态和按键扫描。
程序循环扫描设定按键是否被按下,当按键按下时,进入设定模式,设定温湿度值下限,若没有按下按键则继续采集温湿度值。
接着返回到测量程序,若处于灌溉状态,则当检测到的湿度值高于设定值10%时停止灌溉,若处于非灌溉状态,则判断检测到的湿度值是否小于设定值的10%,若小于,则启动水泵灌溉,若不小于,则继续采集温湿度,如此循环进行下去
图4-1智能灌溉控制系统的主程序流程图
4.2主程序代码
1)主程序:
voidmain()
{
uchari,j=100;
init_1602();
//初始化1602
while
(1)
{
j++;
////利用j的累加刷新显示1206的频率,
if(j>
250) //
{
j=0;
display();
////调用温度湿度读取函数显示实际温度湿度
}
//检测按键S1按下,温度值加1
k[0]=k[1];
k[1]=s4;
//温度加
if(k[0]&
&
(!
k[1]))
{
set_temp++;
}
//检测按键S2按下,温度值减1
k[2]=k[3];
k[3]=s3;
//温度减
if(k[2]&
k[3]))
set_temp--;
//检测按键S3按下,湿度值加1
k[4]=k[5];
k[5]=s2;
//湿度加
if(k[4]&
k[5]))
set_rh++;
//检测按键S4按下,湿度值减1
k[6]=k[7];
k[7]=s1;
//湿度减
if(k[6]&
k[7]))//实际与设定比较
set_rh--;
}
2)读取温度与湿度值代码如下:
voidRH()
//主机拉低18ms
DS=0;
delay_ms(18);
DS=1;
//主机拉高20-40us
delay_us(10);
if(!
DS)//T!
{
sum=2;
while((!
DS)&
sum++);
while((DS)&
rh_h_temp=COM();
rh_l_temp=COM();
temp_h_temp=COM();
temp_l_temp=COM();
check_temp=COM();
DS=1;
sum_temp=(temp_h_temp+temp_l_temp+rh_h_temp+rh_l_temp);
if(sum_temp==check_temp)
rh_h=rh_h_temp;
rh_l=rh_l_temp;
temp_h=temp_h_te