張嵩, 劉光利, 馬巖, 高琳
(長春理工大學 機電工程學院,長春130022)
PIC 單片機(Peripheral Interface Controller)是一種用來可開發的去控制外圍設備的可編程集成電路。由美國Microchip(微星)公司推出的PIC 單片機系列產品,首先采用了RISC 結構的嵌入式微控制器,其高速度、低電壓、低功耗、大電流LCD 驅動能力和低價位OTP(一次性編程)技術等都體現出單片機產業的新趨勢。現在PIC 系列單片機在世界單片機市場的份額排名中已逐年升位,尤其在8位單片機市場,據稱已從1990 年的第20 位上升到目前的第二位。PIC 單片機從覆蓋市場出發,已有三種(又稱三層次)系列多種型號的產品問世,所以在全球都可以看到PIC 單片機從電腦的外設、家電控制、電訊通信、智能儀器、汽車電子到金融電子各個領域的廣泛應用。現今的PIC 單片機已經是世界上最有影響力的嵌入式微控制器之一。本文用的16f690 就是一種應用廣泛的8 位單片機。
冰箱一般具有制冷、保溫和控制溫度3 項基本功能,隨著科技水平的快速發展,消費者對于冰箱的保鮮功能也提出了更高的要求。保鮮時間要長久、營養不能流失、隔斷之間不能串味、冷藏室不能有異味等,都成為購買冰箱的最基本要求。
冰箱是利用電能通過壓縮機使制冷劑不斷循環,通過制冷劑狀態的改變把冰箱內的熱量不斷帶到冰箱外散發掉,為了保持冰箱內的溫度,我們用箱體和門體的發泡層及門封條隔熱。同時為了使冰箱內保持所需要的溫度,我們用溫控器來控制冰箱內溫度的高低,并控制壓縮機的開、停機及照明功能。冰箱的整個制冷過程如圖1 所示。

圖1 冰箱的制冷過程示意圖
本文通過C 語言程序的編寫實現對冰箱的以下幾項功能的控制:
(1)冰箱門的開和關控制著冰箱內部燈的亮滅,并且冰箱關門后保鮮模塊開1h;
(2)當冷凍傳感器值>18 或冷藏傳感器值>18 時,壓縮機和風機分別開機,這時輸出PWM 為100Hz。當冷凍傳感器值<25 并且冷藏傳感器值<25 時,壓縮機和風機分別關機,這時輸出PWM 為40Hz;其它情況下保持原來狀態;
(3)當壓縮機累計運行8h 時,開始化霜,化霜時壓機和風機都停機。當化霜加熱器工作30min 或蒸發傳感器值>16 時,化霜停止;
Timer0 模塊是8 位定時器/計數器,它具備以下特性:8 位定時器/計數器寄存器(TMR0);8 位預分頻器(與看門狗定時器共用);可編程內部或外部時鐘源;可編程外部時鐘邊沿選擇;溢出中斷。
作為定時器使用時,Timer0 模塊可用作8 位定時器或8 位計數器。當Timer0 作為定時器使用時,Timer0 模塊將在每個指令周期遞增(無預分頻器)。將OPTION 寄存器的T0CS 位清零可以將時鐘源選擇位內部指令周期時鐘,即FOSC/4。當Timer0 作為計數器使用時,Timer0 模塊將在T0CKI 引腳的每個上升沿遞增。遞增邊沿由OPTION 寄存器的T0SE 位決定。將OPTION 寄存器的T0CS 位置1 選擇計數器模式。特別在TMR0 被寫入時,為了計入兩個指令周期的延時,可以調整寫入TMR0 寄存器的值。
模數轉換器(Analog-to-digital Converter,ADC)可將模擬輸入信號轉換為相應的10 位二進制表征值。該系列器件采用多個模擬輸入復用到一個采樣保持電路。采樣保持電路的輸出與轉換器的輸入相連接。轉換器通過逐次逼近法產生10 位二進制值,并將轉換結果保存在ADC結果寄存器(ADRESL:ADRESH)中。
整個控制系統的設計,首先考慮的是門開關對LED燈的亮滅控制及對保鮮模塊啟動的控制,本文將RB4 引腳作為門開關的狀態輸入引腳,將RB6 作為LED 燈的控制引腳,將RB2 作為保鮮模塊的控制引腳。RB4 置0,表明冰箱門是打開狀態,這時將RB6 置1,即LED 燈亮,當RB4 變為1 時,說明冰箱門關閉,這時將RB6 置0 的同時把RB2 置1,啟動保鮮模式,保鮮在開啟1h 后關閉。其次是對壓縮機和風機的控制,本文將RC1 作為冷凍傳感器采集數據輸入引腳;RC2 作為冷藏傳感器采集數據輸入引腳;RC3 作為壓縮機控制引腳;RC5 作為PWM 輸出引腳;RA0 作為風機控制引腳。當RC1 或RC2 的值大于18 時,要分別將RC3 和RA0 置1,打開壓縮機和風機,同時PWM 的輸出為100Hz,當RC1 且RC2 的值小于25時,分別將RC3 和RA0 置0,關閉壓縮機和風機,同時PWM 的輸出為40Hz。最后是對冰箱化霜的控制,本文將RC6(低電平有效)作為化霜控制引腳,RC0 作為蒸發傳感器數據采集值輸入引腳。當壓縮機累計運行8h 的時候,化霜開始即將RC6 置0,此時分別將RC3 和RA0 置0,關閉壓縮機和風機,同時PWM 的輸出為40Hz。當化霜加熱器工作30min 或蒸發傳感器數據采集值大于16 時,化霜停止,即RC6 置1。
對于整個控制系統中的時間控制,本文采用的是中斷函數控制,對不同的時間控制設定了不同的時間標志位,實現了準確的控制。因為RC0、RC1、RC2 是傳感器數據采集引腳,所以這三個引腳都設置成模擬輸入端,其余的都設置為數字輸入/輸出引腳。PIC16f690 的引腳總匯如圖2所示。

