畢業(yè)設計--基于單片機的恒溫控制系統(tǒng)設計_第1頁
已閱讀1頁,還剩44頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  1 緒論 </b></p><p>  溫度是表征物體冷熱程度的物理量。在很多生產(chǎn)過程中,特別是在冶金、化工、建材、食品、機械、石油等工業(yè)中,溫度的測量和控制都直接和安全生產(chǎn)、提高生產(chǎn)效率、保證產(chǎn)品質(zhì)量、節(jié)約能源等重大技術經(jīng)濟指標相聯(lián)系。因此,溫度的測量與控制在國民經(jīng)濟各個領域中均受到了相當程度的重視。</p><p>  單片機系統(tǒng)

2、的開發(fā)應用給現(xiàn)代工業(yè)測控領域帶來了一次新的技術革命,自動化、智能化均離不開單片機的應用。將單片機控制方法運用到溫度控制系統(tǒng)中,可以克服溫度控制系統(tǒng)中存在的嚴重滯后現(xiàn)象,同時在提高采樣頻率的基礎上可以很大程度的提高控制效果和控制精度?,F(xiàn)代自動控制越來越朝著智能化發(fā)展,在很多自動控制系統(tǒng)中都用到了工控機,小型機、甚至是巨型機處理機等,當然這些處理機有一個很大的特點,那就是很高的運行速度,很大的內(nèi)存,大量的數(shù)據(jù)存儲器。但隨之而來的是巨額的成本

3、。在很多的小型系統(tǒng)中,處理機的成本占了系統(tǒng)成本的比例高達20%,而對于這些小型的系統(tǒng)來說,配置一個如此高速的處理機沒有任何必要,因為這些小系統(tǒng)追求經(jīng)濟效益,而不是最在乎系統(tǒng)的快速性,所以用成本低廉的單片機控制小型的,而又不是很復雜,不需要大量復雜運算的系統(tǒng)中是非常適合的。 </p><p>  隨著電子技術以及應用需求的發(fā)展,單片機技術得到了迅速的發(fā)展,在高集成度,高速度,低功耗以及高性能方面取得了很大的進展。現(xiàn)

4、在完全可以運用單片機和電子溫度傳感器對某處進行溫度檢測,而且可以很容易地做到多點的溫度檢測,如果對此原理圖稍加改進,還可以進行不同地點的實時溫度檢測和控制。</p><p>  1.1 研究的目的和意義</p><p>  溫度是工業(yè)生產(chǎn)中主要被控參數(shù)之一,溫度控制自然是生產(chǎn)的重要控制過程。工業(yè)生產(chǎn)中溫度很難控制,對于要求嚴格的的場合,溫度過高或過低將嚴重影響工業(yè)生產(chǎn)的產(chǎn)質(zhì)量及生產(chǎn)效率,

5、降低生產(chǎn)效益。這就需要設計一個良好溫度控制器,隨時向用戶顯示溫度,而且能夠較好控制。單片機具有和普通計算機類似的強大數(shù)據(jù)處理能力,結(jié)合PID,程序控制可大大提高控制效力,提高生產(chǎn)效益[1]。</p><p>  例如鋼鐵生產(chǎn)過程中,按照工藝條件的規(guī)定保持一定的溫度才能保證產(chǎn)品質(zhì)量和設備的安全。對電氣設備進行溫度的監(jiān)控,例如高壓開關、變壓器的出線套管等,判斷可能存在的熱缺陷,進而能及時發(fā)現(xiàn)、處理、預防重大事故的發(fā)生

6、。因此研究溫度控制儀具有重要的意義[2]。</p><p>  在單片機溫度測量系統(tǒng)中的關鍵是測量溫度、控制溫度和保持溫度,溫度測量是工業(yè)對象中主要的被控參數(shù)之一。因此,單片機溫度測量則是對溫度進行有效的測量,并且能夠在工業(yè)生產(chǎn)中得到了廣泛的應用,尤其在電力工程、化工生產(chǎn)、機械制造、冶金工業(yè)等重要工業(yè)領域中,擔負著重要的測量任務。在日常生活中,也可廣泛實用于地熱、空調(diào)器、電加熱器等各種家庭室溫測量及工業(yè)設備溫度測

7、量場合[3]。</p><p>  目前市場上熱水器的控制系統(tǒng)大多存在功能單一、操作復雜、控制不方便等問題,很多控制器只具有溫度和水位顯示功能,不具有溫度控制功能.即使熱水器具有輔助加熱功能。也可能由于加熱時間不能控制而產(chǎn)生過燒,從而浪費電能。本文設計的熱水器控制系統(tǒng)以51單片機為檢測控制中心單元,具有溫度設定與控制功能。該控制器和以往顯示儀相比具有性價比高、溫度控制與顯示精度高、使用方便和性能穩(wěn)定等優(yōu)點,提高了

8、電能的使用效率,具有可觀的經(jīng)濟效益和社會效益[4]。</p><p>  1.2 國內(nèi)外發(fā)展狀況</p><p>  溫度控制采用單片機設計的全數(shù)字儀表,是常規(guī)儀表的升級產(chǎn)品。溫度控制的發(fā)展引入單片機之后,有可能降低對某些硬件電路的要求,但這絕不是說可以忽略測試電路本身的重要性,尤其是直接獲取被測信號的傳感器部分,仍應給予充分的重視,有時提高整臺儀器的性能的關鍵仍然在于測試電路,尤其是傳

