楊春麗
(大理大學工程學院,云南 大理 671003)
隨著當今人們生活品質的提高以及工業、農業生產等的需求,需要對環境溫度進行檢測和控制的場合也越來越多。當環境溫度超過預期時,需要加入各種冷卻系統,以達到降溫的目的。常用的冷卻系統有水冷卻系統、油冷卻系統、空氣冷卻系統等。
這些冷卻系統各具優缺點。以水冷卻系統為例,其原理為:以冷卻液為冷卻介質,熱量先由機件傳給水,靠水的流動把熱量帶走散入大氣,散熱后的水再重新流回到受熱機件處。其優點為散熱效果好,不易受到灰塵的干擾,水路和冷卻強度可適當調節,能較好地保持發動機的正常工作溫度;缺點為水冷需要安裝冷卻水塔、水泵,成本太高,不適合一般用戶使用。風冷系統則是以空氣為冷卻介質,通過風扇強制對流,利用風扇將高溫零件的熱量直接散入大氣。其優點是零件少,沒有漏水、冰凍、結垢等故障,質量輕,制造成本低,功率利用率高,使用維護方便,環境適應性好,啟動后暖機時間短等。
在實際使用中,大型機器使用水冷卻系統會更加穩定,而風冷系統則更適用于中小型機組、狹小空間的冷卻要求。
針對狹小空間散熱問題及傳統風冷系統無法根據當前環境溫度實現風扇轉速調節及自動啟停的問題,設計了一種脈沖寬度調制(pulse width modulation,PWM)溫控風冷系統。系統以AT89C52單片機作為主控芯片,利用DS18B20采集外界實時環境溫度并借助數碼管加以顯示。當環境溫度在20~35 ℃時,利用單片機定時器控制I/O口輸出占空比為75%的脈沖信號調節風扇電機轉速,此時數碼管顯示為1檔;當環境溫度高于35 ℃時,電機全速轉動(此時I/O口輸出占空比為100%的脈沖信號),并發出聲光報警,此時數碼管顯示為2檔;當環境溫度低于20℃時,電機自動停止,此時數碼管顯示為0檔。系統還具有利用LED燈和蜂鳴器發出聲光報警以及重置控制溫度等多重功能。當環境溫度超過系統規定的上下限閾值時,系統會自動發出聲光雙重報警[1]。系統已通過Keil Uvision軟件測試及硬件電路測試。
系統原理如圖1所示。

圖1 系統原理框圖
溫控風冷系統硬件電路設計涉及系統主控芯片、溫度傳感器、電機驅動芯片、顯示器件、預警電路、按鍵等硬件電路的選型和電路連接[2]。
本系統選用了40引腳雙列直插式AT89C52單片機作為主控芯片。AT89C52是一款工作電壓范圍為3.3~5.5 V的高性能的8位單片機。AT89C52有6路中斷源和32位并行通用的I/O端口、3個16位的定時器/計數器,片內含有8 KB的、可反復擦寫的Flash ROM和256 B的RAM[3-4]。可采用C語言或匯編語言對AT89C52單片機編程。本系統采用的編程語言為C語言。
DS18B20是一款可直接輸出數字信號、集溫度采集和A/D轉換于一體的數字式溫度傳感器。其工作電壓范圍為3~5 V,與AT89C52單片機工作電壓基本一致。DS18B20使用簡便,只需一條總線即可實現與單片機的雙向通信[5]。DS18B20測溫范圍為-55~+125 ℃,能夠滿足本系統的設計要求。當在-10~+85 ℃范圍內時,可確保測量誤差不超過0.5 ℃[6]。
本系統中,DS18B20與單片機I/O口的接線如圖2所示。

圖2 DS18B20接線圖
L9110是一款為控制和驅動電機設計的兩通道推挽式功率放大專用H橋驅動集成芯片。該芯片有2個TTL/CMOS兼容電平的輸入,其工作電壓范圍為2.5~12 V,可直接與單片機I/O端口連接。 L9110具有良好的抗干擾性,2個輸出端能直接驅動電機的正反向轉動。它具有較大的電流驅動能力,每通道能通過750~800 mA 的持續電流,峰值電流可達1.5~2.0 A。同時,它具有較低的輸出飽和壓降,內置的鉗位二極管能釋放感性負載的反向沖擊電流,使它在驅動繼電器、直流電機、步進電機或開關功率管的使用上安全、可靠。L9110 被廣泛應用于直流電機、步進電機驅動和開關功率管等電路上。
本系統中,L9110與單片機I/O口的接線如圖3所示。

