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