全天分段熱水智能控制器的設(shè)計與實現(xiàn)
摘要:針對傳統(tǒng)的溫控?zé)崴髻Y源利用率低、功能單一等缺點,設(shè)計了一種基于I2C和單總線通信的全天分段熱水智能控制器。該控制器不僅可以根據(jù)用戶的需要智能恒溫,而且能實時顯示實際溫度,日歷時鐘以及循環(huán)泵的工作狀態(tài)。并有實時快速加熱、掉電保護等功能。本文詳細(xì)介紹了系統(tǒng)構(gòu)成以及軟硬件實現(xiàn)過程。實踐表明,該系統(tǒng)可靠性好、適應(yīng)性強、性價比高,達(dá)到了預(yù)先的設(shè)計目標(biāo),具有很好的推廣價值。
關(guān)鍵詞:PIC16F72;單總線;I2C總線;DS18B20;PCF8563;LCD
傳統(tǒng)的溫控?zé)崴鞔蠖喟褱囟茸鳛槲ㄒ坏目刂茀?shù),系統(tǒng)利用溫度傳感器對環(huán)境溫度進(jìn)行實時監(jiān)測并將溫度設(shè)定值與測量值進(jìn)行比較,只要測量值小于設(shè)定值就啟動循環(huán)泵加熱以達(dá)到滿足用戶需要的目的。這類熱水器功能單一且浪費了大量的水、電資源。
一般情況下,家庭使用熱水的時間點比較固定,基本可以分為早、中、晚3個時間段。針對這一情況,本設(shè)計采用Microchip的PIC16F72單片機為主控制器,根據(jù)DS18B20所采集的溫度數(shù)據(jù)以及用戶設(shè)置的時間段(3段)上下限數(shù)值和溫度設(shè)定值對循環(huán)泵的啟動和停止進(jìn)行控制,實現(xiàn)對熱水器水箱溫度的有效控制。這樣循環(huán)泵在其它時段便不會工作,節(jié)省了大量的電能。當(dāng)用戶需要在非設(shè)置時間段內(nèi)使用熱水時,可以按下加熱鍵進(jìn)行快速加熱,從而保證了用戶也能及時用到熱水。顯然這種控制器在滿足用戶需求的前提下顯著增強了溫控系統(tǒng)智能化程度,大大提高了資源利用率,給用戶帶來了真正的實惠。
1 總體設(shè)計及工作原理
全天分段熱水智能控制器主要由單片機控制模塊,溫度采集模塊,日歷時鐘模塊、液晶顯示模塊、時間段上下限及預(yù)加熱溫度設(shè)置模塊、電機驅(qū)動模塊和外部存儲模塊等部分組成。其系統(tǒng)框圖如圖1所示。
單片機PIC16F72作為控制器的核心,快速響應(yīng)各種給定信號和反饋信號,并發(fā)出相應(yīng)的指令控制各個部分,保證整個系統(tǒng)有序工作。溫度傳感器檢測熱水器水箱溫度并通過單總線送入到單片機中進(jìn)行處理,時鐘芯片及外部存儲器通過I2C總線與單片機間進(jìn)行通信。溫度顯示實時溫度和設(shè)置溫度。時間顯示設(shè)置時段及系統(tǒng)時鐘。在實際溫度小于設(shè)置溫度3度時,如果時間在設(shè)置的3段范圍內(nèi),水泵啟動,當(dāng)實際溫度大于設(shè)置溫度時,水泵停止工作。加熱鍵根據(jù)用戶需要實現(xiàn)快速加熱。
2 系統(tǒng)硬件設(shè)計
單片機選用微芯公司的PIC16F72,完全可以滿足本系統(tǒng)中要求的采集、外部中斷、控制、數(shù)據(jù)處理及存儲空間的需要,在用PIC16F72設(shè)計系統(tǒng)時,首先要構(gòu)成一個最小系統(tǒng),單片機才能正常工作,即電源、晶振、復(fù)位缺一不可。本系統(tǒng)采用的是+5 V電源,晶振采用的是4 MHz和兩個30 pF電容構(gòu)成的無緣晶振,復(fù)位電路采用的是改進(jìn)型RC復(fù)位電路,即在經(jīng)典的RC復(fù)位電路基礎(chǔ)上增加了一個二極管構(gòu)成放電回路,這樣不但可以避免電源毛刺造成系統(tǒng)不穩(wěn)定,而且電源緩慢下降也能可靠復(fù)位。
2.1 溫度采集電路
系統(tǒng)需要對熱水器水箱溫度進(jìn)行測量控制,測溫的關(guān)鍵是要選擇合適的感溫元件和合理的采集電路。文中采用的是美國DALLAS公司推出的單總線數(shù)字溫度傳感器DS18B20,與傳統(tǒng)的熱敏電阻不同,DS18B20將溫度傳感器與A/D轉(zhuǎn)換器集成在一個芯片上,可直接將被測溫度轉(zhuǎn)換為全型數(shù)字信號直接供單片機處理,且具有結(jié)構(gòu)簡單、體積小、功耗低、用戶可自行設(shè)定預(yù)警上下限溫度等特點,因此使硬件設(shè)計大大簡化,對應(yīng)的硬件電路如圖2所示。
傳感器DS18B20測量溫度范圍為-55~125℃,完全滿足系統(tǒng)要求。DS18B20通過一個單線接口發(fā)送或接受信息,因此從中央處理器到DS18 B20僅需連接一條線。在1s(典型值)內(nèi)把溫度變換為數(shù)字,以9位數(shù)字值方式讀出溫度,無需校準(zhǔn),即可提供工業(yè)級的測溫范圍和精度。
2.2 實時時鐘及外部存儲芯片
本系統(tǒng)實時時鐘采用低功耗的CMOS時鐘芯片PCF8563實現(xiàn),它提供一個可編程時鐘輸出,一個終端輸出和掉電檢測器,所有的地址和數(shù)據(jù)通過I2C總線接口串行傳遞。每次讀寫數(shù)據(jù)后,內(nèi)嵌的字地址寄存器會自動產(chǎn)生增量,日歷時間編碼格式為BCD。PCF8563制作數(shù)字時鐘編程簡單,可靠實用,配合其超低維持功耗(典型值為0.25μA,Vdd=3.0 V,Tamb=25 C),當(dāng)系統(tǒng)斷電時,只需用一個后備電池就可以長時間掉電保持實時時間計時,本系統(tǒng)選用壽命長、性價比高、可靠性強的便攜式紐扣電池CR2025。利用二極管的單向?qū)щ娦詫崿F(xiàn)了系統(tǒng)的掉電保護功能。當(dāng)CPU正常運行時,系統(tǒng)電源為時鐘芯片提供電源,其正常工作,當(dāng)系統(tǒng)掉電時,紐扣電池為時鐘芯片提供電源,其保持準(zhǔn)確計時。如圖3所示。
外部存儲芯片選用的是AT24C02B,主要用于存儲時間段上下限與設(shè)置溫度數(shù)據(jù),采用I2C總線進(jìn)行讀寫數(shù)據(jù)和地址。
2.3 液晶顯示電路
液晶用于顯示溫度、時間以及循環(huán)泵的工作狀態(tài)(STOP或RUN),且提供了友好的人機交互界面,可方便輸入需設(shè)置的時間段上下限和溫度值。本系統(tǒng)選用的是編程簡單,體積小,性價比很高的1 602,為了提高視覺效果和美觀,采用的是白色背光,模塊最佳工作電壓為5.0 V,顯示容量為16x2個字符,可分兩排顯示。對應(yīng)的電路連接如圖4所示。
2.4 按鍵模塊
系統(tǒng)中共用4個按鍵,分別為設(shè)置鍵、增加鍵、減少鍵、加熱鍵。設(shè)置鍵用于設(shè)置溫度和時間;增加和減少鍵用于修改時間和溫度數(shù)值;加熱鍵用于任意時間需要加熱時快速加熱。按鍵在閉合及斷開的瞬間均伴隨有一連串的抖動,為了確保CPU對鍵的一次閉合或斷開僅作一次處理,保證系統(tǒng)的可靠性,本設(shè)計在軟件上加入了可靠的按鍵消抖程序。
2.5 繼電器
綜合考慮,本設(shè)計選用了直流輸入控制,交流過零導(dǎo)通,過零關(guān)斷輸出型無觸點固態(tài)繼電器。與傳統(tǒng)的電磁繼電器相比,其在操作中不會產(chǎn)生電弧,因而具有高穩(wěn)定性。本設(shè)計輸入控制電壓為5 V,該繼電器對應(yīng)的驅(qū)動電流只有15 mA左右,其啟動性能平穩(wěn)且提供了10 ms以下的開關(guān)速度,顯著提高了系統(tǒng)數(shù)據(jù)的吞吐量。
3 軟件的實現(xiàn)
程序設(shè)計是本設(shè)計的核心部分。整個程序包括主程序、按鍵處理子程序、I2C總線讀寫子程序、單總線讀寫子程序、定時器子程序、鍵中斷服務(wù)子程序、按鍵消抖子程序、上電自檢子程序和顯示子程序等。
主程序流程圖如圖5所示,初始化主要是各I/O口、各寄存器、定時器的初始化,上電自檢,開定時器和定時中斷允許,顯示LOGO,讀時鐘以及當(dāng)前溫度并顯示等。然后判斷標(biāo)志位F是否等于1,若F=1,說明加熱鍵按下,則CPU直接查詢溫度判斷循環(huán)泵的啟動或停止,當(dāng)實際溫度小于設(shè)置溫度3度時,水泵啟動且LCD顯示對應(yīng)的RUN,當(dāng)實際溫度大于設(shè)置溫度時,水泵停止工作且LCD顯示對應(yīng)的STOP;若F=0,說明加熱鍵沒按下,則CPU先進(jìn)行時間段判斷,再進(jìn)行溫度判斷,當(dāng)時間在設(shè)置的三段范圍內(nèi)且實際溫度小于設(shè)置溫度3度時,水泵啟動,否則水泵停止工作。
設(shè)定按鍵外部中斷為高優(yōu)先級,使主程序能實時響應(yīng)按鍵處理,進(jìn)行相應(yīng)的操作。若長按設(shè)置鍵,則進(jìn)入設(shè)置環(huán)節(jié),否則有按鍵按下時則背光亮5秒鐘,便于用戶讀取時間和溫度,然后自動熄滅。鍵處理子程序是本設(shè)計的重點和難點。其流程圖如圖6所示。
單片機與DS18B20之間數(shù)據(jù)交換采用單總線,由于只有一根線通信,所以必須采用嚴(yán)格的主從結(jié)構(gòu),當(dāng)主機呼叫從機時,從機才能應(yīng)答,主機訪問單線期間必須嚴(yán)格遵循單線命令的序列,如果命令序列混亂,單線器件不會響應(yīng)主機。
單片機與時鐘芯片PCF8563及外部存儲器之間通信采用I2C總線,I2C總線是由數(shù)據(jù)線SDA和時鐘SCL構(gòu)成的串行總線,可發(fā)送和接受數(shù)據(jù),最高傳送速率100 kbps。各種被控制電路均并聯(lián)在這條總線上,但每個電路和模塊都有唯一的地址。本設(shè)計中的PCF8563和AT24C02B雖然掛在同一條總線上,其地址分別為0xa2和0xa0,彼此獨立,互不相關(guān)。這點在編程時必須注意,很容易出錯。I2C總線的優(yōu)點是簡單和有效。由于接口直接在組件之上,因此,I2C總線占用的空間非常小,減少了電路板的空間和器件引腳的數(shù)量,降低了成本。
系統(tǒng)采用單片機C語言編寫,開發(fā)環(huán)境是Microchip的MPIAB IDE V8.50,在線調(diào)試及下載工具是ICD3。
4 結(jié)束語
文中從硬件和軟件的角度出發(fā),設(shè)計了一套基于PIC16F72單片機的溫度智能控制系統(tǒng)。與傳統(tǒng)的溫控系統(tǒng)相比,本系統(tǒng)大大地提高了資源利用率,且元器件選擇頗具考究,有很大創(chuàng)新,硬件結(jié)構(gòu)簡單、體積小巧,成本低廉、界面直觀、安全可靠。并且在設(shè)計時考慮到以后擴展系統(tǒng)工程的需要,單片機留出了一定的控制引腳以便于外接其他功能模塊。該控制器已經(jīng)成功運用在小型即熱式電熱水器中。