圖3 L9110接線圖
常用的顯示器件有數碼管、LCD1602液晶顯示屏等。本系統為了節約成本及便于編程,采用數碼管作為溫度顯示器件。數碼管是一種由8個LED發光二極管按照一定的方式連接而成的字符顯示器件。按照連接方式發光二極管又分為共陰極數碼管和共陽極數碼管。若將所有發光二極管的陰極接到一起,則形成共陰極數碼管[7]。若要點亮共陰極數碼管上某一發光二極管點亮,則應將數碼管共陰極接到低電平,將要點亮的發光二級管接高電平[7]。共陽極數碼管點亮方式與之相反。本系統采用共陰極數碼管作為顯示器件。
此外,系統用到3個按鍵實現調速溫度及報警溫度的設置,以便實現人機交互。通過按鍵調整調速溫度及報警溫度值,使系統應用更加靈活。此模塊由兩部分組成,一部分是連接單片機P3.1~P3.3引腳的溫度調整按鍵(SET、DEC、ADD),另一部分是連接單片機P1.2引腳的報警指示燈及P3.6引腳的蜂鳴器。
如果需要改變控制溫度上限閾值,則按下SET按鍵一次后,再按ADD(+)、DEC(-)按鍵調整上限溫度。此時,數碼管顯示模塊同步顯示溫度值設置。若要調整控制溫度下限閾值,則按下SET按鍵二次后,再按ADD(+)、DEC(-)按鍵調整下限溫度。此時,數碼管顯示模塊同步顯示溫度值設置。當按下SET按鍵三次或沒有按下SET按鍵時,控制溫度處于鎖定狀態。
系統采用模塊化編程的方式,分別設計了DS18B20測溫程序、PWM脈寬調速程序、按鍵掃描程序、數碼管顯示程序、聲光報警程序及主程序,并對各部分子程序進行組裝。
DS18B20測溫程序主要包括初始化子程序、總線讀取子程序和總線寫入程序3個操作,且都必須嚴格遵循時序要求[8]。DS18B20初始化程序相當于在單片機和傳感器之間建立了通信橋梁,為后面的操作作準備[8]。初始化完畢,傳感器處于既可讀取又可寫入的狀態。單片機向DS18B20寫數據,是指令和數據發送的基本操作,采用位右移操作實現低位在前高位在后的逐位寫入,主要包括寫“0”和寫“1”這2種時序[8]。單片機從DS18B20讀取數據,包括溫度的采集和其他狀態信息的回傳,也是以位為單位,包括讀“0”和讀“1”2種時序。每次溫度轉換一般都經過復位操作、發送ROM指令、發送RAM指令這3個步驟,然后讀取溫度[8-10]。
DS18B20測溫流程如圖4所示。

圖4 DS18B20測溫流程圖
PWM是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,被廣泛應用于測量、通信、功率控制與變換等許多領域。直流電機PWM脈寬調速就是在直流電源電壓基本不變的情況下,通過改變電子開關的通斷時間,來改變施加到電機電樞端的直流電壓脈沖寬度,以調節輸入電機電樞電壓平均值的調速方式[9]。
脈沖寬度越大,提供給電機的平均電壓越高,電機轉速越快;反之,脈沖寬度越小,提供給電機的平均電壓越低,電機轉速越慢。本應用系統中,利用了定時器T0的中斷函數,實現了PWM調速。
在整個設計中,主程序一方面負責讀出DS18B20所測量的溫度值,并借助數碼管加以顯示;另一方面根據當前實時溫度,確定PWM調速方案。程序開始執行時,溫度傳感器所測量到的溫度值通過P3.5引腳輸入單片機,經過處理后的溫度數據再通過單片機輸出到數碼管顯示。同時,還可通過按鍵來調整溫控檔位。當超過上限溫度時,風扇電機全速轉動,同時通過單片機P1.2、P3.6引腳發出聲光報警。
系統程序的總體框架如下。
#include
#include
#include "eeprom52.h"
……
//各部分子函數定義
void main()
//主函數
{
init_eeprom();
//開機自檢eeprom保存的上、下限溫度值
ReadTemperature();
//讀取溫度并顯示
InitT0();
//定時器T0初始化
while(1)
{
if(js>=50)
//每隔1 s讀取一次溫度
{
ReadTemperature();
//讀取溫度并顯示
js=0;
// js變量清零,為下1 s讀取溫度計時
}
zi_dong();
//判斷當前溫度需要啟動哪一個PWM溫控模式}
}
void T0_TIME() interrupt 1{…}
//定時器中斷函數,用于PWM調速
主程序流程如圖5所示。

圖5 主程序流程圖
系統經過軟、硬件測試和實際驗證,溫度真實值與測量值對比如表1所示。

表1 溫度真實值與測量值對比
經測試,系統誤差小于0.5 ℃。測試結果表明:系統的精確度較高、實用性較強。
本文介紹了一種適用于狹小空間散熱的PWM溫控風冷系統的設計方法。系統以AT89C52單片機作為主控芯片,利用數字溫度傳感器DS18B20檢測當前環境溫度并借助數碼管加以顯示。單片機根據當前實時環境溫度控制I/O口產生脈寬可調的電信號,控制與之連接的風扇電機的轉速,從而實現PWM脈寬調速。本文已對系統方案設計、器件選型、硬件連接和軟件設計等幾部分內容作了詳細說明。經測試,系統具有測溫精度高、散熱效果好、生產成本低、節能環保等優點,可應用于空調、冰箱等電器的散熱系統,具有較好的應用前景。