9、感器的改進?,F(xiàn)在傳感器也正在受著微電子技術的影響,不斷發(fā)展變化。傳感器正朝著小型、固態(tài)、多功能和集成化的方向發(fā)展。 近年來,溫度控制的發(fā)展尤為迅速。國內(nèi)外市場上已經(jīng)出現(xiàn)了多種多樣溫度控制儀表,應用于社會的各個方面。例如能夠進行程序控溫的智能多段溫度控制儀,能夠?qū)崿F(xiàn)數(shù)字PID和各種復雜控制規(guī)律的智能式溫度調(diào)節(jié)器等[5]。</p><p>  水溫系統(tǒng)的傳遞函數(shù)事先難以精確獲得,因而很難判斷哪一種控制方法能夠滿足系統(tǒng)

10、對控制品質(zhì)的要求。但從對控制方法的分析來看,PID控制方法最適合本例采用。另一方面,由于可以采用單片機實現(xiàn)控制過程,無論采用上述哪一種控制方法都不會增加系統(tǒng)硬件成本,而只需對軟件作相應改變即可實現(xiàn)不同的控制方案。因此本系統(tǒng)可以采用PID的控制方式,以最大限度地滿足系統(tǒng)對諸如控制精度、調(diào)節(jié)時間和超調(diào)量等控制品質(zhì)的要求[6]。</p><p>  傳統(tǒng)的一位式模擬控制方案,選用模擬電路,用電位器設定值,反饋的溫度值和

11、設定值比較后,決定加熱或不加熱。其特點是電路簡單,易于實現(xiàn),但是系統(tǒng)所得結(jié)果的精度不高并且調(diào)節(jié)動作頻繁,系統(tǒng)靜態(tài)差大、不穩(wěn)定。系統(tǒng)受環(huán)境影響大,不能實現(xiàn)復雜的控制算法,不能用數(shù)碼管顯示,不能用鍵盤設定。</p><p>  傳統(tǒng)的二位式模擬控制方案,其基本思想與方案一相同,但由于采用上下限比較電路,所以控制精度有所提高。這種方法還是模擬控制方式,因此也不能實現(xiàn)復雜的控制算法使控制精度做得較高,而且不能用數(shù)碼管顯示

12、,對鍵盤進行設定[8]。</p><p>  現(xiàn)在國內(nèi)外一般采用經(jīng)典的溫度控制系統(tǒng)。采用模擬溫度傳感器對加熱杯的溫度進行采樣,通過放大電路變換為 0~5V 的電壓信號,經(jīng)過A/D 轉(zhuǎn)換,保存在采樣值單元;利用鍵盤輸入設定溫度,經(jīng)溫度標度轉(zhuǎn)換轉(zhuǎn)化成二進制數(shù),保存在片內(nèi)設定值單元;然后調(diào)顯示子程序,多次顯示設定溫度和采樣溫度,再把采樣值與設定值進行 PID 運算得出控制量,用其去調(diào)節(jié)可控硅觸發(fā)端的通斷,實現(xiàn)對電阻絲加

13、熱時間的控制, 以此來調(diào)節(jié)水溫使其基本保持恒定[9]。</p><p>  采用單片機AT89C52設計溫度實時測量及控制系統(tǒng)。單片機AT89C52能夠根據(jù)溫度傳感器DS18B20所采集的溫度數(shù)據(jù)來控制加熱器或致冷器的啟停,從而把溫度控制在設定的范圍之內(nèi)。在溫控開關被激活的情況下,當溫度低于設定的下限時,單片機啟動加熱器加熱,同時點亮綠色發(fā)光二極管,當溫度高于設定的上限時,單片機啟動致冷器降溫,同時點亮紅色發(fā)光二

14、極管。所有溫度數(shù)據(jù)均通過液晶顯示器LCM1602顯示出來。為了防止單片機掉電引起的數(shù)據(jù)丟失,溫度上下限的設定值存儲在AT24C02B中[10]。</p><p>  采用一線制數(shù)字溫度傳感器DS18B20來作為溫度傳感器。傳感器輸出信號進4.7K的上拉電阻直接接到單片機的P1.0引腳上。DS18B20溫度傳感器是美國達拉斯(DALLAS)半導體公司推出的應用單總線技術的數(shù)字溫度傳感器。該器件將半導體溫敏器件、A/

15、D轉(zhuǎn)換器、存儲器等做在一個很小的集成電路芯片上。溫度傳感器之所以選擇單線數(shù)字器件DS18B20,是在經(jīng)過多方面比較和考慮后決定的[11]。</p><p>  從硬件和軟件兩方面來講述水溫自動控制過程,在控制過程中主要應用AT89C52、ADC0809、LED顯示器、LM324比較器,而主要是通過 DS18B20數(shù)字溫度傳感器采集環(huán)境溫度,以單片機為核心控制部件,并通過四位數(shù)碼管顯示實時溫度的一種數(shù)字溫度計。軟件

