




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于PID的水溫控制系統(tǒng)設(shè)計(jì)摘要本次設(shè)計(jì)采用proteus仿真軟件,以AT89C51單片機(jī)做為主控單元,運(yùn)用PID控制算法,仿真實(shí)現(xiàn)了一個(gè)恒溫控制系統(tǒng)。設(shè)計(jì)中使用溫度傳感器DS18B20采集實(shí)時(shí)溫度,不需要復(fù)雜的信號(hào)調(diào)理電路和A/D轉(zhuǎn)換電路,能直接與單片機(jī)完成數(shù)據(jù)的采集和處理,使用PID算法控制加熱爐仿真模型進(jìn)行溫度控制,總體實(shí)現(xiàn)了一個(gè)恒溫控制仿真系統(tǒng)。系統(tǒng)設(shè)計(jì)中包含硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分,硬件設(shè)計(jì)包含顯示模塊、按鍵模塊、溫度采集模塊、溫度加熱模塊。軟件設(shè)計(jì)的部分,采用分層模塊化設(shè)計(jì),主要有:鍵盤掃描、按鍵處理程序、液晶顯示程序、繼電器控制程序、溫度信號(hào)處理程序。另外以AT89C51單片機(jī)為
2、控制核心,利用PID控制算法提高了水溫的控制精度,使用PID控制算法實(shí)施自動(dòng)控制系統(tǒng),具有控制參數(shù)精度高、反映速度快和穩(wěn)定性好的特點(diǎn)。關(guān)鍵詞:proteus仿真,PID,AT89C51,DS18B20溫度控制目錄1系統(tǒng)總體設(shè)計(jì)方案論證11.1 設(shè)計(jì)要求11.2 總體設(shè)計(jì)方案22系統(tǒng)的硬件設(shè)計(jì)31 系統(tǒng)硬件構(gòu)成概述31 各單元總體說明41 按鍵單元51 LCD液晶顯示單元61 溫度測試單元71 溫度控制器件單元83恒溫控制算法研究(PID)錯(cuò)誤!未定義書簽。PID控制器的設(shè)計(jì)7PID算法的流程實(shí)現(xiàn)方法與具體程序104系統(tǒng)的軟件設(shè)計(jì)14統(tǒng)軟件設(shè)計(jì)概述14系統(tǒng)軟件程序流程及程序流程圖15溫度數(shù)據(jù)顯示
3、模塊分析16測試分析185模擬仿真結(jié)果錯(cuò)誤!未定義書簽。1系統(tǒng)總體設(shè)計(jì)方案論證1.1設(shè)計(jì)要求一種基于數(shù)字PID和單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)。要求如下:1、超調(diào)量10%2、溫度可調(diào),范圍;K1=50度K2=60度K3=70度K4=80度3、人一機(jī)對(duì)話方便4、溫度誤差土C1.2總體設(shè)計(jì)方案在仿真設(shè)計(jì)中,先通過按鍵設(shè)置溫度,然后通過溫度傳感器DS18B20,從環(huán)境中采集溫度,由單片機(jī)獲取采集的溫度值,經(jīng)過處理后,可得到當(dāng)前環(huán)境溫度中一個(gè)比較穩(wěn)定的溫度值,并且通過LCD液晶顯示。再去根據(jù)當(dāng)前設(shè)定的溫度值進(jìn)行比較,溫度未達(dá)到預(yù)定的下限溫度時(shí),單片機(jī)將通過P2.6口連接的RELAY輸出高電平控制信號(hào)來驅(qū)動(dòng)R
4、L1,使得加熱棒工作,為系統(tǒng)提供熱量,來升高溫度。溫度上升到預(yù)定上限溫度時(shí),單片機(jī)將通過P2.6口連接的RELAY輸出低電平控制信號(hào)來驅(qū)動(dòng)RL1,使得加熱棒停止加熱,讓溫度慢慢回落3。工作原理圖如圖1.1所示:代開阡溫在設(shè)計(jì)中使用溫度傳感器DS18B20采集實(shí)時(shí)溫度,使用PID算法控制加熱爐仿真模型進(jìn)行溫度控制。DS18B20是DALLAS公司生產(chǎn)的經(jīng)典的數(shù)字溫度傳感器,具有低功耗、高性能、抗干擾能力、微型化、強(qiáng)易配處理器等等優(yōu)點(diǎn),它特別適合用于多點(diǎn)溫度測控的系統(tǒng),它可直接將溫度轉(zhuǎn)化成數(shù)字信號(hào),交給單片機(jī)處理,并且在同一總線上可掛接多個(gè)傳感器芯片,進(jìn)行范圍性的溫度檢測。在其內(nèi)部集成了A/D轉(zhuǎn)換
5、器,可使電路結(jié)構(gòu)更簡單,且減少了溫度測量轉(zhuǎn)換時(shí)的精度損失。數(shù)字溫度傳感DS18B20只用一個(gè)引腳,即可與單片機(jī)進(jìn)行連接了,這樣大大的減少了設(shè)計(jì)中接線麻煩的問題,使得單片機(jī)可以節(jié)約許多端口。DS18B20芯片的體積又比較小,且還是單線與主控芯片連接,于是在實(shí)際運(yùn)用中,常常把數(shù)字溫度傳感器DS18B20做成小型的測量溫度的探頭,即使是一些狹小的位置也能很方便的檢測到,使溫控系統(tǒng)發(fā)揮最大的作用4o在本仿真設(shè)計(jì)中DS18B20與51單片機(jī)的P3.4口鏈接。DS18B20可以仿真設(shè)置環(huán)境溫度,來完成設(shè)計(jì)要求。本次設(shè)計(jì)采用proteus仿真軟件,以AT89C51單片機(jī)做為主控單元。51單片機(jī)上連接晶振和復(fù)
6、位電路,保證單片機(jī)的正常運(yùn)行。P0口與LCD液晶連接,顯示測量結(jié)果。P1.0,P1.4,P3.3,P3.4分別與4個(gè)控制按鍵連接。由AT89C51的端口豐富使得整個(gè)系統(tǒng)設(shè)計(jì)起來方便簡單,線路清晰,且AT89C51是一個(gè)高性能,低功耗的CMOS8位單片機(jī),AT89C51設(shè)計(jì)和配置了振蕩頻率可為0Hz,在實(shí)際的應(yīng)用中性價(jià)比很高,是溫控系統(tǒng)的不二選擇。本設(shè)計(jì)中選擇AT89C51做為主控單位也是考慮到了實(shí)際的需求和做此設(shè)計(jì)的意義的5。2系統(tǒng)的硬件設(shè)計(jì)系統(tǒng)硬件構(gòu)成概述本章主要介紹本次設(shè)計(jì)中的硬件設(shè)計(jì)部分,其中包含:顯示模塊、按鍵掃描模塊、溫度采集模塊、溫度加熱模塊。各單元總體說明1、顯示模塊:本設(shè)計(jì)中采
7、用LCD液晶顯示溫度值,其中最后一位為小數(shù)位。2、按鍵模塊:本設(shè)計(jì)中采用5按鍵設(shè)置,第一按鍵為復(fù)位按鍵,第2、3、4、5按鍵為溫度檔位按鍵,連接上拉電阻使其未按鍵時(shí)能夠保持高電平。3、溫度采集模塊:本次設(shè)計(jì)中使用溫度傳感器DS18B20采集實(shí)時(shí)溫度,使用PID算法控制加熱爐仿真模型進(jìn)行溫度控制,數(shù)字溫度傳感器DS18B20只需一個(gè)引腳,即可與單片機(jī)進(jìn)行通信,在設(shè)計(jì)中將DS18B20與51單片機(jī)的P3.4口連接,用其來完成溫度的測量6。4、溫度加熱模塊:本設(shè)計(jì)采用加熱棒來進(jìn)行溫度值的控制,具配有功率顯示表,以便在仿真中與溫度傳感器DS18B20相對(duì)應(yīng),便于統(tǒng)計(jì)。加熱棒與光電耦合器連接,光電耦合器
8、通過RELAY與51單片機(jī)的P2.6口連接。通過51單片機(jī)發(fā)送信號(hào)來控制加熱棒的運(yùn)作。按鍵單元一般的鍵盤設(shè)計(jì)采用的是硬件設(shè)計(jì),可是其在仿真設(shè)計(jì)中連接,線路會(huì)比較麻煩。所以在本此設(shè)置中我采用的是5按鍵軟件控制,第一個(gè)按鍵為復(fù)位按鍵,其他兩個(gè)為檔位調(diào)節(jié)按鍵,K1為50度、K2為60度、K3為70度、K4為80度,方便簡潔,線路清晰設(shè)計(jì)起來也較為方便。連接上上拉電阻,使其當(dāng)未有按鍵按下時(shí),各各按鍵位都處于高電平。按鍵操作說明:1號(hào)按鍵為復(fù)位設(shè)置按鍵,第一次按下它時(shí),1號(hào)按鍵位將處于低電平,LCD液晶將會(huì)顯示未加熱時(shí)的溫度,此時(shí),可通過檔位按鍵設(shè)置溫度,然后進(jìn)行其他功能模塊的操作。電路如圖3.1所示:
9、圖3.1按鍵電路溫度測試單元在本設(shè)計(jì)中溫度測試采用溫度芯片DS18B20與51單片機(jī)的P3.4口連接。此集成芯片,可以很好的減少外界的干擾。其內(nèi)部集成A/D轉(zhuǎn)換器,使得電路結(jié)構(gòu)更簡單,且減少了溫度測量轉(zhuǎn)換時(shí)的精度損失,從而使測量的溫度值更為精確,具有實(shí)在的設(shè)計(jì)意義。且數(shù)字溫度傳感器DS18B20只用一個(gè)引腳,即可與單片機(jī)進(jìn)行通信了,大大的減少了接線麻煩的問題,使得單片機(jī)更加具擴(kuò)展性。由于DS18B20芯片的小型化,通過單條數(shù)據(jù)線,就可以和主電路連接,在實(shí)際應(yīng)用中,可把數(shù)字溫度傳感器DS18B20做成測溫探頭,可方便的探入到狹小的地方,從而增加了實(shí)用性9。DS18B20的開始運(yùn)作時(shí),首先要做的是
10、復(fù)位工作,即在開始工作前,51單片機(jī)將會(huì)給DS18B20當(dāng)總先發(fā)送一個(gè)不小于480us的低電平信號(hào),對(duì)其進(jìn)行復(fù)位。DS18B20在接收到這個(gè)信號(hào)后的1560us內(nèi)會(huì)回發(fā)一個(gè)芯片的存在脈沖。為了接收存在脈沖,數(shù)據(jù)當(dāng)總線將會(huì)被控制器拉高,存在脈沖是一個(gè)60240us的低電平信號(hào)。接下去將進(jìn)行51單片機(jī)與DS18B20間的通信。51單片機(jī)發(fā)送控制的指令共有5指令,而每一個(gè)工作周期只可以發(fā)送一條指令。5條指令分別為:讀取數(shù)據(jù)、指定匹配的芯片、跳躍ROM、芯片搜索、報(bào)警芯片搜索。接著51單片機(jī)發(fā)送存儲(chǔ)器操作指令(在指令發(fā)送給DS18B20后,馬上就發(fā)送存儲(chǔ)器操作指令了)。存儲(chǔ)器指令的功能就是控制DS18
11、B20怎么樣進(jìn)行工作。DS18B20同51單片機(jī)的接線如圖3.4所示:見圖可知DS18B20只需與單片機(jī)的一個(gè)端口連接即可,不過當(dāng)總線為開漏需要外接一個(gè)上拉電阻R2,為4.7KQo溫度控制器件單元在本次設(shè)計(jì)中,是采用加熱棒通過PID算法來對(duì)溫度進(jìn)行控制的,以便在仿真中與溫度傳感器DS18B20相對(duì)應(yīng),便于統(tǒng)計(jì)。加熱棒與光電耦合器連接,光電耦合器通過RELAY與51單片機(jī)的P2.6口連接。51單片機(jī)通過RELAY口向光電耦合器發(fā)送高電平時(shí),無電流流過,光電耦合器將不導(dǎo)通,繼電器也不能導(dǎo)通,繼電器的線圈無電流通過,RL1打向電源處,加熱棒通電開始工作加熱,可以看出加熱棒提升的溫度。當(dāng)測量到的溫度值
12、超出先前設(shè)定的預(yù)期溫度值上限時(shí),51單片機(jī)通同過RELAY口向光電耦合器發(fā)送低電平時(shí),光電耦合器將導(dǎo)通,有電流流過,使得繼電器也導(dǎo)通,繼電器的線圈有電流通過,RL1打向繼電器線圈,加熱棒斷開連接,停止工作,使溫度慢慢的回落。溫控系統(tǒng)連接方法如圖3.5所示:4恒溫控制算法研究(PID)4.1PID控制器的設(shè)計(jì)PID控制是目前在溫度控制中應(yīng)用最廣泛的一種控制算法,其核心思想是按設(shè)定值與測量值之間的偏差比例、偏差的積累和偏差變化的趨勢來控制輸出量,即根據(jù)偏差值來計(jì)算控制量。數(shù)字PID控制律的實(shí)現(xiàn),需采用數(shù)值逼近法,當(dāng)采樣的周期相當(dāng)短時(shí),可以用用差商代替微分,求和代替積分,可以有如下近似變換10。t=
13、KTtkk0etdt=ejTejj=0j=0detekT-el.k-1Tek-ek-1=(4.1)dtTT式中,k為采樣的序號(hào),k=l,2,;T為采樣的周期。在離散化的過程中,采樣時(shí)間T須足夠的短,不然難以確保精度。在運(yùn)算時(shí),把e(kT)表示成e(k祥,省去了To則可推算出離散的PID表達(dá)式寫成:ku(k)=Kpe(k)+K1£e(j)+KdHk)e(k-1,(4.2)j=S式中,k為采樣的序號(hào),k=1,2,;u(k)是第k次采樣時(shí),計(jì)算機(jī)輸出的值;e(k展第k次采樣時(shí)輸入的偏差值;e(k-1)是第(k-1)次采樣時(shí)輸入的偏差值;K1是積分系數(shù),K=KpT;Kd是積分系數(shù),KD=Kp
14、Td。TiT在實(shí)際的應(yīng)用中,通常采用增量式PID控制算法,即數(shù)字控制器輸出只是控制量的增量,該算法編程簡單,數(shù)據(jù)可以遞推使用,占用存儲(chǔ)空間少,運(yùn)算快。根據(jù)遞推原理可得:4恒溫控制算法研究(PID)4.1PID控制器的設(shè)計(jì)PID控制是目前在溫度控制中應(yīng)用最廣泛的一種控制算法,其核心思想是按設(shè)定值與測量值之間的偏差比例、偏差的積累和偏差變化的趨勢來控制輸出量,即根據(jù)偏差值來計(jì)算控制量。數(shù)字PID控制律的實(shí)現(xiàn),需采用數(shù)值逼近法,當(dāng)采樣的周期相當(dāng)短時(shí),可以用用差商代替微分,求和代替積分,可以有如下近似變換10。t=KTtkk0etdt=ejTejj=0j=0detekT-el.k-1Tek-ek-1=
15、(4.1)dtTT式中,k為采樣的序號(hào),k=l,2,;T為采樣的周期。在離散化的過程中,采樣時(shí)間T須足夠的短,不然難以確保精度。在運(yùn)算時(shí),把e(kT)表示成e(k祥,省去了To則可推算出離散的PID表達(dá)式寫成:ku(k)=Kpe(k)+K1£e(j)+KdHk)e(k-1,(4.2)j=S式中,k為采樣的序號(hào),k=1,2,;u(k)是第k次采樣時(shí),計(jì)算機(jī)輸出的值;e(k展第k次采樣時(shí)輸入的偏差值;e(k-1)是第(k-1)次采樣時(shí)輸入的偏差值;K1是積分系數(shù),K=KpT;Kd是積分系數(shù),KD=KpTd。TiT在實(shí)際的應(yīng)用中,通常采用增量式PID控制算法,即數(shù)字控制器輸出只是控制量的增
16、量,該算法編程簡單,數(shù)據(jù)可以遞推使用,占用存儲(chǔ)空間少,運(yùn)算快。根據(jù)遞推原理可得:ku(k1)=Kpdk1)+K|Ze(j)+Kd&K1)e(k2y(4.3)j=0公式(4.2)與公式(4.3)相減,即得到增量式PID控制算法(4.4):u(k)=KPIlk)-e(k-1KIe(k)+KDWk)-2e(k-1)+e(k-2X(4.4)本次設(shè)計(jì)中,控制器的設(shè)計(jì)采用增量數(shù)字PID控制算法的功能,可以比較靈活的調(diào)節(jié)控制信號(hào)的導(dǎo)通時(shí)間來控制溫度值控制的工作。能夠基本滿足溫度控制的要求。4.2PID算法的流程實(shí)現(xiàn)方法與具體程序本系統(tǒng)設(shè)計(jì)的溫度控制系統(tǒng)是與光電耦合器連接的加熱爐。傳統(tǒng)的方法是:當(dāng)測量
17、的環(huán)境溫度達(dá)到設(shè)定值時(shí),加熱爐不在加熱狀態(tài),可是此時(shí)加熱爐的溫度仍然會(huì)高與設(shè)定的溫度值,加熱爐還是會(huì)起到加熱的作用,使得系統(tǒng)的溫度經(jīng)常繼續(xù)要升高一會(huì)后才能開始下降。當(dāng)下降到設(shè)定的下限溫度值時(shí),溫控系統(tǒng)會(huì)促使加熱爐開始工作,對(duì)系統(tǒng)進(jìn)行加熱,此過程需要一定的時(shí)間,所以往往又會(huì)下降一定溫度,才能開始上升溫度。所以傳統(tǒng)的方法往往會(huì)出現(xiàn)一定的誤差,此誤差就是溫度的慣性引起的110PID算法是PID模糊控制技術(shù)的核心部分,通過比例、積分、微分三方面的結(jié)合與調(diào)整構(gòu)成一個(gè)反饋控制,可解由于溫度的慣性而產(chǎn)生的誤差。e(t)=n0(t)-n(t蟒過PID控制器處理后可輸出電壓的控制信號(hào)u(t),從而反饋調(diào)節(jié)溫度。
18、數(shù)字PID的控制示意圖如圖4.1所示:圖4.1數(shù)字PID的控制實(shí)驗(yàn)中最主要的就是PID參數(shù)的選擇,它決定著整個(gè)溫度控制的精確度。我們可以根據(jù)具體情況的要求,來調(diào)節(jié)合適的參數(shù)。P為比例系數(shù),當(dāng)在一定范圍內(nèi)若是調(diào)節(jié)增加P時(shí),系統(tǒng)的反映將會(huì)變的靈敏,穩(wěn)態(tài)的誤差值將會(huì)變小,可要是P值過大時(shí)的話,同樣會(huì)時(shí)系統(tǒng)變得不穩(wěn)定。P值過于小了,系統(tǒng)的反映又會(huì)變的很慢??梢姷模琍值要是選取不恰當(dāng),測量值就會(huì)和設(shè)定值的偏差越來越大,要是出現(xiàn)了這樣的問題時(shí),可將P值的符號(hào)取反也I為積分系數(shù),I的值越小積分的作用就會(huì)越強(qiáng),積分作用強(qiáng)了就會(huì)導(dǎo)致系統(tǒng)的穩(wěn)定性下降,不過T值小了,穩(wěn)態(tài)所產(chǎn)生的誤差將會(huì)減小。D為微分控制,微分控制
19、可以改善動(dòng)態(tài)的特性,當(dāng)D偏大時(shí),超調(diào)量隨之變大,調(diào)節(jié)時(shí)間會(huì)減短;D偏小時(shí),超調(diào)量同樣變大,不過調(diào)節(jié)時(shí)間就會(huì)比較長,只有D合適時(shí),才能使超調(diào)量較小,調(diào)節(jié)時(shí)間也較短。調(diào)試時(shí),只能參考參數(shù)對(duì)系統(tǒng)控制過程的變化趨勢,來對(duì)參數(shù)調(diào)整來先比例,后積分,再微分的步驟慢慢調(diào)試,一直湊到滿意的結(jié)果為止。數(shù)字PID的差分方程:.Tn.Tn,u(n)=Kpe(n計(jì)一工e(i計(jì)一b(n)-e(n-1J+u0=up(n)+uI(n)+uD(n)+u0Ti-T(4.5)Tn在上式中,up(n)=Kpe(n)稱為比例項(xiàng);Ui=Kp一工e(i)稱為積分項(xiàng);Tii.0uDn=KpTDen-en-1標(biāo)為微分項(xiàng)。得到增量式公式為:(
20、4.6)un)=a0enaen-1a2en-2在此式中,a°=Kp號(hào)+號(hào)),a2=-KPPID的具體算法程序如下13EnumY,U,R,Ts,KdKp;/Y采集量、U控制量、R設(shè)定量、Ts采樣時(shí)間、Kd微分、Kp比例pintpara6,ptr,out;/out是從PID()得到的控制量intr,Kp,Kd,Ts,e2,e1,e0,u;/*/VoidinitPID()/初始化PID函數(shù)paraR=20;paraKp=2;paraKd=2;paraTs=1)VoidPID()paraY=(int)(ad_data);r=paraR;e0=e1;e1=e2;e2=r-paraY/10;Kp
21、=paraKp;Kd=paraKd;ts=paraTs;u=r+Kp*e2+Kd*(e2-e1);,if(u<0)u=0;/控制量限制if(u>200)u=200;parau=u/10;out=parau;)VoidTem_timer0()interrupt1/采樣時(shí)間THO=tim0>>8;TL0=tim0;If(tm+>out)TEM=1;elseTEM=0;if(m>200)tm=0;if(out<10)TEM=1;if(timecnt+=100)timecnt=0;)Voidtimer1()interrupt3TH1=timer1()>&
22、gt;8;TLI=tim1;If(dealCS=0)wdCtrl=paraR;if(wdCtrl-(int)(ad_data)/10)>10)out=200;elseif(int)(ad_data)/10-wdCtrl)>2)out=0;elseout=CtrltabwdCtrl+2-(int)(ad_data)/10;Elseif(tx+>=ts)PID();t=0;)5系統(tǒng)的軟件設(shè)計(jì)5.1統(tǒng)軟件設(shè)計(jì)概述在恒溫PID控制系統(tǒng)中軟件是整個(gè)系統(tǒng)的核心,在軟件設(shè)計(jì)中采用分層模塊化設(shè)計(jì),其中主要的模塊包含:人機(jī)交互模塊、數(shù)據(jù)顯示模塊、PID控制器模塊、信號(hào)采集模塊、超、低溫報(bào)警模塊
23、幾部分14o1、人機(jī)交互模塊,是通過3位按鍵來實(shí)現(xiàn)的。第一個(gè)按鍵為復(fù)位按鍵,其他兩個(gè)為調(diào)節(jié)按鍵,當(dāng)有鍵按下時(shí)該鍵位將會(huì)處于低電平狀態(tài),按鍵連接上了電阻,使其當(dāng)未有按鍵按下時(shí),各各按鍵位都處于高電平150本設(shè)計(jì)中的按鍵具體原理與操作方法,在第三章的按鍵單元中已經(jīng)做了詳細(xì)的說明。2、數(shù)據(jù)顯示模塊,是通過LCD液晶實(shí)現(xiàn)的。采用的是通過動(dòng)態(tài)顯示法,分時(shí)分別控制LCD液晶的COM端,使每個(gè)位輪流顯示,每位點(diǎn)亮的時(shí)間問隔大概為1ms左右。3、PID控制器模塊,本設(shè)計(jì)是運(yùn)用PID控制算法,仿真實(shí)現(xiàn)一個(gè)恒溫控制系統(tǒng)。在上一章中我們已經(jīng)描述了e(t)=n/t)-n(t),電壓的才S制信號(hào)u(t),從而反饋調(diào)節(jié)溫
24、度。設(shè)計(jì)中最主要的就是PID參數(shù)的選擇,它決定著整個(gè)溫度控制的精確度。我們可以根據(jù)具體情況的要求,來調(diào)節(jié)合適的參數(shù)。對(duì)PID函數(shù)進(jìn)行初始化時(shí),需設(shè)置函數(shù)參數(shù),這些參數(shù)都是根據(jù)實(shí)驗(yàn)測定獲得的,具體參數(shù)在上一章PID算法研究中有詳細(xì)說明。4、信號(hào)采集模塊,本設(shè)計(jì)中是運(yùn)用DS18B20進(jìn)行溫度采集的,在DS18B20開始運(yùn)作時(shí),首先要做的是復(fù)位工作,DS18B20在接收到這個(gè)信號(hào)后的1560us內(nèi)會(huì)回發(fā)一個(gè)芯片的存在脈沖。為了接收存在脈沖,數(shù)據(jù)當(dāng)總線將會(huì)被控制器拉高,存在脈沖是一個(gè)60240us的低電平信號(hào)。接下去將進(jìn)行51單片機(jī)與DS18B20間的通信。接著51單片機(jī)發(fā)送存儲(chǔ)器操作指令(在指令發(fā)送
25、給DS18B20后,馬上就發(fā)送存儲(chǔ)器操作指令了)??刂艱S18B20怎么樣進(jìn)行工作160系統(tǒng)軟件程序流程及程序流程圖系統(tǒng)軟件流程如圖5.2所小:圖5.2系統(tǒng)軟件流程圖程序流程為:在程序開始的時(shí),先設(shè)置初始化,通過按鍵設(shè)置預(yù)定溫度值,然后通過數(shù)碼管來顯示當(dāng)前的溫度,再比較設(shè)定的預(yù)期溫度與測量溫度值的大小,將比較的信息通過繼電器,去根據(jù)當(dāng)前設(shè)定的溫度值的上下限,當(dāng)測量到的溫度值未達(dá)到先前設(shè)定的預(yù)期溫度值下限時(shí),使單片機(jī)向蜂鳴器發(fā)送高電平信號(hào)使其發(fā)出警報(bào)生,再通過RELAY口向光電耦合器發(fā)送高電平時(shí),無電流流過,光電耦合器將不導(dǎo)通,繼電器也不能導(dǎo)通,繼電器的線圈無電流通過,RL1打向電源處,加熱棒通
26、電開始工作加熱,可以根據(jù)功率表的數(shù)據(jù)顯示看出加熱棒提升的溫度。當(dāng)測量到的溫度值超出先前設(shè)定的預(yù)期溫度值上限時(shí),使單片機(jī)將向蜂鳴器發(fā)送高電平信號(hào)使其發(fā)出警報(bào)生,再通過過RELAY口向光電耦合器發(fā)送低電平時(shí),光電耦合器將導(dǎo)通,有電流流過,使得繼電器也導(dǎo)通,繼電器的線圈有電流通過,RL1打向繼電器線圈,加熱棒斷開連接,停止工作,使溫度慢慢的回落。溫度數(shù)據(jù)顯示模塊分析在本次軟件設(shè)計(jì)中,核心的部分就是PID算法的控制與DS18B20溫度采集的實(shí)現(xiàn),PID算法在上文中已經(jīng)做了詳細(xì)的介紹,在此再具體的分析下DS18B20。在本次設(shè)計(jì)我選擇了DS18B20來繼續(xù)溫度檢測,因?yàn)閿?shù)字溫度傳感器DS18B20只需一
27、個(gè)引腳,即可與單片機(jī)進(jìn)行通信了,大大的減少了接線麻煩的問題,使得單片機(jī)更加具擴(kuò)展性。由于DS18B20芯片的小型化,通過單條數(shù)據(jù)線,就可以和主電路連接,可把數(shù)字溫度傳感器DS18B20做成測溫探頭,可方便的探入到狹小的地方,從而增加了實(shí)用性。且本次設(shè)計(jì)采用proteus仿真軟件,在proteus仿真軟件里DS18B20可以隨意設(shè)定溫度,模仿實(shí)際環(huán)境溫度值,便于實(shí)驗(yàn)17。DS18B20數(shù)字溫度傳感器的內(nèi)部包含了高速暫存RAM與用來存儲(chǔ)TH、TL的E2ARM。接受到的數(shù)據(jù)先是存入RAM,經(jīng)檢驗(yàn)后傳送至E2ARM。RAM中的第5個(gè)字節(jié)用與控制溫度的數(shù)字轉(zhuǎn)換分辨率,此分辨率決定DS18B20工作時(shí)溫度
28、轉(zhuǎn)換的先對(duì)應(yīng)的數(shù)值。其中要注意的是設(shè)定的分辨率越高,就需要消耗越多的轉(zhuǎn)換時(shí)間。所以在設(shè)置分辨率時(shí)我們需要有所考慮18oDS18B20在接收到溫度轉(zhuǎn)換的命令后,將溫度值數(shù)據(jù)轉(zhuǎn)換成以二進(jìn)制補(bǔ)碼的形式存儲(chǔ)在RAM中,然后51單片機(jī)再通過單總線接收此數(shù)據(jù),以地位在前高位在后的方式來讀取數(shù)據(jù)。接收數(shù)據(jù)后通過溫度計(jì)算,將得出的溫度值與設(shè)定的TH、TL進(jìn)行比較,51單片機(jī)再根據(jù)比較的結(jié)果做出相應(yīng)的運(yùn)行工作。為此我們?cè)诔绦蛟O(shè)計(jì)中設(shè)計(jì)了下面主要幾個(gè)子程序。首先對(duì)DS18B20進(jìn)行初始化處理voidInit_DS18B20(void)unsignedcharx=0;DQ=0;/單片機(jī)將DQ拉低delay_18B2
29、0(80);/席確延時(shí)大于480usDQ=1;拉高總線delay_18B20(14);x=DQ;/稍做延時(shí)后,如果x=0則初始化成功x=1則初始化失敗delay_18B20(20);)在初始化后,先讓DS18B20讀一個(gè)字節(jié)unsignedcharReadOneChar(void)(unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i-)(DQ=0;/給脈沖信號(hào)dat>>=1;DQ=1;/給脈沖信號(hào)if(DQ)dat|=0x80;delay_18B20(4);)return(dat);)再讓其寫一個(gè)字節(jié),運(yùn)行子程序如下:voidWri
30、teOneChar(unsignedchardat)(unsignedchari=0;for(i=8;i>0;i-)(DQ=0;DQ=dat&0x01;delay_18B20(5);DQ=1;dat>>=1;)TH和接下來設(shè)計(jì)DS18B20的工作狀態(tài),設(shè)置其上、下限報(bào)警溫度分別為TL,且設(shè)置顯示的分辨率為RS,執(zhí)行的子程序如下18:voidsetds18b20(unsignedcharTH,unsignedcharTL,unsignedcharRS)(Init_DS18B20();WriteOneChar(0xCC);/跳過讀序號(hào)列號(hào)的操作WriteOneChar(0
31、x4E);/寫入寫暫存器”命令,修改TH和TL和分辯率配置寄存器/先寫TH,再寫TL,最后寫配置寄存器WriteOneChar(TH);寫入想設(shè)定的溫度報(bào)警上限WriteOneChar(TL);/寫入想設(shè)定的溫度報(bào)警下限WriteOneChar(RS);寫配置寄存器,格式為0R1R01,1111/R1R0=00分辨率婁9位,R1R0=11分辨率為12位最后就是讀取DS18B20的溫度值了,執(zhí)行子程序如下:unsignedchar*ReadTemperature(void)unsignedchartt2;Init_DS18B20();WriteOneChar(0xCC);/跳過讀序號(hào)列號(hào)的操作W
32、riteOneChar(0x44);/啟動(dòng)溫度轉(zhuǎn)換delay_18B20(70);/溫度轉(zhuǎn)化要一段時(shí)間Init_DS18B20();WriteOneChar(0xCC);/跳過讀序號(hào)列號(hào)的操作WriteOneChar(0xBE);/讀取溫度寄存器等(共可讀9個(gè)寄存器)前兩個(gè)就是溫度/delay_18B20(70);tt0=ReadOneChar();/讀取溫度值低位tt1=ReadOneChar();/讀取溫度值高位return(tt);測試分析1、測試環(huán)境仿真環(huán)境溫度2090攝氏度。2、測試方法用調(diào)節(jié)DS18B20,來模擬環(huán)境溫度,通過按鍵來設(shè)置溫度的上、下限與復(fù)位,根據(jù)LCD液晶顯示來觀察
33、結(jié)果。3、測試結(jié)果(1)設(shè)定溫度由20攝氏度到90攝氏度。(2)標(biāo)定溫差三1攝氏度調(diào)節(jié)時(shí)間15s(具體情況隨實(shí)際情況)。(3)靜態(tài)誤差三0.5攝氏度最大超調(diào)量1攝氏度。4、通過仿真測試分析,對(duì)于實(shí)際的室內(nèi)的溫度控制,可以再得出以下2點(diǎn)方法:(1)我們可以通過增加傳感器的個(gè)數(shù),然后算出平均值,這樣可以獲得較為精確的溫度值。(2)在對(duì)環(huán)境溫度的控制環(huán)節(jié)中,我們可采用功率較大的加熱電阻,實(shí)現(xiàn)對(duì)環(huán)境溫度的提升,用風(fēng)扇來對(duì)環(huán)境溫度進(jìn)行降溫處理。51單片機(jī)通過RELAY口向光電耦合器發(fā)送高電平時(shí),無電流流過,光電耦合器將不導(dǎo)通,繼電器也不能導(dǎo)通,繼電器的線圈無電流通過,RL1打向電源處,如圖6.2所示:圖
34、6.217c時(shí)系統(tǒng)電流流向圖此時(shí)加熱棒通電開始工作加熱,可以根據(jù)功率表的數(shù)據(jù)顯示得出加熱棒提升的溫度,如圖6.3所示:51單片機(jī)通同過RELAY口向光電耦合器發(fā)送低電平時(shí),光電耦合器將導(dǎo)通有電流流過,使得繼電器也導(dǎo)通,繼電器的線圈有電流通過,RL1打向繼電器線圈,如圖6.5所示:圖6.541c時(shí)的系統(tǒng)電流流向圖此時(shí)加熱棒斷開連接,停止工作,但是加熱棒還是會(huì)有一定的延遲性,只能結(jié)論本次設(shè)計(jì)采用proteus仿真軟件,以AT89C51單片機(jī)做為主控單元,運(yùn)用PID控制算法,仿真實(shí)現(xiàn)了一個(gè)恒溫控制系統(tǒng)。設(shè)計(jì)中使用溫度傳感器DS18B20采集實(shí)時(shí)溫度,使用PID算法控制加熱棒仿真模型進(jìn)行溫度控制,總體
35、實(shí)現(xiàn)了一個(gè)恒溫控制仿真系統(tǒng)。仿真中先通過按鍵設(shè)置溫度,然后通過溫度傳感器DS18B20,從環(huán)境中采集溫度,由單片機(jī)獲取采集的溫度值,經(jīng)過處理后,可得到當(dāng)前環(huán)境溫度中一個(gè)比較穩(wěn)定的溫度值,并且通過LCD液晶顯示。再去根據(jù)當(dāng)前設(shè)定的溫度值的上下限,溫度未達(dá)到預(yù)定的下限溫度時(shí),同時(shí)通過P2.6口連接的RELAY輸出高電平控制信號(hào)來驅(qū)動(dòng)RL1,使得加熱棒工作,為系統(tǒng)提供熱量,來升高溫度。溫度上升到預(yù)定上限溫度時(shí),同時(shí)通過P2.6口連接的RELAY輸出低電平控制信號(hào)來驅(qū)動(dòng)RL1,使得加熱棒停止加熱,讓溫度慢慢回落。附錄主程序#include<reg51.h>#defineucharunsig
36、nedchar#defineuintunsignedintsbitDQ=P3A4;/ds18b20與單片機(jī)連接口unsignedcharcodeIed=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;uchardatadisdata5;ucharVref=5;uchara6;sbitPIN=P0A7;unsignedinttvalue;/服度值signedinttemp=0;uchartflag;/溫度正負(fù)標(biāo)志signedcharth=40;/上限溫度signedchartl=20;/下限溫度sbitSPEAKER=P1A5;sbi
37、tSET=P1A0;sbitADD=P1A4;sbitSUB=P3A3;unsignedcharnum;程序*/sbitRELAY=P2A6;/*m*LCD1602voiddelay1ms(unsignedintms)/延時(shí)1毫秒(不夠精確的)unsignedinti,j;for(i=0;i<ms;i+)for(j=0;j<100;j+);)voidkeyscan()if(SET=0)delay1ms(10);if(SET=0)num+;if(num=3)num=0;while(!SET);)if(num!=0)if(ADD=0)delay1ms(10);if(ADD=0)if(n
38、um=1)th+;if(th=125)th=tl+1;)if(num=2)(tl+;)while(!ADD);)if(SUB=0)(delay1ms(10);if(SUB=0)(if(num=1)(th-;if(th=(tl+1)th=125;)if(num=2)(tl-;if(tl=-25)tl=th-1;)while(!SUB);)/*DS18B20程序*/voiddelay_18B20(unsignedinti)/施時(shí)1微秒(.while(i-);)voidds1820rst()/*ds1820復(fù)位*/unsignedcharx=0;DQ=1;/DQ復(fù)位delay_18B20(4);/延
39、時(shí)DQ=0;/DQ拉低delay_18B20(100);/精確延時(shí)大于480usDQ=1;拉高delay_18B20(40);)uchards1820rd()/*讀數(shù)據(jù)*/unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i-)DQ=0;/給脈沖信號(hào)dat>>=1;DQ=1;/給脈沖信號(hào)if(DQ)dat|=0x80;delay_18B20(10);return(dat);voidds1820wr(ucharwdata)/*W數(shù)據(jù)*/unsignedchari=0;for(i=8;i>0;i-)DQ=0;DQ=wdata&
40、;0x01;delay_18B20(10);DQ=1;wdata>>=1;read_temp()/*讀取溫度值并轉(zhuǎn)換*/uchara,b;ds1820rst();ds1820wr(0xcc);/*跳過讀序列號(hào)*/ds1820wr(0x44);/*啟動(dòng)溫度轉(zhuǎn)換*/ds1820rst();ds1820wr(0xcc);/*跳過讀序列號(hào)*/ds1820wr(0xbe);/*讀取溫度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff)tflag=0;elsetva
41、lue=tvalue+1;/彳氐于零度tflag=1;tvalue=tvalue*(0.625);/溫度值擴(kuò)大10倍,精確到1位小數(shù)return(tvalue);)/*/voidds1820disp()/M度值顯示(disdata0=tvalue/1000;disdata1=tvalue%1000/100;disdata2=tvalue%100/10;disdata3=tvalue%10;/小數(shù)位/disdata=0;/)if(tflag=0)(P2=0x01;P0=leddisdata0;delay1ms(10);P2=0x02;P0=leddisdata1;delay1ms(10);P2=
42、0x04;P0=leddisdata2;PIN=0;delay1ms(10);P2=0x08;P0=leddisdata3;delay1ms(10);)else(P2=0x01;P0=0xbf;delay1ms(10);P2=0x02;P0=ledtvalue%1000/100;delay1ms(10);P2=0x04;P0=ledtvalue%100/10;PIN=0;delay1ms(10);P2=0x08;P0=ledtvalue%10;delay1ms(10);)voiddisplayth(void)(P2=0x01;P0=0x89;delay1ms(10);if(th>0)(P2=0x02;P0=ledth/100;delay1ms(10);P2=0x04;P0=ledth%100/10;delay1ms(10);P2=0x08;P0=ledth%100%10;delay1ms(10);)else(P2=0x02;P0=0xbf;delay1ms(10);P2=0x04;P0=le
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 卷簾門維修合同協(xié)議書
- 中通快遞解除合同協(xié)議書
- 高新區(qū)合同轉(zhuǎn)讓協(xié)議模板
- 供暖沒有協(xié)議合同
- 開發(fā)合同暫停協(xié)議
- 攤位買賣協(xié)議合同
- 亞灣游艇租賃協(xié)議合同
- 防水涂料代加工協(xié)議合同
- 政府培訓(xùn)協(xié)議合同怎么寫
- 合作股權(quán)協(xié)議合同
- 16G362 鋼筋混凝土結(jié)構(gòu)預(yù)埋件
- GB/T 38532-2020微束分析電子背散射衍射平均晶粒尺寸的測定
- 國家開放大學(xué)酒店管理概論作業(yè)1-4答案
- 核電站工程安全倫理案例分析課件
- 2021年北京回龍觀醫(yī)院醫(yī)護(hù)人員招聘筆試試題及答案解析
- 對(duì)數(shù)的概念說課稿課件
- 地理生物會(huì)考動(dòng)員主題班會(huì)課件
- 農(nóng)產(chǎn)品食品檢驗(yàn)員理論知識(shí)競賽題庫
- 山東中醫(yī)藥大學(xué)中醫(yī)學(xué)(專升本)學(xué)士學(xué)位考試復(fù)習(xí)題
- 農(nóng)夫山泉產(chǎn)品陳列手冊(cè)(共45頁).ppt
- 【原創(chuàng)】《“備-教-學(xué)-評(píng)”目標(biāo)一致性的實(shí)施策略》講座PPT
評(píng)論
0/150
提交評(píng)論