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