圖2 PIC16f690 引腳總匯
RA1 外接的是掉點檢測電路,該電路主要針對各種原因造成的瞬時掉電采取立即保護措施,防止來電后壓縮機的頻繁啟停對壓縮機造成損傷。RA3 外接的是復位電路,用于當單片機系統在運行中,受到環境干擾出現程序跑飛的時候,按下復位按鈕內部的程序自動從頭開始執行,其中,與電阻并聯的二極管起到了加快電容放電速度的作用。RA4、RA5 是外接的晶振電路,用于給單片機提供必要的外部振蕩源。

圖3 硬件電路圖
單片機可以用匯編語言編程, 也可以用高級語言C、Basic 編程,也可以用圖形化語言編程。本文采用的是C語言的編程,函數的開始首先需要對引腳的端口進行初始化,包括端口方向的設置、初值的設置以及分頻比等的設置。然后就是一個大的While 的死循環調用,這樣通過對門開關函數、壓縮機和風機開關機函數以及化霜函數的調用和判斷,實現了對所用功能的控制。圖4 為整個程序的控制流程圖。部分程序代碼如下:





圖4 控制流程圖
以PIC16f690 單片機為基礎,通過對各個引腳的功能分配及硬件電路的設計,對冰箱部分功能進行了C 語言程序的編寫。整個程序利用軟件進行了不斷的仿真和調試,實現了對冰箱的LED 燈、保鮮模塊、壓縮機和風機及化霜的控制。
[1] 李學海.PIC 單片機實用教程-提高篇[M].北京:北京航空航天大學出版社,2002.
[2] 余永權,汪明慧,黃英.單片機在控制系統中的應用[M].北京:電子工業出版社,2003.
[3] 竇振中,汪立森.PIC 系列單片機應用設計與實例[M].北京:北京航空航天大學出版社,2001.
[4] 汪睿.淺談PIC 單片機的使用[J].安慶科技,2012(1):38-41.
[5] 張春芝,馮海明.電冰箱單片機控制系統的設計[J].北京工業職業技術學院學報,2002(3):21-26.