16、方面采用匯編語言來進行程序設計,使指令的執(zhí)行速度快,節(jié)省存儲空間。為了便于擴展和更改,軟件的設計采用模塊化結(jié)構(gòu),使程序設計的邏輯關系更加簡潔明了,使硬件在軟件的控制下協(xié)調(diào)運作。 而系統(tǒng)的過程則是:首先,通過設置按鍵,設定恒溫運行時的溫度值,并且用數(shù)碼管顯示這個溫度值.然后,在運行過程中將采樣的溫度模擬量送入A/D轉(zhuǎn)換器中進行模擬數(shù)字轉(zhuǎn)換,再將轉(zhuǎn)換后的數(shù)字量用數(shù)碼管進行顯示,最后用單片機來控制加熱器,進行加熱或停止加熱,直到能在規(guī)定的溫度

17、下恒溫加熱[12]。</p><p><b>  2 系統(tǒng)總體設計</b></p><p>  2.1 系統(tǒng)設計任務與要求</p><p>  該溫度自動控制系統(tǒng)采用AT89C52單片機為主控芯片,傳感器采用數(shù)字溫度傳感器DS18B20,實現(xiàn)對溫度的檢測和控制。</p><p><b>  技術要求:<

18、;/b></p><p>  1、能夠連續(xù)測量水的溫度值,用十進制數(shù)碼管來顯示實際溫度,最小單位為1℃。</p><p>  2、能夠設定水的溫度值,設定范圍是30℃~90℃,溫度誤差≤±0.5℃。</p><p>  3、能夠?qū)崿F(xiàn)水溫的自動控制,如果設定水溫為80℃,則能使水溫保持恒定在80℃的溫度下運行。</p><p>

19、  4、用單片機AT89C52控制,通過按鍵來控制水溫的設定值,數(shù)值采用數(shù)碼管顯示。</p><p>  該溫度自動控制系統(tǒng)由溫度信號采樣電路,鍵盤及顯示電路,溫度控制電路,報警電路,時鐘信號電路等構(gòu)成,并運用PID算法進行溫度控制和調(diào)整。</p><p>  根據(jù)設計任務,詳細分析溫度自動控制系統(tǒng)的設計需求,并進行軟硬件的總體設計。由鍵盤電路輸入設定溫度信號給單片機,溫度信號采集電路采集

20、現(xiàn)場溫度信號給單片機,單片機根據(jù)輸入與反饋信號的偏差進行PID計算,輸出反饋量給溫度控制電路,實現(xiàn)升溫。顯示電路實現(xiàn)現(xiàn)場溫度的實時監(jiān)控。設計人員需完成全部硬件和軟件的設計,并利 Altium Designer 6.0仿真軟件對設計結(jié)果進行驗證。</p><p>  2.2 系統(tǒng)方案的選擇</p><p>  在這個系統(tǒng)中我們從性能及設計成本考慮,我們選擇AT89C52芯片。AT89C52

21、的廣泛使用,使單片機的價格大大下降。在溫度傳感器的選擇上我們采用溫度芯片DS18B20測量溫度。該芯片的物理化學性很穩(wěn)定,它能用做工業(yè)測溫元件,且此元件線形較好。該芯片直接向單片機傳輸數(shù)字信號,便于單片機處理及控制。本制作的最大特點之一就是直接采用溫度芯片對溫度進行測量,使數(shù)據(jù)傳輸和處理簡單化。采用溫度芯片DS18B20測量溫度,體現(xiàn)了作品芯片化的這個趨勢。部分功能電路的集成,使總體電路更簡潔,搭建電路和焊接電路時更快。而且,集成塊的使

22、用,有效地避免外界的干擾,提高測量電路的精確度。在這個過程中,我們通過單片機將傳感器所測量出來的溫度通過數(shù)碼管可以顯示出來。這樣就能實時顯示溫度情況[13]。</p><p>  本設計采用了PID控制。在工程實際中,PID控制器以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術之一。當被控對象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的數(shù)學模型,控制理論的其他技術也難以采用,系統(tǒng)控制器的結(jié)構(gòu)和參須依

23、靠經(jīng)驗和現(xiàn)場調(diào)試來確定時,應用PID控制技術最為方便。    PID控制器的參數(shù)整定是控制系統(tǒng)設計的核心內(nèi)容。它是根據(jù)被控過程的特性確定PID控制器的比例系數(shù)、積分時問和微分時間的大小。PID控制器參數(shù)整定的方法概括起來有兩大類:一是理論計算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學模型,經(jīng)過理論計算確定控制器參數(shù)。這種方法所得到的計算數(shù)據(jù)未必可以直接用,還必須通過工程實際進行調(diào)整和修改。二是工程整定方法,它主要

24、依賴工程經(jīng)驗,直接且方法簡單、易于掌握,在實際中被廣泛應用[14]。</p><p>  3 器件和模塊的選用</p><p>  3.1 AT89C52單片機</p><p>  AT89C52是一種低功耗、高性能8位微控制器,具有8K 在系可編程Flash 存儲器。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU

25、 和在系統(tǒng)可編程Flash,使AT89C52為眾多嵌入式控制應用系統(tǒng)提供高靈活、有效的解決方案。 </p><p>  AT89C52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89

26、C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止[15]。 </p><p><b>  其主要工作特性為:</b></p><p

27、>  1、內(nèi)含8KB的Flash存儲器,擦寫次數(shù)達1000次;</p><p>  2、內(nèi)含128字節(jié)的RAM;</p><p>  3、具有32根可編程I/O線;</p><p>  4、具有2個16位可編程定時器;</p><p>  5、具有6個中斷源、5個中斷矢量、2級優(yōu)先權的中斷結(jié)構(gòu);</p><p>

