【摘 要】根據(jù)目前常見的溫室用溫濕度監(jiān)測系統(tǒng)所存在的穩(wěn)定性和可靠性等缺點,本文進(jìn)行了研究,利用PIC16F877A單片機(jī)來對蔬菜大棚監(jiān)測系統(tǒng)進(jìn)行了研究,提高了監(jiān)測系統(tǒng)的智能化和數(shù)字化程度。在研究的基礎(chǔ)上,對傳統(tǒng)的主控電路進(jìn)行了創(chuàng)新設(shè)計,并提出了相應(yīng)的對策和解決方案。
【關(guān)鍵詞】溫濕度;監(jiān)測系統(tǒng);主控電路;PIC
目前,大部分常用的溫濕度監(jiān)測系統(tǒng)是以晶體管電路或51單片機(jī)為核心部件,再配以相應(yīng)的傳感器和A/D轉(zhuǎn)換電路組成的溫度和濕度實時監(jiān)測系統(tǒng)。這樣的系統(tǒng),在實際工作中存在諸如在線調(diào)節(jié)不方便、數(shù)字化和智能化程度較低等缺點。
因此,本文研究了基于PIC16F877A單片機(jī)的蔬菜大棚溫濕度監(jiān)測系統(tǒng)相關(guān)技術(shù),對主控電路進(jìn)行了改進(jìn),提出了相應(yīng)的對策和解決方案。
1 設(shè)計思路
通常情況下,溫室內(nèi)的溫度和濕度對作物的影響巨大。如若要使得這些植物在非本季節(jié)處于較佳的生長狀態(tài),就必須嚴(yán)格控制溫室內(nèi)的溫濕度。而不同類別的植物,所需溫濕度也不盡相同。嚴(yán)格監(jiān)測和控制溫室內(nèi)溫度和濕度環(huán)境參數(shù),能夠有效保障植物時刻處于較佳的生長狀態(tài),有利于提高生產(chǎn)質(zhì)量和產(chǎn)量。
首先,本文分析了溫室溫濕度監(jiān)測系統(tǒng)基本原理和性能要求,針對農(nóng)業(yè)生產(chǎn)所使用的普通MCU與PIC系列PIC16F877A進(jìn)行性能比較,對優(yōu)化主控電路做出理論依據(jù),并提出相應(yīng)的優(yōu)化方案和整改對策。 然后分析了目前農(nóng)業(yè)生產(chǎn)所使用的模擬量傳感器和直插式數(shù)字傳感器進(jìn)行性能差異,從非電和電兩個方面著手對影響溫濕度監(jiān)測精度及可靠性的原因進(jìn)行分析,并在優(yōu)化的主控電路。最后采用了以PIC16F877A對直插數(shù)字集成式溫濕度傳感器DHT11進(jìn)行循環(huán)控制,達(dá)到對蔬菜大棚溫濕度實時監(jiān)控的目的1。
2 硬件電路設(shè)計
圖1 主控電路示意圖
本文選用DHT11作為溫濕度環(huán)境信號監(jiān)測系統(tǒng)的主要傳感器件。DHT11數(shù)字溫濕度傳感器含有已校準(zhǔn)數(shù)字信號輸出,包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機(jī)相連,具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價比極高等優(yōu)點。DHT11傳感器的校準(zhǔn)系數(shù)以程序的形式存在OTP內(nèi)存中,傳感器內(nèi)部在檢測型號的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,非常適合溫室內(nèi)的溫度和濕度環(huán)境參數(shù)信號監(jiān)測系統(tǒng)的技術(shù)特點2。
本設(shè)計利用DHT11直插式數(shù)字溫濕度傳感器對蔬菜大棚溫濕度進(jìn)行實時監(jiān)測,并把實測溫濕度值實時顯示在LCD1602上,可以通過鍵盤設(shè)定溫濕度極限值,如果實測溫濕度超過設(shè)定極限值,則進(jìn)行LED或者蜂鳴器報警操作。
基于PIC16F877A單片機(jī)的蔬菜大棚溫濕度監(jiān)測系統(tǒng)主控電路如圖1所示,監(jiān)測過程大體如下:當(dāng)產(chǎn)品上電時,PIC16F877A與DHT11傳感器通訊,當(dāng)PIC做好數(shù)據(jù)接收準(zhǔn)備時,DHT11通過單總線將數(shù)據(jù)發(fā)到至PIC,最后再由PIC將處理過的檢測數(shù)據(jù)發(fā)送至LCD1062進(jìn)行顯示,從而達(dá)到蔬菜大棚溫濕度的實時檢測。在此基礎(chǔ)上,用戶可以通過按鍵輸入溫濕度極限值,對溫濕度報警值進(jìn)行設(shè)定,之后以達(dá)到峰值超標(biāo)自動報警的目的。
3 主函數(shù)初始化和外部中斷流程圖設(shè)計
我們對需要的特殊寄存器進(jìn)行初始化后,使其進(jìn)入while循環(huán),等待外部中斷。
①初始化
初始化函數(shù)包括了系統(tǒng)初始化函數(shù)sys init();,LCD初始化函數(shù)lcd_init();等。系統(tǒng)初始化函數(shù)主要是對外部中斷的I/O口,和使能端進(jìn)行設(shè)置3。LCD初始化函數(shù)lcd_init();主要是多LCD的I/O口進(jìn)行方向設(shè)置,LCD指令輸入等操作。如圖2所示,對主函數(shù)進(jìn)行初始化設(shè)計。
圖2 主函數(shù)初始化流程圖
初始化過程(復(fù)位過程)
1.延時15ms
2.寫指令38H(不檢測忙信號)
3.延時5ms
4.寫指令38H(不檢測忙信號)
5.延時5ms
6.寫指令38H(不檢測忙信號)
7.(以后每次寫指令、讀/寫數(shù)據(jù)操作之前均需檢測忙信號)
8.寫指令38H:顯示模式設(shè)置
9.寫指令08H:顯示關(guān)閉
10.寫指令01H:顯示清屏
11.寫指令06H:顯示光標(biāo)移動設(shè)置
12.寫指令0CH:顯示開及光標(biāo)設(shè)置
本設(shè)計運用了.h,將LCD1602的初始化程序模塊化,這樣便于整體程序設(shè)計的模塊化操作,LCD1602原函數(shù)代碼如下所示:
void lcd_init()
{
ADCON1=0x07; // PORTA as Digital
CTRL_DIR=0x00; //設(shè)置控制端口為輸出
DATA_DIR=0x00; //設(shè)置數(shù)據(jù)端口為輸出
lcd_cmd(CLR_DISP); //清屏
lcd_cmd(DISP_2Line_8Bit); //8位2行5*7點陣
lcd_cmd(DISP_ON); //顯示開,光標(biāo)開
lcd_cmd(ENTRY_INC); //文字不動,光標(biāo)右移
lcd_cmd(DD_RAM_BASE); //顯示起始地址
}
②外部中斷
在本文中外部中斷主要有兩大部分,第一部分是主要是由鍵盤來實施操作,其目的是在溫濕度檢測的同時能夠?qū)崿F(xiàn)溫濕度極限值的設(shè)定。第二部分是有程序內(nèi)部的數(shù)據(jù)判斷來實施中斷,其主要目的在于所采集到的溫濕度當(dāng)前值是否超過所設(shè)定的極限值,如果超過,以此來做出報警動作,反之中斷不進(jìn)行任何操作。
第一部分,即鍵盤設(shè)定極限值的操作中斷源代碼如下:
if(INTE INTF) // 是RB0中斷,切換報警值選項 {
INTF=0;
__delay_ms(20); // 按鍵延時消抖
if(RB0==0)
option*=-1;
}
第二部分,即做出報警操作的中斷源代碼如下:
if(CCP1IECCP1IF)// RC2(CCP1)中斷,增加報警值 {
CCP1IF=0;
if(option==-1) // 增加濕度報警值
{
humid++;
if(humid>90)
humid=90;
}
if(option==1) // 增加溫度報警值
{
temp++;
if(temp>50)
temp=50;
}
write_eeprom();
}
if(CCP2IECCP2IF) //RC1(CCP2)中斷, 減小報警值
{
CCP2IF=0;
if(option==-1) // 減小濕度報警值
{
humid--;
if(humid<20)
humid=20;
}
if(option==1) // 減小溫度報警值
{
temp--;
if(temp<5)
temp=5;
}
write_eeprom();
}
如圖3所示,本文對中斷入口和外部信號進(jìn)行了設(shè)置,使得設(shè)計的主控電路能夠更好的響應(yīng)其他優(yōu)先級更高的事件,從而完成了外部中斷流程的設(shè)計。
圖3 外部中斷流程圖設(shè)計
從上述設(shè)計的主控電路來看,本文在對傳統(tǒng)主控程序進(jìn)行分析后,才給出基于PIC16F877A的溫濕度監(jiān)測系統(tǒng)主控程序的設(shè)計,并設(shè)計主要模塊的流程圖。不難看出,通過PIC單片機(jī)設(shè)計監(jiān)測系統(tǒng)的主控電路,能夠使得整個監(jiān)測系統(tǒng)的主要部分實現(xiàn)模塊化設(shè)計,這將有利于系統(tǒng)將來的升級改造,并降低了整個程序復(fù)雜度,使程序設(shè)計、調(diào)試和維護(hù)等操作簡單化。從而使得整個監(jiān)測系統(tǒng)相對與傳統(tǒng)的監(jiān)測系統(tǒng)而言,能夠體現(xiàn)出智能化、數(shù)字化的特點。
【參考文獻(xiàn)】
[1] 孫安青.PIC單片機(jī)實用C語言程序設(shè)計與典型實例[M].北京.中國電力出版社.2008.21-31.
[2]倪天龍.單總線傳感器DHT11在溫濕度測控中的應(yīng)用[J].北京:單片基于嵌入式系統(tǒng)應(yīng)用.2010.(06).
[3]夏彬彬,任全明,屈金學(xué).PIC單片機(jī)常用模塊與綜合系統(tǒng)設(shè)計實例精講[M].北京:電子工業(yè)出版社,2009:88-93.
[責(zé)任編輯:劉帥]