基于AT89S52單片機的溫度控制系統(tǒng)
0 引 言
在激光倍頻晶體溫度匹配中,有時需要很高的工作溫度。晶體升溫過程中,溫度過快變化會導(dǎo)致晶體出現(xiàn)破裂,因此在開機過程中需要操作人員不斷手動控制激光器晶體的溫度。為了避免這樣繁鎖的工作,我們以單片機AT89S52為核心制作了一套自動控制升降溫系統(tǒng),有效的保證了晶體溫度在安全的速率下變化。由于熱敏電阻的非線性關(guān)系,一般的控溫儀正常控溫范圍有限。在對熱敏電阻和恒流源的特性進(jìn)行分析后,將恒流源做了適當(dāng)?shù)母倪M(jìn),擴展了控溫儀的控制范圍,使其在較寬的溫度范圍內(nèi)也具有較高的精度。
1 硬件系統(tǒng)設(shè)計
控制系統(tǒng)電路的核心器件是Atmel公司生產(chǎn)的AT89S52單片機。它是一種低功耗、低電壓、高性能的8位單片機,片內(nèi)帶有一個8KB的flash可編程、可擦除、只讀存儲器;它采用的工藝是Atmel公司的高密度非易失存儲器技術(shù),而且其輸出引腳和指令系統(tǒng)都與MCS-51兼容。價格低廉、性能可靠、抗干擾能力強。因此廣泛應(yīng)用于工業(yè)控制和嵌入式系統(tǒng)中。
圖1為該系統(tǒng)的結(jié)構(gòu)框圖,為了節(jié)省成本和體積,我們采用多路選擇開關(guān)CD4051和模數(shù)轉(zhuǎn)換器AD7705協(xié)同工作組成多路數(shù)據(jù)采集系統(tǒng)。
CD4051是NS公司生產(chǎn)的數(shù)控模擬開關(guān),可控制最大輸入范圍約為士15V左右的模擬電壓,由輸入的3位地址碼決定八個通道中哪一個通道開通;選通通道具有非常低的輸入阻抗,約為80Ω,關(guān)閉的通道具有很低的漏電流,每一路約為10pA左右,處于工作狀態(tài)時功耗大約為1μW,是一款性能十分優(yōu)良的數(shù)控模擬開關(guān)。AD7705是一款16位串行模數(shù)轉(zhuǎn)換芯片,功耗非常低,在3V供電電壓和1MHz的主頻下,消耗功率小于1mW,供電電流小于8μA,轉(zhuǎn)換精度高,可達(dá)±0.003%,無誤碼。MAX541是由美信公司生產(chǎn)的串行輸入數(shù)模轉(zhuǎn)換器件,無需校準(zhǔn),功耗不超過l.5mW。AT24C02是Atmel公司生產(chǎn)的EEPROM器件,存儲容量256字節(jié),可擦寫次數(shù)達(dá)100萬次,主要用來存儲設(shè)定溫度。PCF8574由Philips公司生產(chǎn),它可將I2C串行輸入的數(shù)據(jù)轉(zhuǎn)換為8路并行輸出,用于器件的I/O口擴展。本系統(tǒng)中,將其8位輸出口直接連接在LCD12864的8位數(shù)據(jù)輸入口中。LCD12864是點陣型液晶,驅(qū)動方便,經(jīng)編碼后顯示內(nèi)容多樣化。系統(tǒng)的輸入模塊采用中斷掃描的4×4矩陣鍵盤,相比定時掃描方式,提高了MCU的使用效率。
2 系統(tǒng)流程圖
圖2為系統(tǒng)的流程圖,上電后先對系統(tǒng)進(jìn)行初始化,然后進(jìn)入while(1)循環(huán)語句,此循環(huán)體中包含兩個while語句,分別為while(state)和while(!state)。程序根據(jù)位變量state的值選擇進(jìn)入溫度設(shè)定狀態(tài)還是系統(tǒng)運行狀態(tài)。在初始化的過程中將state的值設(shè)為1,因此剛開機系統(tǒng)進(jìn)入運行狀態(tài)。運行狀態(tài)下,系統(tǒng)不斷通過CD4051和AD7705聯(lián)合采集熱敏電阻兩端的電壓值,然后與設(shè)定電壓值對比,并通過MAX541定時輸出自動升溫電壓值,讓系統(tǒng)嚴(yán)格地在規(guī)定時間內(nèi)升到指定溫度。在循環(huán)的過程中還需要不斷地判斷bit變量kd的值,此變量為全局變量,由鍵盤中斷程序置1,同時鍵盤中斷程序還返回按鍵掃描值key,該值用來確定按下哪一個鍵。顯然從流程圖中可以看出,當(dāng)kd為0時,程序跳過按鍵程序模塊,當(dāng)kd為1時程序先判斷key值,然后運行相對應(yīng)的按鍵功能程序。我們將某一鍵設(shè)為狀態(tài)切換鍵,當(dāng)按下此鍵時執(zhí)行程序state=!state,這樣就實現(xiàn)了狀態(tài)的切換。在進(jìn)入設(shè)定狀態(tài)后,MAX541的輸出停止改變。同時光標(biāo)不斷閃爍,提示使用者輸入溫度設(shè)定值。光標(biāo)閃爍程序和MAX541定時改變輸出值的程序都是采用定時器中斷來實現(xiàn)的。因為兩種功能處于不同的狀態(tài),同時為了避免中斷過多造成系統(tǒng)不穩(wěn)定,通過利用state變量的值和if語句,有效地將兩種功能用一個定時器來實現(xiàn)。進(jìn)入定時中斷程序后,當(dāng)state值為1時,即系統(tǒng)處于運行狀態(tài)時,執(zhí)行定時改變MAX541輸出值的功能。當(dāng)state的值為0時,即系統(tǒng)處于設(shè)定狀態(tài)時,執(zhí)行光標(biāo)閃爍的功能。
3 溫控儀的恒流源改進(jìn)
3.1 熱敏電阻
3.1.1 NTC熱敏電阻溫度特性方程
NTC熱敏電阻溫度特性方程用下列經(jīng)驗公式描述:
式中:RT為T時的熱敏電阻阻值,RT0為T0時熱敏電阻阻值,從上述表達(dá)式可以看出電阻的變化與溫度的變化成指數(shù)關(guān)系,溫度升高,阻值迅速降低,靈敏度高是熱敏電阻測溫的主要優(yōu)點。
3.1.2 NTC熱敏電阻的熱電特性
熱敏電阻自身溫度變化1℃時,其電阻值的相對變化定義為熱敏電阻的熱溫度系數(shù),由熱敏電阻的經(jīng)驗公式可以推出熱溫度系數(shù)a為:
從上式可以看出NTC熱敏電阻的溫度系數(shù)為負(fù),且與溫度變化有關(guān),溫度越低,溫度系數(shù)越高,靈敏度越高;反之則靈敏度越低。
3.1. 3 線性插值法簡介
熱敏電阻的主要優(yōu)點是:溫度系數(shù)大、靈敏度高、適合于高精度測量。但其缺點是存在非線性,為了提高顯示的準(zhǔn)確度,需要對熱敏電阻進(jìn)行線性插值法處理。該方法根據(jù)精度要求對溫度特性曲線進(jìn)行分段,分段越多,線性化的近似精度越高,分段后用若干折線段逼近曲線,折點的坐標(biāo)值存入表中,測量時要先用折半查找法判斷出被測溫度對應(yīng)的熱敏電阻屬于哪一折線段,然后根據(jù)相應(yīng)折線的斜率進(jìn)行線性插值從而求出被測溫度。下面用圖示的方法說明線性插值法:
圖3中k為折點的序號,Tt為根據(jù)插值法算出的溫度值,Tact為相應(yīng)的阻值對應(yīng)的實際溫度值。顯然當(dāng)分段越多,即Rk和Rk+1間的間距越小時,Tt和Tact之間的間距越小,實測值與計算值之間的誤差越小。
根據(jù)圖3可知溫度表達(dá)式的通式為:
式中:Vt為采集到的熱敏電阻兩端的電壓值,It由所選用的恒流源決定。
3.2 恒流源
從熱敏電阻的特性可知,在高溫時,變化相同的溫度引起的阻值變化較小,即溫度系數(shù)較小,傳統(tǒng)的解決方法是加大恒流源的電流。由于溫度較低時熱敏電阻的阻值變大,加在熱敏電阻兩端的電壓也變大,當(dāng)此電壓超出運算放大器正常工作電壓時,此時恒流源將不能正常工作。顯然低溫時恒流源工作電流不能太大,高溫時又要求恒流源工作電流不能太小。為了克服這對矛盾,我們將恒流源分為兩檔,分別為10μA和100μA。利用單片機控制繼電器可以實現(xiàn)兩檔恒流源的自動切換。當(dāng)溫度為100℃以下時使用10μA的恒流源,當(dāng)溫度為100℃以上時使用100μA的恒流源。這樣就相當(dāng)于提高了高溫時的靈敏度,從而可以提高溫度采集的精度,該方法既擴大了控溫儀的控溫范圍,又保證了測量精度。
圖4為改進(jìn)后的恒流源電路圖。基準(zhǔn)采用的是LM285系列1.2V的穩(wěn)壓管,兩端接有濾波電容。NPN三極管的型號為9013。熱敏電阻是采用Wavelength公司生產(chǎn)的型號是MODEL TCS651的100K(25℃)熱敏電阻,性能優(yōu)良。繼電器兩端接有續(xù)流二極管用來避免電流關(guān)斷過程中對三極管造成損壞,同時降低了對系統(tǒng)的干擾。IN輸入端由單片機的I/O口控制,當(dāng)IN端為高電平時,三極管導(dǎo)通,電流由100μA切換到10μA??販啬K從OUT端采集熱敏電阻兩端的電壓,其兩端接有濾波電容。
編程過程中,我們將0℃~180℃對應(yīng)的熱敏電阻阻值放入數(shù)組中。模數(shù)轉(zhuǎn)換器AD7705將采集到的電壓信號轉(zhuǎn)化為數(shù)字變量。單片機可以實現(xiàn)熱敏電阻阻值的插值算法。對熱敏電阻阻值進(jìn)行查表計算,從而可以算出當(dāng)前的實際溫度。
4 結(jié)束語
將溫度控制系統(tǒng)和恒流源與我所自行研制的PID模塊相連。上電后系統(tǒng)的升降溫運行良好。依據(jù)不同晶體的特性要求,采用相應(yīng)的溫度變化速率。保證了晶體工作環(huán)境的安全,有效地延長了晶體的壽命。