28、  6、具有1個全雙工的可編程串行通信接口;</p><p>  7、具有1個數(shù)據(jù)指針DPTR;</p><p>  8、兩種低功耗工作模式,即空閑模式和掉電模式;</p><p>  9、具有可編程的3級程序鎖定位;</p><p>  10、工作電源電壓為5±1.2V,典型值為5V;</p><p>  

29、11、最高工作頻率為24MHz。</p><p>  引腳排列如圖3.1所示。</p><p>  圖3.1 AT89C52引腳排列</p><p>  3.2 DS18B20傳感器</p><p>  DS18B20原理與特性:采用了DS18B20單總線可編程溫度傳感器,來實現(xiàn)對溫度的采集和轉(zhuǎn)換,大大簡化了電路的復雜度,以及算法的要求。

30、首先來介紹一下DS18B20這塊傳感器的特性及其功能: DSl8B20的管腳及特點 DS18B20可編程溫度傳感器有3個管腳。內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。</p><p>  GND為接地線,DQ為數(shù)據(jù)輸入輸出接口,通過一個較弱的上拉電阻與單片機相連。VDD為電源接口,既可由數(shù)據(jù)線提供電源,又可由外部提供電源,范圍3.0~5.5 V。本文使

31、用外部電源供電。</p><p><b>  主要特點有: </b></p><p>  1. 用戶可自設定報警上下限溫度值。 </p><p>  2.不需要外部組件,能測量-55~+125℃ 范圍內(nèi)的溫度。</p><p>  3.-10℃ ~+85℃ 范圍內(nèi)的測溫準確度為±0.5℃ 。</p>

32、<p>  4.通過編程可實現(xiàn)9~l2位的數(shù)字讀數(shù)方式,可在至多750 ms內(nèi)將溫度轉(zhuǎn)換成12 位的數(shù)字,測溫分辨率可達0.0625℃ 。 </p><p>  5.獨特的單總線接口方式,與微處理器連接時僅需要一條線即可實現(xiàn)與微處理器雙向通訊。</p><p>  6.測量結(jié)果直接輸出數(shù)字溫度信號,以“一線總線”串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能

33、力。</p><p>  7.負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。</p><p>  DS18B20支持多點組網(wǎng)的功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同DS18B20 為9位~12位A/D轉(zhuǎn)換精度,而DS1820為9位A/D轉(zhuǎn)換,雖然我們采用了高

34、精度的芯片,但在實際情況上由于技術問題比較難實現(xiàn),而實際精度此時溫度寄存器中的數(shù)值即為所測溫度。斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器1的預置值。如下3.2的測溫原理圖不同,且溫度轉(zhuǎn)換時的延時時間由2s減為750ms。 DS18B20測溫原理如圖3.2所示:</p><p><b>  清0</b></p><p><b>  增加

35、</b></p><p><b>  停止</b></p><p>  圖3.2 DS18B20的測溫原理框圖</p><p>  圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。則高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預置在-55℃

36、所對應的一個基數(shù)值時。計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生脈沖信號,進行減法計數(shù),當計數(shù)器1的預置值減到0時,溫度寄存器的值將加1,計數(shù)器1的預置將重新被裝入,計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值。 </p><p>  在DS18B20測溫程序設計中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序要等待DS18B20的返回信號,一旦某個DS18B20接觸不好

37、或斷線,當程序讀該DS18B20時,將沒有返回信號,程序進入死循環(huán)。這一點在進行DS1820硬件連接和軟件設計時也要給予一定的重視。測溫電纜線采用屏蔽4芯雙絞線,其中有一對接地線與信號線,另一組接VCC和地線。</p><p>  3.3 復位和時鐘電路的設計</p><p>  本系統(tǒng)中采用自動復位和手動復位鍵復位相的方式。系統(tǒng)時鐘電路設計采用內(nèi)部方式。AT89C52內(nèi)部有一個用于構(gòu)成

38、振蕩器的高增益反相放大器。這個放大器與作為反饋元件的片外晶體諧振器構(gòu)成一個自激振蕩器。外接晶體諧振器以及電容構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。本系統(tǒng)電路采用的晶體振蕩器頻率為11.0592MHz。采用這種頻率的晶體振蕩器的原因是可以方便的獲得標準的波特率。復位電路和時鐘電路如圖3.3所示。復位電路有上電自動復位和按鈕手動復位兩種。上電復位是利用電容充電來實現(xiàn)的,上電瞬間RST/VPD端的電位與VCC相同,隨著充電電流的減少,RS

39、T/VPD的電位逐漸下降,圖3.3中的10K的電阻是施密特觸發(fā)器輸入端的一個下拉電阻,時間常數(shù)為10*10-6*10*103s=100ms,只要Vcc的上升時間不超過1ms,振蕩器建立時間不超過10ms,這個時間常數(shù)足以保證完成復位操作。上電復位所需最短時間是震蕩周期建立時間加上2個機器周期時間。按鈕復位采用電平復位方式,按下復位電鈕時,電源對外接電容充電,使RST/VPD端為高電平,復位按鈕松開后,電容通過內(nèi)部下拉電阻放電,逐漸使RS

