

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 溫度自動控制系統的設計</p><p><b> 摘 要</b></p><p> 隨著科技的不斷進步,在工業(yè)生產中溫度是常用的被控參數,而采用單片機來對這些被控參數進行控制已成為當今的主流。本文介紹了數字溫度測量及自動控制系統的設計。闡述了以AT89C52單片機為核心的溫度控制系統的工作原理和設計方法。主要組成部分:AT89C52單片機、
2、溫度傳感器、顯示電路、溫度控制電路。它可以實時的顯示和設定溫度,實現對溫度的自動控制。而且設有超溫報警程序。測試表明,本設計對溫度的控制有方便、簡單的特點,大幅提高了被控溫度的技術指標。溫度信號由溫度芯片DS18B20采集,并以數字信號的方式傳送給單片機。文中介紹了該控制系統的硬件部分,包括:溫度檢測與溫度控制電路。單片機通過對信號進行相應處理,從而實現溫度控制的目的。</p><p> 關鍵詞: 溫度自動控制
3、,AT89C52,DS18B20,PID</p><p><b> ABSTRACT</b></p><p> With the development of science and technology, temperature is used to be controlled parameter in industrial production. Contro
4、lling controlled parameter by microcontroller has been main trend in today's society. This paper introduces the design of digital temperature measurement and automatic control system .It consists of AT89C52 microcont
5、roller, temperature sensor, show circuit and temperature control circuit. It is able to display and set temperature in real-time. The purpose is to achieve t</p><p> KEY WORDS: automatic temperature contro
6、l, AT89C52 , DS18B20, PID</p><p><b> 目 錄</b></p><p><b> 前 言1</b></p><p> 第1章系統總體設計2</p><p> 1.1系統設計任務與要求2</p><p> 1.1.1
7、系統設計任務與要求2</p><p> 1.1.2重點研究內容2</p><p> 1.1.3實現途徑及方法2</p><p> 1.2系統總體方案設計3</p><p> 第2章系統硬件各功能模塊的設計5</p><p> 2.1主控模塊的設計5</p><p&g
8、t; 2.1.1 AT89C52單片機簡介5</p><p> 2.1.2 溫度傳感器的選擇6</p><p> 2.1.3復位和時鐘電路的設計9</p><p> 2.1.4 溫度采集電路10</p><p> 2.2人機接口設計11</p><p> 2.2.1鍵盤的設計11</p
9、><p> 2.2.2顯示電路的設計11</p><p> 第3章軟件設計13</p><p> 3.1主程序模塊13</p><p> 3.2數據采集和顯示模塊14</p><p> 3.3輸入模塊21</p><p> 第4章 PID控制和參數整定24</p&
10、gt;<p> 4.1 PID調節(jié)器控制原理24</p><p> 4.2 PID控制的分類25</p><p> 4.3 數字PID參數的整定26</p><p> 4.3.1 采樣周期選擇的原則27</p><p> 4.3.2 PID參數對系統性能的影響27</p><p>
11、4.4 PID計算程序29</p><p><b> 第5章 仿真36</b></p><p> 5.1 PROTEUS軟件簡介36</p><p><b> 5.2仿真36</b></p><p><b> 致 謝38</b></p>&l
12、t;p><b> 參考文獻39</b></p><p><b> 附 錄40</b></p><p> 附錄1:源程序40</p><p> 附錄2:原理圖45</p><p><b> 前 言</b></p><p> 溫
13、度是表征物體冷熱程度的物理量。在很多生產過程中,特別是在冶金、化工、建材、食品、機械、石油等工業(yè)中,溫度的測量和控制都直接和安全生產、提高生產效率、保證產品質量、節(jié)約能源等重大技術經濟指標相聯系。因此,溫度的測量與控制在國民經濟各個領域中均受到了相當程度的重視。</p><p> 單片機系統的開發(fā)應用給現代工業(yè)測控領域帶來了一次新的技術革命,自動化、智能化均離不開單片機的應用。將單片機控制方法運用到溫度控制系統
14、中,可以克服溫度控制系統中存在的嚴重滯后現象,同時在提高采樣頻率的基礎上可以很大程度的提高控制效果和控制精度?,F代自動控制越來越朝著智能化發(fā)展,在很多自動控制系統中都用到了工控機,小型機、甚至是巨型機處理機等,當然這些處理機有一個很大的特點,那就是很高的運行速度,很大的內存,大量的數據存儲器。但隨之而來的是巨額的成本。在很多的小型系統中,處理機的成本占了系統成本的比例高達20%,而對于這些小型的系統來說,配置一個如此高速的處理機沒有任何
15、必要,因為這些小系統追求經濟效益,而不是最在乎系統的快速性,所以用成本低廉的單片機控制小型的,而又不是很復雜,不需要大量復雜運算的系統中是非常適合的。 </p><p> 隨著電子技術以及應用需求的發(fā)展,單片機技術得到了迅速的發(fā)展,在高集成度,高速度,低功耗以及高性能方面取得了很大的進展?,F在完全可以運用單片機和電子溫度傳感器對某處進行溫度檢測,而且可以很容易地做到多點的溫度檢測,如果對此原理圖稍加改進,還可以
16、進行不同地點的實時溫度檢測和控制。</p><p><b> 系統總體設計</b></p><p><b> 系統設計任務與要求</b></p><p><b> 系統設計任務與要求</b></p><p> 該溫度自動控制系統采用AT89C52單片機為主控芯片,傳感器
17、采用數字溫度傳感器DS18B20,實現對溫度的檢測和控制。</p><p> 主要技術指標:可檢測的范圍為-55℃—+125℃。</p><p> 該溫度自動控制系統由溫度信號采樣電路,鍵盤及顯示電路,溫度控制電路,報警電路,時鐘信號電路等構成,并運用PID算法進行溫度控制和調整。</p><p> 根據設計任務,詳細分析溫度自動控制系統的設計需求,并進行軟硬
18、件的總體設計。由鍵盤電路輸入設定溫度信號給單片機,溫度信號采集電路采集現場溫度信號給單片機,單片機根據輸入與反饋信號的偏差進行PID計算,輸出反饋量給溫度控制電路,實現升溫。顯示電路實現現場溫度的實時監(jiān)控。設計人員需完成全部硬件和軟件的設計,并利Proteus仿真軟件對設計結果進行驗證。</p><p><b> 重點研究內容</b></p><p> 本設計包括
19、硬件設計和軟件設計。</p><p> 硬件設計主要包括溫度信號采樣電路,鍵盤及顯示電路,溫度控制電路,報警電路,時鐘信號電路等,其中硬件設計重點是鍵盤及顯示電路和溫度控制電路。</p><p> 軟件設計主要完成系統初始化、鍵盤處理子程序、DS18B20和lcd1602的子程序設計、PID計算子程序等工作。</p><p><b> 實現途徑及方法
20、</b></p><p> 本系統主要通過資料查找、系統需求分析、系統總體設計,軟硬件總體設計、詳細的軟件與硬件設計、系統仿真與調試、資料整理等步驟來完成。</p><p> 本系統利用Protel軟件完成硬件電路設計工作,利用Keil51軟件完成系統控制軟件的編譯調試工作,通過Proteus軟件完成所有功能模塊的電路仿真。</p><p><
21、b> 系統總體方案設計</b></p><p> 在這個系統中我們從性能及設計成本考慮,我們選擇AT89C52芯片。AT89C52的廣泛使用,使單片機的價格大大下降。目前,AT89C52的市場零售價已經低于8255、8279、8253、8250等專用接口芯片中的任何一種;而AT89C52的功能實際上遠遠超過以上芯片。因此,如把AT89C52作為接口芯片使用,在經濟上是合算的。在溫度傳感器的選
22、擇上我們采用溫度芯片DS18B20測量溫度。該芯片的物理化學性很穩(wěn)定,它能用做工業(yè)測溫元件,且此元件線形較好。在0—1000C時,最大線形偏差小于10C。該芯片直接向單片機傳輸數字信號,便于單片機處理及控制。本制作的最大特點之一就是直接采用溫度芯片對溫度進行測量,使數據傳輸和處理簡單化。采用溫度芯片DS18B20測量溫度,體現了作品芯片化的這個趨勢。部分功能電路的集成,使總體電路更簡潔,搭建電路和焊接電路時更快。而且,集成塊的使用,有效
23、地避免外界的干擾,提高測量電路的精確度。本方案應用這一溫度芯片,也是順應這一趨勢。對于溫度的調節(jié)系統,我們采用的只是簡單的升溫方法,當溫度低于我們設定的最低溫度值時,則單片機系統控制加熱裝置產生熱量來提高溫度。在這個</p><p> 本設計采用了PID控制。在工程實際中,PID控制器以其結構簡單、穩(wěn)定性好、工作可靠、調整方便而成為工業(yè)控制的主要技術之一。當被控對象的結構和參數不能完全掌握,或得不到精確的數學模
24、型,控制理論的其他技術也難以采用,系統控制器的結構和參數必須依靠經驗和現場調試來確定時,應用PID控制技術最為方便。 PID控制器的參數整定是控制系統設計的核心內容。它是根據被控過程的特性確定PID控制器的比例系數、積分時問和微分時間的大小。PID控制器參數整定的方法概括起來有兩大類:一是理論計算整定法。它主要是依據系統的數學模型,經過理論計算確定控制器參數。這種方法所得到的計算數據未必可以直接用,
25、還必須通過工程實際進行調整和修改。二是工程整定方法,它主要依賴工程經驗,直接在控制系統的試驗中進行,且方法簡單、易于掌握,在工程實際中被廣泛采用。溫度自動控制系統原理框圖如圖1-1所示:</p><p> 圖1.1 溫度自動控制系統原理框圖</p><p> 系統硬件各功能模塊的設計</p><p><b> 主控模塊的設計</b>&l
26、t;/p><p> 2.1.1 AT89C52單片機簡介</p><p> AT89C52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系可編程Flash 存儲器。片上Flash允許程序存儲器在系統可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統可編程Flash,使AT89C52為眾多嵌入式控制應用系統提供高靈活、有效的解決方案。
27、 </p><p> AT89C52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數器、串口、
28、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。 </p><p> AT89C52的廣泛使用使得市面價格較8155、8255、8279要低,所以說用它是比較經濟的。該芯片具有如下功能:①有1個專用的鍵盤/顯示接口;②有1個全雙工異步串行通信接口;③有2個16位定時/計數器。這樣,1個AT89
29、C52,承擔了3個專用接口芯片的工作;不僅使成本大大下降,而且優(yōu)化了硬件結構和軟件設計,給用戶帶來許多方便。AT89C52有40個引腳,有32個輸入端口(I/O),有2個讀寫口線,可以反復插除。所以可以降低成本[1]。 </p><p><b> 其主要工作特性為:</b></p><p> 內含8KB的Flash存儲器,擦寫次數達1000次;</p>
30、<p> 內含128字節(jié)的RAM;</p><p> 具有32根可編程I/O線;</p><p> 具有2個16位可編程定時器;</p><p> 具有6個中斷源、5個中斷矢量、2級優(yōu)先權的中斷結構;</p><p> 具有1個全雙工的可編程串行通信接口;</p><p> 具有1個數據指針D
31、PTR;</p><p> 兩種低功耗工作模式,即空閑模式和掉電模式;</p><p> 具有可編程的3級程序鎖定位;</p><p> 工作電源電壓為5±1.2V,典型值為5V;</p><p> 最高工作頻率為24MHz。</p><p> 引腳排列如圖2-1所示。</p><
32、;p> 圖2-1 AT89C52引腳排列(PDIP)</p><p> 2.1.2 溫度傳感器的選擇</p><p> DS18B20原理與特性:本系統采用了DS18B20單總線可編程溫度傳感器,來實現對溫度的采集和轉換,大大簡化了電路的復雜度,以及算法的要求。首先來介紹一下DS18B20這塊傳感器的特性及其功能: DSl8B20的管腳及特點 DS18B20可編程溫度傳感器有
33、3個管腳。內部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的外形及</p><p> 管腳排列如圖2.2所示</p><p> GND為接地線,DQ為數據輸入輸出接口,通過一個較弱的上拉電阻與單片機相連。VDD為電源接口,既可由數據線提供電源,又可由外部提供電源,范圍3.O~5.5 V。本文使用外部電源供電。</
34、p><p><b> 主要特點有: </b></p><p> 1. 用戶可自設定報警上下限溫度值。 </p><p> 不需要外部組件,能測量-55~+125℃ 范圍內的溫度。</p><p> ?。?0℃ ~+85℃ 范圍內的測溫準確度為±0.5℃ 。</p><p> 圖2.2
35、 DS18B20的外形及管腳圖</p><p> 通過編程可實現9~l2位的數字讀數方式,可在至多750 ms內將溫度轉換成12 位的數字,測溫分辨率可達0.0625℃ 。 </p><p> 獨特的單總線接口方式,與微處理器連接時僅需要一條線即可實現與微處理器雙向通訊。</p><p> 測量結果直接輸出數字溫度信號,以"一線總線"串行傳
36、送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。</p><p> 負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。</p><p> DS18B20支持多點組網的功能,多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫[2]。</p><p> DS18B20內部功能模塊如圖2.3所示,</p><p
37、> 圖2.3 DS18B20內部功能模塊</p><p> DS18B20的工作原理:</p><p> DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數因分辨率不同DS18B20 為9位~12位A/D轉換精度,而DS1820為9位A/D轉換,雖然我們采用了高精度的芯片,但在實際情況上由于技術問題比較難實現,而實際精度此時溫度寄存器中的數值即為所測溫
38、度。斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數器1的預置值。如下3.3的測溫原理圖不同,且溫度轉換時的延時時間由2s減為750ms。 DS18B20測溫原理如圖4.3所示。</p><p> 圖2.4 DS18B20的測溫原理框圖</p><p> 圖中低溫度系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器1。則高溫度系數晶振隨溫度變化其振蕩率
39、明顯改變,所產生的信號作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在-55℃所對應的一個基數值時。計數器1對低溫度系數晶振產生脈沖信號,進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,計數器1的預置將重新被裝入,計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環(huán)直</p><p> 到計數器2計數到0時,停止溫度寄存器值。</p><p> DS18
40、B20使用中注意事項 </p><p> DS18B20雖然具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應用中也應注意以下幾方面的問題: </p><p> 1) 較小的硬件開銷需要相對復雜的軟件進行補償,由于DS18B20與微處理器間采用串行數據傳送,因此,在對DS18B20進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M、C等高級
41、語言進行系統程序設計時,對DS18B20操作部分最好采用匯編語言實現。 </p><p> 2) 在DS18B20的有關資料中均未提及單總線上所掛DS18B20數量問題,容易使人誤認為可以掛任意多個DS18B20,在實際應用中并非如此。當單總線上所掛DS18B20超過8個時,就需要解決微處理器的總線驅動問題,這一點在進行多點測溫系統設計時要加以注意。 </p><p> 3) 連接DS
42、18B20的總線電纜是有長度限制的。試驗中,當采用普通信號電纜傳輸長度超過50m時,讀取的測溫數據將發(fā)生錯誤。當將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當采用每米絞合次數更多的雙絞線帶屏蔽電纜時,正常通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產生畸變造成的。因此,在用DS18B20進行長距離測溫系統設計時要充分考慮總線分布電容和阻抗匹配問題。 </p><p> 在DS18B
43、20測溫程序設計中,向DS18B20發(fā)出溫度轉換命令后,程序要等待DS18B20的返回信號,一旦某個DS18B20接觸不好或斷線,當程序讀該DS18B20時,將沒有返回信號,程序進入死循環(huán)。這一點在進行DS1820硬件連接和軟件設計時也要給予一定的重視。測溫電纜線采用屏蔽4芯雙絞線,其中有一對接地線與信號線,另一組接VCC和地線。</p><p> 2.1.3復位和時鐘電路的設計</p><
44、p> 本系統中采用上電復位和手動復位鍵復位相結合的方式。系統時鐘電路設計采用內部方式。AT89C52內部有一個用于構成振蕩器的高增益反相放大器。這個放大器與作為反饋元件的片外晶體諧振器構成一個自激振蕩器。外接晶體諧振器以及電容構成并聯諧振電路,接在放大器的反饋回路中。本系統電路采用的晶體振蕩器頻率為11.0592MHz。采用這種頻率的晶體振蕩器的原因是可以方便的獲得標準的波特率。復位電路和時鐘電路如圖2-5所示。復位電路有上電自
45、動復位和按鈕手動復位兩種。上電復位是利用電容充電來實現的,上電瞬間RST/VPD端的電位與VCC相同,隨著充電電流的減少,RST/VPD的電位逐漸下降,圖2.5中的10K的電阻是施密特觸發(fā)器輸入端的一個下拉電阻,時間常數為10*10-6*10*103s=100ms,只要Vcc的上升時間不超過1ms,振蕩器建立時間不超過10ms,這個時間常數足以保證完成復位操作[6]。上電復位所需最短時間是震蕩周期建立時間加上2個機器周期時間。按鈕復位采
46、用電平復位方式,按下復位電鈕時,電源對外接電容充電,使RST/VPD端為高電平,復位按鈕松開后,電容通過內部下拉電阻放電,逐漸使RST</p><p> 圖2.5 復位電路和時鐘電路</p><p> 2.1.4 溫度采集電路</p><p> 數據采集電路如圖2.6所示,1腳接地,2腳即為單總線數據口,3腳接電源。溫度傳感器DS18B20采集被控對象的實時溫
47、度,提供給AT89C52的P3.5口作為數據輸入。</p><p> 圖2.6 數據采集電路</p><p><b> 人機接口設計</b></p><p><b> 鍵盤的設計</b></p><p> 在本設計中采用了矩陣式,鍵盤分布如圖2.7所示。各鍵設在行列線的交差點上,有鍵合上時行
48、列線接通,否則不連通。行線P10—P13(即A1—A4)通過上拉電阻接+5V,處于輸入狀態(tài),列線P14—P17(即B1—B4)為輸出狀態(tài)[7]。</p><p> 圖2.7 編碼式鍵盤</p><p><b> 顯示電路的設計</b></p><p> 本設計的顯示采用LCD1602。圖2.8為LCD1602的引腳圖。 </p>
49、;<p> 圖2.8 LCD1602引腳圖</p><p> 1602采用標準的16腳接口,其中: </p><p> 第1腳:VSS為地電源第2腳:VDD接5V正電源</p><p> 第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度&l
50、t;/p><p> 第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。</p><p> 第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀信號,當RS為高電平RW為低電平時可以寫入數據。第6腳:E端為使能端,當E端由高電平跳變成低電平,液晶模塊執(zhí)行命令。<
51、/p><p> 第7~14腳:D0~D7為8位雙向數據線。</p><p> 第15~16腳:空腳</p><p> 在本設計中LCD1602與單片機的連接如圖2.9所示。單片機的P0口為數據輸出口,接到LCD1602的DB0—DB7口,P2.0—P2.2為控制端,分別接寄存器選擇RS、讀寫信號線R/W和使能端E,共同控制LCD1602讀寫操作。</p>
52、;<p> 圖2.9 顯示電路圖</p><p><b> 軟件設計</b></p><p> 由于整個系統軟件比較復雜,為了便于編寫、調試、修改和增刪,系統程序的編制適合采用模塊化的程序結構,故要求整個控制系統軟件由許多獨立的小模塊組成,它們之間通過軟件接口連接,遵循模塊內數據關系緊湊,模塊間數據關系松散的原則,將各功能模塊組織成模塊化的軟件結
53、構。</p><p> 系統的軟件主要由主程序模塊、數據采集模塊、數據處理模塊、控制算法模塊等組成。主模塊的功能是為其余幾個模塊構建整體框架及初始化工作;數據采集模塊的作用是將數字量采集并儲存到存儲器中;數據處理模塊是將采集到的數據進行一系列的處理,其中最重要的是數字濾波程序:控制算法模塊完成控制系統的PID運算并且輸出控制量。</p><p><b> 3.1主程序模塊&l
54、t;/b></p><p> 主程序模塊要做的主要工作是上電后對系統初始化和構建系統整體軟件框架,其中初始化包括對單片機的初始化、串口初始化等。然后等待溫度設定,若溫度已經設定好了,判斷系統運行鍵是否按下,若系統運行,則依次調用各個相關模塊,循環(huán)控制直到系統停止運行。主程序模塊的程序流程圖如圖3-1所示。</p><p> 3.2數據采集和顯示模塊</p><
55、p> 數據采集模塊的任務是負責溫度信號的采集以及將采集到的數字量提供給單片機。</p><p> AT89C52通過控制DS18B20讀取實時溫度,然后,通過P0口送到LCD1602進行顯示。數據采集模塊的程序流程圖如圖3.2所示,顯示程序設計框圖如圖3.3所示[8]。</p><p> 圖3-2 數據采集模塊程序流程圖</p><p><b>
56、; N</b></p><p><b> Y </b></p><p> 圖3.3顯示程序設計框圖</p><p> DS18B20和lcd1602的子程序設計如下:</p><p> #include<reg51.h></p><p> #define u
57、char unsigned char#define uint unsigned int</p><p> sbit DQ=P3^7;//ds18b20與單片機連接口sbit RS=P3^0;sbit RW=P3^1;sbit EN=P3^2;</p><p> unsigned char code str1[]={"temperature: "};unsi
58、gned char code str2[]={" "};</p><p> uchar data disdata[5];uint tvalue;//溫度值uchar tflag;//溫度正負標志</p><p>
59、; /*************************lcd1602程序**************************/void delay1ms(unsigned int ms)//延時1毫秒(不夠精確的){unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<100;j++);}</p>&
60、lt;p> void wr_com(unsigned char com)//寫指令//{ delay1ms(1); RS=0; RW=0; EN=0; P2=com; delay1ms(1); EN=1; delay1ms(1);
61、160; EN=0;}</p><p> void wr_dat(unsigned char dat)//寫數據//{ delay1ms(1);; RS=1; RW=0; EN=0; P2=dat; delay1ms(1); EN=1;
62、160; delay1ms(1); EN=0;}</p><p> void lcd_init()//初始化設置//{delay1ms(15);wr_com(0x38);delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5);
63、60; wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5);}</p><p> void display(unsigned char *p)//顯示//{while(*p!='\0'){wr_dat(*p);p++;delay1ms(1);}
64、}</p><p> init_play()//初始化顯示{ lcd_init(); wr_com(0x80);display(str1);wr_com(0xc0);display(str2); }</p><p> /***********************ds1820程序*****************
65、*********/void delay_18B20(unsigned int i)//延時1微秒{ while(i--);}</p><p> void ds1820rst()/*ds1820復位*/{ unsigned char x=0;DQ = 1; //DQ復位
66、delay_18B20(4); //延時DQ = 0; //DQ拉低delay_18B20(100); //精確延時大于480usDQ = 1; //拉高delay_18B20(40);
67、 } uchar ds1820rd()/*讀數據*/{ unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){ DQ = 0; //給脈沖信號 dat>>=1; DQ = 1; //給脈沖信號
68、60; if(DQ) dat|=0x80; delay_18B20(10);} return(dat);}</p><p> void ds1820wr(uchar wdata)/*寫數據*/{unsigned char i=0; for (i=8; i>0;
69、i--) { DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; }}</p>&
70、lt;p> read_temp()/*讀取溫度值并轉換*/{uchar a,b;ds1820rst(); ds1820wr(0xcc);//*跳過讀序列號*/ds1820wr(0x44);//*啟動溫度轉換*/ds1820rst(); ds1820wr(0xcc);//*跳過讀序列號*/ ds1820wr(0xbe);//*讀取溫度*/ a=
71、ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else {tvalue=~tvalue+1;tflag=1; }tvalue=
72、tvalue*(0.625);//溫度值擴大10倍,精確到1位小數return(tvalue);}</p><p> /*******************************************************************/ void ds1820disp()//溫度值顯示{ uchar flagdat; disdata[
73、0]=tvalue/1000+0x30;//百位數 disdata[1]=tvalue%1000/100+0x30;//十位數 disdata[2]=tvalue%100/10+0x30;//個位數 disdata[3]=tvalue%10+0x30;//小數位</p>&l
74、t;p> if(tflag==0) flagdat=0x20;//正溫度不顯示符號 else flagdat=0x2d;//負溫度顯示負號:-</p><p> if(disdata[0]==0x30)
75、160; {disdata[0]=0x20;//如果百位為0,不顯示 if(disdata[1]==0x30) {disdata[1]=0x20;//如果百位為0,十位為0也不顯示 } }</p><p> wr_com(0xc0); wr_dat(flagd
76、at);//顯示符號位 wr_com(0xc1); wr_dat(disdata[0]);//顯示百位 wr_com(0xc2); wr_dat(disdata[1]);//顯示十位 wr_com(0xc3);
77、 wr_dat(disdata[2]);//顯示個位 wr_com(0xc4); wr_dat(0x2e);//顯示小數點 wr_com(0xc5); wr_dat(disdata[3]);//顯示小數位 }</p><p><
78、b> 3.3輸入模塊</b></p><p> 鍵盤選擇程序掃描方式工作,利用CPU在完成其它工作的空閑時間中,調用鍵盤掃描子程序,來處理鍵的輸入要求。在執(zhí)行鍵功能處理程序時,CPU不再響應其它鍵輸入要求[9]。鍵盤處理子程序流程圖如圖3.4所示:</p><p> 圖3.4鍵盤程序設計框圖</p><p> 4乘4鍵盤程序設計如下:<
79、;/p><p> #include<reg51.h>#include<defi.h></p><p> /* 用于鍵消抖的延時函數 */void delay(){ uchar t; for (t=400;t>0;t--);}</p><p> /* 鍵掃描函數 */uchar keyscan(void
80、){ uchar scancode,tmpcode; P2 = 0xf0; // 發(fā)全0行掃描碼 if ((P2&0xf0)!=0xf0) // 若有鍵按下 { delay();
81、 // 延時去抖動 if ((P2&0xf0)!=0xf0) // 延時后再判斷一次,去除抖動影響 { scancode = 0xfe; while((scancode&0x10)!=0) // 逐行掃
82、描 { P2 = scancode; // 輸出行掃描碼 if ((P2&0xf0)!=0xf0) // 本行有鍵按下 {
83、tmpcode = (P2&0xf0)|0x0f;</p><p> /* 返回特征字節(jié)碼,為1的位即對應于行和列 */ return((~scancode)+(~tmpcode)); } else scancode = (scancode<&
84、lt;1)|0x01; // 行掃描碼左移一位 } } } return(0); // 無鍵按下,返回值為0}</p><p> /* 主程序 */void main(){ uchar key;&
85、lt;/p><p> while(1) { key = keyscan(); // 調用鍵盤掃描函數</p><p><b> delay();</b></p><p> switch(key)&
86、#160; { case 0x11:
87、160; NUM0=1; // 第1行第1列,選擇正弦波輸出 break; case 0x21: // 第1行第2列,選擇矩形波輸出
88、0; LIGHTA = 0; LIGHTB = 0; break; case 0x41: // 第1行第3列,選擇三角波輸出 LIGHTA = 1;
89、60; LIGHTB = 0; break; default:break; } if(NUM0)
90、160; { NUM0=0; LIGHTA = 0; LIGHTB = 1;
91、 } }}</p><p> 第4章 PID控制和參數整定</p><p> 4.1 PID調節(jié)器控制原理</p><p> PID控制器是一種線性控制器,一種它根據給定值r
92、in(t)與實際輸出值yout(t)構成控制偏差:</p><p> Error(t)=rin(t)-yout(t)</p><p> PID控制系統原理框圖如圖4.1所示</p><p> 圖4.1 PID控制系統原理框圖</p><p> PID控制就是對偏差信號進行比例、積分、微分運算后,形成一種控制規(guī)律。即,控制器的輸出為:
93、</p><p><b> ?。?.1)</b></p><p> 或寫成傳遞函數的形式:</p><p><b> (4.2)</b></p><p> 式中, kp——比例系數;Ti——積分時間常數;Td——微分時間常數。簡單說來,PID控制器各校正環(huán)節(jié)的作用如下:</p>
94、<p> 比例環(huán)節(jié):成比例地反映控制系統的偏差信號error(t),偏差一旦產生,控制器立即產生控制作用,以減小偏差[10]。</p><p> 比例控制: Gc(s)= Kp </p><p> 積分環(huán)節(jié):主要用于消除靜差,提高系統的無差度。積分作用的強盡弱取決于積分時間常數Ti,Ti越大,積分作用越弱,反之則越強。</p><p> 積分控制:
95、 Gc(s) = Kp/T is</p><p> 微分環(huán)節(jié):反偏差信號的變化趨勢(變化速率),并能在偏差信號變得太大之前,在系統中引入一個有效的早期修正信號,從而加快系統的動作速度,減少調節(jié)時間。</p><p> 微分控制: Gc(s) =KpT ds</p><p> 4.2 PID控制的分類</p><p> 基本PID控制器
96、的理想算式為</p><p><b> (4.3)</b></p><p><b> 式中</b></p><p> u(t)——控制器(也稱調節(jié)器)的輸出;</p><p> e(t)——控制器的輸入(常常是設定值與被控量之差,即e(t)=r(t)-c(t));</p>&l
97、t;p> Kp——控制器的比例放大系數;</p><p> Ti ——控制器的積分時間;</p><p> Td——控制器的微分時間。</p><p> 設u(k)為第k次采樣時刻控制器的輸出值,可得離散的PID算式</p><p><b> (4.4)</b></p><p>&
98、lt;b> , </b></p><p> 由于計算機的輸出u(k)直接控制執(zhí)行機構(如閥門),u(k)的值與執(zhí)行機構的位置(如閥門開度)一一對應,所以稱式(2)為位置式PID控制算法。</p><p> 位置式PID控制算法的缺點:當前采樣時刻的輸出與過去的各個狀態(tài)有關,計算時要對e(k)進行累加,運算量大;而且控制器的輸出u(k)對應的是執(zhí)行機構的實際位置,如
99、果計算機出現故障,u(k)的大幅度變化會引起執(zhí)行機構位置的大幅度變化。</p><p> 本設計采用增量式PID控制,算法程序框圖如圖4.2所示 </p><p> 圖4.2 增量式PID算法程序框圖</p><p> 增量式只需計算增量,算式中不需要累加,控制增量的確定僅與最近幾次偏差采樣值有關,當出現計算誤差或精度不足時,對控制量計算的影響較小,且較容易
100、通過加權處理獲得比較好的控制效果。</p><p> 4.3 數字PID參數的整定</p><p> PID控制器的參數整定是控制系統設計的核心內容。它是根據被控過程的特性確定PID控制器的比例系數、積分時間和微分時間的大小。PID控制器參數整定的方法很多,概括起來有兩大類:一是理論計算整定法。它主要是依據系統的數學模型,經過理論計算確定控制器參數。這種方法所得到的計算數據未必可以直接
101、用,還必須通過工程實際進行調整和修改。二是工程整定方法,它主要依賴工程經驗,直接在控制系統的試驗中進行,且方法簡單、易于掌握,在工程實際中被廣泛采用。本設計采用PID歸一整定法把對控制臺三個參數(Kc、Ti、Td,)轉換為一個參數KP, 從而使問題明顯簡化。以達到控制器的特性與被控過程的特性相匹配,滿足某種反映控制系統質量的性能指標。</p><p> 4.3.1 采樣周期選擇的原則</p>&l
102、t;p> ?。?)根據香農采樣定理,系統采樣頻率的下限為fs=2fmax,此時系統可真實地恢復到原來的連續(xù)信號。 </p><p> (2)從執(zhí)行機構的特性要求來看,有時需要輸出信號保持一定的寬度。采樣周期必須大于這一時間。</p><p> ?。?)從控制系統的隨動和抗干擾的性能來看,要求采樣周期短些。 </p><p> ?。?)從微機的工作量和每個調節(jié)
103、回路的計算來看,一般要求采樣周期大些。 </p><p> ?。?)從計算機的精度看,過短的采樣周期是不合適的。 </p><p> ?。?)滯后占主導地位時,應使滯后時間為采樣周期的整數倍</p><p> 下表4.1列出了幾種常見的被測參數的采樣周期T的經驗選擇數據??晒┰O計時參考。實際上生產過程千差萬別,經驗數據不一定就合適,可用試探法逐步調試確定。<
104、/p><p> 表4.1 采樣周期的經驗數據表</p><p> 4.3.2 PID參數對系統性能的影響</p><p> 表4.2 PID參數對系統性能的影響</p><p> 綜上所述,(Kp、Ti、Td,)對系統的性能影響如表4.3所示:</p><p> 表4.3 Kp、Ti和Td對系統的影響<
105、;/p><p> 4.4 PID計算程序 </p><p> PID調節(jié)規(guī)律的基本輸入輸出關系可用微分方程表示為:</p><p><b> (4.5)</b></p><p> 式中為調節(jié)器的輸入誤差信號,且</p><p><b> ?。?.6)</b></p
106、><p> 其中:為給定值,為被控變量;</p><p> 為調節(jié)器的輸出控制信號;</p><p><b> 為比例系數;</b></p><p><b> 為積分時間常數;</b></p><p><b> 微分時間常數。</b></p&
107、gt;<p> 計算機只能處理數字信號,若采樣周期為T第n次采樣的輸入誤差為,且,輸出為,PID算法用的微分由差分代替,積分由代替,于是得到</p><p><b> (4.7)</b></p><p><b> 寫成遞推形式為</b></p><p><b> △</b><
108、;/p><p><b> =</b></p><p><b> =</b></p><p><b> =</b></p><p><b> =</b></p><p> =
109、 (4.8)</p><p> 其中: (4.9)</p><p><b> (4.10)</b></p><p><b> ?。?.11)</b></p><p> 顯然,PID計算△u
110、n只需要保留現時刻en以及以前的兩個偏差量en-1和en-2。初始化程序初值en-1= en-2 =0 通過采樣并根據參數KP、KD、KI以及en、en-1和en-2計算△un。</p><p> 根據輸出控制增量△un,可求出本次控制輸出為</p><p> +△= (4.12)</p><p> 由于
111、電阻爐一般是屬于一階對象和滯后的一階對象,所以式中KP、KD、KI的選擇取決于電阻爐的階躍響應曲線和實際經驗,工程上已經積累了不少行之的參數整定方法。本設計采用Ziegler-Nichols提出的 PID歸一調整法,調整參數,主要是為了減少在線整定參數的數目,常常人為假定約束條件,以減少獨立變量的個數,令:</p><p><b> ?。?.13)</b></p><p&
112、gt;<b> ?。?.14)</b></p><p><b> (4.15)</b></p><p> 式中TU稱為臨界周期。在單純比例作用下(比例增益由小到大),是系統產生等幅振蕩的比例增益KU,這時的工作周期為臨界周期TU,則可以得到</p><p><b> △un =</b></
113、p><p><b> =</b></p><p> = (4.16)</p><p> 式中=0.2,=1.25[8] (4.17)</p><p> 從而可以調節(jié)的參數只有一個??稍O計一個調整子程序,通過鍵盤輸入改變KP值,改變
114、運行參數,使系統滿足要求[11]。</p><p> 下面對PID運算加以說明:</p><p> 所有的數都變成定點純小數進行處理。</p><p> 算式中的各項有正有負,以最高位作為符號位,最高位為0表示為正數,為1表示負數。正負數都是補碼表示,最后的計算以原碼輸出。</p><p> 雙精度運算,為了保證運算精度,把單字節(jié)8位
115、輸入采樣值Cn和給定值rn都變成雙字節(jié)16位進行計算,最后將運算結果取成高8位有效值輸出。輸出控制量un的限幅處理。為了便于實現對晶閘管的通斷處理,PID的輸出在0~250之間。大于250或小于0的控制量都是沒有意義的,因在算法上對進行限幅,即</p><p> = (4.18)</p><p> 圖4.3 PID計算程序的流程圖</p><p>
116、; PID的計算公式采用位置式算法,計算公式為</p><p><b> +</b></p><p> = (4.19)</p><p> PID計算的程序流程圖4.3所指示。</p><p> PID控制具體程序如下:<
117、/p><p> /*********************************************************/ /* 名稱: float PIDprocess1 */ /* 功能: PID adjust */ /* 說明: */ /* 調用: */ /* 輸入: float xdata *Yn, float xdata *Rn */ /* 返回值: deltaPn */ /**
118、*******************************************************/ float PIDprocess1() { int data E_0; float data deltaPn,deltaPi,deltaPp,deltaPd,PsumCopy; E_0=SetTemperature1-CurrentTemperature1; if(abs(E_0)>Emax) {
119、deltaPp=(float)Kp*(E_0-E_11); deltaPd=(float)Kd*(E_0-2*E_11+E_21); // if(deltaPd</p><p> /* if(fabs(deltaPn)>dPmax) { if(deltaPn>0) deltaPn=dPmax; else deltaPn=-dPmax; }*/ Psum2+=deltaPn; Psum
120、Copy=Psum2; if(PsumCopy>Pmax) PsumCopy=Pmax; if(PsumCopy<Pmin) PsumCopy=Pmin; E_22=E_12; E_12=E_0; return(PsumCopy); }</p><p><b> 第5章 仿真</b></p><p> 5.1 PROTEUS軟件簡介&
121、lt;/p><p> Proteus軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是: </p><p><b> ?。?)原理布圖 </b></p><p> ?。?)PCB自動或人工布線 </p><p> ?。?)SPICE電路仿真 </p><p><b>
122、革命性的特點: </b></p><p> ?。?)互動的電路仿真 </p><p> 用戶甚至可以實時采用諸如RAM,ROM,鍵盤,馬達,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 </p><p> ?。?)仿真處理器及其外圍電路 </p><p> 可以仿真51系列、AVR、PIC、ARM、等常用主流單
123、片機。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運行后輸入輸出的效果。配合系統配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設計開發(fā)環(huán)境[12]。</p><p><b> 5.2仿真</b></p><p> 通過對電路的硬件設計和程序設計,我們使用了PROTEUS對設計的電路進行仿真設計。首先,我們將硬件電路在PROTEU
124、S中連接好,按照設計總電路圖連接各個硬件,通過單片機C語言來進行編程,程序如附錄所示。通過KEIL軟件降我們的源程序轉換成目標程序來進行仿真,生成*.hex文件。最后從PROTEUS中,將我們的程序導入單片機中,便能進行實時仿真。仿真圖如圖5.1所示:</p><p> 圖5.1 PROTEUS仿真圖</p><p><b> 致 謝</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計(論文)溫室溫度自動控制系統設計
- 溫度自動控制畢業(yè)設計--基于51單片機的溫度自動控制系統設計研究
- 溫度自動控制畢業(yè)設計--基于51單片機的溫度自動控制系統設計研究
- 蔬菜大棚溫度濕度自動控制系統設計-畢業(yè)設計論文
- 大棚溫度自動控制系統設計
- 畢業(yè)設計---鐵廠配料自動控制系統設計
- 水位遙測自動控制系統畢業(yè)設計
- 畢業(yè)設計 焦爐壓力自動控制系統
- 水溫自動控制系統畢業(yè)設計論文
- 畢業(yè)設計--水塔水位自動控制系統
- 畢業(yè)設計----plc自動控制系統控制電梯設計
- 畢業(yè)設計--公路隧道通風自動控制系統設計
- 畢業(yè)論文-溫室溫度自動控制系統設計
- 交通燈自動控制系統設計畢業(yè)設計
- 畢業(yè)設計(論文)-焦爐壓力自動控制系統
- 熱水器自動控制系統設計畢業(yè)設計
- 畢業(yè)設計---立體車庫自動控制系統
- 畢業(yè)論文-溫室溫度自動控制系統設計
- 畢業(yè)設計(論文)車站信號自動控制系統
- 基于matlab的自動控制系統仿真畢業(yè)設計
評論
0/150
提交評論