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