40、T/VPD端</p><p>  圖3.3 復位電路和時鐘電路</p><p>  3.4 溫度采集電路</p><p>  數(shù)據(jù)采集電路如圖3.4所示,1腳接地,2腳即為單總線數(shù)據(jù)口,3腳接電源。溫度傳感器DS18B20采集被控對象的實時溫度,提供給AT89C52的P3.5口作為數(shù)據(jù)輸入。</p><p>  圖3.4 數(shù)據(jù)采集電路<

41、;/p><p>  3.5 顯示電路的設計</p><p>  數(shù)碼管顯示部分,采用與單片機相連接,將溫度傳感器采集到的信息迅速轉(zhuǎn)化為可視溫度,增加了可讀性[17]。</p><p>  圖3.5 數(shù)碼管顯示電路圖</p><p><b>  3.6 溫度控制</b></p><p>  采用實時

42、控制的方法,主機AT89C52輸出溫度控制信號,控制可控硅控制溫度控制電路。溫度控制電路主要由加熱器跟制冷氣構(gòu)成,使用前人可以對所需求的恒溫進行設置,設定溫度通過數(shù)碼管可顯示。溫度設置完成后DS18B20采集環(huán)境中的溫度。采集到的溫度傳回單片機,然后對設置溫度與采集的溫度進行PID計算計算出控制量,AT89C52輸出溫度控制信號,控制可控硅對加熱器或者制冷器開始工作使溫度達到所需求的溫度保持恒定。當溫度達到設定值時蜂鳴報警系統(tǒng)報警,一次

43、溫度控制完成。</p><p><b>  3.7 供電系統(tǒng)</b></p><p>  供電部分采用TL431構(gòu)成的恒壓源,TL431是一個有良好的熱穩(wěn)定性能的三端可調(diào)分流基準源。他的輸出電壓用兩個電阻就可以任意的設置到從Verf(2.5V)到36V范圍內(nèi)的任何值。該器件的典型動態(tài)阻抗為0.2Ω。其穩(wěn)壓電路圖如圖3.6:</p><p> 

44、 圖3.6 供電電路 </p><p>  4 PID控制和參數(shù)整定</p><p>  4.1 PID調(diào)節(jié)器控制原理</p><p>  PID控制器是一種線性控制器,一種它根據(jù)給定值rin(t)與實際輸出值yout(t)構(gòu)成控制偏差:</p><p>  Error(t)=rin(t)-yout(t)</p><p

45、>  PID控制就是對偏差信號進行比例、積分、微分運算后,形成一種控制規(guī)律。即,控制器的輸出為:</p><p><b> ?。?.1)</b></p><p>  或?qū)懗蓚鬟f函數(shù)的形式:</p><p><b> ?。?.2)</b></p><p>  式中, kp——比例系數(shù);Ti——積

46、分時間常數(shù);Td——微分時間常數(shù)。簡單說來,PID控制器各校正環(huán)節(jié)的作用如下:</p><p>  比例環(huán)節(jié):成比例地反映控制系統(tǒng)的偏差信號error(t),偏差一旦產(chǎn)生,控制器立即產(chǎn)生控制作用,以減小偏差。</p><p>  比例控制: Gc(s)= Kp </p><p>  積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無差度。積分作用的強盡弱取決于積分 時間

47、常數(shù)Ti,Ti越大,積分作用越弱,反之則越強。</p><p>  積分控制: Gc(s) = Kp/T is</p><p>  微分環(huán)節(jié):反偏差信號的變化趨勢(變化速率),并能在偏差信號變得太大之前, 在系統(tǒng)中引入一個有效的早期修正信號,從而加快系統(tǒng)的動作速度,減少調(diào)節(jié)時間[7]。</p><p>  微分控制: Gc(s) =KpT ds</p&g

48、t;<p>  4.2 PID控制的分類</p><p>  基本PID控制器的理想算式為</p><p><b>  (4.3)</b></p><p><b>  式中</b></p><p>  u(t)——控制器(也稱調(diào)節(jié)器)的輸出;</p><p>

49、  e(t)——控制器的輸入(常常是設定值與被控量之差,即e(t)=r(t)-c(t));</p><p>  Kp——控制器的比例放大系數(shù);</p><p>  Ti ——控制器的積分時間;</p><p>  Td——控制器的微分時間。</p><p>  設u(k)為第k次采樣時刻控制器的輸出值,可得離散的PID算式</p>

50、<p><b> ?。?.4) </b></p><p>  由于計算機的輸出u(k)直接控制執(zhí)行機構(gòu)(如閥門),u(k)的值與執(zhí)行機構(gòu)的位置(如閥門開度)一一對應,所以稱式(4.4)為位置式PID控制算法。</p><p>  位置式PID控制算法的缺點:當前采樣時刻的輸出與過去的各個狀態(tài)有關,計算時要對e(k)進行累加,運算量大;而且控制器的輸出

51、u(k)對應的是執(zhí)行機構(gòu)的實際位置,如果計算機出現(xiàn)故障,u(k)的大幅度變化會引起執(zhí)行機構(gòu)位置的大幅度變化。</p><p>  增量式只需計算增量,算式中不需要累加,控制增量的確定僅與最近幾次偏差采樣值有關,當出現(xiàn)計算誤差或精度不足時,對控制量計算的影響較小,且較容易通過加權處理獲得比較好的控制效果。</p><p>  4.3 數(shù)字PID參數(shù)的整定</p><p&

