版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 2015屆本科畢業(yè)設(shè)計</p><p> 題目: 基于單片機的溫度控制系統(tǒng)</p><p> Title: Temperature control system based on MCU </p><p> 院系名稱:物理與通信電子學(xué)院</p><p> 學(xué)生姓名: </p&
2、gt;<p> 學(xué)生學(xué)號: </p><p> 專 業(yè): 電子信息工程 </p><p> 指導(dǎo)老師: </p><p> 完成時間: 2015年4月 </p><p><b> 摘要</b></p&g
3、t;<p> 本文主要介紹了基于單片機的溫度控制系統(tǒng)的工作原理、硬件電路的設(shè)計和軟件設(shè)計。該溫度控制系統(tǒng)由單片機核心處理模塊、溫度采集模塊、控制執(zhí)行模塊,LCD顯示模塊組成。能夠完成溫度的設(shè)定、采集、顯示、控制等功能。</p><p> 關(guān)鍵詞:溫度控制,單片機,PID</p><p><b> Abstract</b></p>&l
4、t;p> This paper is specification of a design of temperature control system based on the single-chip, mainly introduced the work principle of temperature control system, the design of the hardware circuit and the C51
5、software design . The temperature control system is composed of a single-chip microcomputer core processing module, a temperature acquisition module, a keyboard input module, LCD module, control module, serial communicat
6、ion module . It can realize the temperature acquisition ,setting, dis</p><p> Key words: temperature control, MCU, PID </p><p><b> 目錄</b></p><p><b> 摘要I</b&
7、gt;</p><p> AbstractII</p><p><b> 1引言3</b></p><p><b> 2設(shè)計要求3</b></p><p><b> 3 方案論證3</b></p><p> 3.1 方案論證與比較4&
8、lt;/p><p> 3.2 核心處理模塊的方案4</p><p> 3.3溫度采集模塊的方案5</p><p> 3.4控制執(zhí)行的方案5</p><p> 3.5 顯示模塊6</p><p><b> 4 系統(tǒng)設(shè)計6</b></p><p> 4.1單片
9、機模塊6</p><p> 4.1.1復(fù)位電路的設(shè)計6</p><p> 4.1.2 時鐘電路設(shè)計7</p><p> 4.1.3單片機的I/O口的分配7</p><p> 4.2 LCD 1602顯示模塊7</p><p> 4.2.1 1602接口信號說明9</p><p&
10、gt; 4.2.2 1602操作時序9</p><p> 4.3 DS18B20溫度采集模塊的設(shè)計10</p><p> 4.3.1 DS18B20的分辨率11</p><p> 4.3.2 DS18B20工作時序圖11</p><p> 4.4控制執(zhí)行模塊12</p><p> 4.5加熱模塊
11、13</p><p> 4.6 PID控制算法13</p><p> 4.7 增量式PID算法的參數(shù)確定14</p><p><b> 5 軟件設(shè)計15</b></p><p> 5.1 主程序流程圖15</p><p> 5.2子程序設(shè)計16</p><p
12、> 5.2.1溫度采集模塊子程序16</p><p> 5.2.2 LCD顯示程序17</p><p><b> 6 實測結(jié)果17</b></p><p><b> 7 總結(jié)20</b></p><p><b> 參考文獻21</b></p>
13、;<p> 附錄一:電路圖22</p><p> 附錄二:源程序22</p><p> 附錄三:實物圖28</p><p><b> 1引言</b></p><p> 溫度作為一個基本的物理量,它是一個與人們生活環(huán)境、生產(chǎn)活動密切相關(guān)的重要物理量。在現(xiàn)代冶金、石油、化工及電力生產(chǎn)過程中,溫度
14、是極為重要而又普遍的熱工參數(shù)之一。在現(xiàn)代化工業(yè)生產(chǎn)過程中溫度作為一種常用的被控參數(shù),在很多生產(chǎn)過程中我們需要對溫度參數(shù)進行檢測。</p><p> 在環(huán)境惡劣或者溫度較高等場合下,為了保證生產(chǎn)過程正常安全地進行,提高產(chǎn)品的質(zhì)量和數(shù)量,以及減輕工人的勞動強度、節(jié)約能源,要求對溫度進行測、顯示、控制。使之達到工藝標(biāo)準(zhǔn),以單片機為核心設(shè)計的水箱溫度控制系統(tǒng),采用單片機來對溫度進行控制,不僅具有組態(tài)簡單、控制方便和靈活
15、性大等優(yōu)點,而且可以大幅提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。 因此單片機對溫度的控制是一個工業(yè)生產(chǎn)中經(jīng)常會遇到的問題。[1]</p><p> 隨著電子行業(yè)的迅猛發(fā)展,傳感器技術(shù)和計算機技術(shù)的不斷進步,而且微型計算機和傳感器的價格也慢慢的變低,可靠性也逐步的提高,用信息技術(shù)來實現(xiàn)溫度的控制并且提高溫度控制的精確度不但是可以達到的而且是不難實現(xiàn)的。用高新技術(shù)來解決工業(yè)生產(chǎn)中遇到的問題,以此來
16、加強我國工業(yè)化的建設(shè),提高人民的生活水平和生活質(zhì)量。溫度的控制是無論是在工業(yè)生產(chǎn)過程中,還是在日常生活中都起著非常重要的作用,過低的溫度或過高的溫度都會使資源浪費而失去相關(guān)的作用。特別是在當(dāng)前全球能源極度缺乏的情況下,我們更應(yīng)該好好把握對溫度的控制,合理的利用身邊的資源。[3]</p><p><b> 2設(shè)計要求</b></p><p> 設(shè)計并制作一個基于單片
17、機的溫度控制系統(tǒng),基本要求如下:設(shè)定一個合適的溫度(如30℃),讓水箱溫度達到設(shè)定值;實際溫度與設(shè)定值誤差在±1.5℃以下。</p><p><b> 3 方案論證 </b></p><p> 根據(jù)本題設(shè)計要求,確定了本系統(tǒng)的原理框圖如圖3-1所示。</p><p> 圖3-1 原理框圖</p><p&g
18、t; 3.1 方案論證與比較</p><p> 根據(jù)題目的要求,我提出了以下的兩種系統(tǒng)設(shè)計方案供選擇:</p><p> 方案1:該方案采用的是傳統(tǒng)的模擬控制方法,選用傳統(tǒng)的模擬電路,用電位器設(shè)定給定的目標(biāo)溫度值,采用上下限比較電路將反饋的溫度值與給定的目標(biāo)溫度值進行比較之后,然后由加熱控制器決定加熱或者不加熱。由于采用模擬控制方式,溫度控制系統(tǒng)受環(huán)境溫度的影響大,不能夠?qū)崿F(xiàn)復(fù)雜的控
19、制算法和相對比較精確的溫度控制精度,而且不能用顯示和鍵盤設(shè)定及上位機傳輸信息。[6]</p><p> 方案2:采用單片機為核心。采用了溫度傳感器采集溫度信號并通過單片機進行一定的計算產(chǎn)生控制信號去控制加熱模塊。使用單片機控制具有編程簡單靈活,控制方便等優(yōu)點,較為容易的實現(xiàn)溫度的控制及顯示。通過軟件編程能夠?qū)崿F(xiàn)各種控制算法使系統(tǒng)具有控制精度相對較為高的優(yōu)點。</p><p> 通過上述
20、兩種方案的比較,方案2明顯改善了方案1中的不足,并具有控制溫度精度高、控制簡單的特點,因此本溫度控制系統(tǒng)的設(shè)計采用方案2。</p><p> 3.2 核心處理模塊的方案</p><p> 方案1:采用PIC單片機。PIC單片機的各個型號的兼容性強,功能全,型號多,抗干擾能力強。缺點:PIC單片機價格貴,燒寫器較貴,燒寫程序比較麻煩。</p><p> 方案2:
21、采用MCS-51單片機。MCS-51系列單片機是8位增強型。51單片機具有功能強,體積小,可靠性好和價格便宜的優(yōu)點,并且編程較為容易,程序的燒寫也較為簡單。</p><p> 綜合上面兩個方案以及本人日常學(xué)習(xí)到的單片機,選擇方案二作為本設(shè)計的核心處理模塊。</p><p> 3.3溫度采集模塊的方案</p><p> 采用溫度傳感器DS18B20。DS18B2
22、0具有體積小、質(zhì)量輕、精密度高、全數(shù)字化、性能穩(wěn)定等優(yōu)點。它的測量范圍在-50℃至+125℃,在-10℃至+85℃范圍內(nèi)精度為±0.5℃,當(dāng)電源電壓在5-10V之間,穩(wěn)定度為1﹪時,其各方面特性都滿足了本系統(tǒng)的設(shè)計要求。此外DS18B20可直接將溫度轉(zhuǎn)化成串行數(shù)字信號供處理器處理,可以簡化硬件電路和提高可靠性。[2] </p><p> 3.4控制執(zhí)行的方案</p><p>
23、 方案1:由單片機I/O口輸出高低電平控制電磁繼電器的通斷。當(dāng)I/O口輸出低電平時,三極管不導(dǎo)通,繼電器無電流通過,開關(guān)斷開,電阻絲不加熱。當(dāng)I/O口輸出高電平時,三極管導(dǎo)通,繼電器有較大的電流通過,開關(guān)閉合,電阻絲開始加熱。[4]</p><p> 方案2:采用固態(tài)繼電器進行控制。首先單片機進行PID算法,實時的更新PWM脈沖的輸出參數(shù),來控制PWM波的產(chǎn)生,從而控制固態(tài)繼電器的導(dǎo)通和斷開,進而控制電阻絲的加
24、熱來實現(xiàn)溫度的控制。用單片機實現(xiàn)了自適應(yīng)的控制,更好的減少了溫度的遲滯性,改進了傳統(tǒng)的直接輸出高低電平控制的方法。而且固態(tài)繼電器的性能滿足控制的高頻頻率的要求。</p><p> 比較了上面的種方案,方案1雖然電路比較簡單,控制比較容易,但是無法滿足溫度控制系統(tǒng)的較小的溫度波動和頻繁的開關(guān)普通的電磁繼電器從而產(chǎn)生較大的噪音和器件壽命的損耗。所以我最終采用固態(tài)繼電器為控制執(zhí)行的方案。</p><
25、;p><b> 3.5 顯示模塊</b></p><p> 方案一:選用數(shù)碼管顯示,用普通的數(shù)碼管顯示簡單的數(shù)字、符號、字母。</p><p> 方案二:選用液晶顯示,顯示的內(nèi)容更加的豐富。根據(jù)所學(xué)知識與方案顯示內(nèi)容的設(shè)定,我選擇了方案二。</p><p><b> 4 系統(tǒng)設(shè)計</b></p>
26、<p> 本系統(tǒng)選用的模塊包括:單片機系統(tǒng),LED顯示模塊,溫度采集模塊,控制執(zhí)行模塊,加熱模塊。</p><p> 4.1單片機模塊 </p><p> 此次的畢業(yè)設(shè)計的核心部分是單片機的控制,本次選用的是ATMEL公司生產(chǎn)的芯片AT89C52,主要是它的價格便宜,而且在學(xué)習(xí)中接觸較多比較熟悉,容易獲得。</p><p> 4.1.1復(fù)位電路
27、的設(shè)計</p><p> 復(fù)位使單片機處于起始狀態(tài),并從該起始狀態(tài)開始運行。STC89C52的RST引腳為復(fù)位端,該引腳連續(xù)保持2個機器周期(24個時鐘振動周期)以上高電平,就可以使單片機復(fù)位。單片機的外部復(fù)位有上電復(fù)位和按鍵電平復(fù)位。由于單片機運行過程中,其本身的干擾或外界干擾會導(dǎo)致出錯,此時我們可按復(fù)位鍵重新開始運行??紤]到本系統(tǒng)的運行和調(diào)試,復(fù)位電路采用按鍵復(fù)位方式,如圖4-1所示。</p>
28、<p><b> 圖4-1 復(fù)位電路</b></p><p> 4.1.2 時鐘電路設(shè)計</p><p> 時鐘電路是單片機的心臟,它控制著單片機的工作節(jié)奏。STC89C52內(nèi)部有一個反相振蕩放大器,XTAL1和XTAL2分別是該反向振蕩放大器的輸入端和輸出端。本設(shè)計采用的晶振頻率為11.0592MHZ。因為可以準(zhǔn)確得到9600波特率和19200波特
29、率,用于有串口通訊的場合。51系列單片機還可使用外部時鐘。在使用外部時鐘時,外部時鐘必須從XTAL1輸入,而XTAL2懸空。圖4-2為晶振電路</p><p><b> 圖4-2 晶振電路</b></p><p> 4.1.3單片機的I/O口的分配</p><p> 首先對LCD和單片機的連接分配I/O口,LCD的E,RW,RS端分別為P
30、0.5-P0.7,P2.0-P2.7為LCD1602的數(shù)據(jù)輸入端。</p><p> 然后再對獨立鍵盤進行I/O口分配,本設(shè)計中的獨立按鍵只需要四個端口,設(shè)置P3.4-P3.7分別為功能鍵,加一鍵,減一鍵,確定鍵。</p><p> DS18B20溫度傳感器是單總線的結(jié)構(gòu),和單片機的通訊只需要一個I/O口,可以設(shè)置P1.3為DS18B20溫度傳感器的總線和單片機的通訊接口。同樣的,系統(tǒng)
31、對溫度的控制的信號的輸出也是一個I/O口就能實現(xiàn)的,那么就設(shè)置P2.0為溫度控制信號輸出端。</p><p> 4.2 LCD 1602顯示模塊</p><p> 在本設(shè)計中采用LCD 1602來充當(dāng)顯示的作用,對LCD模塊的電路的設(shè)計得先了解LCD的各個引腳然后再設(shè)置其各個引腳和單片機連接的的I/O口。</p><p> LCD1602液晶顯示模塊的讀寫操作
32、,屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。</p><p> 1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表4-3所示:</p><p> 表4-3 LCD1602液晶模塊內(nèi)部的控制器共有11條控制指令</p><p> 根據(jù)LCD1602的引腳定義和資料設(shè)計了了溫度控制系統(tǒng)的顯示模塊,電路圖如下圖4-4</p><p> 圖
33、4-4 溫控系統(tǒng)顯示模塊</p><p> 4.2.1 1602接口信號說明</p><p> 1602接口信號說明如表4-5所示</p><p> 表4-5 1602接口說明</p><p> 4.2.2 1602操作時序</p><p> 1602的操作時序圖(見圖4-6)</p><
34、p> 圖4-6 1602操作時序</p><p> 分析時序圖可知1602液晶的流程如下</p><p> 通過RS確定是寫數(shù)據(jù)還是寫命令。寫命令包括液晶的光標(biāo)顯示/不顯示、光標(biāo)閃爍/不閃爍、需不需要移動屏幕、在液晶什么位置顯示等。寫數(shù)據(jù)是指要顯示什么內(nèi)容。</p><p> 讀/寫控制端設(shè)置為寫模式,即低電平。</p><p&g
35、t; 將數(shù)據(jù)或命令送至數(shù)據(jù)線。</p><p> 給E一個高脈沖將數(shù)據(jù)送入液晶控制器,完成寫操作。</p><p> 4.3 DS18B20溫度采集模塊的設(shè)計</p><p> DS18B20的管腳排列如圖4-7所示,DQ為數(shù)字信號輸入/輸出端;GND 為電源地;VDD為外接供電電源輸人端。本溫度控制系統(tǒng)采用外接供電方式,電路圖如下圖4-8所示</p&
36、gt;<p> 圖4-7 DS18B20管腳圖</p><p> 圖4-8 DS18B20電路圖</p><p> 4.3.1 DS18B20的分辨率</p><p> DS18B20溫度傳感器可完成對溫度的測量,溫度分辨率的設(shè)定能夠影響到溫度傳感器的轉(zhuǎn)換時間和轉(zhuǎn)換的精確度[11]。溫度的分辨率設(shè)置如表4-9所示。</p><
37、;p> 表4-9:溫度分辨率設(shè)置表</p><p> 由于本系統(tǒng)的對被控的對象的溫度采集的實時要求較高,所以選擇DS18B20的分辨率位12位,在12位分辨率的時候的溫度采集精度是0.0625度,滿足溫度系統(tǒng)的控制的精度的要求,所以R1和R0的設(shè)置分別為R1=1,R0=1。</p><p> 4.3.2 DS18B20工作時序圖</p><p> 初始
38、化(時序圖見4-10)</p><p> 圖4-10初始化時序</p><p> ?。?)寫數(shù)據(jù)(時序圖見圖4-11)</p><p> 圖4-11寫數(shù)據(jù)時序</p><p> 讀數(shù)據(jù)(時序圖見圖4-12)</p><p> 圖4-12讀數(shù)據(jù)時序</p><p><b> 4
39、.4控制執(zhí)行模塊</b></p><p> STC89C52是本溫度控制系統(tǒng)的處理器。首先由DSl8B20數(shù)字溫度傳感器檢測并且采集溫度數(shù)據(jù)直接轉(zhuǎn)換成數(shù)字信號發(fā)送給單片機,單片機將檢測的溫度值與設(shè)定的目標(biāo)溫度值進行比較,計算出溫度的偏差,然后采用PID算法并且輸出相應(yīng)的控制信號,控制固態(tài)繼電器在控制周期內(nèi)的通斷占空比(控制電阻絲的平均發(fā)熱功率的大小),從而達到較為精確可靠的控制溫度的目的。</
40、p><p> 控制執(zhí)行電路作為單片機溫度控制系統(tǒng)的執(zhí)行部分,他是將單片機處理后的數(shù)字控制信號用輸出口輸出,并將該數(shù)字信號通過電路對控制對象的控制。由于單片機的輸出信號電平很低,無法直接驅(qū)動外圍設(shè)備進行工作,因此在本設(shè)計中單片機的控制部分需要外圍設(shè)備的驅(qū)動、信號電平的轉(zhuǎn)換技術(shù)。本溫度控制系統(tǒng)的設(shè)計主要采用固態(tài)繼電器作為控制電路的器件,通過固態(tài)繼電器可以實現(xiàn)單片機的電平信號控制高功率負載的功能。</p>
41、<p> 控制模塊的電路設(shè)計如下圖4-13:</p><p> 圖4-13控制模塊電路圖</p><p><b> 4.5加熱模塊</b></p><p> 本次設(shè)計的溫控系統(tǒng)由100W的電阻絲給水進行加熱,加熱的開關(guān)由固態(tài)繼電器實現(xiàn)。</p><p> 4.6 PID控制算法</p>
42、<p> 溫度控制的PID控制原理是先求出實際的溫度值與目標(biāo)溫度值的偏差值。再對偏差值進行比例,積分與微分的計算處理,得到的控制數(shù)字信號來控制電阻絲的加熱,使實際溫度穩(wěn)定在設(shè)定的目標(biāo)溫度范圍內(nèi)。本溫度控制系統(tǒng)采用的數(shù)字PID算法是增量式PID算法,增量式PID算法的優(yōu)點是編程比較簡單,數(shù)據(jù)可以遞推使用,占用存儲空間少,運算快,可以用單片機的程序來實現(xiàn)。</p><p> 增量式PID算法是指數(shù)字控制
43、器的輸出只是控制量的增量?u(K),增量式PID控制系統(tǒng)的系統(tǒng)如圖4-14所示。</p><p> 圖4-14 增量式PID控制系統(tǒng)框圖</p><p> 通過離散化過程,可得離散的PID表達式為:</p><p><b> 4-1</b></p><p> 式中:k為采樣序號,k=0、1、2、3、……;u(k)
44、為第k次采樣時刻的計算輸出值;e(k)為第k次采樣時刻輸入的偏差值;e(k-1)為第k-1次采樣時刻輸入的偏差值。</p><p> 可由式(1)導(dǎo)出提供增量的PID控制算式,根據(jù)遞推原理可得:</p><p><b> 4-2</b></p><p> 用式4-1減去式4-2,可得:</p><p><b&
45、gt; 4-3</b></p><p> 由上面的公式可得:控制系統(tǒng)的輸出僅僅是與最近的3次的偏差有關(guān)。在確定了各個常量之后,根據(jù)最近的3次偏差即可求出PID控制的增量。</p><p> 4.7 增量式PID算法的參數(shù)確定</p><p> PID參數(shù)的設(shè)定決定了溫度控制系統(tǒng)升溫速度和溫度控制系統(tǒng)的穩(wěn)定性。面對不同的控制對象的PID參數(shù)都是不相
46、同。根據(jù)這些參數(shù)在整個PID控制過程中的作用,在系統(tǒng)最終調(diào)試中具體來確定。PID參數(shù)的設(shè)置對系統(tǒng)的可能的影響如下:</p><p> 1)溫度很迅速就能達到設(shè)定的目標(biāo)值,但是超調(diào)量很大。出現(xiàn)這種情況的可能的原因是:比例系數(shù)KP太大,使得溫度達到目標(biāo)值之前的上升比例過高;微分系數(shù)KD太小,致使對溫度系統(tǒng)的控制反應(yīng)不夠靈敏。</p><p> 2)溫度達不到目標(biāo)值,長時間小于目標(biāo)值。出現(xiàn)這
47、種情況的可能原因是:比例系數(shù)KP過小,升溫的比例不夠;積分系數(shù)KI太小,對恒定的溫度偏差補償不足。</p><p> 3)基本上能穩(wěn)定在目標(biāo)溫度值上,但上下偏差很大而且經(jīng)常波動。出現(xiàn)這種現(xiàn)象的可能原因是:微分系數(shù)KD太小,對溫度的即時變化反應(yīng)不夠迅速;積分系數(shù)I太大,使得微分的反應(yīng)被淹沒從而鈍化;基本的控制周期太短,加熱溫度還沒有傳到測溫點上。</p><p> PID參數(shù)的調(diào)整步驟為
48、先比例,后積分,再微分的步驟。編寫程序的時先設(shè)定它們的大概的數(shù)值。然后通過反復(fù)的實驗調(diào)試,根據(jù)實驗調(diào)試的結(jié)果最終確定比較理想的PID參數(shù)值。</p><p><b> 5 軟件設(shè)計</b></p><p> 5.1 主程序流程圖</p><p> 主程序流程圖如下圖5-1</p><p> 圖5-1主程序流程圖&
49、lt;/p><p><b> 5.2子程序設(shè)計</b></p><p> 子程序包括了LCD顯示模塊程序,溫度控制模塊程序,DS18B20溫度采集模塊程序等。</p><p> 5.2.1溫度采集模塊子程序</p><p> 根據(jù)DS18B20的相關(guān)資料編寫了溫度采集程序,程序流程圖如下圖5-2</p>
50、<p><b> No</b></p><p><b> No </b></p><p> 5-2 溫度采集模塊程序流程圖</p><p> 5.2.2 LCD顯示程序</p><p> 根據(jù)1602的資料編寫了溫控系統(tǒng)顯示模塊的程序,流程圖如下圖5-3</p
51、><p><b> Yes</b></p><p> 圖5-3 顯示模塊程序流程圖</p><p><b> 6 實測結(jié)果</b></p><p> 下面是PID參數(shù)實驗調(diào)試數(shù)據(jù)如表6-1表6-2及圖6-3至圖4-8所示。</p><p> 表6-1 PID參數(shù)實驗數(shù)據(jù)
52、</p><p> 表6-2 試驗記錄數(shù)據(jù)</p><p><b> 圖6-3序號1</b></p><p><b> 圖6-4 序號2</b></p><p><b> 圖6-5 序號3</b></p><p><b> 圖6-6
53、 序號4</b></p><p> 圖6-7 序號5</p><p><b> 圖6-8 序號6</b></p><p> 經(jīng)過對溫度控制系統(tǒng)反復(fù)的實驗調(diào)試,以及數(shù)據(jù)的對比。最后確定PID參數(shù):KP=1,KI=0.1,KD=10。</p><p><b> 7 總結(jié)</b>
54、</p><p> 此溫控系統(tǒng)的設(shè)計電路比較簡單,硬件電路基本完成,使用ISIS 7 Professional完成了溫度顯示部分的仿真。在以51單片機為核心,配合其他電路的溫控系統(tǒng),完成了對控制對象的恒溫控制。溫控系統(tǒng)實現(xiàn)設(shè)定溫度,顯示溫度,以及自動恒溫等功能。</p><p> 本次設(shè)計的步驟如下:</p><p> 1、根據(jù)任務(wù)要求選擇合理方案</p
55、><p><b> 2、元件的選擇</b></p><p> 3、硬件設(shè)計,用protues進行電路設(shè)計與仿真</p><p><b> 4、軟件設(shè)計</b></p><p> 5、焊接電路板,對電路進行檢查</p><p><b> 6、調(diào)試電路與程序<
56、;/b></p><p> 7、反復(fù)試驗確定PID參數(shù)</p><p> 8、對整個系統(tǒng)進行調(diào)試,使其達到要求</p><p> 本設(shè)計理論上能完成設(shè)計要求,但在調(diào)試中發(fā)現(xiàn)每次到達設(shè)定溫度的時間都不確定,溫度的誤差也比較大。設(shè)定溫度為30攝氏度,有時會出現(xiàn)只到達28.5攝氏度時就不再加熱。</p><p><b> 參
57、考文獻</b></p><p> [1] 張開生. 郭國法.MCS-51單片機溫度控制系統(tǒng)設(shè)計[J].微計算機信息.2005,7(6).52-56</p><p> [2] 譚浩強.C程序設(shè)計[M].北京:清華大學(xué)出版社,2005.49-54</p><p> [3] 張建波. 韓崧.淺談溫度測量的發(fā)展現(xiàn)狀[J].計測技術(shù).2001,12(2):
58、30-32</p><p> [4] 李新剛.于巍?。悄茈娂訜釡乜叵到y(tǒng)的研制[J].機械工程師.2005,7(3):92-98</p><p> [5] 郭天祥.51單片機C語言教程[M].北京:電子工業(yè)出版社.2013 .230-250</p><p> [6] 胡漢才.單片機原理及系統(tǒng)設(shè)計[M].北京:清華大學(xué)出版社.2004.420-433<
59、/p><p> [7] 李朝青.單片機原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社.2005.210-223</p><p> [8] 秦曾煌.電工學(xué)[M].北京:高等教育出版社[M].2004.69-75</p><p> [9] 費業(yè)泰.誤差理論與數(shù)據(jù)處理[M].北京:機械工業(yè)出版社.2004.120-126</p><p>
60、 [10] 楊欣榮.智能儀器原理、設(shè)計與發(fā)展[M].湖南:中南大學(xué)出版社.2003.71-80</p><p> [11]Dallas Semiconductor. DS18B20 Datasheet[P]. 2002.15(6):50-76</p><p> [12]Wei Jiang.Design of an intelligent temperature control sys
61、tem based on the fuzzy self-tuning PID[J].DOAJ,2005,13(5):139-146</p><p><b> 附錄一:電路圖</b></p><p><b> 附錄二:源程序 </b></p><p> #include <reg52.h></p>
62、;<p> #defineucharunsignedchar</p><p> #defineuintunsignedint</p><p> sbitrs=P1^0;</p><p> sbitwr=P1^1;</p><p> sbite=P1^2; </p><p>
63、; sbit key_up=P3^5;</p><p> sbit key_down=P3^6;</p><p> sbit key_set=P3^4;</p><p> sbit key_enter=P3^7;</p><p> sbitds=P1^3;</p><p&
64、gt; sbitshuchu=P2^0; </p><p><b> uintZKB;</b></p><p> floatzkc;</p><p> floatkp=1; floatki=0.1;</p><p> floatkd=10; &l
65、t;/p><p> floatek, u_k, uk, uk1,ek1,ek2; </p><p> ucharclick; </p><p> uchar flag,flag1,flag2;</p><p> uintb,n,set_temp=30,temp,zhouqi,uc=10
66、00,sd;</p><p> ucharnum,temp1,yi,er,san,si; </p><p> floatf_temp,send;</p><p> uchar comm_data1=0;</p><p> char flag3=0;</p><p> voidwri
67、te_com(ucharcom);</p><p> voidwrite_data(uchar dat);</p><p> voidinit()</p><p> {TMOD=0x01; </p><p> TH0=0x4c; TL0=0x00; </p><p&g
68、t; TH1=0xfd; TL1=0xfd; </p><p><b> TR1=1;</b></p><p><b> REN=1;</b></p><p> SM0=0; SM1=1; </p><p> EA=1; ET0=1; TR0=1;<
69、;/p><p><b> ES=0;</b></p><p><b> yi=0;</b></p><p><b> er=0;</b></p><p><b> flag=0;</b></p><p><b> }
70、</b></p><p> voiddelay(uchar u)</p><p> {int x,y;</p><p> for(x=u;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></
71、p><p> voiddelay1(uchar u)</p><p> {uintx,y;</p><p> for(x=u;x>0;x--) </p><p> for(y=50;y>0;y--); }</p><p> void dsreset(void) </p&g
72、t;<p> {uint i;ds=0;i=103;</p><p> while(i>0)i--;</p><p><b> ds=1;i=4;</b></p><p> while(i>0)i--;}</p><p> bit tempreadbit(void)
73、 </p><p> {uint i;bit dat;</p><p> ds=0;i++; </p><p> ds=1;i++;i++;dat=ds;</p><p> i=8;while(i>0)i--;</p><p> return(dat);}</p>
74、<p> uchar tempread(void) </p><p> {uchar i,j,dat;</p><p><b> dat=0;</b></p><p> for(i=1;i<=8;i++)</p><p> {j=tempreadbit();</p
75、><p> dat=(j<<7)|(dat>>1);</p><p> } return(dat);</p><p><b> }</b></p><p> void tempwritebyte(uchar dat)</p><p> {uint i;
76、uchar j;bit testb;</p><p> for(j=1;j<=8;j++)</p><p> {testb=dat&0x01;dat=dat>>1;</p><p> if(testb)</p><p> {ds=0;i++;i++;ds=1;i=8;while(i>0)i--
77、;}</p><p><b> else</b></p><p> {ds=0; i=8;while(i>0)i--;ds=1;i++;i++;}</p><p><b> }</b></p><p><b> } </b></p
78、><p> void tempchange(void) </p><p> {dsreset();delay(1);</p><p> tempwritebyte(0xcc); </p><p> tempwritebyte(0x44); </p><p>
79、 tempwritebyte(0x3f); </p><p><b> }</b></p><p> uint get_temp() </p><p> {uchar a,b;</p><p> dsreset();delay(1);tempwritebyte(0xcc);tempw
80、ritebyte(0xbe);</p><p> a=tempread();</p><p> b=tempread(); </p><p> temp=b;temp<<=8; </p><p> temp=temp|a;f_temp=temp*0.0
81、625;</p><p> temp=f_temp*100; </p><p> return temp;</p><p><b> }</b></p><p> void keyscan1()</p><p>
82、; { if(key_set==0) </p><p> { delay(1); </p><p> while(!key_set);</p><p><b> flag3++;</b></p><p> if(flag3>=3)flag3=1;&
83、lt;/p><p> if(flag3==1)</p><p><b> { </b></p><p> write_com(0x89);</p><p> write_com(0x0f); </p><p><b> }</b></p><p
84、> if(flag3==2)</p><p><b> { </b></p><p> write_com(0x8a);</p><p> write_com(0x0f); </p><p><b> } </b></p><p><b>
85、 }</b></p><p> if(key_enter==0) </p><p> { delay(1); </p><p> if(key_enter==0) </p><p><b> { </b></p>
86、<p> write_com(0x0c); </p><p><b> flag3=0;</b></p><p> set_temp=yi*1000+er*100;</p><p><b> }</b></p><p> while(!key_enter);</p>
87、;<p><b> }</b></p><p> if(flag3!=0)</p><p><b> {</b></p><p> if(key_up==0) </p><p> { delay(1); <
88、;/p><p> if(key_up==0) </p><p> { if(flag3==1) </p><p><b> {yi++;</b></p><p> if(yi>9)yi=0;</p><p> write_com(0x89);</p>
89、<p> write_data(yi+'0');</p><p> write_com(0x89);</p><p> } </p><p> if(flag3==2) </p><p><b> { </b></p><p><b
90、> er++;</b></p><p> if(er>9)er=0;</p><p> write_com(0x8a);</p><p> write_data(er+'0');</p><p> write_com(0x8a);</p><p> }
91、 </p><p><b> }</b></p><p> while(!key_up);</p><p><b> }</b></p><p> if(key_down==0) </p><p> { delay(1);
92、 </p><p> if(key_down==0)</p><p><b> { </b></p><p> if(flag3==1){if(yi<=0)yi=10; yi--;write_com(0x89);write_data(yi+'0');write_com(0x89);}
93、 </p><p> if(flag3==2) </p><p> {if(er<=0)er=10; er--;write_com(0x8a);write_data(er+'0');write_com(0x8a);} </p><p> } </p><p&
94、gt; while(!key_down);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> voidwrite_com(ucharcom) { rs=0;wr
95、=0;P0=com;delay(5);e=1;delay(5);e=0;}</p><p> voidwrite_data(uchar dat) { rs=1;wr=0;P0=dat;delay1(5);e=1;delay1(5);e=0;}</p><p> voidinitlcd()</p><p><
96、;b> { rs=0;</b></p><p><b> wr=0;</b></p><p><b> e=0;</b></p><p> write_com(0x38); write_com(0x0c); </p><p> wr
97、ite_com(0x06);</p><p> write_com(0x01);</p><p> // write_com(0x80);}</p><p> voidwrite_ser(uchar*ser) </p><p> { uinti;</p><p> for(i=
98、0;ser[i]!='\0';i++)</p><p> {write_data(ser[i]);</p><p><b> delay(5);</b></p><p><b> }</b></p><p><b> }</b></p>
99、<p> voiddisplay() </p><p><b> {</b></p><p> {write_com(0x80); write_ser("SET_TEMP:"); write_data(yi+'0');wri
100、te_data(er+'0');write_data('.');</p><p> write_data(san+'0');write_data(si+'0');write_com(0x8e);</p><p> write_data(0xdf);write_data('C');</p>&l
101、t;p> write_com(0xc0);write_ser("CUR_TEMP:"); b=get_temp();</p><p> write_data(b/1000+'0');write_data(b%1000/100+'0'); </p>
102、<p> write_data('.'); write_data(b%100/10+'0'); </p><p> write_data(b%10+'0'); //0.1,0.01 </p><p> write_data(0xdf);write_data('C');}</p&
103、gt;<p><b> }</b></p><p> void deal(uint t) </p><p><b> { </b></p><p> if(zhouqi==1) </p><p> { zhouqi=0;</p
104、><p> ek=set_temp-t; u_k=kp*(ek-ek1)+ki*ek+kd*(ek-2*ek1+ek2); uk=uk1+u_k;zkc=100*uk/uc;</p><p> if (zkc>=60)</p><p><b> zkc=60;</b&
105、gt;</p><p><b> }</b></p><p> if(t>=set_temp) </p><p> shuchu=1; </p><p> else
106、</p><p> { ZKB=(int)zkc; </p><p> if (click<=ZKB) </p><p> shuchu=0; </p><p><b> else </b></p><p> shuchu=1 ;
107、</p><p><b> }</b></p><p> uk1=uk;ek2=ek1;ek1=ek; </p><p><b> }</b></p><p> void timer0(void) interrupt 1 </p><p> {
108、 TH0=0x4c; TL0=0x00; </p><p> click++; flag1++; </p><p> if (click>=100) </p><p> 50ms*100=5s</p><p
109、> { click=0;zhouqi=1;}</p><p><b> }</b></p><p> void main()</p><p><b> { </b></p><p> init();</p><p> initl
110、cd(); </p><p><b> while(1)</b></p><p><b> { </b></p><p> keyscan1();</p><p> if(flag3==0)</p><p><b&g
111、t; {</b></p><p> tempchange();</p><p> deal(get_temp()); </p><p> b=get_temp();</p><p> display();</p><p><b> } </
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機溫度控制系統(tǒng)設(shè)計畢業(yè)設(shè)計
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計-----基于單片機的溫度控制系統(tǒng)
- 基于單片機溫度控制系統(tǒng)的畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---單片機溫度控制系統(tǒng)
- 單片機溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----基于單片機的溫度控制系統(tǒng)設(shè)計
- 基于單片機的溫度控制系統(tǒng)設(shè)計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機的溫度控制系統(tǒng)設(shè)計
- 基于單片機的溫度控制系統(tǒng)的畢業(yè)設(shè)計
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計 (2)
- 畢業(yè)設(shè)計---單片機溫度控制系統(tǒng)的設(shè)計
- 基于單片機的智能溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機的冰箱溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計---單片機多點溫度控制系統(tǒng)
- 單片機閉環(huán)溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----單片機實現(xiàn)溫度控制系統(tǒng)
評論
0/150
提交評論