陳開開
摘 要 太陽能熱水器作為太陽能利用中最常見的一種裝置,經(jīng)濟效益明顯,正在迅速的推廣應(yīng)用。本課題根據(jù)太陽能熱水器的功能特點以及對其控制器的要求,提出一種基于51單片機的太陽能熱水器智能控制器的設(shè)計方法。該設(shè)計利用51單片機作為系統(tǒng)的主控制器,配合其他控制電路協(xié)調(diào)工作。利用溫度傳感器和水位測量傳感器實現(xiàn)了對水溫和水位的測量,并通過預(yù)定值,實時調(diào)節(jié)溫度和水量,實現(xiàn)24小時不間斷供應(yīng)熱水;同時,通過相關(guān)控制電路和軟件程序的設(shè)計還實現(xiàn)了加熱裝置和上水裝置的全自動運行,提高了熱水器的自動化和智能化程度。
關(guān)鍵詞 太陽能熱水器;單片機;智能控制器
中圖分類號:TP273 文獻標識碼:A 文章編號:1671-7597(2014)19-0009-02
1 系統(tǒng)硬件設(shè)計
1.1 概述
太陽能因其無污染、取自自然、費用低廉等特點而受到越來越多的人的關(guān)注。本設(shè)計應(yīng)用范圍很廣、技術(shù)成熟的STC公司生產(chǎn)的89C51單片機為中央控制核心,將來自溫度傳感器的溫度信號和水位檢測傳感器的水位信號經(jīng)單片機處理后,由LCD1602液晶顯示屏顯示當(dāng)前水箱中的水溫和水量;并通過跟預(yù)設(shè)定值作比較,驅(qū)動輔助加熱裝置和上手裝置的電磁開關(guān)的工作狀態(tài),自動實現(xiàn)溫度控制和水量加載,同時根據(jù)軟件程序的設(shè)定,實現(xiàn)低溫/高溫報警,水位低限/高限報警等過程。
1.2 總體硬件結(jié)構(gòu)
依據(jù)設(shè)計任務(wù)和系統(tǒng)需要實現(xiàn)的功能,綜合成本等考慮設(shè)計出如下的硬件結(jié)構(gòu)框圖,如圖1所示。
圖1 硬件結(jié)構(gòu)框圖
該控制系統(tǒng)以STC89C51單片機作為中央控制器,通過DS18B20溫度傳感器檢測當(dāng)前水溫,通過單片機的處理在1602液晶顯示屏上顯示當(dāng)前的溫度值。另外一路是水位檢測傳感器測量儲水箱中水位高低,并通過指示燈的變化顯示水位檔。系統(tǒng)工作時,單片機在內(nèi)部通過比較設(shè)定的溫度和當(dāng)前溫度:當(dāng)前溫度小于設(shè)定值時就會閉合繼電器開關(guān),開啟加熱裝置。在自動上水控制方面,當(dāng)水位低于低水檔時會自動閉合上水裝置的繼電器開關(guān),啟動上水裝置,水位到達高水位檔時就會自動斷開繼電器開關(guān),停止上水。
1.3 溫度傳感器選型與介紹
本系統(tǒng)所選用的溫度傳感器是美國達拉斯公司設(shè)計生產(chǎn)的DS18B20數(shù)字傳感器,它以9位數(shù)字量的形式反映被測物的實際溫度值。DS18B20通過一個單總線接口發(fā)送或接收數(shù)據(jù),用于讀寫和溫度轉(zhuǎn)換的電源可以從數(shù)據(jù)線本身獲得,無需外部提供電源[1]。
DS18B20在使用時,通常連接微控制器系統(tǒng)實現(xiàn)溫度數(shù)據(jù)的采集。使用時只需將DS18B20信號線與單片機某位I/O接口相連,如果想實現(xiàn)多點、多地測溫可以在改位I/O上掛接多個。
1.4 水位檢測電路設(shè)計
本設(shè)計中的水位檢測傳感器利用的檢測原理是水的導(dǎo)電性。此處將儲水箱等分為三個區(qū)域,水位檢測利用不同深度下的水位電極和水底公共電極直間的電勢差的不同來完成;具體檢測操作如下。
1)由單片機依次向各個水位的電極輸出高電平。
2)由公共電極實現(xiàn)不同水位下的電位轉(zhuǎn)換,即當(dāng)水位達到對應(yīng)的電極,則輸出低電平,否則為高電平。
3)每進行一次循環(huán)檢測便得到4個串行數(shù)據(jù),分析這幾個數(shù)據(jù)后便可得知當(dāng)前的水位值,再由1602顯示屏顯示水位情況,以此達到水位檢測的目的[3]。
1.5 電磁繼電器電路及原理
水溫和水位的控制需要在水溫低限時進行加熱,在水位低限時進行加水,這就要有一個相應(yīng)水位和水溫信號的開關(guān),實現(xiàn)水溫和水位的自動控制,這里用到的是電磁繼電器,當(dāng)其線圈接通,由于電磁感應(yīng)就會在鐵心上產(chǎn)生磁性,將開關(guān)彈片吸合,使外部電路導(dǎo)通。
控制電路工作原理:單片機輸出電平信號,通過正向驅(qū)動器,得到穩(wěn)定的低電平信號,使發(fā)光二極管上下導(dǎo)通,通過發(fā)出的光導(dǎo)通后面的電路,導(dǎo)通三極管,電磁繼電器線圈得電,電磁繼電器工作,彈片向下吸引,開關(guān)閉合,后面的電路開始工作。
1.6 液晶顯示模塊選型和介紹
LCD1602液晶顯示屏能夠同時顯示16 x 2個字符,模塊內(nèi)部已經(jīng)存儲了包括阿拉伯?dāng)?shù)字0-9,英文字母A-Z、a-z、和日文假名等。模塊工作時,只需把想要顯示的字符對應(yīng)的地址中的點陣字符圖形顯示出來,我們就能看到字母出現(xiàn)在顯示屏上。同時,由于1602顯示屏識別的是計算機系統(tǒng)的ASCII碼,操作時也可以用ASCII碼直接賦值。1602通過D0-D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和控制指令[4]。
同時,由于該LCD模塊內(nèi)部已經(jīng)集成硬件驅(qū)動電路,因此為了方便與單片機的連接,模塊給出的是總線接口。1602內(nèi)部驅(qū)動模塊提供八位或者四位數(shù)據(jù)總線連接方式,同時,模塊外加一些電源接口和控制信號接口。各引腳編號及功能如表1
所示。
表1 1602引腳接口表
2 系統(tǒng)軟件設(shè)計
2.1 軟件總體流程
系統(tǒng)上電自動完成初始化設(shè)置,使各傳感器及控制電路完成準備工作。初始化結(jié)束,程序開始溫度及水位的測量,并將測量結(jié)果顯示在液晶屏屏,供用戶查看。當(dāng)溫度低于下限值時,自動閉合加熱繼電器開關(guān),以提高水溫,直至水溫在合理范圍,自動切斷繼電器開關(guān)。同時,系統(tǒng)設(shè)置了三個水位檔,根據(jù)水位的高度,自動判斷當(dāng)前水位,并以相應(yīng)指示燈提示水位情況。當(dāng)水位低于最低限時,系統(tǒng)自動閉合上水繼電器開關(guān),直至水位達到最高檔水位線,再切斷該繼電器開關(guān)。系統(tǒng)總體軟件流程如圖2所示,實現(xiàn)了水溫和水位的自動調(diào)節(jié),提高了熱水器的智能化程度。
圖2 系統(tǒng)總體流程圖
2.2 溫度采集設(shè)計流程
DS18B20溫度采集程序流程是根據(jù)DS18B20通訊協(xié)議,單片機控制DS18B20時首先需對其初始化,完成各寄存器初始設(shè)置;隨后啟動溫度轉(zhuǎn)換功能,等待溫度的獲?。猾@取數(shù)值后,讀取數(shù)據(jù)寄存器,獲取高字節(jié)數(shù)據(jù)DH,和低字節(jié)數(shù)據(jù)DL;最后根據(jù)二進制規(guī)則換算出溫度值,并用于顯示。endprint
以下為溫度采集函數(shù)的關(guān)鍵程序代碼:
unsigned int ReadTemperature(void)//讀取溫度函數(shù)
{
unsigned char TL=0;
unsigned char TH=0;
unsigned int temp=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器
// Delay(200);
TL=ReadOneChar(); //讀低8位
TH=ReadOneChar(); //讀高8位
temp = TH;
temp <<=8;
temp = temp |TL;
tt=temp*0.0625;
temp= tt*10+0.5; //放大10倍輸出并四舍五入
return(temp);
}
2.3 水位檢測流程
本系統(tǒng)中的水位檢測流程是通過判斷三根水位線被水淹沒的情況,實現(xiàn)水位的檢測,并有相應(yīng)的水位指示燈告知用戶,即當(dāng)前水位為高水位檔時,綠燈亮;當(dāng)前為中水位檔時,黃燈亮;當(dāng)前為低水位檔時,紅燈亮。
以下代碼為水位檢測控制程序:
if(temp) <= 20) //水溫低于20度,啟動加熱
switch_hot = 1;
else if(temp >= 40) //水溫高于40度,停止加熱
switch_hot = 0;
else
switch_hot = 0;
if(low == 0) //水位為低水位時,紅色指示燈亮
red = 1;
else
{
red = 0;
switch_water = 1; //水位 低于 低水位時,開啟自動上水開關(guān)
}
if(middle == 0) //水位為中水位時,黃色指示燈亮
yellow = 1;
else
yellow = 0;
if(high == 0) //水位為高水位時,綠色指示燈亮
{
green = 1;
switch_water = 0;
}
else
green = 0;
3 系統(tǒng)測試
通過以上章節(jié)對系統(tǒng)軟硬件的設(shè)計,為驗證實際測試效果,焊接了硬件電路板,并向單片機中下載了本系統(tǒng)程序代碼。該系統(tǒng)實現(xiàn)了如下功能。
1)水溫顯示:水溫通過18B20傳感器的測量,在4位LED上顯示數(shù)值,且測溫范圍為0-90℃,精確到1度。實際測試中,發(fā)現(xiàn)該系統(tǒng)對水溫的檢測響應(yīng)快速、測量準確,并能將溫度值以數(shù)字形式顯示在數(shù)碼管上,觀測方便。
2)水位顯示:實際測試中,當(dāng)水位高于低水位檔導(dǎo)線時,系統(tǒng)的低水位指示燈(紅色)亮起;當(dāng)水位高于中水位檔導(dǎo)線時,系統(tǒng)的中水位指示燈(黃色)亮起;當(dāng)水位高于高水位檔導(dǎo)線時,系統(tǒng)的高水位指示燈(綠色)亮起;此時,逐漸放水,會發(fā)現(xiàn)指示燈又依次熄滅,達到向用戶觀測水位和指示水位變化的作用。
3)系統(tǒng)水位/水溫自動控制實現(xiàn):當(dāng)水位低于低水位檔時,系統(tǒng)自動閉合上水裝置的繼電器開關(guān),開始上水,直到超過高水位檔時,自動斷開上水開關(guān);當(dāng)水溫低于設(shè)定的溫度下限時,系統(tǒng)根據(jù)外部檢測信號啟動加熱裝置的繼電器開關(guān),輔助加熱,直到溫度達到高限值時,斷開加熱開關(guān)。
參考文獻
[1]王俊杰.基于89C51單片機的太陽能熱水器智能控制器的設(shè)計[J].鄭州輕工業(yè)學(xué)院學(xué)報,2005,20(3):67-68.
[2]張振榮,晉明武,王毅平.MCS- 51單片機原理及實用技術(shù)[M].北京:人民郵電出版社,2000:64-120.
[3]張景文,王震宏.基于單片機的太陽能熱水器智能控制系統(tǒng)[J].西華大學(xué)學(xué)報,2008,27(5):25-28.
[4]張學(xué)峰.基于單片機控制的太陽能熱水器全自動電路[J].現(xiàn)代電子技術(shù),2005,195(4):5-7.endprint
以下為溫度采集函數(shù)的關(guān)鍵程序代碼:
unsigned int ReadTemperature(void)//讀取溫度函數(shù)
{
unsigned char TL=0;
unsigned char TH=0;
unsigned int temp=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器
// Delay(200);
TL=ReadOneChar(); //讀低8位
TH=ReadOneChar(); //讀高8位
temp = TH;
temp <<=8;
temp = temp |TL;
tt=temp*0.0625;
temp= tt*10+0.5; //放大10倍輸出并四舍五入
return(temp);
}
2.3 水位檢測流程
本系統(tǒng)中的水位檢測流程是通過判斷三根水位線被水淹沒的情況,實現(xiàn)水位的檢測,并有相應(yīng)的水位指示燈告知用戶,即當(dāng)前水位為高水位檔時,綠燈亮;當(dāng)前為中水位檔時,黃燈亮;當(dāng)前為低水位檔時,紅燈亮。
以下代碼為水位檢測控制程序:
if(temp) <= 20) //水溫低于20度,啟動加熱
switch_hot = 1;
else if(temp >= 40) //水溫高于40度,停止加熱
switch_hot = 0;
else
switch_hot = 0;
if(low == 0) //水位為低水位時,紅色指示燈亮
red = 1;
else
{
red = 0;
switch_water = 1; //水位 低于 低水位時,開啟自動上水開關(guān)
}
if(middle == 0) //水位為中水位時,黃色指示燈亮
yellow = 1;
else
yellow = 0;
if(high == 0) //水位為高水位時,綠色指示燈亮
{
green = 1;
switch_water = 0;
}
else
green = 0;
3 系統(tǒng)測試
通過以上章節(jié)對系統(tǒng)軟硬件的設(shè)計,為驗證實際測試效果,焊接了硬件電路板,并向單片機中下載了本系統(tǒng)程序代碼。該系統(tǒng)實現(xiàn)了如下功能。
1)水溫顯示:水溫通過18B20傳感器的測量,在4位LED上顯示數(shù)值,且測溫范圍為0-90℃,精確到1度。實際測試中,發(fā)現(xiàn)該系統(tǒng)對水溫的檢測響應(yīng)快速、測量準確,并能將溫度值以數(shù)字形式顯示在數(shù)碼管上,觀測方便。
2)水位顯示:實際測試中,當(dāng)水位高于低水位檔導(dǎo)線時,系統(tǒng)的低水位指示燈(紅色)亮起;當(dāng)水位高于中水位檔導(dǎo)線時,系統(tǒng)的中水位指示燈(黃色)亮起;當(dāng)水位高于高水位檔導(dǎo)線時,系統(tǒng)的高水位指示燈(綠色)亮起;此時,逐漸放水,會發(fā)現(xiàn)指示燈又依次熄滅,達到向用戶觀測水位和指示水位變化的作用。
3)系統(tǒng)水位/水溫自動控制實現(xiàn):當(dāng)水位低于低水位檔時,系統(tǒng)自動閉合上水裝置的繼電器開關(guān),開始上水,直到超過高水位檔時,自動斷開上水開關(guān);當(dāng)水溫低于設(shè)定的溫度下限時,系統(tǒng)根據(jù)外部檢測信號啟動加熱裝置的繼電器開關(guān),輔助加熱,直到溫度達到高限值時,斷開加熱開關(guān)。
參考文獻
[1]王俊杰.基于89C51單片機的太陽能熱水器智能控制器的設(shè)計[J].鄭州輕工業(yè)學(xué)院學(xué)報,2005,20(3):67-68.
[2]張振榮,晉明武,王毅平.MCS- 51單片機原理及實用技術(shù)[M].北京:人民郵電出版社,2000:64-120.
[3]張景文,王震宏.基于單片機的太陽能熱水器智能控制系統(tǒng)[J].西華大學(xué)學(xué)報,2008,27(5):25-28.
[4]張學(xué)峰.基于單片機控制的太陽能熱水器全自動電路[J].現(xiàn)代電子技術(shù),2005,195(4):5-7.endprint
以下為溫度采集函數(shù)的關(guān)鍵程序代碼:
unsigned int ReadTemperature(void)//讀取溫度函數(shù)
{
unsigned char TL=0;
unsigned char TH=0;
unsigned int temp=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器
// Delay(200);
TL=ReadOneChar(); //讀低8位
TH=ReadOneChar(); //讀高8位
temp = TH;
temp <<=8;
temp = temp |TL;
tt=temp*0.0625;
temp= tt*10+0.5; //放大10倍輸出并四舍五入
return(temp);
}
2.3 水位檢測流程
本系統(tǒng)中的水位檢測流程是通過判斷三根水位線被水淹沒的情況,實現(xiàn)水位的檢測,并有相應(yīng)的水位指示燈告知用戶,即當(dāng)前水位為高水位檔時,綠燈亮;當(dāng)前為中水位檔時,黃燈亮;當(dāng)前為低水位檔時,紅燈亮。
以下代碼為水位檢測控制程序:
if(temp) <= 20) //水溫低于20度,啟動加熱
switch_hot = 1;
else if(temp >= 40) //水溫高于40度,停止加熱
switch_hot = 0;
else
switch_hot = 0;
if(low == 0) //水位為低水位時,紅色指示燈亮
red = 1;
else
{
red = 0;
switch_water = 1; //水位 低于 低水位時,開啟自動上水開關(guān)
}
if(middle == 0) //水位為中水位時,黃色指示燈亮
yellow = 1;
else
yellow = 0;
if(high == 0) //水位為高水位時,綠色指示燈亮
{
green = 1;
switch_water = 0;
}
else
green = 0;
3 系統(tǒng)測試
通過以上章節(jié)對系統(tǒng)軟硬件的設(shè)計,為驗證實際測試效果,焊接了硬件電路板,并向單片機中下載了本系統(tǒng)程序代碼。該系統(tǒng)實現(xiàn)了如下功能。
1)水溫顯示:水溫通過18B20傳感器的測量,在4位LED上顯示數(shù)值,且測溫范圍為0-90℃,精確到1度。實際測試中,發(fā)現(xiàn)該系統(tǒng)對水溫的檢測響應(yīng)快速、測量準確,并能將溫度值以數(shù)字形式顯示在數(shù)碼管上,觀測方便。
2)水位顯示:實際測試中,當(dāng)水位高于低水位檔導(dǎo)線時,系統(tǒng)的低水位指示燈(紅色)亮起;當(dāng)水位高于中水位檔導(dǎo)線時,系統(tǒng)的中水位指示燈(黃色)亮起;當(dāng)水位高于高水位檔導(dǎo)線時,系統(tǒng)的高水位指示燈(綠色)亮起;此時,逐漸放水,會發(fā)現(xiàn)指示燈又依次熄滅,達到向用戶觀測水位和指示水位變化的作用。
3)系統(tǒng)水位/水溫自動控制實現(xiàn):當(dāng)水位低于低水位檔時,系統(tǒng)自動閉合上水裝置的繼電器開關(guān),開始上水,直到超過高水位檔時,自動斷開上水開關(guān);當(dāng)水溫低于設(shè)定的溫度下限時,系統(tǒng)根據(jù)外部檢測信號啟動加熱裝置的繼電器開關(guān),輔助加熱,直到溫度達到高限值時,斷開加熱開關(guān)。
參考文獻
[1]王俊杰.基于89C51單片機的太陽能熱水器智能控制器的設(shè)計[J].鄭州輕工業(yè)學(xué)院學(xué)報,2005,20(3):67-68.
[2]張振榮,晉明武,王毅平.MCS- 51單片機原理及實用技術(shù)[M].北京:人民郵電出版社,2000:64-120.
[3]張景文,王震宏.基于單片機的太陽能熱水器智能控制系統(tǒng)[J].西華大學(xué)學(xué)報,2008,27(5):25-28.
[4]張學(xué)峰.基于單片機控制的太陽能熱水器全自動電路[J].現(xiàn)代電子技術(shù),2005,195(4):5-7.endprint