52、gt;  PID控制器的參數(shù)整定是控制系統(tǒng)設計的核心內(nèi)容。它是根據(jù)被控過程的特性確定PID控制器的比例系數(shù)、積分時間和微分時間的大小。PID控制器參數(shù)整定的方法很多,概括起來有兩大類:一是理論計算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學模型,經(jīng)過理論計算確定控制器參數(shù)。這種方法所得到的計算數(shù)據(jù)未必可以直接用,還必須通過工程實際進行調(diào)整和修改。二是工程整定方法,它主要依賴工程經(jīng)驗,直接在控制系統(tǒng)的試驗中進行,且方法簡單、易于掌握,在工程實際中被廣泛

53、采用。本設計采用PID歸一整定法把對控制臺三個參數(shù)(Kc、Ti、Td,)轉(zhuǎn)換為一個參數(shù)KP, 從而使問題明顯簡化。以達到控制器的特性與被控過程的特性相匹配,滿足某種反映控制系統(tǒng)質(zhì)量的性能指標[15]。</p><p>  4.4 PID計算程序 </p><p>  PID調(diào)節(jié)規(guī)律的基本輸入輸出關系可用微分方程表示為:</p><p><b> ?。?.

54、5)</b></p><p>  式中為調(diào)節(jié)器的輸入誤差信號,且</p><p><b> ?。?.6)</b></p><p>  其中:為給定值,為被控變量;</p><p>  為調(diào)節(jié)器的輸出控制信號;</p><p><b>  為比例系數(shù);</b><

55、;/p><p><b>  為積分時間常數(shù);</b></p><p><b>  微分時間常數(shù)。</b></p><p>  計算機只能處理數(shù)字信號,若采樣周期為T第n次采樣的輸入誤差為,且,輸出為,PID算法用的微分由差分代替,積分由代替,于是得到</p><p><b> ?。?.7)&l

56、t;/b></p><p><b>  寫成遞推形式為</b></p><p><b>  △</b></p><p><b>  =</b></p><p><b>  =</b></p><p><b>  =&

57、lt;/b></p><p>  = (4.8)</p><p>  其中: (4.9)</p><p><b> ?。?.10)</b></p><p>&l

58、t;b> ?。?.11)</b></p><p>  顯然,PID計算△un只需要保留現(xiàn)時刻en以及以前的兩個偏差量en-1和en-2。初始化程序初值en-1= en-2 =0 通過采樣并根據(jù)參數(shù)KP、KD、KI以及en、en-1和en-2計算△un。</p><p>  根據(jù)輸出控制增量△un,可求出本次控制輸出為</p><p>  +△=

59、 (4.12)</p><p>  下面對PID運算加以說明:</p><p>  所有的數(shù)都變成定點純小數(shù)進行處理。</p><p>  算式中的各項有正有負,以最高位作為符號位,最高位為0表示為正數(shù),為1表示負數(shù)。正負數(shù)都是補碼表示,最后的計算以原碼輸出。</p><p>  節(jié)16位

60、進行計算,最后將運算結(jié)果取成高8位有效值輸出。輸出控制量un的限幅處理。為了便于實現(xiàn)對晶閘管的通斷處理,PID的輸出在0~250之間。大于250或小于0的控制量都是沒有意義的,因在算法上對進行限幅,即</p><p>  = (4.13)</p><p>  圖4.1 PID計算程序的流程圖</p><p>  PID的計算公式采用位置式算法,計算

61、公式為</p><p><b>  +</b></p><p>  = (4.14)</p><p><b>  5 軟件設計</b></p><p>  系統(tǒng)的軟件主要由主程序模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、控制算法模塊等

62、組成。主模塊的功能是為其余幾個模塊構(gòu)建整體框架及初始化工作;數(shù)據(jù)采集模塊的作用是將數(shù)字量采集并儲存到存儲器中;數(shù)據(jù)處理模塊是將采集到的數(shù)據(jù)進行一系列的處理,其中最重要的是數(shù)字濾波程序:控制算法模塊完成控制系統(tǒng)的PID運算并且輸出控制量。</p><p>  5.1 主程序模塊</p><p>  主程序模塊要做的主要工作是上電后對系統(tǒng)初始化和構(gòu)建系統(tǒng)整體軟件框架,其中初始化包括對單片機的

63、初始化、串口初始化等。然后等待溫度設定,若溫度已經(jīng)設定好了,判斷系統(tǒng)運行鍵是否按下,若系統(tǒng)運行,則依次調(diào)用各個相關模塊,循環(huán)控制直到系統(tǒng)停止運行[18]。</p><p>  設計模塊圖如下圖5.1所示。</p><p>  圖5.1 設計模塊圖</p><p>  主程序模塊的程序流程圖如圖5.2所示。</p><p>  5.2 數(shù)據(jù)采

64、集和顯示模塊</p><p>  數(shù)據(jù)采集模塊的任務是負責溫度信號的采集以及將采集到的數(shù)字量提供給單片機。</p><p>  AT89C52通過控制DS18B20讀取實時溫度,然后,通過P0口送到數(shù)碼管進行顯示。顯示程序設計框圖如圖5.3所示。</p><p><b>  N</b></p><p><b>

