智能浇花控制系统设计方案.docx
《智能浇花控制系统设计方案.docx》由会员分享,可在线阅读,更多相关《智能浇花控制系统设计方案.docx(53页珍藏版)》请在冰豆网上搜索。
![智能浇花控制系统设计方案.docx](https://file1.bdocx.com/fileroot1/2023-4/28/fc406f97-d617-42a4-8809-b7e734398959/fc406f97-d617-42a4-8809-b7e7343989591.gif)
智能浇花控制系统设计方案
智能浇花控制系统设计方案
1.绪论
近年来,人们的生活水平有了大幅度的提高,然后如何真正提高生活质量,如何使生活产生质的飞跃成为了大多数人们思考的问题。
种植花草是中国人千百年来的维持不变的喜好,故多数人选择种植花草来陶冶情操,同时,也把它作为一项业余的消遣活动,但由于人们生活节奏快和经常出差等缘故,不能按时为花草浇水成为了花草死亡的主要原因。
为了解决按时为花草浇水的问题,人们会采取在手机中存备忘录以及做各种备忘录等方法,但这些方法始终存在很多缺陷,市场上的智能浇花系统仪器功能繁多但是价格过于昂贵,而且对于普通家庭而言,过于复杂的应用和多功能是不必要的。
智能浇花系统的出现正可以解决这一问题,该系统其主要执行装置是一个电磁阀门,其一端连接水管,另外一端连接外置的水管作为浇水口,浇水的水量主要由单片机控制。
设备主要是通过控制浇水的时间间隔和浇水的持续时间来控制浇水量的。
操作方便简便,这样即实现了家庭生活的现代化又保证了植物的正常生长。
近年来,以电子技术为代表的新技术促进了电子行业的飞速增长,也极大地推动了智能家电和智能家用设备的快速发展。
国外的智能家用设备市场俨然已经做大做强,鉴于中国在全球制造链和设计链的重要地位,使得这里成为全球各大生产智能家用设备厂商逐鹿的大战场,同时,也带动了中国本土智能家用设备仪器研发与测试技术应用的迅速发展。
智能浇花控制系统自然也包括在其中,近些年来,国内外出现了许多种智能浇花控制系统,其功能与控制原理也存在着许多的不同,但根本目的均为方便人们的日常生活和保证花草的正常生长。
众所周知,在二十世纪,人类跨越了三个“电”的时代,即电气时代、电子时代和电脑时代。
但这种电脑,通常指个人计算机,也就是我们平时所说的PC机。
它由主机、显示器、键盘等组成。
除此之外还有一类计算机,大多数人很不熟悉。
这种计算机就是把智能赋予给各种机械的单片机(微控制器)。
这种计算机最小的系统只用一片集成电路,就能进行简单运算和控制。
因为其体积小,通常都被放在被控机械的“肚子”里。
在整个装置中,他的作用有如人类头脑,若它出了毛病,整个装置也就瘫痪了。
现如今,这种单片机的使用领域已发展的十分广泛,如智能仪表、导航系统、实时工控、通讯设备、家用电器等。
各种家用产品用上了单片机以后,便能起到令产品换代升级的功效,通常都会在产品名称前加上形容词——“智能型”,例如智能型洗衣机等等。
而花卉养殖作为大多数人生活中的一部分,却常常因为人们工作等原因被忽略,智能浇花控制系统可为人们解决这一问题,与此同时,智能浇花控制系统若能走进家庭,也是人们生活进入智能化的标志之一。
2.系统设计方案
2.1系统工作原理
智能浇花控制系统的设计,其主要执行装置是一个电磁阀门,其一端连接水管,另外一端连接外置的水管作为浇水口,浇水的水量主要由单片机控制。
设备主要是通过控制浇水的时间间隔和浇水的持续时间来控制浇水量的[1]。
2.2系统方框图设计
系统主要是由单片机、电源、按键、显示、指示灯、复位电路、电磁阀模块等组成。
方框图如图2-1所示:
图2-1系统方框图
2.3系统结构
整个自动浇花设备的结构可以分为5大部分:
中央处理单元(CPU),LED显示部分,电磁阀部分,按键部分,指示灯部分等。
2.3.1单片机模块
单片机模块对整个系统进行控制,实现以下功能:
(1)控制显示模块显示工作参数;
(2)根据按键的输入做出正确的计算,并传输到显示器件上实现时间的调整设置;
(3)控制LED的点亮和熄灭;
(4)实现电磁阀的控制。
2.3.2显示模块
数码显示模块能够将需要的时间参数显示出来,提供了系统和操作者的交流窗口,是人机界面的重要组成部分之一。
2.3.3电磁阀模块
电磁阀是本设备的执行设备,系统通过电磁阀控制水的流通和截止,实现了电能到机械能的转换。
2.3.4按键模块
按键是人机界面的另一个重要组成部分,它是最主要的输入设备。
用户通过按键将自己的要求告知单片机,单片机根据用户的设置进行相应的操作。
2.3.5指示灯模块
指示灯是数码显示模块以外的另一输出设备,在数码管的基础上起到辅助作用。
2.3.6复位电路模块
复位模块主要功能为在上电的一瞬间,电压不是直接跳变到单片机可工作的电压范围。
并且在外部输入电压较低的时候(电压在临界范围),这个时候单片机可能工作也可能不工作,故而会引起芯片内程序道德无序执行,复位电路需要确保在上电的时候暂时不让单片机立刻进入工作状态,即上电延时状态。
2.4系统人机界面设计
操作界面如图2-2所示,主要由2位数码管、7个按键和3个发光二级管组成。
图中各部分介绍如下:
数码管:
用于显示工作持续时间和时间间隔,配合按键完成各项参数的设置。
LED1:
电源指示灯,当通电以后就亮起,说明系统已经开始工作。
LED2和LED3:
参数指示灯。
当LED2亮起以后,说明目前数码管上显示的是工作间隔时间,可以通过按键对其设置。
当LED3亮起时,说明目前显示的是工作持续时间。
ON/OFF:
电源开关,按下后电源指示灯LED1点亮,系统开始工作。
RESET:
系统复位。
当遇到意外情况系统出现死机,可通过此按键恢复正常工作。
SWITCH:
用于切换工作间隔时间和工作持续时间,按下以后LED2和LED3将依次点亮。
UP和DOWN:
增加和减少数码管所显示数字的值。
OK:
确定键,当用户使用UP和DOWN键设置好时间以后,按下OK键进行保存和应用。
CLEAR:
清零键,可通过此按键将当前数码管示数快速清零,重新进行设置。
图2-2操作人机界面
2.5系统操作步骤
(1)将入水管连接到自来水龙头和电磁阀之间,用出水管连接电磁阀和花盆,这个过程中注意水管的密封性,也不要让水溅到电路板上。
(2)将控制系统通电,按下电源开关ON/OFF,LED1亮,表示一切正常。
(3)按下SWITCH键,LED2点亮,通过UP和DOWN设置工作间隔时间。
按下CLEAR可清零。
(4)按下SWITCH键,LED2熄灭,LED3点亮,通过UP和DOWN设置工作持续时间,按下CLEAR可清零。
(5)按下OK键,LED3熄灭,系统按照设定的参数开始工作。
3.关键器件的选型
3.1单片机的选择
AT89C51单片机是Atmel公司推出的一款产品,一般小芯片的价格都比较低,同样AT89C51作为一款小芯片产品其价格相对而言较为便宜,并且其与MCS-51系列兼容行很好,所以本系统决定采用AT89C51作为芯片[2]。
3.1.1AT89C51简介
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C5x单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[3]。
3.1.2AT89C51的主要性能
(1)与MCS-51兼容;
(2)4K字节可编程FLASH存储器;
(3)寿命:
1000写/擦循环;
(4)数据保留时间:
10年;
(5)全静态工作:
0Hz-24MHz;
(6)三级程序存储器锁定;
(7)128×8位内部RAM;
(8)32可编程I/O线;
(9)两个16位定时器/计数器;
(10)5个中断源;
(11)可编程串行通道;
(12)低功耗的闲置和掉电模式;
(13)片内振荡器和时钟电路。
3.1.3AT89C51的管脚说明
AT89C51的引脚图如图3-1所示。
图3-1AT89C51的引脚图
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号[4]。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL),这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
表3-2P3管脚第二功能表
P3口管脚
备选功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(计时器0外部输入)
P3.5
T1(计时器1外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.2继电器的选择
继电器是一种电控制器件。
它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。
通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。
故在电路中起着自动调节、安全保护、转换电路等作用。
本次设计过程中需要一个继电器来控制电磁阀的工作。
由于需要工作电压在5V左右。
所以选择了型号为JZC-36F的继电器,其工作电压在4V~45V之间[5]。
3.3电磁阀的选择
阀门是在流体系统中,用来控制流体的方向、压力、流量的装置。
阀门是使配管和设备内的介质(液体、气体、粉末)流动或停止并能控制其流量的装置。
阀门是管路流体输送系统中控制部件,它是用来改变通路断面和介质流动方向,具有导流、截止、节流、止回、分流或溢流卸压等功能。
用于流体控制的阀门,从最简单的截止阀到极为复杂的自控系统中所用的各种阀门,其品种和规格相当繁多。
由于本设备采用单片机控制,并且电磁阀是由开关信号控制的,与单片机控制电路连接十分的方便,所以决定采用电磁阀作为阀门[6]。
电磁阀从原理上分为三大类:
(1)直动式电磁阀:
原理:
通电时,电磁线圈产生电磁力把关闭件从阀座上提起,阀门打开;断电时,电磁力消失,弹簧把关闭件压在阀座上,阀门关闭。
特点:
在真空、负压、零压时能正常工作,但通径一般不超过25mm。
(2)分步直动式电磁阀:
原理:
它是一种直动和先导式相结合的原理,当入口与出口没有压差时,通电后,电磁力直接把先导小阀和主阀关闭件依次向上提起,阀门打开。
当入口与出口达到启动压差时,通电后,电磁力先导小阀,主阀下腔压力上升,上腔压力下降,从而利用压差把主阀向上推开;断电时,先导阀利用弹簧力或介质压力推动关闭件,向下移动,使阀门关闭。
特点:
在零压差或真空、高压时亦可动作,但功率较大,要求必须水平安装。
(3)先导式电磁阀:
原理:
通电时,电磁力把先导孔打开,上腔室压力迅速下降,在关闭件周围形成上低下高的压差,流体压力推动关闭件向上移动,阀门打开;断电时,弹簧力把先导孔关闭,入口压力通过旁通孔迅速腔室在关阀件周围形成下低上高的压差,流体压力推动关闭件向下移动,关闭阀门。
特点:
流体压力范围上限较高,可任意安装(需定制)但必须满足流体压差条件。
由于直动式电磁阀结构较为简单,动作可靠,而且设备需要在断电条件下铁芯始终保持在关闭状态,所以选用常闭型的直动式电磁阀。
具体为YCSM31系列的二位二通直动式电磁阀(常闭型)。
3.4显示器的选择
在显示器的选择上,虽然LED数码管消耗电力比液晶显示器多一点,但是LED数码管显示更加清晰,更加适合在白天等强光条件下显示。
液晶显示极其省电,但是使用有温度范围限制,且因是反光式的,在外界光线很明亮的情况下很容易看不清楚。
另外,LED数码管的价格与液晶显示器相比较为低廉,故本次设计采用LED数码管[7]。
4.硬件电路设计
4.1单片机最小系统
4.1.1晶振电路设计
AT89C51单片机芯片内部设有一个反相放大器所构成的振荡器,XTAL1和XTAL2分别为振荡电路的输入端和输出端。
在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。
定时元件常常是用石英晶体和电容组成的并联谐振回路。
系统选择了12MHz的晶振片,两个30pF的电容C7和C8。
晶振电路如图4-1所示。
图4-1晶振电路
4.1.2复位电路
本设计采用的按键复位电路,当要系统自动复位时,只需要按住S7按键,此时电源Vcc经过电阻R1、R2分压,并且在RST端产生一个复位的高电平。
同样,只要保证RST端保持高电压的时间大于两个机器周期时,系统自动能实现正常复位。
复位电路如图4-2所示:
图4-2AT89C51单片机的复位电路
4.1.3单片机最小系统电路设计
单片机最小系统设计电路如图4-3所示:
图4-3单片机最小系统
如图所示,AT89C5单片机的RST引脚连接复位电路,P2.7引脚连接电磁阀电路,P1.0~P1.7引脚连接按键电路,XTAL1和XTAL2引脚连接晶振电路,P2.0和P2.1引脚连接指示灯电路,P2.5~P2.7引脚连接放大电路则与P0.0~P0.7引脚一起控制LED显示电路[8]。
4.2按键电路设计
系统采用非编码键盘,按键电路主要由5个按键S1~S5组成,采用独立式的按键形式。
各按键的功能见表4-4:
表4-4按键功能对照表
按键编号
功能
连接端口
S1
SWITCH
P1.1
S2
UP
P1.2
S3
DOWN
P1.3
S4
CLEAR
P1.4
S5
OK
P1.5
按键电路如图4-5所示,按照图中的电路连接方法,判断是否有键按下的方法是:
查询每一根接按键的I/O口线的输入电平,如果是低电平则说明这个接口线连接的按键处于按下状态。
相反,若为高电平则说明按键处于非按下状态。
图4-5按键电路
4.3数码管显示电路设计
系统采用两个七段发光数码显示器HS-3461BS2,HS-3461BS2它是共阳极的数码显示器。
处于工作状态的数码管,其显示情况由单片机的P0.0~P0.6七个接线口决定,其七个口分别连接着数码管的七个笔画。
例如要在数码管DS1中显示1,而数码管DS2处于非工作状态,则需要将P2.6接线口置为1,P2.5接线口置为0,并且使P0.1和P0.2接线口置为1,而P0.0,P0.3~P0.6接线口置为0。
字形段码表如表4-6所示:
表4-6数码管段码表
显示字符
共阴极字型码
五班
0
3FH
C0H
1
06H
F9H
2
5BH
A4H
3
4FH
B0H
4
66H
99H
5
6DH
92H
6
7DH
82H
7
07H
F8H
8
7FH
80H
9
6FH
90H
根据上面的7段字形码表可以进行编码,从而控制数码管的显示。
LED显示电路如图4-7所示
图4-7数码管显示电路
4.4电磁阀电路设计
如下图所示Q3为一个PNP三极管,D1为普通二极管,K1为JZC-36F继电器,M电动机符号来表示电磁阀。
在继电器失电的状态下,动合触点断开,动断触点闭合,当继电器得电后,动合触点闭合,动断触点断开,利用继电器的触电开关作用可以控制设备或者传送逻辑电平信号。
动合触点是指继电器(或功能电器)中有预定激励时闭合,无激励时断开的触点,而动断触点则是继电器(或功能电器)中有规定的激励时断开,无规定的激励时闭合的触点。
在本次系统设计中选用了动合触电开关,使继电器在失电状态下保持断开的状态,然而在得电的状态下保持闭合状态。
即当Q3基极得到一个低电平则继电器开关立即闭合,在处于高电平时继电器开关保持断开状态[9]。
当继电器的开关闭合时,电磁阀则处于一个通路的状态下,进而电磁阀开始工作,系统设备开始浇水。
相反,当继电器的开关断开时,电磁阀处于一个断路的状态下,则电磁阀不工作,从而系统设备也不工作。
电磁阀电路如图4-8所示。
图4-8电磁阀电路
4.5整体电路设计
总电路主要由:
晶振电路,复位电路,按键设置电路,LED显示电路,电磁阀电路,以及电源电路等几个部分。
通过这几个分电路的分工合作,能够使得系统具有显示功能,并且具备键盘调整功能,同时能够对电磁阀进行有效的控制。
从而使设备顺利的进行工作。
整体电路图见附录1。
5.系统软件设计
5.1软件架构设计
在编写程序代码之前,必须先对系统通盘考虑,事先设计好系统的软件架构。
软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。
对本系统而言,就是要设计好每一个功能最合理的实现方法,不要等到代码写到一半才发现某个功能难以实现,导致全部重写或是迫不得已采用有隐患的的实现方法。
一般而言,软件架构设计要达到如下的目标:
可靠性(Reliable)、安全性(Secure)、可扩展性(SCAlable)、可定制化(CuSTomizable)、可扩展性(Extensible)和可维护性(MAIntainable)等[10]。
在本系统中,主要的部分有按键处理、数码管的动态显示和工作时间的计算。
这三个任务都是必须连续工作的。
如果按键处理相关程序暂停运行,用户按下按键时就没有反应;如果数码管相关的程序暂停运行,显示的数字就会出现异常。
为了实现系统软件架构要求的目标(主要是可靠性、可扩展性和可维护性),采用了这样的软件结构:
在主程序中读取按键输入以及进行相应按键的处理;用定时器TIMER0定时出发中断,在定时器的终端服务程序中进行数码管的动态扫描显示;另一个定时器TIMER1用来计算工作间隔时间和工作持续时间。
5.1.1主程序
主程序指的是单片机上电以后就开始运行的程序,与中断服务程序相区分。
主程序进行了两个操作,首先对系统进行初始化设置,然后进入一个循环结构,扫描按键是否被按下,当有键按下以后就执行相应的按键处理程序[11]。
流程图见图5-1。
单片机复位以后(无论上电复位还是按键复位)将从程序存储器的0000H地址开始运行程序。
在这里必须写一条跳转指令,引导程序跳转到主程序的起始地址。
为了使程序更清晰,提高可读性,采用了模块化的思想来指导程序的编写。
也就是将各功能封装成子程序,在使用时直接调用。
在主程序中调用了两个子程序,分别是初始化子程序和按键判别与处理子程序,在接下来的几节中将会依次介绍。
图5-1主程序流程图
5.2初始化模块
在本系统中,初始化的操作要实现两个目标,一是对单片机本身的特殊功能寄存器(ISR)进行赋值,是单片机内部集成的各功能正常工作,比如定时器;二是对单片机外围的输出设备的状态进行设置,防止出现不希望的输出,比如电磁阀控制的水管。
单片机内部的设置主要集中在定时器相关的寄存器。
将定时器0设为10ms溢出一次,用于数码管的动态显示;定时器1也设为10ms溢出一次,通过软件计100个数实现1秒的定时时间[12]。
外部设备方面,电磁阀驱动端口P2.7需要设为高电平,让电磁阀不通电,保持关闭状态;LED2驱动端口P2.0设为高电平,让其点亮;LED3驱动端口P2.1要设为低电平,让它不亮;数码管段码选择端口P0设为0C0H,让其显示“00”,稍后将由定时器0中断控制它显示正确的数字;按键输入端口P1.1~P1.2均设为高电平,否则将无法正确读取按键状态。
初始化子程序见附录二。
初始化子程序流程图见5-2。
图5-2初始化子程序流程图
程序开始
配置定时器0寄存器
配置定时器1寄存器
输入端口设为高电平
设置LED2亮
LED3灭
数码管显示“00”
设置电磁阀关闭
程序结束
5.3按键判别与处理模块
P1.1=0?
P1.2=0?
P1.3=0?
P1.5=0?
P1.4=0?
程序开始
读取P1
消抖处理
程序结束
切换显示
当前数加1
当前数减1
当前数=0
保存数值
Y
Y
Y
Y
Y
N
N
N
N
N
图5-3按键判别处理子程序流程图
上图5-3按键判别处理子程序流程图在这个子程序内,首先读取P1口的输入状态,经过消抖处理以后依次判断P1.1~P1.5的电平是否由1变为0,哪一位变为0了,就说明其对应的按键已经被按下,可以跳转到相应的按键处理程序。
按键具体的操作连锁关系如下[12]:
1.当指示灯LED2亮,数码管1选中时,经过“UP”,“DOWN”调节按键调节过的显示数字存储与(41)H,其相应的P0值存储与(40)H。
2.当指示灯LED2亮起,数码管2选中时,经过“UP”,“DOWN”调节按键调节过的显示数字存储与(61)H,其相应的P0值存储与(61)H。
3.当指示灯LED3亮起,数码管1选中时,经过“UP”,“DOWN”调节按键调节过的显示数字存储与(51)H,其相应的P0值存储与(51)H。
4.当指示灯LE