張晨洋, 文歡, 李薇, 劉權(quán)志, 祁博
(新疆農(nóng)業(yè)大學(xué),計(jì)算機(jī)與信息工程學(xué)院,新疆,烏魯木齊 830052)
隨著社會(huì)發(fā)展和科技進(jìn)步,人們對于物品儲(chǔ)藏的需求更加多樣化。不同的物品有著不同的儲(chǔ)藏溫度,例如,一些特殊藥品需要在0~8 ℃恒溫儲(chǔ)藏,飯菜在60 ℃保溫可防止細(xì)菌滋生,紅酒需儲(chǔ)藏在10~15 ℃的溫度條件下,而香煙、茶葉則需低溫儲(chǔ)藏[1-2]。同時(shí),在農(nóng)業(yè)、醫(yī)藥、化學(xué)、物流等多領(lǐng)域?qū)ξ锲泛銣貎?chǔ)存方面都有著不同的需求,如農(nóng)業(yè)生產(chǎn)種植過程中對和子的儲(chǔ)存,醫(yī)藥領(lǐng)域常用于血液、藥劑等物品的儲(chǔ)藏,化學(xué)實(shí)驗(yàn)室藥品的存放以及物流中對食品的冷鏈運(yùn)輸?shù)萚3-4]。因此,設(shè)計(jì)一款可以智能調(diào)節(jié)溫度的儲(chǔ)物柜顯得至關(guān)重要。
本文基于AT89C51單片機(jī)設(shè)計(jì)一種智能恒溫儲(chǔ)物柜。當(dāng)電源開啟時(shí),該恒溫儲(chǔ)物柜內(nèi)溫度檢測模塊開始實(shí)時(shí)檢測溫度數(shù)據(jù),并通過液晶顯示儲(chǔ)物柜內(nèi)溫度及閾值,在實(shí)時(shí)溫度超過閾值時(shí)聲光報(bào)警。使用者無須一直關(guān)注儲(chǔ)物柜內(nèi)的溫度,可在聲光報(bào)警時(shí)查看當(dāng)前結(jié)果,確定系統(tǒng)是否正常工作[5-7]。
本設(shè)計(jì)采用AT89C51單片機(jī)作為控制主體,DS18B20溫度傳感器模塊實(shí)時(shí)檢測儲(chǔ)物柜內(nèi)溫度,并將測得的溫度數(shù)據(jù)傳送至單片機(jī)進(jìn)行處理,單片機(jī)根據(jù)測得的溫度數(shù)據(jù)通過繼電器驅(qū)動(dòng)對恒溫控制模塊進(jìn)行智能控制,實(shí)現(xiàn)自動(dòng)化的恒溫控制功能。同時(shí),將溫度數(shù)值及閾值顯示在LCD1602模塊上,當(dāng)溫度超過閾值時(shí),進(jìn)行聲光報(bào)警。恒溫控制系統(tǒng)整體設(shè)計(jì)如圖1所示。
圖1 恒溫控制系統(tǒng)整體設(shè)計(jì)框圖
智能恒溫儲(chǔ)物柜包括溫度檢測模塊、恒溫控制模塊、顯示模塊、報(bào)警模塊及按鍵模塊,其硬件電路設(shè)計(jì)如圖2所示。
圖2 智能恒溫儲(chǔ)物柜的整體電路原理圖
溫度傳感器是溫度檢測模塊的核心。采用AT89C51作為控制主體,當(dāng)儲(chǔ)物柜接通電源時(shí),DS18B20溫度傳感器立刻將儲(chǔ)物柜內(nèi)測得的實(shí)時(shí)溫度發(fā)送至單片機(jī)處理,單片機(jī)判斷實(shí)時(shí)溫度超出閾值范圍后,繼電器驅(qū)動(dòng)相應(yīng)負(fù)載進(jìn)行工作,從而實(shí)現(xiàn)溫度的恒溫控制[8]。
DS18B20是一種體積小、精度高、抗干擾能力強(qiáng)的溫度傳感器。該傳感器精度可達(dá)±0.5 ℃,可檢測溫度范圍為-55~125 ℃。DS18B20有3個(gè)引腳,分別為電源引腳VCC和GND,以及1個(gè)數(shù)據(jù)引腳,用來讀取溫度數(shù)據(jù)[9]。溫度檢測模塊電路如圖3所示。
圖3 溫度檢測模塊電路圖
恒溫控制模塊是儲(chǔ)物柜實(shí)現(xiàn)恒溫儲(chǔ)藏的關(guān)鍵所在。恒溫控制模塊由繼電器、制熱模塊和制冷模塊構(gòu)成,使智能恒溫儲(chǔ)物柜內(nèi)溫度在0~60 ℃的范圍內(nèi)進(jìn)行調(diào)節(jié)。其中:繼電器采用PNP型三極管驅(qū)動(dòng),低電平導(dǎo)通,同時(shí)與LED并聯(lián),通過LED燈的亮滅判斷繼電器是否正在工作;制熱模塊采用220 V加熱片的加熱方式;制冷模塊采用半導(dǎo)體制冷片提供冷氣來源,其外部接有2個(gè)風(fēng)扇,分別達(dá)到散熱和風(fēng)冷的效果,這樣不會(huì)使得閾值設(shè)置過低,從而發(fā)生恒溫儲(chǔ)物柜內(nèi)起霜的現(xiàn)象。恒溫控制模塊具體電路如圖4所示。
采用LCD1602作為液晶顯示模塊,LCD1602擁有16個(gè)引腳,16列2行,可顯示32個(gè)字符。1腳VSS接地,2腳VDD接電源正極,3腳VEE控制液晶的清晰度,RS、RW、E為液晶控制引腳,D0~D7為8個(gè)數(shù)據(jù)接口[10]。顯示模塊具體電路如圖5所示。
圖5 顯示模塊電路圖
報(bào)警模塊由1個(gè)蜂鳴器、PNP型三極管和電源構(gòu)成。它的作用是讓使用者知道此時(shí)儲(chǔ)物柜內(nèi)的溫度已經(jīng)低于或高于所設(shè)置的閾值范圍。通過按鍵手動(dòng)設(shè)置閾值范圍,從上到下3個(gè)按鈕依次是:設(shè)置鍵、減數(shù)鍵、加數(shù)鍵。按下設(shè)置鍵后,首先調(diào)節(jié)的是閾值上限,通過減數(shù)鍵和加數(shù)鍵去調(diào)整閾值。若要調(diào)整閾值下限,再次按下設(shè)置鍵即可。報(bào)警模塊及按鍵模塊具體電路如圖6所示。
圖6 報(bào)警模塊及按鍵模塊電路圖
判斷實(shí)時(shí)溫度是否超出閾值范圍是軟件設(shè)計(jì)的核心。本文軟件設(shè)計(jì)用到功能模塊化的設(shè)計(jì)方式,利用Keil uVi-sion 5進(jìn)行編程,智能恒溫儲(chǔ)物柜的軟件結(jié)構(gòu)與硬件設(shè)計(jì)相對應(yīng)。其主要分為主程序設(shè)計(jì)模塊、溫度檢測模塊、恒溫控制模塊、液晶顯示模塊、報(bào)警模塊和按鍵模塊6個(gè)部分。
當(dāng)溫度檢測模塊讀取到溫度并將溫度數(shù)據(jù)發(fā)送至單片機(jī)后,顯示模塊將溫度數(shù)據(jù)轉(zhuǎn)換成溫度數(shù)值,顯示在LCD1602模塊上,單片機(jī)判斷溫度是否超出閾值。若溫度沒有超出閾值,則再次讀取實(shí)時(shí)溫度數(shù)據(jù);若溫度超出閾值,則繼電器驅(qū)動(dòng)相應(yīng)負(fù)載進(jìn)行工作;溫度超出上限則驅(qū)動(dòng)制冷風(fēng)扇;溫度低于下限則驅(qū)動(dòng)加熱片進(jìn)行工作。負(fù)載工作時(shí)與其并聯(lián)的LED指示燈保存常亮,故障時(shí)蜂鳴器報(bào)警。軟件設(shè)計(jì)流程如圖7所示。
圖7 軟件設(shè)計(jì)流程圖
3.1.1 溫度檢測模塊及恒溫控制模塊
智能恒溫儲(chǔ)物柜接通電源后,DS18B20溫度傳感器開始檢測儲(chǔ)物柜內(nèi)實(shí)時(shí)溫度,讀取溫度數(shù)據(jù)。讀取溫度寄存器時(shí),先讀低8位數(shù)據(jù),后讀高8位數(shù)據(jù),然后放大10倍輸出。獲得溫度數(shù)值后,發(fā)送至單片機(jī),與設(shè)置的閾值范圍進(jìn)行對比,驅(qū)動(dòng)相應(yīng)的負(fù)載進(jìn)行工作,從而實(shí)現(xiàn)恒溫控制。溫度檢測及恒溫控制流程如圖8所示。
圖8 溫度檢測及恒溫控制流程圖
讀取溫度數(shù)據(jù)部分代碼如下所示。
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
a=ReadOneChar();
b=ReadOneChar();
3.1.2 報(bào)警模塊
系統(tǒng)根據(jù)設(shè)定好的上限報(bào)警溫度和下限報(bào)警溫度,通過單片機(jī)的判斷,若智能恒溫儲(chǔ)物柜實(shí)時(shí)溫度超過上、下限報(bào)警溫度,則啟動(dòng)蜂鳴器進(jìn)行報(bào)警,提醒使用者檢查恒溫儲(chǔ)物柜是否正常工作。報(bào)警流程如圖9所示。
圖9 報(bào)警流程圖
報(bào)警模塊部分代碼如下所示。
if(x>=10){beep_st=~beep_st;x=0;}
if(Mode==0)
{
if((c/10)>=TH)
{
ALAM=0;
ALAM1=1;
if(beep_st==1)
BUZZ=0;
else
BUZZ=1;
}
else if((c/10) { ALAM1=0; ALAM=1; if(beep_st==1) BUZZ=0; else BUZZ=1; } else { BUZZ=1; ALAM=1; ALAM1=1; } } 3.1.3 液晶顯示模塊 液晶顯示模塊調(diào)用了液晶寫入指令函數(shù)以及液晶寫入數(shù)據(jù)函數(shù)。智能恒溫儲(chǔ)物柜利用1602液晶顯示模塊,調(diào)用液晶初始化函數(shù)進(jìn)行工作模式的設(shè)置、光標(biāo)移動(dòng)、清除顯示等操作。液晶顯示的數(shù)據(jù)內(nèi)容包括儲(chǔ)物柜內(nèi)實(shí)時(shí)溫度、上限報(bào)警溫度和下限報(bào)警溫度。液晶顯示流程如圖10所示。 圖10 液晶顯示流程圖 液晶顯示模塊部分代碼如下所示。 void write_1602com(uchar com) { RS=0; rw=0; LCD1602=com; delay(1); EN=1; delay(1); EN=0; } void write_1602dat(uchar dat) { RS=1; rw=0; LCD1602=dat; delay(1); EN=1; delay(1); EN=0; } 3.1.4 設(shè)置模塊 這個(gè)系統(tǒng)還定義設(shè)置鍵、減少鍵以及增加鍵用于設(shè)定上限報(bào)警溫度和下限報(bào)警溫度的數(shù)值。通過代碼編寫,設(shè)定當(dāng)設(shè)置鍵按下時(shí),可通過減少鍵和增加鍵進(jìn)行數(shù)值的加減,通過設(shè)置鍵的多次按動(dòng),可實(shí)現(xiàn)上、下限報(bào)警溫度數(shù)值的選擇,當(dāng)設(shè)置模塊啟動(dòng)時(shí),報(bào)警程序不執(zhí)行,蜂鳴器不工作。溫度閾值設(shè)置流程如圖11所示。 圖11 溫度閾值設(shè)置流程圖 設(shè)置模塊部分代碼如下所示。 if(ADD==0&&Mode==1) { BUZZ=0; delay(10); if(ADD==0) { TH++; if(TH>=99) TH=99; write_1602com(0x80+0x40+3); write_1602dat(TH/10+0x30); write_1602dat(TH%10+0x30); write_1602com(0x80+0x40+4); BUZZ=1; } while(ADD==0); } 智能恒溫儲(chǔ)物柜實(shí)物如圖12所示。將恒溫儲(chǔ)物柜置于22 ℃的室溫內(nèi)進(jìn)行測試,通過按鍵模塊設(shè)置溫度閾值為20~30 ℃,此時(shí)溫度處于閾值范圍內(nèi),無負(fù)載工作。當(dāng)溫度閾值設(shè)置為25~30 ℃時(shí),此時(shí)室溫低于溫度閾值下限,紅色LED指示燈亮起,繼電器驅(qū)動(dòng)負(fù)載加熱片工作,提高儲(chǔ)物柜內(nèi)溫度。當(dāng)溫度閾值設(shè)置為0~8 ℃時(shí),此時(shí)室溫高于溫度閾值上限,黃色LED指示燈亮起,表示繼電器驅(qū)動(dòng)負(fù)載制冷風(fēng)扇工作,降低儲(chǔ)物柜內(nèi)溫度。實(shí)物運(yùn)行結(jié)果如圖13所示。實(shí)物測試結(jié)果如表1所示。 表1 實(shí)物測試結(jié)果 圖12 實(shí)物圖 圖13 實(shí)物運(yùn)行結(jié)果圖 本文設(shè)計(jì)了一款基于AT89C51單片機(jī)智能恒溫儲(chǔ)物柜,主要闡述了恒溫控制的實(shí)現(xiàn)方法。其中,硬件設(shè)計(jì)包括溫度檢測模塊、恒溫控制模塊、顯示模塊、報(bào)警模塊及按鍵模塊5個(gè)模塊。軟件設(shè)計(jì)主要是單片機(jī)對溫度傳感器采集數(shù)據(jù)的處理和控制。通過對實(shí)物運(yùn)行結(jié)果的分析,該儲(chǔ)物柜已實(shí)現(xiàn)設(shè)計(jì)方案所預(yù)期的功能,可實(shí)現(xiàn)智能化、自動(dòng)化的恒溫儲(chǔ)藏,具備安全性強(qiáng)、制冷制熱效率高等特點(diǎn),應(yīng)用前景廣泛。4 實(shí)物測試
5 總結(jié)