[摘要]傳統的大容量電熱水器的加熱時間一般都比較長,而且加熱完成后會自動轉入保溫狀態,則要消耗多余的電能。本文根據這樣的需求,開發了基于單片機的電熱水器定時控制的實驗裝置,該裝置可以根據用戶時間加熱,省去了保溫消耗的能量,節省了電費,此裝置還可以推廣到實際應用中。
[關鍵詞]電熱水器 定時開關控制器 單片機
一、前言
傳統的大容量電熱水器的加熱時間一般都比較長,加滿涼水后再開始加熱往往要等待很長的時間才能加熱完畢。另外,加熱完畢后如果不立刻使用,則需要熱水器處于保溫狀態,這樣則會一直耗能耗電,付出不必要的經濟代價。本文介紹一種以MSP430F149單片機為核心的定時開關控制器的實驗裝置則可有效解決這個問題,使熱水器使用起來更加舒適省電,另外,對于上班族來說,每天上班前確定熱水器的開機時間,到下班回到家熱水器剛好加熱完畢,則可以到家就洗熱水澡或使用熱水,而省去回家等待的時間,也能避免提前加熱完保溫所消耗的電能。
二、功能簡介
定時器上帶有數碼管用于顯示年、月、日、小時和分鐘,用戶可以通過鍵盤設定熱水器開始加熱的具體時間。開始時間設定完成后,單片機開始計時,當到達設定的時刻后單片機控制可控硅電力電子器件導通熱水器開始加熱,加熱結束后自動轉入保溫狀態。
三、電路原理
系統主要由單片機MSP430F149、實時時鐘芯片DS1287、鍵盤電路、光偶隔離和可控硅驅動電路組成。上電時,單片機從DS1287中讀取現在的時間,由于有內置電池,DS1287一直在運行,保持時間和當前時間一致,當停電以后重新來電,可保持當前時間不發生改變。DS1287是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘芯片,如圖1所示。它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。DS1287內部有一個128字節的RAM,用于設置寄存器和當前時間的實時更新。同時,當外部電源電壓低于3V時可自動切斷外部電源改由內部自帶的鋰離子電池供電。在內部鋰離子電池供電的情況下,時鐘仍然正常工作,并保證內部128字節RAM的內容在10年內不會丟失。
當DS1287設置好當前時間后就開始自動計時,通過設置DS1287的工作寄存器B的AIE位為1,從而使DS1287工作在警報中斷狀態。工作警報工作狀態時,當目前時間與設置的時間相同時,實時時鐘芯片的IQR引腳就會變為低電平,從而產生一個中斷,單片機接收到這個中斷后可以控制可控硅元件導通開始加熱。預置時間由用戶通過鍵盤設置,單片機接收到用戶設置的時間后,通過與DS1287相連的地址/數據復用總線傳給DS1287。單片機20管腳與DS1287的DS相連,21管腳與AS相連,22管腳與R/WR相連,通過這三條控制線可以完成單片機和DS1287之間的數據傳送。具體方法是通過20管腳向外輸出一個正脈沖,20腳與DS1287的DS相連,正脈沖表示此時DS1287接收的是RAM地址,同時,將單片機21管腳輸出低電平,表示此時處于寫數據狀態。當AS的下降沿時,DS1287自動將數據總線上的地址鎖存,從而DS1287內部相應的地址被選通。下一步再向DS1287傳送的數據就被寫入到相應的地址中了。當用戶通過鍵盤設置好開機時間后,單片機將時間讀入并傳送給DS1287,具體做法是先通過上面的方法選通地址,地址01H對應秒警報,03H對應分警報,05H對應時警報。每次選通一個地址,然后,將相應的數據傳送進去。傳送時首先讓22引腳輸出低電平,表示DS1287處于寫數據周期,當21管腳出現下降沿時就可將數據寫入DS1287。當分別將三個數據都寫入之后,若DS1287計數到設定的時間就會產生一個中斷,此時單片機接收到這個中斷并轉入相應的中斷相應處理函數將可控硅導通開始加熱就可完成定時開機。
利用單片機的I/O中斷功能,單片機接收到DS1287的中斷信號后就自動轉入中斷處理函數,在中斷處理函數中,單片機主要完成輸出一個導通信號給可控硅驅動電路,由可控硅驅動電路驅動電力電子器件導通,從而開始加熱。
顯示部分由單片機和4個數碼管以及一片MAX7219組成。MAX7219是八位串行共陰LED數碼管動態掃描驅動電路,如圖2所示。它可以在單片機三個I/O口的控制下完成對八位LED數碼管的顯示控制和驅動,線路連接簡單、控制方便,外圍電路僅需一個電阻設定峰值段電流。MAX7219有很強的驅動能力,驅動峰值電流可達40mA。此外,還可以通過軟件的方式改變其顯示亮度。更值得一提的是,該芯片還支持低功耗狀態,在關閉狀態下仍然可以在單片機的控制下接收數據或者更改控制方式,此時芯片耗電僅為150uA。本電路中單片機使用P3.7、P3.6、P3.5三個引腳控制MAX7219.MAX7219外接四個共陰LED數碼管用于顯示時間。

