基于STC89C52单片机的自动浇花系统设计

2021-03-31 08:56乔琳君魏严锋
微型电脑应用 2021年3期
关键词:土壤湿度继电器湿度

乔琳君, 魏严锋

(1.西安航空职业技术学院 自动化工程学院, 陕西 西安 710089;2.中航西飞民用飞机有限责任公司, 陕西 西安 710089)

0 引言

居家和办公环境中常常会摆放绿植以改善居家环境,调节工作氛围,但经常会存在浇水过量使绿植过涝或忘记浇水、外出过旱,最终都可能导致绿植死亡。为能够及时、按需根据土壤湿度对家庭或办公场所的绿植进行自动浇灌,设计基于STC89C52型单片机的自动浇花系统一套,防止人们浇水过量或外出时绿植长期干旱。

1 系统框架设计

本自动浇花系统由六个单元组成,即单片机控制单元、土壤湿度采集单元、模数转换单元、按键选择单元、继电器驱动水泵单元和液晶显示单元。当土壤湿度变化引起湿敏传感器的阻值发生变化,系统上电后,该阻值变化在电路中会转换为变化的电压信号,经过模数转换后送至单片机识别运算控制,并由LCD显示器显示土壤湿度。通过此方式对土壤的湿度信息进行实时监测和控制,以达自动浇花之目的。系统框图,如图1所示。

图1 系统框图

2 硬件电路设计

2.1 STC89C52单片机

系统采用低功耗、高性能的STC89C52型单片机为控制器,其内部有8位中央处理器(CPU)、4k字节Flash闪速存储器、128Byte内部RAM、32个I/0口、2个16位定时/计数器、一个5向量两级中断结构、一个全双工串行通信口、片内振荡器和时钟电路[1]。其最小应用系统由单片机、晶振电路和复位电路构成。

2.2 YL-69湿度传感器

湿度传感器用来检测花盆土壤湿度大小,由敏感元件以及转换电路组成。当土壤湿度变化时,传感器电阻值发生变化,经转换电路引起输出电压的变化,并将此电压信号输送至数模转换器以便单片机判别运算。本设计选用YL-69土壤湿度传感器[2],其湿度检测范围0%-100%,仿真电路中用电位器模拟湿度传感器。

2.3 ADC0832AD转换器

2.4 LCD1602液晶显示器

为了实时显示土壤湿度,提示使用者该系统的工作模式,因此选用LCD1602液晶显示器用来显示湿度大小和工作模式。运行过程中第一行Humidity显示当前湿度;第二行state显示工作模式,Maul为手动模式,Aoto为自动模式;自动模式下调节湿度参数时上下两行分别显示湿度上下限值。液晶显示器的8位数据端D1-D7由单片机的P0口控制,RS、R/W、E端分别由单片机P2.5-P2.6控制。

2.5 继电器水泵单元

该模块由PNP型三极管和继电器及水泵组成,单片机P2.0口控制三极管基极。当系统选择手动浇花模式或自动模式下湿度低于下限湿度时,P2.0输出为0,则PNP型三极管导通,继电器得电,常开触点吸合,电动机回路接通,执行浇花工作。当自动模式下湿度高于上限湿度时,P2.0输出为1,则PNP型三极管导通,继电器失电,常开触点复位,电动机回路断开,结束浇花工作。

2.6 其他辅助单元

除以上五大单元外,系统还设置有工作模式选择、参数调节按键单元和灯光指示单元。

3 系统软件设计

当系统上电后进行初始化,同时获取设定湿度并采集当前湿度值。经过A/D转换后,送到LCD显示器显示信息;系统判断当前土壤湿度和预设湿度大小关系,如果小于预设值,继电器就会驱动水泵进行抽水灌溉;如果高于预设值,继电器和水泵不工作。湿度传感器实时监测土壤湿度,当浇花过程中土壤湿度大于设定值,则浇花过程结束。系统流程图,如图2所示。

图2 主程序流程图

系统部分程序如下。

#include〈reg52.h〉 //头文件

