溫室大棚要求溫度保持在某範圍內,這個範圍溫度是動植物生長的最佳環境溫度,因此必須對動植物生長的環境溫度進行監測和控制,使其適合動植物的生長,以提高產量和質量。本設計就是對溫室的溫度控制要求進行全面分析,綜合考慮系統精度和經濟性多方面因素後,設計一種基於單片機的溫度自動控制系統。本系統能夠實現對溫室大棚溫度的自動監控,可以通過按鍵輸入設定溫度等控制指令,並且使溫室溫度保持在設定值的範圍內,完成監控系統的工作。
本文引用地址:http://www.eepw.com.cn/article/201610/308805.htm1 系統總體方案
本系統以AT89C52單片機為主控制器,加外圍的溫度採集模塊、鍵盤模塊、顯示電路模塊、加熱模塊和降溫模塊構成,系統結構框圖如圖1所示。溫度採集模塊首先採集溫度值,A/D轉換後送入AT89C52單片機處理,處理後的溫度值在顯示器上顯示。另外由鍵盤設定動植物生長所需的理想溫度值,並送到單片機中,單片機採用PID算法比較設定的溫度值和採集的溫度值後發出控制信號到繼電器,繼電器驅動風扇降溫或加熱片加熱,直到與設定的溫度值一致就停止工作。
2 系統硬體設計
2.1 溫度採集模塊
目前,溫度採集裝置常採用熱電偶,因熱電偶輸出為模擬量電壓,且輸出電壓很小,只有幾毫伏,必須經過信號放大,到5伏左右進行A/D轉換,轉化後送給單片機處理。此方案的優點在於測量溫度範圍大,從-100℃到上千攝氏度,且精度高,但系統硬體複雜,抗幹擾能性較低。數字式溫度傳感器彌補了熱電偶的缺點,DS18B20就是一款單總線數字式溫度傳感器,無需外接其他電路,直接輸出就是數字量,寫入DS18B20的信息或從DS18B20讀出的信息僅需要一根線,DS18B20與單片機的連接電路如圖2,因而使用DS18B20可使系統結構更趨簡單,抗幹擾能力增強。DS18B20的測溫範圍從-55~+125℃,增量值為0.5℃,可在1 s內將溫度變換成數字。
DS18B20接收到單片機發出的溫度開始轉換命令後,DS18B20啟動轉換。轉換後的溫度值以16位帶符號的二進位補碼形式存儲在暫存存儲器的0和1位元組中。單片機通過單總線接口讀到該數據,讀取時低位在前,高位在後。溫度值格式如表1,其中「S」為符號位,當高字節的前5位S=0時,代表正數,直接將高字節的低3位和低字節的二進位位轉換成十進位就是對應的溫度值;當高字節的前5位S=1時,代表負數,高字節的低3位和低字節的二進位位代表負數的補碼,需先將補碼變換成原碼,再計算十進位值才是對應的溫度值。
2.2 繼電器電路模塊
由於本系統要控制加熱片加熱或電風扇降溫,功率較大,因此要藉助功率電路。如果採用可控矽控制實現可以達到很高的控制精度,但需加光耦合隔離器件,電路稍顯複雜。採用繼電器控制可以很容易實現通過較高的電壓和電流,而且無需外加光耦,電路簡單可靠。因此,本設計採用繼電器控制風扇和加熱片,其電路如圖3所示。
當實測溫度低於或高於設定溫度的下限或上限值時,由單片機輸出高電平信號,NPN三極體9014導通,繼電器驅動加熱器開始加熱或電風扇開始降溫。為了防止繼電器頻繁動作,在程序中對溫度測量精確到小數點後兩位,而在溫度設定時只取整數。繼電器線圈旁邊反方向並聯一個二極體,二極體起到保護三極體的作用,防止三極體擊穿。
2.3 鍵盤和顯示模塊
本系統需用4個LED數碼管,分別顯示溫度的十位、個位和小數點後兩位,當通過按鍵設定溫度時,LED數碼管停止顯示當前溫度,顯示設定溫度值,設定完畢後,繼續顯示當前的採集溫度值。動態顯示組合式數碼管只需要較少的引腳個數,以4位一體組合式數碼管為例,需要8+4=12個引腳。而如果每個數碼管都要單獨引腳,至少需要4*9=36個引腳。引腳數減少使得PCB板布線變得更為簡單,因此,在需要使用多位數碼管時,一般都用動態顯示組合式。本設計採用四位一體的共陽極數碼管,單片機PO口控制數碼管的段a--dp,P2.4--P2.7通過4個9012 PNP型三極體接數碼管的COM端。
溫度的設置採用按鍵來實現,通過按鍵修改溫度的上限值和下限值。按鍵採用獨立式鍵盤,經上拉電阻分別接單片機的P1.1、P1.2和P1.3引腳上,其與單片機的連接如圖4所示。先按一次控制鍵,然後每按上調或下調鍵一次,設定溫度值增1或減1,再按一次控制鍵代表設定完畢。
3 系統軟體設計
本系統的軟體採用彙編語言設計,主程序中首先初始化,而後循環調用讀溫度、溫度處理、顯示、鍵盤和繼電器控制子程序,實現溫度控制的功能。
3.1 主程序流程圖
主程序流程圖如圖5所示。
3.2 讀溫度模塊子程序
DS18B20操作時都要嚴格按照DS18B20工作過程規定的協議進行。DS18B20應遵循以下工作協議:DS18B20復位->執行ROM命令->執行功能命令->數據處理,讀取溫度的子程序流圖如圖6所示。
3.3 數據處理子程序
由於DS18B20轉換後的16位數據並不是實際的溫度值,所以要進行數據處理。溫度高字節中的高5位是用來表示溫度的正負,高字節的低3位和低字節用來保存溫度值。其中低字節的低4位用來保存溫度的小數位。由於,1/24=0.062 5,所以,DS18B20的溫度精度是0.062 5 ℃。用低字節的低4位數值乘以0.062 5,有可能是多個小數位,本設計要求溫度值保留小數點後兩位,所以採取四捨五入,得到真正的兩位小數。具體算法是首先程序判斷溫度值是否為負,如果是,則DS18B20保存的是溫度的補碼值,需要先求其原碼。處理過後的溫度存儲到單片機的RAM中,然後將RAM中的十六進位碼轉換成BCD碼。數據處理子程序流程圖如圖7所示。
3.4 鍵盤掃描子程序
按鍵採用3個按鍵,分別表示控制鍵、加1鍵和減1鍵,鍵盤子程序流程圖如圖8所示。
4 系統調試
本設計製作了硬體實物,系統採用的是分模塊焊接與調試,目的是為了防止全部焊接調試困難,若一次不成功,查找錯誤麻煩。分步調試後,最後進行聯調,由於條件限制,在本設計中採用室內溫度進行測試,若設定溫度高於當前溫度值,加熱器模擬燈會亮,但是室內溫度不會變化那麼快,採用體溫來實現溫度的快速升高,達到設定值,加熱器燈滅。由此可見,該系統具有較高的控制精度。
5 結束語
該溫度控制器能夠實時監測溫室大棚的溫度,誤差小於0.1℃;可以設定農作物生長的理想溫度,根據當前溫度與設定溫度之間的差別,加熱器或者風扇將自動啟動,直至達到設定溫度停止工作。經改進後,該系統可以廣泛地應用在養殖大棚等場所的溫度控制,保證農作物理想的生長溫度,提高產量。