65、  Y </b></p><p>  圖5.3 顯示程序設計框圖</p><p>  6 應用軟件與實物展示</p><p><b>  6.1 軟件介紹</b></p><p>  本次設計中共用到了三款應用軟件,首先是程序編程軟件,用到的是Keil C51軟件。然后是對源程序的燒錄軟件,用到的是S

66、TC-ISP燒錄軟件。在對PCB圖的制作中用到的是Altium Designer 6.0。</p><p>  Keil C51是51系列兼容單片機C語言軟件開發(fā)系統(tǒng),該系統(tǒng)提供了豐富的函數(shù)庫和功能強大的集成開發(fā)調(diào)試工具,全windows界面。其生成的代碼效率非常的高,多數(shù)語言生成的匯編代碼程序緊湊容易理解。C語言功能上結(jié)構(gòu)性、可讀性、可維護性上有很高的優(yōu)勢。</p><p>  STC-

67、ISP是一款單片機下編程燒錄軟件,是針對STC系列單片機而設計的,可下載STC89系列、12C2050系列和12C5140等系列的STC單片機,由于其使用非常簡便已經(jīng)被廣泛使用。</p><p>  2005年年底,Protel軟件的原廠商公司推出了Protel系列的最新高端版本Altium Designer 6.0。 Altium Designer 6.0,它是完全一體化電子產(chǎn)品開發(fā)系統(tǒng)的一個新版本,也是業(yè)界第

68、一款也是唯一一種完整的板級設計解決方案。Altium Designer 是業(yè)界首例將設計流程、集成化 PCB 設計、可編程器件(如 FPGA)設計和基于處理器設計的嵌入式軟件開發(fā)功能整合在一起的產(chǎn)品,一種同時進行PCB和FPGA設計以及嵌入式設計的解決方案,具有將設計方案從概念轉(zhuǎn)變?yōu)樽罱K成品所需的全部功能。</p><p><b>  6.2 實物展示</b></p><

69、;p>  通過Altium Designer 6.0做出PCB電路圖,然后根據(jù)PCB圖焊接實物。參考圖6.1和圖6.2。</p><p>  圖6.1 整體設計PCB圖</p><p>  通過PCB圖做出的實物圖如圖6.2所示: </p><p><b>  圖6.2 實物圖</b></p><p><

70、;b>  總結(jié)</b></p><p>  首先,通過這次應用系統(tǒng)的設計,我學到了不少的知識。把以前沒有學好的程序?qū)I(yè)知識進行了補充和加強,加深了我對于單片機和數(shù)字電路的認識,鞏固了自己的專業(yè)知識,相信在以后的學習和工作中碰到這些基礎的元器件我會更加得心應手。</p><p>  本次設計主要是針對溫度的檢測跟控制的算法做出了研究。在設計中深刻的對AT89C52單片機、D

71、S18B20溫度傳感器有了詳細的了解,對PID的控制算法有了基本了解。我所寫的系統(tǒng)主要根據(jù)目前工業(yè)自動化的發(fā)展趨勢和國內(nèi)實際的應用特點和要求,使用AT89C52主控芯片進行控制,其中溫度控制電路是設計通過可控硅調(diào)功器實現(xiàn)。 </p><p>  通過查閱大量的資料,我獲得了以前在課堂上學不到的東西,我想這對于以</p><p>  后的畢業(yè)設計,或者工作也好,都是很有幫助的。我很認真地對待

72、這個過程中的</p><p>  每一個細節(jié),希望自己能做得更好。希望今后還有這樣的機會,能夠讓我學到更</p><p><b>  多的知識。</b></p><p><b>  附 錄</b></p><p>  附錄A 單片機程序</p><p>  //*****

73、****************************************************************</p><p>  //****************************李奇畢設*********************************</p><p>  // Descriptoon:

74、 </p><p>  // *采用89C52+DS1820+數(shù)碼管+蜂鳴器</p><p>  // *DS1820設置為12位精度</p><p>  // *環(huán)境溫度超過Alarm值 蜂鳴器報警

75、 </p><p>  // *Alarm值可通過按鍵自由設定</p><p>  //*該溫度可設定范圍1--100度,測量范圍-55--125度 </p><p>  //*************************************************

76、********************</p><p>  //*************************可調(diào)溫度報警器******************************</p><p>  #include <REG52.H></p><p>  #include <intrins.h></p><p

77、>  #include <math.h></p><p>  #define uchar unsigned char</p><p>  unsigned char code dis_code[]={ </p><p>  0xC0,/*0*/</p><p>  0xF9,/*1*/</p>&

78、lt;p>  0xA4,/*2*/</p><p>  0xB0,/*3*/</p><p>  0x99,/*4*/</p><p>  0x92,/*5*/</p><p>  0x82,/*6*/</p><p>  0xF8,/*7*/</p><p>  0x80,/*8*/&l

79、t;/p><p>  0x90,/*9*/</p><p>  0xF7,/*負號*/</p><p>  0xB6,/*溫度設定狀態(tài)*/ };</p><p>  uchar data dis_buf[8],i;</p><p>  uchar data dis_index ; //數(shù)碼管顯示標簽</p&g

80、t;<p>  uchar dis_digit=0xfe; //數(shù)碼管位選通控制端</p><p>  sbit Spk=P3^7; //驅(qū)動蜂鳴器報警</p><p>  sbit Key_UP = P3^3; //上調(diào)溫度</p><p>  sbit Key_DOWN = P3^4; //下調(diào)溫度<

