喬琳君, 魏嚴(yán)鋒
(1.西安航空職業(yè)技術(shù)學(xué)院 自動(dòng)化工程學(xué)院, 陜西 西安 710089;2.中航西飛民用飛機(jī)有限責(zé)任公司, 陜西 西安 710089)
居家和辦公環(huán)境中常常會(huì)擺放綠植以改善居家環(huán)境,調(diào)節(jié)工作氛圍,但經(jīng)常會(huì)存在澆水過量使綠植過澇或忘記澆水、外出過旱,最終都可能導(dǎo)致綠植死亡。為能夠及時(shí)、按需根據(jù)土壤濕度對(duì)家庭或辦公場(chǎng)所的綠植進(jìn)行自動(dòng)澆灌,設(shè)計(jì)基于STC89C52型單片機(jī)的自動(dòng)澆花系統(tǒng)一套,防止人們澆水過量或外出時(shí)綠植長(zhǎng)期干旱。
本自動(dòng)澆花系統(tǒng)由六個(gè)單元組成,即單片機(jī)控制單元、土壤濕度采集單元、模數(shù)轉(zhuǎn)換單元、按鍵選擇單元、繼電器驅(qū)動(dòng)水泵單元和液晶顯示單元。當(dāng)土壤濕度變化引起濕敏傳感器的阻值發(fā)生變化,系統(tǒng)上電后,該阻值變化在電路中會(huì)轉(zhuǎn)換為變化的電壓信號(hào),經(jīng)過模數(shù)轉(zhuǎn)換后送至單片機(jī)識(shí)別運(yùn)算控制,并由LCD顯示器顯示土壤濕度。通過此方式對(duì)土壤的濕度信息進(jìn)行實(shí)時(shí)監(jiān)測(cè)和控制,以達(dá)自動(dòng)澆花之目的。系統(tǒng)框圖,如圖1所示。
圖1 系統(tǒng)框圖
系統(tǒng)采用低功耗、高性能的STC89C52型單片機(jī)為控制器,其內(nèi)部有8位中央處理器(CPU)、4k字節(jié)Flash閃速存儲(chǔ)器、128Byte內(nèi)部RAM、32個(gè)I/0口、2個(gè)16位定時(shí)/計(jì)數(shù)器、一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu)、一個(gè)全雙工串行通信口、片內(nèi)振蕩器和時(shí)鐘電路[1]。其最小應(yīng)用系統(tǒng)由單片機(jī)、晶振電路和復(fù)位電路構(gòu)成。
濕度傳感器用來檢測(cè)花盆土壤濕度大小,由敏感元件以及轉(zhuǎn)換電路組成。當(dāng)土壤濕度變化時(shí),傳感器電阻值發(fā)生變化,經(jīng)轉(zhuǎn)換電路引起輸出電壓的變化,并將此電壓信號(hào)輸送至數(shù)模轉(zhuǎn)換器以便單片機(jī)判別運(yùn)算。本設(shè)計(jì)選用YL-69土壤濕度傳感器[2],其濕度檢測(cè)范圍0%-100%,仿真電路中用電位器模擬濕度傳感器。
為了實(shí)時(shí)顯示土壤濕度,提示使用者該系統(tǒng)的工作模式,因此選用LCD1602液晶顯示器用來顯示濕度大小和工作模式。運(yùn)行過程中第一行Humidity顯示當(dāng)前濕度;第二行state顯示工作模式,Maul為手動(dòng)模式,Aoto為自動(dòng)模式;自動(dòng)模式下調(diào)節(jié)濕度參數(shù)時(shí)上下兩行分別顯示濕度上下限值。液晶顯示器的8位數(shù)據(jù)端D1-D7由單片機(jī)的P0口控制,RS、R/W、E端分別由單片機(jī)P2.5-P2.6控制。
該模塊由PNP型三極管和繼電器及水泵組成,單片機(jī)P2.0口控制三極管基極。當(dāng)系統(tǒng)選擇手動(dòng)澆花模式或自動(dòng)模式下濕度低于下限濕度時(shí),P2.0輸出為0,則PNP型三極管導(dǎo)通,繼電器得電,常開觸點(diǎn)吸合,電動(dòng)機(jī)回路接通,執(zhí)行澆花工作。當(dāng)自動(dòng)模式下濕度高于上限濕度時(shí),P2.0輸出為1,則PNP型三極管導(dǎo)通,繼電器失電,常開觸點(diǎn)復(fù)位,電動(dòng)機(jī)回路斷開,結(jié)束澆花工作。
除以上五大單元外,系統(tǒng)還設(shè)置有工作模式選擇、參數(shù)調(diào)節(jié)按鍵單元和燈光指示單元。
當(dāng)系統(tǒng)上電后進(jìn)行初始化,同時(shí)獲取設(shè)定濕度并采集當(dāng)前濕度值。經(jīng)過A/D轉(zhuǎn)換后,送到LCD顯示器顯示信息;系統(tǒng)判斷當(dāng)前土壤濕度和預(yù)設(shè)濕度大小關(guān)系,如果小于預(yù)設(shè)值,繼電器就會(huì)驅(qū)動(dòng)水泵進(jìn)行抽水灌溉;如果高于預(yù)設(shè)值,繼電器和水泵不工作。濕度傳感器實(shí)時(shí)監(jiān)測(cè)土壤濕度,當(dāng)澆花過程中土壤濕度大于設(shè)定值,則澆花過程結(jié)束。系統(tǒng)流程圖,如圖2所示。
圖2 主程序流程圖
系統(tǒng)部分程序如下。
#include〈reg52.h〉 //頭文件
#include〈intrins.h〉
#include"eeprom52.h"
#define uchar unsigned char //宏定義
#define uint unsigned int
#define LCD1602_dat P0 //液晶數(shù)據(jù)口定義
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() //主循環(huán)
{
float Ad_dat=0;
TMOD=0x01; //配置定時(shí)器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數(shù)據(jù)
cs++;
if(cs==5)
{
cs=0;
Ad_dat=(float)(sum/5); //取一個(gè)平均值,用于濾波
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(); //調(diào)用顯示函數(shù)
key(); //調(diào)用按鍵掃描
proc(); //調(diào)用報(bào)警子函數(shù)
}
}
選用Proteus仿真軟件實(shí)現(xiàn)自動(dòng)澆花系統(tǒng)的軟件仿真調(diào)試,按照所設(shè)計(jì)的方案搭建電路模型,如圖3所示。
圖3 手動(dòng)工作模式
系統(tǒng)所需元件明細(xì)表,如表1所示。
表1 自動(dòng)澆花電路所需元件列表
模型搭建完畢,點(diǎn)擊單片機(jī)添加程序,打開仿真開關(guān)開始調(diào)試。
系統(tǒng)上電后直接為手動(dòng)模式。
由圖3可知,LCD1602第一行49%為顯示當(dāng)前濕度,第二行Manul為手動(dòng)工作模式;P2.0輸出為0,繼電器工作,水泵轉(zhuǎn),LCD1602實(shí)時(shí)顯示當(dāng)前土壤濕度,當(dāng)濕度增加到人為預(yù)期值,按S3鍵手動(dòng)關(guān)水泵,手動(dòng)澆花結(jié)束。
按下S2工作模式切換為自動(dòng)。按下S1設(shè)置鍵,進(jìn)入濕度預(yù)設(shè)值調(diào)節(jié)模式,分別按S2/S3鍵,實(shí)現(xiàn)增/減預(yù)設(shè)值。設(shè)置完成后,再按S1鍵退出,返回到正常模式。將濕度上下限分別設(shè)置為RH-L20~RH-H30%。當(dāng)濕度在30%以下時(shí)P2.0輸出為0,繼電器得電工作,水泵轉(zhuǎn),濕度在20%以下時(shí)D2報(bào)警;當(dāng)濕度在30%以上時(shí)P2.0輸出為1,繼電器斷電,水泵停,D3報(bào)警指示,完成自動(dòng)澆花,如圖4所示。
圖4 自動(dòng)工作模式
從仿真實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)可以實(shí)現(xiàn)低于設(shè)定下限濕度時(shí)系統(tǒng)自動(dòng)澆花,高于設(shè)定上限濕度停止?jié)不?,同時(shí)帶有燈光報(bào)警指示和濕度實(shí)時(shí)顯示,在實(shí)際中有一定的應(yīng)用價(jià)值。