關于鍵盤要設計一個時間選擇按鈕,用來選擇要調節的是小時還是分鐘;一個加數按鈕和一個減數按鈕,當時間選擇按鈕選好要調節的項目后,按一次加按鈕就相應的加一分鐘或加以小時,當按減按鈕時就相應的減一分鐘或減一小時。一個確定按鈕,當時間設置完成后按一下這個按鈕,則設定的時間被讀入單片機,再由單片機傳到DS1287中,從而開始計時工作。一個復位按鈕,當按下此按鈕后會刪除原來的定時信息,使定時器停止定時。
四、軟件編程
軟件編程主要有兩個任務,一個是完成DS1287的控制寄存器初始化,另一個是對單片機完成初始化并實現要求的工作目標。
DS1287一共有四個寄存器,分別是控制寄存器A、控制寄存器B、狀態寄存器C和內部鋰電池狀態寄存器D。其中,寄存器A和寄存器B需要用戶出示化,另外兩個是只讀寄存器,用于查看DS1287的工作狀態。初始化時,將控制寄存器A的第四位、第五位、第六位設置為010。DS1287在出廠時內部晶振是關閉的,當上面三位被設置為010后晶振被啟動開始計時工作。控制寄存器B的第五位設置成1,這個位是警報中斷允許控制位。當它被設置成1后,DS1287可以產生警報中斷,把需要產生中斷的時間按照上面說明的方法寫入相應的RAM地址后,當DS1287計數到設置好的時間后就會將引腳IRQ由高電平變為低電平,從而產生一個中斷。由于IRQ引腳是與單片機的23引腳相連的,從而單片機接收到一個I/O中斷,我們在這個被觸發的中斷中發出可控硅導通信號,就能開始加熱。
單片機的軟件設計首先要完成各個模塊的初始化,首先要完成各個I/O端口的初始化,當向DS1287中寫數據時,將端口寄存器P0DIR設置成全1,使端口用于輸出數據。將P2使端口的中斷使能寄存器P2IE的第三位設置成1,從而使單片機可以接收DS1287的警告中斷;將P2IE的第0位、第一位、第二位設置成輸出狀態,從而發出控制信號,控制單片機和DS1287的通訊。
完成了初始化后就要編寫相應的控制程序。控制程序的工作流程主要如下:單片機的與鍵盤相連的I/O端口當收到鍵盤按下的信息后,根據用戶的設定讀出預定的開機時刻,把這個時刻傳送給DS1287,DS1287接收完預設的時間后就開始計時,當計時到設定的時間后就由IRQ引腳產生一個中斷,單片機接收到這個中斷后自動轉入I/O中斷處理程序,在I/O中斷處理程序中,程序利用一個端口向可控硅器件驅動電路發送一個導通信號,從而主電路導通,開始加熱。
五、軟件抗干擾設計
定時器所使用的單片機一旦受到外界干擾導致程序跑飛將會出現各種不良后果。比如,程序跑飛后導致定時失敗,熱水器沒有按時開始加熱,用戶不能及時用到熱水,或者提前加熱,然后,長時間工作在保溫狀態,浪費了不必要的能源。所以,單片機要有良好的抗干擾能力,并且要有很好的穩定性。硬件系統是單片機系統穩定工作的根本,經常采用的方法有:改善系統的布局、布線,采用光電耦合器以提高強電與弱電的隔離度;在電源變壓器的初級增加濾波器;增加“硬件看門狗”,等等。硬件抗干擾設計的缺點是增加了系統的復雜性,提高了硬件成本,而軟件抗干擾設計在不增加系統復雜性,不提高硬件成本的前提下,同樣可以在很大程度上提高系統的穩定性。本程序的軟件結構是由一個上電復位初始化程序、一個主循環程序、兩個中斷服務程序組成,在單片機的RAM區中設立幾一個位尋址區,在位尋址區中設立一些標志位,這些標志位分別代表不同的程序模塊,一個字節可以對應8個程序模塊。當某個程序模塊正在執行時,對應的標志位置1,不執行時對應的標志位置0,就可以知道當前正在執行的程序是哪一個模塊,當標志位的值與正在執行的程序模塊不一致時,我們可以肯定程序出現了“跑飛”,需要盡快進行錯誤處理,通過進一步的檢查還可以知道程序是從哪個模塊“飛”過來的。當檢測到程序跑飛后系統自動產生復位中斷,程序回到初始化狀態從新開始執行。用此種辦法可大大提高系統的可靠性。
六、結語
本文開發的以單片機為核心的熱水器定時器,來控制熱水器的開通時間可以大大提高使用的靈活性,方便用戶根據自己的需要進行使用。同時,又能節約能源節省經濟支出。通過該裝置,學生可以加深用單片機開發系統的認識。
參考文獻:
[1]李群芳,黃建.單片微型計算機與接口技術[M].北京:電子工業出版社,2001.
[2]張培仁.基于C語言編程MCS-51單片機原理與應用[M].北京:清華大學出版社,2002.
[3]趙秀珍,單永磊.單片微型計算機原理及其應用[M].北京:中國水利水電出版社,2001.
(作者單位:浙江理工大學信息與電子學院)