2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論