曾麗麗,李瑞盈,朱齊媛(嶺南師范學(xué)院信息科學(xué)與技術(shù)學(xué)院,廣東湛江524048)
基于51單片機(jī)的自動(dòng)恒溫控制電路的設(shè)計(jì)
曾麗麗,李瑞盈,朱齊媛*
(嶺南師范學(xué)院信息科學(xué)與技術(shù)學(xué)院,廣東湛江524048)
本文以ATMEL公司的AT89C51為控制核心,采用數(shù)字溫度傳感器DS18B20采集水溫?cái)?shù)據(jù),通過繼電器控制加熱,使水溫達(dá)到50℃到70℃的設(shè)定溫度范圍內(nèi),從而實(shí)現(xiàn)自動(dòng)恒溫控制。本設(shè)計(jì)在很大程度上可以實(shí)現(xiàn)對(duì)溫度的控制,同時(shí)也提高了單片機(jī)的開發(fā)能力,具有一定的實(shí)用性。
51單片機(jī);溫度傳感器;恒溫控制
在國外,關(guān)于恒溫控制的課題研究起步較早,世界上各國在技術(shù)上發(fā)展很快,一些國家已經(jīng)在實(shí)現(xiàn)自動(dòng)化的基礎(chǔ)上向著完全自動(dòng)化、無人化方向發(fā)展。而我國關(guān)于恒溫控制的課題研究起步較晚,目前在恒溫控制技術(shù)這方面的總體技術(shù)處于20世紀(jì)80年代中后期水平,成熟產(chǎn)品主要以“點(diǎn)位”控制為主。由于這些溫度控制系統(tǒng)都具有非線性時(shí)變、響應(yīng)速度慢、時(shí)滯和的動(dòng)態(tài)特性,能適應(yīng)一般溫度系統(tǒng)的控制,難以準(zhǔn)確地實(shí)現(xiàn)良好的控制性能[1]。本文介紹了一種自動(dòng)恒溫控制系統(tǒng),利用單片機(jī)AT89C51再結(jié)合PID控制調(diào)節(jié)實(shí)現(xiàn)水溫的智能控制,采用DS18B20讀出溫度,對(duì)水溫進(jìn)行調(diào)節(jié)處理,使溫度可以保持在設(shè)定的范圍內(nèi),并在此基礎(chǔ)上并通過液晶顯示屏實(shí)現(xiàn)當(dāng)前溫度的實(shí)時(shí)顯示。
本系統(tǒng)以AT89C51單片機(jī)為核心,加上電源電路、溫度采集電路、溫度設(shè)定及顯示電路、保護(hù)電路等部分組成。系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。
1.1單片機(jī)系統(tǒng)
單片機(jī)是整個(gè)控制系統(tǒng)的核心,是整個(gè)控制系統(tǒng)的中樞神經(jīng)。在選擇單片機(jī)時(shí),主要考慮到單片機(jī)的處理速度、數(shù)據(jù)儲(chǔ)存能力、價(jià)格以及通信方式,采用ATMEL公司的AT89C51單片機(jī)作為系統(tǒng)控制器。該單片機(jī)具有算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,可用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且其功耗低、體積小、成本低等優(yōu)點(diǎn),有效水溫采集和實(shí)時(shí)顯示以及加熱裝置進(jìn)行控制[2]。
1.2溫度采集模塊
溫度采集模塊采集實(shí)時(shí)水溫,當(dāng)水溫低于設(shè)定溫度值則加熱裝置自動(dòng)啟動(dòng),相反,當(dāng)水溫高于設(shè)定溫度值則加熱裝置自動(dòng)關(guān)閉。本文采用DS18B20作為溫度采集模塊芯片。DSl8B20是DALLAS公司生產(chǎn)的單線數(shù)字溫度傳感器芯片,一種具有精度更高、適用電壓更寬、采用單總線、可組網(wǎng)等優(yōu)點(diǎn),在實(shí)際應(yīng)用中可以將模擬信號(hào)轉(zhuǎn)換為串行數(shù)字信號(hào),以供單片機(jī)處理。它的供電范圍為+3.0V~+5.5V,測(cè)溫范圍為-55~+125℃,溫度檢測(cè)精度可精確到0.0625℃,采用12位數(shù)字讀寫方式[3]。
本文擬設(shè)計(jì)的溫度控制系統(tǒng)水溫變動(dòng)范圍為50~70℃,水溫測(cè)控精度為1℃,使用DS18B20可以很好的滿足該電路。DSl8B20內(nèi)部功能模塊如圖2所示,主要由4部分組成:64位光刻ROM、溫度傳感器、非易失性的溫度報(bào)警觸發(fā)器TH和TI、配置寄存器[4]。
1.3溫度顯示電路
本系統(tǒng)擬采用LCD12864液晶顯示屏作為溫度顯示的元件。128X64是一種圖形點(diǎn)陣液晶顯示其,主要由驅(qū)動(dòng)器/列驅(qū)動(dòng)器及128x64全點(diǎn)陣液晶顯示器組成,可完成圖形顯示,也可顯示8x4個(gè)(16x16)漢字[5]。并且具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級(jí)、二級(jí)簡體中文字庫的點(diǎn)陣圖形液晶顯示模塊。模塊顯示采用了分屏顯示的方式進(jìn)行,分為左半屏和右半屏,它是通過口線CS1和CS2進(jìn)行控制的,高電平有效[6]。利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。低電壓低功耗是其又一顯著特點(diǎn)。
1.4加熱電路
系統(tǒng)根據(jù)溫度采集電路,將檢測(cè)到的當(dāng)前溫度值與下限溫度50℃進(jìn)行比較,判斷是否需要起動(dòng)加熱電路。根據(jù)系統(tǒng)要求,當(dāng)水溫低于下限溫度值50℃時(shí)加熱;當(dāng)水溫大于上限溫度值70℃時(shí),保持當(dāng)前溫度。在正常條件下,使用光耦繼電器可以很容易實(shí)現(xiàn)地通過較高的電壓和電流,工作十分可靠[7]。本系統(tǒng)決定采用繼電器控制加熱電路,如圖3所示。
1.5報(bào)警電路
本系統(tǒng)利用有源蜂鳴器進(jìn)行報(bào)警輸出,采用直流供電。當(dāng)單片機(jī)長期檢測(cè)不到溫度或檢測(cè)的溫度長期達(dá)不到預(yù)定的溫度限值或與預(yù)定的溫度限值相差太大,均亮報(bào)警指示燈。
2.1軟件主程序的設(shè)計(jì)
主程序主要用來實(shí)現(xiàn)對(duì)單片機(jī)和加熱控制系統(tǒng)各部件的初始化,以及實(shí)現(xiàn)各功能子程序的調(diào)用,協(xié)調(diào)各個(gè)功能模塊,采用循環(huán)查詢的方法來實(shí)現(xiàn)對(duì)溫度的采集和控制以及溫度的顯示。主程序流程圖如圖4所示:
2.2子程序
主要由溫度采集子程序、溫度設(shè)定子程序、溫度比較處理子程序、報(bào)警子程序、溫度顯示子程序等組成。溫度采集子程序主要是運(yùn)用了DS18B20進(jìn)行溫度采集及計(jì)算,溫度設(shè)定子程序用于對(duì)系統(tǒng)進(jìn)行設(shè)定適合的溫度范圍[8];溫度處理比較子程序把采集的實(shí)際溫度與設(shè)定溫度值比較,調(diào)用PID算法[9],輸出控制信號(hào);報(bào)警子程序用于控制非法輸入溫度值。顯示子程序用于顯示設(shè)定溫度和實(shí)際溫度。其中PID調(diào)節(jié)程序、溫度比較程序、溫度處理子程序如下所示://PID初始化
voidPIDInit(structPID*pp)
{memset(pp,0,sizeof(structPID));
}
unintPIDCalc(structPID*pp)
{
unintdError,Error,pError;
Error=set_Temperature-Temperature;//ek
pError=Error-pp->LastError;//ek-e(k-1)
dError=Error-2*pp->LastError+pp->PrevError;//e(k)-2*e(k-1)+e(k-2)
pp->PrevError=pp->LastError;
pp->LastError=Error;
return(pp->Proportion*pError+pp->Integral*Error+pp->Derivative*dError);//增量型PID返回值
}
//溫度比較
voidcompare_temperature()
{unchari;
if(set_Temperature>Temperature)
{if(set_Temperature-Temperature>20)
{JR=0;pwml=0xff;pidz=0;
}
else
{for(i=0;i<10;i++)
{pidz=PIDCalc(&pidfh);pwml=pidz;pwm();
}}}
if(set_Temperature<=Temperature)
{JR=1;pwml=0x00;pidz=0;
}}
//溫度處理
voidchuliwendu(unchargaowei,unchardiwei)
{Temperature=(diwei+gaowei*256)*(0.0625*10);//Temperature=125
shiwei=Temperature/100;gewei=Temperature/10%10;xiaoshu=Temperature%10;}
本文介紹了基于AT89C51單片機(jī)的自動(dòng)恒溫控制電路,概述了電路的總體設(shè)計(jì),硬件結(jié)構(gòu)的各個(gè)模塊以及軟件設(shè)計(jì)的主體思路,運(yùn)用數(shù)字式溫度傳感器DS18B20采集溫度,電路設(shè)計(jì)簡單,成本低廉,工作性能可靠,有較高的推廣價(jià)值。該設(shè)計(jì)方案的運(yùn)行結(jié)果如圖4.1所示:
[1]Shiuh-JerHuang,Hung-YiChen.《Un-symmetricInputTemperatureControlbyusingFuzzySlidingModeControllerwithGainAuto-tuning》[M].InternationalJournalofControl,Automation,andSystems.201412(2):422-430.
[2]宋慧,王智檀.《基于單片機(jī)的溫度控制系統(tǒng)研究》[J].信息工程,2014.
[3]張齊.《單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì)——基于C51的Proteus仿真實(shí)驗(yàn)與解題指導(dǎo)》[M].電子工業(yè)出版社,2011.
[4]劉坤,趙紅波,張憲棟.《51單片機(jī)C語言應(yīng)用開發(fā)技術(shù)大全(第
2版)》[M].人民郵電出版社,2012.
[5]孫鵬.《51單片機(jī)綜合學(xué)習(xí)系統(tǒng)——12864點(diǎn)陣型液晶顯示篇》[J].電子制作,2008.
[6]張志科,趙玉建.《點(diǎn)陣液晶顯示屏SG12864-01D應(yīng)用實(shí)踐》[J].現(xiàn)代顯示,2009(105).
[7]孫明超,靳亞林,肖術(shù)雷.基于AT89C51單片機(jī)的水溫控制系統(tǒng)[J].數(shù)字技術(shù)與應(yīng)用,2011.
[8]黃曉林.一種實(shí)用型智能恒溫控制系統(tǒng)設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2011(30).
[9]王小虎,盧超.基于PID算法的溫度控制系統(tǒng)的設(shè)計(jì)[J].實(shí)驗(yàn)室科學(xué),2009.
廣東省大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目
曾麗麗,在讀本科生。