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