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