一種開(kāi)關(guān)量控制的水浴恒溫控制器設(shè)計(jì)
電加熱水浴恒溫控制具有升溫單向性、大慣性、大滯后、時(shí)變性、依靠環(huán)境自然冷卻降溫的特點(diǎn),難以用數(shù)學(xué)方法建立精確的模型[1]。傳統(tǒng)的控制方法是溫度低于設(shè)定值時(shí),持續(xù)加熱;高于設(shè)定值時(shí),停止加熱。這種方法容易使加熱過(guò)程溫度有很大的過(guò)沖,在其恒溫過(guò)程中,溫度波動(dòng)也較大。
本設(shè)計(jì)采用的溫控方法為:溫度較低時(shí),持續(xù)加熱;溫度接近時(shí),斷續(xù)加熱;溫度高于設(shè)定值時(shí),停止加熱。本控制器設(shè)定參數(shù)具有掉電保持功能,下次開(kāi)機(jī)不用重新設(shè)定,方便連續(xù)作業(yè);除了數(shù)字顯示當(dāng)前溫度外,更能顯示溫度曲線,使其變化趨勢(shì)一目了然,具有傳統(tǒng)數(shù)碼管顯示無(wú)法比擬的優(yōu)點(diǎn)。溫度傳感器采用數(shù)字溫度傳感器,硬件設(shè)計(jì)簡(jiǎn)單,大大減小了由信號(hào)轉(zhuǎn)換引起的誤差。
本控制器可當(dāng)作“水浴鍋”、“水溫箱”、“煮沸消毒箱”的控制器使用,其溫控效果可用于蒸餾、干燥、濃縮及恒溫加熱、化學(xué)藥品、生物發(fā)酵制品、檢查血清和生化實(shí)驗(yàn)、恒溫培養(yǎng)等。
1 控制器硬件組成
如圖1所示,控制器由實(shí)時(shí)時(shí)鐘、數(shù)字溫度傳感器、單片機(jī)、TFT液晶屏、輸出繼電器、按鍵等部分組成。
本控制器采用宏晶公司STC89C52RC型單片機(jī)作為核心控制器,其Flash程序存儲(chǔ)器容量為8 KB,數(shù)據(jù)存儲(chǔ)器RAM為512 B,內(nèi)部具有2 KB容量的E2PROM,可用作參數(shù)設(shè)置時(shí)掉電保存參數(shù)用,這樣就不需要設(shè)計(jì)外部存儲(chǔ)器,精減了硬件電路設(shè)計(jì)。該芯片加密性強(qiáng),抗干擾能力強(qiáng),功耗低,滿足本控制器設(shè)計(jì)要求。內(nèi)部E2PROM讀寫的3個(gè)基本命令為字節(jié)讀、字節(jié)編程、扇區(qū)擦除。同一個(gè)地址的數(shù)據(jù)可以反復(fù)讀出,但要寫入數(shù)據(jù),必須先將其擦除,而數(shù)據(jù)擦除是按扇區(qū)(每個(gè)扇區(qū)512 B)進(jìn)行的[2]。
數(shù)據(jù)顯示部分采用的是1.8英寸TFT液晶屏,型號(hào)為GYTF018LB35B0M,由于沒(méi)有自帶漢字字庫(kù),所以需要自行取漢字字模,存入程序存儲(chǔ)空間,通過(guò)函數(shù)調(diào)用實(shí)現(xiàn)字符顯示。使用時(shí)需自行設(shè)定字符顯示的大小,針對(duì)不同的顯示要求,本系統(tǒng)使用了32×32、16×16、8×8三種大小字符顯示效果。
實(shí)時(shí)時(shí)鐘芯片用于顯示當(dāng)前系統(tǒng)運(yùn)行時(shí)間和控制溫度均勻采樣。本控制器采用DS1302作為時(shí)鐘控制芯片。DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,采用SPI三線接口與CPU進(jìn)行同步通信,可采用突發(fā)方式一次傳送多個(gè)字節(jié)的數(shù)據(jù)。實(shí)時(shí)時(shí)鐘提供秒、分、時(shí)、日、星期、月和年記錄,且具有閏年補(bǔ)償功能,工作電壓寬達(dá)2.5 V~5.5 V,采用雙電源供電(主電源與備用電源)。DS1302能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄,因此廣泛用于測(cè)量系統(tǒng)中。控制器的時(shí)鐘電路如圖2所示。
2.1 初始化模塊
初始化模塊由以下函數(shù)組成:(1)讀取上一次存儲(chǔ)在E2PROM中的兩個(gè)設(shè)定值,即設(shè)定溫度值,時(shí)間間隔值;(2)配置數(shù)字溫度傳感器18B20;(3)配置LCD,清屏LCD為黑色,并顯示一些在整個(gè)控制過(guò)程中不變的字符和曲線,如“g”、“℃”等。本模塊在程序開(kāi)始運(yùn)行后,只執(zhí)行一次。
2.4 獲取當(dāng)前時(shí)鐘模塊
通過(guò)函數(shù)Read_RTC(unsigned char *pdate_r),將DS1302當(dāng)前時(shí)鐘數(shù)據(jù)讀入到date_r[7]數(shù)組中,調(diào)用方式為:Read_RTC(date_r)。其中date_r[7]數(shù)組中每位依次表示為秒、分、時(shí)、日、月、年、周,且均為BCD碼。所以date_r[0]代表了當(dāng)前的秒數(shù),date_r[3]位表示了當(dāng)前代表的天數(shù)。獲取了當(dāng)前的時(shí)鐘信息后,通過(guò)函數(shù)date2string(unsigned char *pdate_dispstr)轉(zhuǎn)換為相應(yīng)的字符串,然后調(diào)用字符串顯示函數(shù)在液晶屏上顯示。本系統(tǒng)為了方便記錄當(dāng)前系統(tǒng)已運(yùn)行的時(shí)間,需設(shè)置相應(yīng)按鍵,用于時(shí)鐘清零[4]。
評(píng)論