版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 2015屆本科畢業(yè)設(shè)計</p><p> 題目: 基于單片機(jī)的溫度控制系統(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> 本文主要介紹了基于單片機(jī)的溫度控制系統(tǒng)的工作原理、硬件電路的設(shè)計和軟件設(shè)計。該溫度控制系統(tǒng)由單片機(jī)核心處理模塊、溫度采集模塊、控制執(zhí)行模塊,LCD顯示模塊組成。能夠完成溫度的設(shè)定、采集、顯示、控制等功能。</p><p> 關(guān)鍵詞:溫度控制,單片機(jī),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、機(jī)模塊6</p><p> 4.1.1復(fù)位電路的設(shè)計6</p><p> 4.1.2 時鐘電路設(shè)計7</p><p> 4.1.3單片機(jī)的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> 參考文獻(xiàn)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ù)進(jìn)行檢測。</p><p> 在環(huán)境惡劣或者溫度較高等場合下,為了保證生產(chǎn)過程正常安全地進(jìn)行,提高產(chǎn)品的質(zhì)量和數(shù)量,以及減輕工人的勞動強(qiáng)度、節(jié)約能源,要求對溫度進(jìn)行測、顯示、控制。使之達(dá)到工藝標(biāo)準(zhǔn),以單片機(jī)為核心設(shè)計的水箱溫度控制系統(tǒng),采用單片機(jī)來對溫度進(jìn)行控制,不僅具有組態(tài)簡單、控制方便和靈活
15、性大等優(yōu)點(diǎn),而且可以大幅提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。 因此單片機(jī)對溫度的控制是一個工業(yè)生產(chǎn)中經(jīng)常會遇到的問題。[1]</p><p> 隨著電子行業(yè)的迅猛發(fā)展,傳感器技術(shù)和計算機(jī)技術(shù)的不斷進(jìn)步,而且微型計算機(jī)和傳感器的價格也慢慢的變低,可靠性也逐步的提高,用信息技術(shù)來實現(xiàn)溫度的控制并且提高溫度控制的精確度不但是可以達(dá)到的而且是不難實現(xiàn)的。用高新技術(shù)來解決工業(yè)生產(chǎn)中遇到的問題,以此來
16、加強(qiáng)我國工業(yè)化的建設(shè),提高人民的生活水平和生活質(zhì)量。溫度的控制是無論是在工業(yè)生產(chǎn)過程中,還是在日常生活中都起著非常重要的作用,過低的溫度或過高的溫度都會使資源浪費(fèi)而失去相關(guān)的作用。特別是在當(dāng)前全球能源極度缺乏的情況下,我們更應(yīng)該好好把握對溫度的控制,合理的利用身邊的資源。[3]</p><p><b> 2設(shè)計要求</b></p><p> 設(shè)計并制作一個基于單片
17、機(jī)的溫度控制系統(tǒng),基本要求如下:設(shè)定一個合適的溫度(如30℃),讓水箱溫度達(dá)到設(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)溫度值進(jìn)行比較之后,然后由加熱控制器決定加熱或者不加熱。由于采用模擬控制方式,溫度控制系統(tǒng)受環(huán)境溫度的影響大,不能夠?qū)崿F(xiàn)復(fù)雜的控
19、制算法和相對比較精確的溫度控制精度,而且不能用顯示和鍵盤設(shè)定及上位機(jī)傳輸信息。[6]</p><p> 方案2:采用單片機(jī)為核心。采用了溫度傳感器采集溫度信號并通過單片機(jī)進(jìn)行一定的計算產(chǎn)生控制信號去控制加熱模塊。使用單片機(jī)控制具有編程簡單靈活,控制方便等優(yōu)點(diǎn),較為容易的實現(xiàn)溫度的控制及顯示。通過軟件編程能夠?qū)崿F(xiàn)各種控制算法使系統(tǒng)具有控制精度相對較為高的優(yōu)點(diǎn)。</p><p> 通過上述
20、兩種方案的比較,方案2明顯改善了方案1中的不足,并具有控制溫度精度高、控制簡單的特點(diǎn),因此本溫度控制系統(tǒng)的設(shè)計采用方案2。</p><p> 3.2 核心處理模塊的方案</p><p> 方案1:采用PIC單片機(jī)。PIC單片機(jī)的各個型號的兼容性強(qiáng),功能全,型號多,抗干擾能力強(qiáng)。缺點(diǎn):PIC單片機(jī)價格貴,燒寫器較貴,燒寫程序比較麻煩。</p><p> 方案2:
21、采用MCS-51單片機(jī)。MCS-51系列單片機(jī)是8位增強(qiáng)型。51單片機(jī)具有功能強(qiáng),體積小,可靠性好和價格便宜的優(yōu)點(diǎn),并且編程較為容易,程序的燒寫也較為簡單。</p><p> 綜合上面兩個方案以及本人日常學(xué)習(xí)到的單片機(jī),選擇方案二作為本設(shè)計的核心處理模塊。</p><p> 3.3溫度采集模塊的方案</p><p> 采用溫度傳感器DS18B20。DS18B2
22、0具有體積小、質(zhì)量輕、精密度高、全數(shù)字化、性能穩(wěn)定等優(yōu)點(diǎn)。它的測量范圍在-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:由單片機(jī)I/O口輸出高低電平控制電磁繼電器的通斷。當(dāng)I/O口輸出低電平時,三極管不導(dǎo)通,繼電器無電流通過,開關(guān)斷開,電阻絲不加熱。當(dāng)I/O口輸出高電平時,三極管導(dǎo)通,繼電器有較大的電流通過,開關(guān)閉合,電阻絲開始加熱。[4]</p><p> 方案2:采用固態(tài)繼電器進(jìn)行控制。首先單片機(jī)進(jìn)行PID算法,實時的更新PWM脈沖的輸出參數(shù),來控制PWM波的產(chǎn)生,從而控制固態(tài)繼電器的導(dǎo)通和斷開,進(jìn)而控制電阻絲的加
24、熱來實現(xiàn)溫度的控制。用單片機(jī)實現(xiàn)了自適應(yīng)的控制,更好的減少了溫度的遲滯性,改進(jìn)了傳統(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)選用的模塊包括:單片機(jī)系統(tǒng),LED顯示模塊,溫度采集模塊,控制執(zhí)行模塊,加熱模塊。</p><p> 4.1單片機(jī)模塊 </p><p> 此次的畢業(yè)設(shè)計的核心部分是單片機(jī)的控制,本次選用的是ATMEL公司生產(chǎn)的芯片AT89C52,主要是它的價格便宜,而且在學(xué)習(xí)中接觸較多比較熟悉,容易獲得。</p><p> 4.1.1復(fù)位電路
27、的設(shè)計</p><p> 復(fù)位使單片機(jī)處于起始狀態(tài),并從該起始狀態(tài)開始運(yùn)行。STC89C52的RST引腳為復(fù)位端,該引腳連續(xù)保持2個機(jī)器周期(24個時鐘振動周期)以上高電平,就可以使單片機(jī)復(fù)位。單片機(jī)的外部復(fù)位有上電復(fù)位和按鍵電平復(fù)位。由于單片機(jī)運(yùn)行過程中,其本身的干擾或外界干擾會導(dǎo)致出錯,此時我們可按復(fù)位鍵重新開始運(yùn)行??紤]到本系統(tǒng)的運(yùn)行和調(diào)試,復(fù)位電路采用按鍵復(fù)位方式,如圖4-1所示。</p>
28、<p><b> 圖4-1 復(fù)位電路</b></p><p> 4.1.2 時鐘電路設(shè)計</p><p> 時鐘電路是單片機(jī)的心臟,它控制著單片機(jī)的工作節(jié)奏。STC89C52內(nèi)部有一個反相振蕩放大器,XTAL1和XTAL2分別是該反向振蕩放大器的輸入端和輸出端。本設(shè)計采用的晶振頻率為11.0592MHZ。因為可以準(zhǔn)確得到9600波特率和19200波特
29、率,用于有串口通訊的場合。51系列單片機(jī)還可使用外部時鐘。在使用外部時鐘時,外部時鐘必須從XTAL1輸入,而XTAL2懸空。圖4-2為晶振電路</p><p><b> 圖4-2 晶振電路</b></p><p> 4.1.3單片機(jī)的I/O口的分配</p><p> 首先對LCD和單片機(jī)的連接分配I/O口,LCD的E,RW,RS端分別為P
30、0.5-P0.7,P2.0-P2.7為LCD1602的數(shù)據(jù)輸入端。</p><p> 然后再對獨(dú)立鍵盤進(jìn)行I/O口分配,本設(shè)計中的獨(dú)立按鍵只需要四個端口,設(shè)置P3.4-P3.7分別為功能鍵,加一鍵,減一鍵,確定鍵。</p><p> DS18B20溫度傳感器是單總線的結(jié)構(gòu),和單片機(jī)的通訊只需要一個I/O口,可以設(shè)置P1.3為DS18B20溫度傳感器的總線和單片機(jī)的通訊接口。同樣的,系統(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è)置其各個引腳和單片機(jī)連接的的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> (2)寫數(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ā)送給單片機(jī),單片機(jī)將檢測的溫度值與設(shè)定的目標(biāo)溫度值進(jìn)行比較,計算出溫度的偏差,然后采用PID算法并且輸出相應(yīng)的控制信號,控制固態(tài)繼電器在控制周期內(nèi)的通斷占空比(控制電阻絲的平均發(fā)熱功率的大小),從而達(dá)到較為精確可靠的控制溫度的目的。</
40、p><p> 控制執(zhí)行電路作為單片機(jī)溫度控制系統(tǒng)的執(zhí)行部分,他是將單片機(jī)處理后的數(shù)字控制信號用輸出口輸出,并將該數(shù)字信號通過電路對控制對象的控制。由于單片機(jī)的輸出信號電平很低,無法直接驅(qū)動外圍設(shè)備進(jìn)行工作,因此在本設(shè)計中單片機(jī)的控制部分需要外圍設(shè)備的驅(qū)動、信號電平的轉(zhuǎn)換技術(shù)。本溫度控制系統(tǒng)的設(shè)計主要采用固態(tài)繼電器作為控制電路的器件,通過固態(tài)繼電器可以實現(xiàn)單片機(jī)的電平信號控制高功率負(fù)載的功能。</p>
41、<p> 控制模塊的電路設(shè)計如下圖4-13:</p><p> 圖4-13控制模塊電路圖</p><p><b> 4.5加熱模塊</b></p><p> 本次設(shè)計的溫控系統(tǒng)由100W的電阻絲給水進(jìn)行加熱,加熱的開關(guān)由固態(tài)繼電器實現(xiàn)。</p><p> 4.6 PID控制算法</p>
42、<p> 溫度控制的PID控制原理是先求出實際的溫度值與目標(biāo)溫度值的偏差值。再對偏差值進(jìn)行比例,積分與微分的計算處理,得到的控制數(shù)字信號來控制電阻絲的加熱,使實際溫度穩(wěn)定在設(shè)定的目標(biāo)溫度范圍內(nèi)。本溫度控制系統(tǒng)采用的數(shù)字PID算法是增量式PID算法,增量式PID算法的優(yōu)點(diǎn)是編程比較簡單,數(shù)據(jù)可以遞推使用,占用存儲空間少,運(yùn)算快,可以用單片機(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表達(dá)式為:</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)溫度很迅速就能達(dá)到設(shè)定的目標(biāo)值,但是超調(diào)量很大。出現(xiàn)這種情況的可能的原因是:比例系數(shù)KP太大,使得溫度達(dá)到目標(biāo)值之前的上升比例過高;微分系數(shù)KD太小,致使對溫度系統(tǒng)的控制反應(yīng)不夠靈敏。</p><p> 2)溫度達(dá)不到目標(biāo)值,長時間小于目標(biāo)值。出現(xiàn)這
47、種情況的可能原因是:比例系數(shù)KP過小,升溫的比例不夠;積分系數(shù)KI太小,對恒定的溫度偏差補(bǔ)償不足。</p><p> 3)基本上能穩(wěn)定在目標(biāo)溫度值上,但上下偏差很大而且經(jīng)常波動。出現(xiàn)這種現(xiàn)象的可能原因是:微分系數(shù)KD太小,對溫度的即時變化反應(yīng)不夠迅速;積分系數(shù)I太大,使得微分的反應(yīng)被淹沒從而鈍化;基本的控制周期太短,加熱溫度還沒有傳到測溫點(diǎn)上。</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單片機(jī)為核心,配合其他電路的溫控系統(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進(jìn)行電路設(shè)計與仿真</p><p><b> 4、軟件設(shè)計</b></p><p> 5、焊接電路板,對電路進(jìn)行檢查</p><p><b> 6、調(diào)試電路與程序<
56、;/b></p><p> 7、反復(fù)試驗確定PID參數(shù)</p><p> 8、對整個系統(tǒng)進(jìn)行調(diào)試,使其達(dá)到要求</p><p> 本設(shè)計理論上能完成設(shè)計要求,但在調(diào)試中發(fā)現(xiàn)每次到達(dá)設(shè)定溫度的時間都不確定,溫度的誤差也比較大。設(shè)定溫度為30攝氏度,有時會出現(xiàn)只到達(dá)28.5攝氏度時就不再加熱。</p><p><b> 參
57、考文獻(xiàn)</b></p><p> [1] 張開生. 郭國法.MCS-51單片機(jī)溫度控制系統(tǒng)設(shè)計[J].微計算機(jī)信息.2005,7(6).52-56</p><p> [2] 譚浩強(qiáng).C程序設(shè)計[M].北京:清華大學(xué)出版社,2005.49-54</p><p> [3] 張建波. 韓崧.淺談溫度測量的發(fā)展現(xiàn)狀[J].計測技術(shù).2001,12(2):
58、30-32</p><p> [4] 李新剛.于巍巍.智能電加熱溫控系統(tǒng)的研制[J].機(jī)械工程師.2005,7(3):92-98</p><p> [5] 郭天祥.51單片機(jī)C語言教程[M].北京:電子工業(yè)出版社.2013 .230-250</p><p> [6] 胡漢才.單片機(jī)原理及系統(tǒng)設(shè)計[M].北京:清華大學(xué)出版社.2004.420-433<
59、/p><p> [7] 李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社.2005.210-223</p><p> [8] 秦曾煌.電工學(xué)[M].北京:高等教育出版社[M].2004.69-75</p><p> [9] 費(fèi)業(yè)泰.誤差理論與數(shù)據(jù)處理[M].北京:機(jī)械工業(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機(jī)溫度控制系統(tǒng)設(shè)計畢業(yè)設(shè)計
- 基于單片機(jī)的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機(jī)的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計-----基于單片機(jī)的溫度控制系統(tǒng)
- 基于單片機(jī)溫度控制系統(tǒng)的畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---單片機(jī)溫度控制系統(tǒng)
- 單片機(jī)溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----基于單片機(jī)的溫度控制系統(tǒng)設(shè)計
- 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機(jī)的溫度控制系統(tǒng)設(shè)計
- 基于單片機(jī)的溫度控制系統(tǒng)的畢業(yè)設(shè)計
- 基于單片機(jī)的溫度控制系統(tǒng)畢業(yè)設(shè)計 (2)
- 畢業(yè)設(shè)計---單片機(jī)溫度控制系統(tǒng)的設(shè)計
- 基于單片機(jī)的智能溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機(jī)的冰箱溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機(jī)的溫度控制系統(tǒng)畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計---單片機(jī)多點(diǎn)溫度控制系統(tǒng)
- 單片機(jī)閉環(huán)溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----單片機(jī)實現(xiàn)溫度控制系統(tǒng)
評論
0/150
提交評論