81、/p><p>  sbit Key_SET = P3^2; //設定鍵(溫度設定)</p><p>  /************************************************************</p><p>  *18B20驅(qū)動程序,DQ為數(shù)據(jù)口,接于P1.4</p><p>  *11.0592M晶振

82、,上拉4.7k電阻</p><p>  *************************************************************/</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit

83、 dq = P1^0; //定義18B20的數(shù)據(jù)端</p><p>  bit flag;</p><p>  uint Temperature;</p><p>  uchar gechar,shichar,baichar,Alarm;</p><p>  uchar temp_buff[9]; //存儲讀取的字節(jié),rea

84、d scratchpad為9字節(jié),read rom ID為8字節(jié)</p><p>  uchar id_buff[8];</p><p><b>  uchar *p;</b></p><p>  uchar crc_data;</p><p>  uchar code CrcTable [256]={</p>

85、;<p>  0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,</p><p>  157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,</p>

86、<p>  35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,</p><p>  190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,</p>&l

87、t;p>  70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,</p><p>  219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,</p><

88、;p>  101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,</p><p>  248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,</p><p

89、>  140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,</p><p>  17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,</p><

90、p>  175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,</p><p>  50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,</p><

91、;p>  202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,</p><p>  87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,</p><p

92、>  233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,</p><p>  116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53}; //CRC校驗表<

93、/p><p>  /************************************************************</p><p>  *Function:延時處理 </p><p>  *************************************************************/</p><p

94、>  void TempDelay (uint us)</p><p><b>  {</b></p><p>  while(us--);</p><p><b>  }</b></p><p>  /*********************************************

95、***************</p><p>  *Function:18B20初始化</p><p>  *************************************************************/</p><p>  void Init18b20 (void)</p><p><b>  {&l

96、t;/b></p><p><b>  EA=0;</b></p><p><b>  dq=1;</b></p><p><b>  _nop_();</b></p><p><b>  dq=0;</b></p><p>

97、  TempDelay(86); //delay 530 uS//80</p><p><b>  _nop_();</b></p><p><b>  dq=1;</b></p><p>  TempDelay(14); //delay 100 uS//14</p><p><b&g

98、t;  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  if(dq==0)</b></p><p>  flag = 1; //detect 182

99、0 success!</p><p><b>  else</b></p><p>  flag = 0; //detect 1820 fail!</p><p>  TempDelay(20); //20</p><p><b>  _nop_();</b></p>

100、<p><b>  _nop_();</b></p><p><b>  dq = 1;</b></p><p><b>  EA=1;</b></p><p><b>  }</b></p><p>  /******************

101、******************************************</p><p>  *Function:向18B20寫入一個字節(jié)</p><p>  *************************************************************/</p><p>  void WriteByte (uchar wr)

102、 //單字節(jié)寫入</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p><b>  EA=0;</b></p><p>  for (i=0;i<8;i++)</p><p><b&g

103、t;  {</b></p><p><b>  dq = 0;</b></p><p><b>  _nop_();</b></p><p>  dq=wr & 0x01;</p><p>  TempDelay(5); //delay 45 uS //5</p>

104、<p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  dq=1;</b></p><p><b>  wr >>= 1;</b></p><p><b

105、>  }</b></p><p><b>  EA=1;</b></p><p><b>  }</b></p><p>  /************************************************************</p><p>  *Funct

106、ion:讀18B20的一個字節(jié)</p><p>  *************************************************************/</p><p>  uchar ReadByte (void) //讀取單字節(jié)</p><p><b>  {</b></p><p>

107、  uchar i,u=0;</p><p><b>  EA=0;</b></p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p><b>  dq = 0;</b></p><p><

108、b>  u >>= 1;</b></p><p><b>  dq = 1;</b></p><p><b>  if(dq==1)</b></p><p>  u |= 0x80;</p><p>  TempDelay (4);</p><p&g

109、t;<b>  _nop_();</b></p><p><b>  }</b></p><p><b>  EA=1;</b></p><p>  return(u);</p><p><b>  }</b></p><p>  

110、/************************************************************</p><p>  *Function:讀18B20</p><p>  *************************************************************/</p><p>  void readbyt

111、es (uchar j)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for(i=0;i<j;i++) </p><p><b>  {</b></p><p>  *p =

112、ReadByte(); //讀取的溫度值存到指針所指位置</p><p><b>  p++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*********************************

113、***************************</p><p>  *Function:CRC校驗</p><p>  *************************************************************/</p><p>  uchar CRC (uchar j)</p><p><b&g

114、t;  {</b></p><p>  uchar i,crc_data=0;</p><p>  for(i=0;i<j;i++) </p><p>  crc_data = CrcTable[crc_data^temp_buff[i]];</p><p>  return (crc_data);</p>

115、<p><b>  }</b></p><p>  /************************************************************</p><p>  *Function:讀取溫度</p><p>  *******************************************

116、******************/</p><p>  void GemTemp(void)</p><p><b>  {</b></p><p>  readbytes(9);</p><p>  if (CRC(9)==0) //校驗正確</p><p><b>  {<

117、/b></p><p>  Temperature = temp_buff[1]*0x100 + temp_buff[0];</p><p>  Temperature /= 16; //忽略小數(shù)部分</p><p>  TempDelay(1);</p><p>  Alarm = temp_buff[2];</p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論