摘要:快节奏的生活导致人们忙于工作而无暇顾及家中植物的及时浇水,影响了植物的生长发育,
也降低了其种植成功率。针对上述问题,该文设计了一种自动浇花系统,该系统能在无人环境下
根据土壤湿度情况自动启动,完成浇水动作,解决种植户的后顾之忧。该系统采用土壤湿度传感
器对土壤湿度进行实时采集,同时在LCD上显示,采用AT89C52单片机对数据进行处理,根据预设好的湿度上下限,控制水泵驱动电路,启动浇水执行单元执行浇水动作,使植物的土壤湿度能够保持在其生长所需水分的合适范围内,保证其健康生长。通过Keil C51软件编写源代码,使用Proteus进行仿真测试,研究结果表明,该系统可根据预设土壤湿度值进行自动植物喷淋。
关键词:湿度传感器;ADC0832;浇花;自动控制
随着人们对美好生活标准的不断提高,许多居民为美化生活环境和净化空气,在家里种植了盆栽植物。但忙碌的生活使得人们很多时候无法及时给盆栽植物浇水,大大影响植物的正常生长和存活
率。为保证家中绿植的生命活力,研制并开发一种自动浇花装置就很有必要。目前,市面上的自动浇水装置,一般通过人为在定时器上设定时间,计时清零时执行浇水动作实现,时间的设定依赖于种植户对绿植的养植经验,并不能根据植物所需和实际土壤状况实施较为精准的浇水动作。为解决上述问题,保证自动浇水的及时性和精确性,该文设计了一种以土壤湿度为依据的自动浇花系统,可使土壤湿度保持在合适的范围内,有利于绿色植物的健康成长。
1 硬件系统设计
自动浇花系统设计采用AT89C52 单片机为核心,其中按键电路、ADC0832 采样电路是输入模块,输出模块为水泵控制电路和LCD 液晶显示电路,总电源电路为各模块供电。
土壤湿度传感器可以获取当前的土壤水分信息,将采集到的模拟量转换成数字量,通过单片机进行传输,然后在LCD液晶屏上显示。通过单片机内置的判断程序语句来选择是否浇水。当湿度低于预设的湿度值时,单片机系统发出浇水信号,驱动水泵开始浇水,达到智能浇水的目的。系统硬件框图如图1所示。
1.1 电源电路设计
电源电路使用的硬件接口是直流电源插座DC,可连接USB 电源线接5 V 电源。LED 作为系统运行的指示灯,其中串联的电阻R7大小为1 kΩ,对LED灯起到限流保护的作用,可防止灯泡因电流过大而烧坏,导致系统故障。自锁开关SW的功能是按下开关红灯亮,同时输出5 V电源,电源电路如图2所示。
1.2 水泵控制电路设计
微型水泵的作用主要是将水输送到花盆里面[5],水泵控制电路如图3所示。水泵是将电机的机械能转化为抽送液体的动能从而达到抽送液体目的。在该电路中,LED 灯是黄颜色的,它的亮与暗可以反馈水泵是否正常工作。限流电阻R8大小为1 kΩ,作用是保护LED 灯不会因过流而烧坏,保证系统的正常运行。当单片机对应的控制引脚为低电平时,三极管打开,水泵正常工作。另外,电解电容的作用是滤除泵电源的低频参数,使水泵工作更加稳定,水泵为水流的传输提供了渠道,使得浇花变得更加方便。
1.3 土壤湿度传感器电路设计
土壤湿度检测电路如图4所示。其中ADC0832是一种8位A/D转换芯片,芯片转换时间短,转换速度快。土壤湿度传感器先检测土壤湿度,采集的实时土壤湿度会与单片机预先设定的湿度相比较,作为是否发出浇水信号的重要依据。ADC0832选择模拟输入通道CH0 作为土壤湿度检测信号采集口,将土壤湿度传感器采集的数字信号转换为模拟电压信号,经过STC89C52 单片机传输到LCD 液晶显示屏上实时显示土壤湿度。
1.4 LCD 液晶显示电路设计
LCD1602液晶屏驱动电路模块的作用是将显示字符的ASCII 码写入内部的显示数据存储器,通过LCD 液晶屏显示该字符[9]。LCD液晶显示电路如图5所示。
选用的LCD 具有14条引脚线,其各引脚的作用如表1所示。
LCD 显示的每个字符都是由点阵组成的,在编程显示时只需将对应的点置1,就可以显示字符。通过LCD 液晶接收显示信号,每个字符点都会保持其原始颜色和亮度,并继续发光。这与数码管显示的机制不同,数码管动态显示时由于人眼的视觉暂留效果,通过循环扫描每一位数码管实现。因此,选用LCD显示器可以提高图像显示效果并且不会闪烁。
1.5 按键电路设计
这个轻触按键起着电子开关的作用,其功能主要是通过按钮内部的金属弹片力来实现的。初始化情况下,单片机的按键控制引脚为高电平。当按键被按下时,单片机的相关引脚由高电平变为低电平,同时运行该键的功能程序,所以系统可以通过按键手动配置湿度信息。按键电路如图6所示。
1.6 AT89C52 单片机
选用AT89C52 单片机作为整个系统的控制核心,其具有8 位CPU,为自动浇花系统的运行提供高速运算支撑,8k 的Flash 存储器可以反复擦写,有利于该系统的优化改良。内部存储器用于储存土壤湿度信息,按下设置键后预设的土壤湿度值由中断系统实现。定时计数器为预设湿度值的增减作计数支撑,32个双向的I/O是单片机数据流动的桥梁。该单片机具有高度集成性,拥有掉电存储功能,适用于自动浇花系统的开发,其单片机引脚图如图7所示。
2 系统程序设计
土壤湿度检测与自动灌溉系统流程图如图8所示。根据绿色植物品种对土壤湿度的实际需求,提前设定土壤含水量的预设值,如30%。将土壤湿度传感器实时检测的湿度含量与预设的湿度值进行比较,判断是否需要进行浇水。
2.1 部分代码
部分代码如下:
#include <reg52.h>//程序头函数
#include <intrins.h>//包含头文件
#include <display.h> //显示函数
#include "eeprom52.h"
#define uint unsigned int //宏定义
#define uchar unsigned char
//管脚声明
sbit CS = P1^4;
sbit Clk = P1^2;
sbit DATO = P1^3;//ADC0832引脚
sbit san=P3^4;//继电器
sbit Key1=P2^6;//按键
sbit Key2=P2^7;
sbit Key3=P3^7;
//定义全局变量
unsigned char dat = 0;//AD值
unsigned char CH=0;//通道变量
unsigned int sum=0;//平均值计算时的总数
unsigned char m=0;
bit bdata flag;//定义位变量
uchar set;//设置变量
uchar full_range=153;
//函数声明
extern void Key();
char MH=70,ML=30;//上下限变量
//把数据保存到单片机内部eeprom中
void write_eeprom()
{ SectorErase(0x2000);
byte_write(0x2000, MH);
byte_write(0x2001, ML);
byte_write(0x2060, a_a);
}/
/把数据从单片机内部eeprom中读出来
void read_eeprom()
{ MH = byte_read(0x2000);
ML = byte_read(0x2001);
a_a = byte_read(0x2060);
}/
/开机自检eeprom初始化
void init_eeprom()
{ read_eeprom();//先读
if(a_a != 1)
}/
/新的单片机初始化,访问eeprom
{ MH = 70;
ML = 30;
a_a = 1;
write_eeprom();//保存数据
}/
/定时器设定
void init() //定时器初始化函数
{ TMOD=0x01;//定时器工作方式
TL0=0xb0;
TH0=0x3c;//赋初值50ms
EA=1;//打开中断总开关
ET0=1;//打开定时器0中断允许开关
TR0=1;//打开定时器0定时开关
}
2.2 系统仿真测试
系统初始化后采集当前环境的湿度值。完成A/D转换后,设置好预置湿度值,传输到LCD液晶屏上显示信息,系统确定当前土壤湿度和预设土壤湿度之间的关系。如果低于设定值的30%,继电器驱动水泵进行灌溉;如果高于设定值的70%,则继电器和水泵不工作。湿度传感器可以实时获取当前的土壤湿度。当浇水过程中土壤含水量大于设定值时,浇水过程结束。LCD显示湿度图如图9所示,LCD1602第一行显示了土壤当前湿度,第二行显示人为预设值,可以通过设置键调整土壤湿度上下限,按下增大键湿度加一,反之按下减少键湿度减一,再次按下设置键退出设置程序。
Proteus 仿真测试结果表明,进入自动浇花系统后,先预设土壤的湿度值。根据土壤湿度传感器采集的数据与预设湿度值对比进行判断,再进入程序处理。当湿度值小于预设值时,进入水泵电机驱动程序并启动浇花功能,直到达到预设湿度。自动浇水系统能对绿色植物进行监测,并能准确反馈土壤湿度信息,根据植物对土壤湿度的实际需求进行实时浇水。
3 结束语
该设计主要研究了土壤湿度与植物所需水分灌溉量之间的关系,使得绿色植物在生长过程中,其土
壤湿度一直保持在合适的范围内。选用AT89C52型单片机,在Keil软件上采用C51语言编写程序,最后运用Proteus进行仿真测试,验证了系统的可行性和稳定性。当湿度低于预设值时,单片机发出浇水信号,水泵系统开始浇水,达到预设土壤湿度值后停止浇水。它适用于没有时间照顾花草的用户,为绿色植物的管理提供了方便。