一種開關量控制的水浴恒溫控制器設計
2.5 溫度曲線顯示模塊
溫度曲線顯示模塊是本控制器編程的難點之一。本文選擇的液晶屏點數(shù)為128×160,真正顯示曲線部分如圖6所示。由圖6可知,可顯示的橫坐標點共121個點。若在while循環(huán)中,每次循環(huán)都在液晶屏上顯示一個點,則121個橫坐標表示的點只能覆蓋很短的時間。若能實現(xiàn)每隔1 s讀取一次溫度值,則整個屏幕可以覆蓋2 min內的數(shù)據(jù),也就是說足可以顯示2 min內的溫度變化的趨勢。本文實現(xiàn)的方法如下:
cur_sec=date_r[0]; //讀出當前的秒數(shù),為BCD碼
if (cur_sec!=last_sec)
//當前的秒數(shù)與上一次不相等,則過了1 s了
{
……//此部分代碼1 s執(zhí)行一次
last_sec=cur_sec;
count++;//用于控制斷續(xù)加熱
}本文引用地址:http://m.butianyuan.cn/article/159976.htm
畫點函數(shù)與畫直線函數(shù)原型為:
void LCD_draw_point(uchar x,uchar y,uint color);
//畫點函數(shù)
void LCD_draw_line(uchar xStart,uchar yStart,uchar xEnd,uchar yEnd, uint color)//畫直線函數(shù)
在曲線顯示時,希望溫度曲線始終在屏幕的中間部分顯示,以全面反映溫度的上下波動。而且畫直線時,需要知道上一個溫度點的縱坐標和當前溫度點的縱坐標。本系統(tǒng)中,曲線顯示部分中間那條標尺縱坐標為115,于是計算當前溫度點的縱坐標和上一次溫度點的縱坐標方法為:
a=115+(TargetTemSet-Temperature);
//溫度變化后的Y坐標
b=115+(TargetTemSet-Temperature_last);
//溫度變化前的Y坐標
其中,TargetTemSet為當前設定的溫度值,Temperature為當前檢測到的溫度值,Temperature_last為上一秒檢測到的溫度值。假設設定溫度TargetTemSet=200(即20.0℃),上一次溫度Temperature_last=200,當前溫度為Temperature=210,則變化后的溫度點縱坐標a=105,溫度變化前的溫度點縱坐標b=115。由此可以畫一條豎線,就可以達到設計要求。在使用畫直線函數(shù)前,還需要將a、b限幅,即{a,b}?奐[75,155]。
在本設計中,共畫出了9條標尺,每個標尺間距為10個像素點,代表溫度相差1℃。
2.6 溫度調節(jié)模塊
本控制器要求實現(xiàn)溫度值與設定值相差大于3℃時,連續(xù)加熱;小于3℃時,斷續(xù)加熱;大于設定值時,斷開繼電器;斷續(xù)加熱時,繼電器交替通斷。關鍵代碼如下:
if(Temperature(TargetTemSet-30))
//溫度較低,直接加熱
{
if (Temperature!=0) RELAY=RelayOn;
}
else if(TemperatureTargetTemSet)
//溫度接近設定溫度,斷續(xù)加熱
{
if (count>= TargetTimeInterval)
//讀出秒數(shù),需加熱時,加熱幾秒,停幾秒
{ count=0; RELAY=!RELAY;}
}
else RELAY=RelayOff;//大于設定值, 斷電
3 恒溫實驗效果
針對本設計進行相關的實驗,實驗原理圖如圖10所示。實驗中,設定了3個溫度檔次,即30 ℃、35 ℃、40 ℃分時進行。
當設定為30℃時,通過實驗發(fā)現(xiàn)加熱過程溫度過沖為0.3℃,恒溫過程波動為±0.1℃,控制過程運行良好。
當溫度設定為35℃時,發(fā)現(xiàn)過沖比較大,說明傳感器與加熱體相隔距離太遠,不合理,需要重新調整。但恒溫過程比較滿意。
于是調整傳感器與加熱體的距離(減?。?,使之更加合理。設定為40℃時,水槽水溫上升曲線可知基本上無過沖,恒溫效果比較滿意。在恒溫過程中將時間清零了一次,所以運行時間比加溫時間小。
實驗中發(fā)現(xiàn):溫度是否恒定、過沖是否小與許多因素有關,如:加熱體和傳感器之間的距離、水槽是否密封、水槽材質散熱性等。當溫度設定較高時,水槽周邊散熱較大,同一水槽中,不同位置水的溫度不同,水槽中的水溫呈一定的梯度分布。要提高恒溫效果,除了從控制器本身入手外,還可以進行如下方面的考慮:
?。?)保持加熱體與傳感器之間處于合適的距離。
?。?)有條件的話,在加熱體附近增加一個小的螺旋槳,使水在水槽內溫度更加均勻。
?。?)保持水槽密封,根據(jù)水槽裝水的多少,選擇合適功率的加熱體。
?。?)增大加熱體加熱面積,使水槽整體升溫,減小局部溫度過高的可能。
本文設計了一種水浴恒溫控制器,介紹了其硬件與軟件設計過程,并進行了相關實驗,結果表明其升溫與恒溫效果均比較滿意。本設計的一大亮點在于通過TFT液晶屏實時顯示了當前溫度值、設定值、當前運時間等,還能通過彩色曲線顯示2 min內溫度變化趨勢。文中提出的實時時鐘編程思想,可在高速微處理器上實現(xiàn)長時間定時,對其他大慣性控制系統(tǒng)的設計具有一定的借鑒意義。
參考文獻
[1] 賀艷秋,黃大貴.電阻爐FuZZy_PID溫度控制系統(tǒng)[J]. 橡膠工業(yè),2006(53):109-109.
[2] 宏晶公司.單片機器件手則:STC89C51RC-RD+GUIDE-CHINESE.2006:42-43.
[3] 杜克銘,姚燕,李景涌.基于STC89C52的多路溫度傳感器標定系統(tǒng)[J].電子技術應用,2009(4):152-155.
[4] 王節(jié)旺.一種基于STC89C52RC單片機的計時系統(tǒng)的設計方案[J].微型機與應用,2011(6):28-30.
評論