#include〈intrins.h〉

#include"eeprom52.h"

#define uchar unsigned char //宏定义

#define uint unsigned int

#define LCD1602_dat P0 //液晶数据口定义

sbit LCD1602_rs=P2^5;//IO 定义

sbit LCD1602_rw=P2^6;

sbit LCD1602_e=P2^7;

sbit beep=P1^3; //蜂鸣器

sbit led_1=P1^4; //指示灯

sbit led_2=P1^6;

sbit key_1=P3^0; //按键

sbit key_2=P3^1;

sbit key_3=P3^2;

sbit alarm_1=P2^0; //继电器

sbit ADC0832_CS=P1^2;

sbit ADC0832_CLK=P1^0;

sbit ADC0832_DIO=P1^1; //adc0832引脚

uint sum;

uchar RH,RH_H=60,RH_L=20,state,ms,time_num,cs;

bit beep1,zt,s1;

void main() //主循环

{

float Ad_dat=0;

TMOD=0x01; //配置定时器0

TH0=0x3c;

TL0=0xb0; //赋50 ms初值

ET0=1;

TR0=1;

EA=1; //打开总中断

LCD1602_cls(); //液晶初始化

RH_H=byte_read(0x2000);

RH_L=byte_read(0x2200);

if((RH_H>99)||(RH_L>99)||(RH_L>=RH_H)) {RH_H=30; RH_L=20;}

while(1)

{

sum+=A_D(); //累加5次AD数据

cs++;

if(cs==5)

{

cs=0;

Ad_dat=(float)(sum/5); //取一个平均值,用于滤波

if(Ad_dat>250) Ad_dat=0;

else if(Ad_dat<=70) Ad_dat=100;

else Ad_dat=100-((Ad_dat-70)/1.8);

RH=(uint)(Ad_dat);

sum=0;

}

show(); //调用显示函数

key(); //调用按键扫描

proc(); //调用报警子函数

}

}

4 仿真调试

选用Proteus仿真软件实现自动浇花系统的软件仿真调试,按照所设计的方案搭建电路模型,如图3所示。

图3 手动工作模式

系统所需元件明细表,如表1所示。

表1 自动浇花电路所需元件列表

模型搭建完毕,点击单片机添加程序,打开仿真开关开始调试。

4.1 手动工作模式

系统上电后直接为手动模式。

由图3可知,LCD1602第一行49%为显示当前湿度,第二行Manul为手动工作模式;P2.0输出为0,继电器工作,水泵转,LCD1602实时显示当前土壤湿度,当湿度增加到人为预期值,按S3键手动关水泵,手动浇花结束。

4.2 自动工作模式

按下S2工作模式切换为自动。按下S1设置键,进入湿度预设值调节模式,分别按S2/S3键,实现增/减预设值。设置完成后,再按S1键退出,返回到正常模式。将湿度上下限分别设置为RH-L20~RH-H30%。当湿度在30%以下时P2.0输出为0,继电器得电工作,水泵转,湿度在20%以下时D2报警;当湿度在30%以上时P2.0输出为1,继电器断电,水泵停,D3报警指示,完成自动浇花,如图4所示。

图4 自动工作模式

5 总结

从仿真实验结果表明,该系统可以实现低于设定下限湿度时系统自动浇花,高于设定上限湿度停止浇花,同时带有灯光报警指示和湿度实时显示,在实际中有一定的应用价值。

猜你喜欢
土壤湿度继电器湿度
路基上CRTSⅡ型板式无砟轨道湿度场分析
土壤湿度传感器在园林绿化灌溉上的应用初探
基于随机权重粒子群优化极限学习机的土壤湿度预测
继电器控制及诊断在电动汽车动力电池包的应用
便携式继电器测试台的研制和应用
基于51单片机控制花盆土壤湿度
计算机联锁复示继电器电路改进方案探讨
贵州喀斯特区域土壤湿度变化规律研究
跟踪导练(二)(2)
泓格科技继电器输出模块-87061PW