基于單片機(jī)的溫度控制系統(tǒng)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  2015屆本科畢業(yè)設(shè)計(jì)</p><p>  題目: 基于單片機(jī)的溫度控制系統(tǒng)</p><p>  Title: Temperature control system based on MCU </p><p>  院系名稱(chēng):物理與通信電子學(xué)院</p><p>  學(xué)生姓名: </p&

2、gt;<p>  學(xué)生學(xué)號(hào): </p><p>  專(zhuān) 業(yè): 電子信息工程 </p><p>  指導(dǎo)老師: </p><p>  完成時(shí)間: 2015年4月 </p><p><b>  摘要</b></p&g

3、t;<p>  本文主要介紹了基于單片機(jī)的溫度控制系統(tǒng)的工作原理、硬件電路的設(shè)計(jì)和軟件設(shè)計(jì)。該溫度控制系統(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è)計(jì)要求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è)計(jì)6</b></p><p>  4.1單片

9、機(jī)模塊6</p><p>  4.1.1復(fù)位電路的設(shè)計(jì)6</p><p>  4.1.2 時(shí)鐘電路設(shè)計(jì)7</p><p>  4.1.3單片機(jī)的I/O口的分配7</p><p>  4.2 LCD 1602顯示模塊7</p><p>  4.2.1 1602接口信號(hào)說(shuō)明9</p><p&

10、gt;  4.2.2 1602操作時(shí)序9</p><p>  4.3 DS18B20溫度采集模塊的設(shè)計(jì)10</p><p>  4.3.1 DS18B20的分辨率11</p><p>  4.3.2 DS18B20工作時(shí)序圖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è)計(jì)15</b></p><p>  5.1 主程序流程圖15</p><p>  5.2子程序設(shè)計(jì)16</p><p

12、>  5.2.1溫度采集模塊子程序16</p><p>  5.2.2 LCD顯示程序17</p><p><b>  6 實(shí)測(cè)結(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>  附錄三:實(shí)物圖28</p><p><b>  1引言</b></p><p>  溫度作為一個(gè)基本的物理量,它是一個(gè)與人們生活環(huán)境、生產(chǎn)活動(dòng)密切相關(guān)的重要物理量。在現(xiàn)代冶金、石油、化工及電力生產(chǎn)過(guò)程中,溫度

14、是極為重要而又普遍的熱工參數(shù)之一。在現(xiàn)代化工業(yè)生產(chǎn)過(guò)程中溫度作為一種常用的被控參數(shù),在很多生產(chǎn)過(guò)程中我們需要對(duì)溫度參數(shù)進(jìn)行檢測(cè)。</p><p>  在環(huán)境惡劣或者溫度較高等場(chǎng)合下,為了保證生產(chǎn)過(guò)程正常安全地進(jìn)行,提高產(chǎn)品的質(zhì)量和數(shù)量,以及減輕工人的勞動(dòng)強(qiáng)度、節(jié)約能源,要求對(duì)溫度進(jìn)行測(cè)、顯示、控制。使之達(dá)到工藝標(biāo)準(zhǔn),以單片機(jī)為核心設(shè)計(jì)的水箱溫度控制系統(tǒng),采用單片機(jī)來(lái)對(duì)溫度進(jìn)行控制,不僅具有組態(tài)簡(jiǎn)單、控制方便和靈活

15、性大等優(yōu)點(diǎn),而且可以大幅提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。 因此單片機(jī)對(duì)溫度的控制是一個(gè)工業(yè)生產(chǎn)中經(jīng)常會(huì)遇到的問(wèn)題。[1]</p><p>  隨著電子行業(yè)的迅猛發(fā)展,傳感器技術(shù)和計(jì)算機(jī)技術(shù)的不斷進(jìn)步,而且微型計(jì)算機(jī)和傳感器的價(jià)格也慢慢的變低,可靠性也逐步的提高,用信息技術(shù)來(lái)實(shí)現(xiàn)溫度的控制并且提高溫度控制的精確度不但是可以達(dá)到的而且是不難實(shí)現(xiàn)的。用高新技術(shù)來(lái)解決工業(yè)生產(chǎn)中遇到的問(wèn)題,以此來(lái)

16、加強(qiáng)我國(guó)工業(yè)化的建設(shè),提高人民的生活水平和生活質(zhì)量。溫度的控制是無(wú)論是在工業(yè)生產(chǎn)過(guò)程中,還是在日常生活中都起著非常重要的作用,過(guò)低的溫度或過(guò)高的溫度都會(huì)使資源浪費(fèi)而失去相關(guān)的作用。特別是在當(dāng)前全球能源極度缺乏的情況下,我們更應(yīng)該好好把握對(duì)溫度的控制,合理的利用身邊的資源。[3]</p><p><b>  2設(shè)計(jì)要求</b></p><p>  設(shè)計(jì)并制作一個(gè)基于單片

17、機(jī)的溫度控制系統(tǒng),基本要求如下:設(shè)定一個(gè)合適的溫度(如30℃),讓水箱溫度達(dá)到設(shè)定值;實(shí)際溫度與設(shè)定值誤差在±1.5℃以下。</p><p><b>  3 方案論證 </b></p><p>  根據(jù)本題設(shè)計(jì)要求,確定了本系統(tǒng)的原理框圖如圖3-1所示。</p><p>  圖3-1 原理框圖</p><p&g

18、t;  3.1 方案論證與比較</p><p>  根據(jù)題目的要求,我提出了以下的兩種系統(tǒng)設(shè)計(jì)方案供選擇:</p><p>  方案1:該方案采用的是傳統(tǒng)的模擬控制方法,選用傳統(tǒng)的模擬電路,用電位器設(shè)定給定的目標(biāo)溫度值,采用上下限比較電路將反饋的溫度值與給定的目標(biāo)溫度值進(jìn)行比較之后,然后由加熱控制器決定加熱或者不加熱。由于采用模擬控制方式,溫度控制系統(tǒng)受環(huán)境溫度的影響大,不能夠?qū)崿F(xiàn)復(fù)雜的控

19、制算法和相對(duì)比較精確的溫度控制精度,而且不能用顯示和鍵盤(pán)設(shè)定及上位機(jī)傳輸信息。[6]</p><p>  方案2:采用單片機(jī)為核心。采用了溫度傳感器采集溫度信號(hào)并通過(guò)單片機(jī)進(jìn)行一定的計(jì)算產(chǎn)生控制信號(hào)去控制加熱模塊。使用單片機(jī)控制具有編程簡(jiǎn)單靈活,控制方便等優(yōu)點(diǎn),較為容易的實(shí)現(xiàn)溫度的控制及顯示。通過(guò)軟件編程能夠?qū)崿F(xiàn)各種控制算法使系統(tǒng)具有控制精度相對(duì)較為高的優(yōu)點(diǎn)。</p><p>  通過(guò)上述

20、兩種方案的比較,方案2明顯改善了方案1中的不足,并具有控制溫度精度高、控制簡(jiǎn)單的特點(diǎn),因此本溫度控制系統(tǒng)的設(shè)計(jì)采用方案2。</p><p>  3.2 核心處理模塊的方案</p><p>  方案1:采用PIC單片機(jī)。PIC單片機(jī)的各個(gè)型號(hào)的兼容性強(qiáng),功能全,型號(hào)多,抗干擾能力強(qiáng)。缺點(diǎn):PIC單片機(jī)價(jià)格貴,燒寫(xiě)器較貴,燒寫(xiě)程序比較麻煩。</p><p>  方案2:

21、采用MCS-51單片機(jī)。MCS-51系列單片機(jī)是8位增強(qiáng)型。51單片機(jī)具有功能強(qiáng),體積小,可靠性好和價(jià)格便宜的優(yōu)點(diǎn),并且編程較為容易,程序的燒寫(xiě)也較為簡(jiǎn)單。</p><p>  綜合上面兩個(gè)方案以及本人日常學(xué)習(xí)到的單片機(jī),選擇方案二作為本設(shè)計(jì)的核心處理模塊。</p><p>  3.3溫度采集模塊的方案</p><p>  采用溫度傳感器DS18B20。DS18B2

22、0具有體積小、質(zhì)量輕、精密度高、全數(shù)字化、性能穩(wěn)定等優(yōu)點(diǎn)。它的測(cè)量范圍在-50℃至+125℃,在-10℃至+85℃范圍內(nèi)精度為±0.5℃,當(dāng)電源電壓在5-10V之間,穩(wěn)定度為1﹪時(shí),其各方面特性都滿(mǎn)足了本系統(tǒng)的設(shè)計(jì)要求。此外DS18B20可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)供處理器處理,可以簡(jiǎn)化硬件電路和提高可靠性。[2] </p><p>  3.4控制執(zhí)行的方案</p><p> 

23、 方案1:由單片機(jī)I/O口輸出高低電平控制電磁繼電器的通斷。當(dāng)I/O口輸出低電平時(shí),三極管不導(dǎo)通,繼電器無(wú)電流通過(guò),開(kāi)關(guān)斷開(kāi),電阻絲不加熱。當(dāng)I/O口輸出高電平時(shí),三極管導(dǎo)通,繼電器有較大的電流通過(guò),開(kāi)關(guān)閉合,電阻絲開(kāi)始加熱。[4]</p><p>  方案2:采用固態(tài)繼電器進(jìn)行控制。首先單片機(jī)進(jìn)行PID算法,實(shí)時(shí)的更新PWM脈沖的輸出參數(shù),來(lái)控制PWM波的產(chǎn)生,從而控制固態(tài)繼電器的導(dǎo)通和斷開(kāi),進(jìn)而控制電阻絲的加

24、熱來(lái)實(shí)現(xiàn)溫度的控制。用單片機(jī)實(shí)現(xiàn)了自適應(yīng)的控制,更好的減少了溫度的遲滯性,改進(jìn)了傳統(tǒng)的直接輸出高低電平控制的方法。而且固態(tài)繼電器的性能滿(mǎn)足控制的高頻頻率的要求。</p><p>  比較了上面的種方案,方案1雖然電路比較簡(jiǎn)單,控制比較容易,但是無(wú)法滿(mǎn)足溫度控制系統(tǒng)的較小的溫度波動(dòng)和頻繁的開(kāi)關(guān)普通的電磁繼電器從而產(chǎn)生較大的噪音和器件壽命的損耗。所以我最終采用固態(tài)繼電器為控制執(zhí)行的方案。</p><

25、;p><b>  3.5 顯示模塊</b></p><p>  方案一:選用數(shù)碼管顯示,用普通的數(shù)碼管顯示簡(jiǎn)單的數(shù)字、符號(hào)、字母。</p><p>  方案二:選用液晶顯示,顯示的內(nèi)容更加的豐富。根據(jù)所學(xué)知識(shí)與方案顯示內(nèi)容的設(shè)定,我選擇了方案二。</p><p><b>  4 系統(tǒng)設(shè)計(jì)</b></p>

26、<p>  本系統(tǒng)選用的模塊包括:?jiǎn)纹瑱C(jī)系統(tǒng),LED顯示模塊,溫度采集模塊,控制執(zhí)行模塊,加熱模塊。</p><p>  4.1單片機(jī)模塊 </p><p>  此次的畢業(yè)設(shè)計(jì)的核心部分是單片機(jī)的控制,本次選用的是ATMEL公司生產(chǎn)的芯片AT89C52,主要是它的價(jià)格便宜,而且在學(xué)習(xí)中接觸較多比較熟悉,容易獲得。</p><p>  4.1.1復(fù)位電路

27、的設(shè)計(jì)</p><p>  復(fù)位使單片機(jī)處于起始狀態(tài),并從該起始狀態(tài)開(kāi)始運(yùn)行。STC89C52的RST引腳為復(fù)位端,該引腳連續(xù)保持2個(gè)機(jī)器周期(24個(gè)時(shí)鐘振動(dòng)周期)以上高電平,就可以使單片機(jī)復(fù)位。單片機(jī)的外部復(fù)位有上電復(fù)位和按鍵電平復(fù)位。由于單片機(jī)運(yùn)行過(guò)程中,其本身的干擾或外界干擾會(huì)導(dǎo)致出錯(cuò),此時(shí)我們可按復(fù)位鍵重新開(kāi)始運(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í)鐘電路設(shè)計(jì)</p><p>  時(shí)鐘電路是單片機(jī)的心臟,它控制著單片機(jī)的工作節(jié)奏。STC89C52內(nèi)部有一個(gè)反相振蕩放大器,XTAL1和XTAL2分別是該反向振蕩放大器的輸入端和輸出端。本設(shè)計(jì)采用的晶振頻率為11.0592MHZ。因?yàn)榭梢詼?zhǔn)確得到9600波特率和19200波特

29、率,用于有串口通訊的場(chǎng)合。51系列單片機(jī)還可使用外部時(shí)鐘。在使用外部時(shí)鐘時(shí),外部時(shí)鐘必須從XTAL1輸入,而XTAL2懸空。圖4-2為晶振電路</p><p><b>  圖4-2 晶振電路</b></p><p>  4.1.3單片機(jī)的I/O口的分配</p><p>  首先對(duì)LCD和單片機(jī)的連接分配I/O口,LCD的E,RW,RS端分別為P

30、0.5-P0.7,P2.0-P2.7為L(zhǎng)CD1602的數(shù)據(jù)輸入端。</p><p>  然后再對(duì)獨(dú)立鍵盤(pán)進(jìn)行I/O口分配,本設(shè)計(jì)中的獨(dú)立按鍵只需要四個(gè)端口,設(shè)置P3.4-P3.7分別為功能鍵,加一鍵,減一鍵,確定鍵。</p><p>  DS18B20溫度傳感器是單總線(xiàn)的結(jié)構(gòu),和單片機(jī)的通訊只需要一個(gè)I/O口,可以設(shè)置P1.3為DS18B20溫度傳感器的總線(xiàn)和單片機(jī)的通訊接口。同樣的,系統(tǒng)

31、對(duì)溫度的控制的信號(hào)的輸出也是一個(gè)I/O口就能實(shí)現(xiàn)的,那么就設(shè)置P2.0為溫度控制信號(hào)輸出端。</p><p>  4.2 LCD 1602顯示模塊</p><p>  在本設(shè)計(jì)中采用LCD 1602來(lái)充當(dāng)顯示的作用,對(duì)LCD模塊的電路的設(shè)計(jì)得先了解LCD的各個(gè)引腳然后再設(shè)置其各個(gè)引腳和單片機(jī)連接的的I/O口。</p><p>  LCD1602液晶顯示模塊的讀寫(xiě)操作

32、,屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。</p><p>  1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表4-3所示:</p><p>  表4-3 LCD1602液晶模塊內(nèi)部的控制器共有11條控制指令</p><p>  根據(jù)LCD1602的引腳定義和資料設(shè)計(jì)了了溫度控制系統(tǒng)的顯示模塊,電路圖如下圖4-4</p><p>  圖

33、4-4 溫控系統(tǒng)顯示模塊</p><p>  4.2.1 1602接口信號(hào)說(shuō)明</p><p>  1602接口信號(hào)說(shuō)明如表4-5所示</p><p>  表4-5 1602接口說(shuō)明</p><p>  4.2.2 1602操作時(shí)序</p><p>  1602的操作時(shí)序圖(見(jiàn)圖4-6)</p><

34、p>  圖4-6 1602操作時(shí)序</p><p>  分析時(shí)序圖可知1602液晶的流程如下</p><p>  通過(guò)RS確定是寫(xiě)數(shù)據(jù)還是寫(xiě)命令。寫(xiě)命令包括液晶的光標(biāo)顯示/不顯示、光標(biāo)閃爍/不閃爍、需不需要移動(dòng)屏幕、在液晶什么位置顯示等。寫(xiě)數(shù)據(jù)是指要顯示什么內(nèi)容。</p><p>  讀/寫(xiě)控制端設(shè)置為寫(xiě)模式,即低電平。</p><p&g

35、t;  將數(shù)據(jù)或命令送至數(shù)據(jù)線(xiàn)。</p><p>  給E一個(gè)高脈沖將數(shù)據(jù)送入液晶控制器,完成寫(xiě)操作。</p><p>  4.3 DS18B20溫度采集模塊的設(shè)計(jì)</p><p>  DS18B20的管腳排列如圖4-7所示,DQ為數(shù)字信號(hào)輸入/輸出端;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溫度傳感器可完成對(duì)溫度的測(cè)量,溫度分辨率的設(shè)定能夠影響到溫度傳感器的轉(zhuǎn)換時(shí)間和轉(zhuǎn)換的精確度[11]。溫度的分辨率設(shè)置如表4-9所示。</p><

37、;p>  表4-9:溫度分辨率設(shè)置表</p><p>  由于本系統(tǒng)的對(duì)被控的對(duì)象的溫度采集的實(shí)時(shí)要求較高,所以選擇DS18B20的分辨率位12位,在12位分辨率的時(shí)候的溫度采集精度是0.0625度,滿(mǎn)足溫度系統(tǒng)的控制的精度的要求,所以R1和R0的設(shè)置分別為R1=1,R0=1。</p><p>  4.3.2 DS18B20工作時(shí)序圖</p><p>  初始

38、化(時(shí)序圖見(jiàn)4-10)</p><p>  圖4-10初始化時(shí)序</p><p>  (2)寫(xiě)數(shù)據(jù)(時(shí)序圖見(jiàn)圖4-11)</p><p>  圖4-11寫(xiě)數(shù)據(jù)時(shí)序</p><p>  讀數(shù)據(jù)(時(shí)序圖見(jiàn)圖4-12)</p><p>  圖4-12讀數(shù)據(jù)時(shí)序</p><p><b>  4

39、.4控制執(zhí)行模塊</b></p><p>  STC89C52是本溫度控制系統(tǒng)的處理器。首先由DSl8B20數(shù)字溫度傳感器檢測(cè)并且采集溫度數(shù)據(jù)直接轉(zhuǎn)換成數(shù)字信號(hào)發(fā)送給單片機(jī),單片機(jī)將檢測(cè)的溫度值與設(shè)定的目標(biāo)溫度值進(jìn)行比較,計(jì)算出溫度的偏差,然后采用PID算法并且輸出相應(yīng)的控制信號(hào),控制固態(tài)繼電器在控制周期內(nèi)的通斷占空比(控制電阻絲的平均發(fā)熱功率的大小),從而達(dá)到較為精確可靠的控制溫度的目的。</

40、p><p>  控制執(zhí)行電路作為單片機(jī)溫度控制系統(tǒng)的執(zhí)行部分,他是將單片機(jī)處理后的數(shù)字控制信號(hào)用輸出口輸出,并將該數(shù)字信號(hào)通過(guò)電路對(duì)控制對(duì)象的控制。由于單片機(jī)的輸出信號(hào)電平很低,無(wú)法直接驅(qū)動(dòng)外圍設(shè)備進(jìn)行工作,因此在本設(shè)計(jì)中單片機(jī)的控制部分需要外圍設(shè)備的驅(qū)動(dòng)、信號(hào)電平的轉(zhuǎn)換技術(shù)。本溫度控制系統(tǒng)的設(shè)計(jì)主要采用固態(tài)繼電器作為控制電路的器件,通過(guò)固態(tài)繼電器可以實(shí)現(xiàn)單片機(jī)的電平信號(hào)控制高功率負(fù)載的功能。</p>

41、<p>  控制模塊的電路設(shè)計(jì)如下圖4-13:</p><p>  圖4-13控制模塊電路圖</p><p><b>  4.5加熱模塊</b></p><p>  本次設(shè)計(jì)的溫控系統(tǒng)由100W的電阻絲給水進(jìn)行加熱,加熱的開(kāi)關(guān)由固態(tài)繼電器實(shí)現(xiàn)。</p><p>  4.6 PID控制算法</p>

42、<p>  溫度控制的PID控制原理是先求出實(shí)際的溫度值與目標(biāo)溫度值的偏差值。再對(duì)偏差值進(jìn)行比例,積分與微分的計(jì)算處理,得到的控制數(shù)字信號(hào)來(lái)控制電阻絲的加熱,使實(shí)際溫度穩(wěn)定在設(shè)定的目標(biāo)溫度范圍內(nèi)。本溫度控制系統(tǒng)采用的數(shù)字PID算法是增量式PID算法,增量式PID算法的優(yōu)點(diǎn)是編程比較簡(jiǎn)單,數(shù)據(jù)可以遞推使用,占用存儲(chǔ)空間少,運(yùn)算快,可以用單片機(jī)的程序來(lái)實(shí)現(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>  通過(guò)離散化過(guò)程,可得離散的PID表達(dá)式為:</p><p><b>  4-1</b></p><p>  式中:k為采樣序號(hào),k=0、1、2、3、……;u(k)

44、為第k次采樣時(shí)刻的計(jì)算輸出值;e(k)為第k次采樣時(shí)刻輸入的偏差值;e(k-1)為第k-1次采樣時(shí)刻輸入的偏差值。</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)。在確定了各個(gè)常量之后,根據(jù)最近的3次偏差即可求出PID控制的增量。</p><p>  4.7 增量式PID算法的參數(shù)確定</p><p>  PID參數(shù)的設(shè)定決定了溫度控制系統(tǒng)升溫速度和溫度控制系統(tǒng)的穩(wěn)定性。面對(duì)不同的控制對(duì)象的PID參數(shù)都是不相

46、同。根據(jù)這些參數(shù)在整個(gè)PID控制過(guò)程中的作用,在系統(tǒng)最終調(diào)試中具體來(lái)確定。PID參數(shù)的設(shè)置對(duì)系統(tǒng)的可能的影響如下:</p><p>  1)溫度很迅速就能達(dá)到設(shè)定的目標(biāo)值,但是超調(diào)量很大。出現(xiàn)這種情況的可能的原因是:比例系數(shù)KP太大,使得溫度達(dá)到目標(biāo)值之前的上升比例過(guò)高;微分系數(shù)KD太小,致使對(duì)溫度系統(tǒng)的控制反應(yīng)不夠靈敏。</p><p>  2)溫度達(dá)不到目標(biāo)值,長(zhǎng)時(shí)間小于目標(biāo)值。出現(xiàn)這

47、種情況的可能原因是:比例系數(shù)KP過(guò)小,升溫的比例不夠;積分系數(shù)KI太小,對(duì)恒定的溫度偏差補(bǔ)償不足。</p><p>  3)基本上能穩(wěn)定在目標(biāo)溫度值上,但上下偏差很大而且經(jīng)常波動(dòng)。出現(xiàn)這種現(xiàn)象的可能原因是:微分系數(shù)KD太小,對(duì)溫度的即時(shí)變化反應(yīng)不夠迅速;積分系數(shù)I太大,使得微分的反應(yīng)被淹沒(méi)從而鈍化;基本的控制周期太短,加熱溫度還沒(méi)有傳到測(cè)溫點(diǎn)上。</p><p>  PID參數(shù)的調(diào)整步驟為

48、先比例,后積分,再微分的步驟。編寫(xiě)程序的時(shí)先設(shè)定它們的大概的數(shù)值。然后通過(guò)反復(fù)的實(shí)驗(yàn)調(diào)試,根據(jù)實(shí)驗(yàn)調(diào)試的結(jié)果最終確定比較理想的PID參數(shù)值。</p><p><b>  5 軟件設(shè)計(jì)</b></p><p>  5.1 主程序流程圖</p><p>  主程序流程圖如下圖5-1</p><p>  圖5-1主程序流程圖&

49、lt;/p><p><b>  5.2子程序設(shè)計(jì)</b></p><p>  子程序包括了LCD顯示模塊程序,溫度控制模塊程序,DS18B20溫度采集模塊程序等。</p><p>  5.2.1溫度采集模塊子程序</p><p>  根據(jù)DS18B20的相關(guān)資料編寫(xiě)了溫度采集程序,程序流程圖如下圖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的資料編寫(xiě)了溫控系統(tǒng)顯示模塊的程序,流程圖如下圖5-3</p

51、><p><b>  Yes</b></p><p>  圖5-3 顯示模塊程序流程圖</p><p><b>  6 實(shí)測(cè)結(jié)果</b></p><p>  下面是PID參數(shù)實(shí)驗(yàn)調(diào)試數(shù)據(jù)如表6-1表6-2及圖6-3至圖4-8所示。</p><p>  表6-1 PID參數(shù)實(shí)驗(yàn)數(shù)據(jù)

52、</p><p>  表6-2 試驗(yàn)記錄數(shù)據(jù)</p><p><b>  圖6-3序號(hào)1</b></p><p><b>  圖6-4 序號(hào)2</b></p><p><b>  圖6-5 序號(hào)3</b></p><p><b>  圖6-6

53、 序號(hào)4</b></p><p>  圖6-7 序號(hào)5</p><p><b>  圖6-8 序號(hào)6</b></p><p>  經(jīng)過(guò)對(duì)溫度控制系統(tǒng)反復(fù)的實(shí)驗(yàn)調(diào)試,以及數(shù)據(jù)的對(duì)比。最后確定PID參數(shù):KP=1,KI=0.1,KD=10。</p><p><b>  7 總結(jié)</b>

54、</p><p>  此溫控系統(tǒng)的設(shè)計(jì)電路比較簡(jiǎn)單,硬件電路基本完成,使用ISIS 7 Professional完成了溫度顯示部分的仿真。在以51單片機(jī)為核心,配合其他電路的溫控系統(tǒng),完成了對(duì)控制對(duì)象的恒溫控制。溫控系統(tǒng)實(shí)現(xiàn)設(shè)定溫度,顯示溫度,以及自動(dòng)恒溫等功能。</p><p>  本次設(shè)計(jì)的步驟如下:</p><p>  1、根據(jù)任務(wù)要求選擇合理方案</p

55、><p><b>  2、元件的選擇</b></p><p>  3、硬件設(shè)計(jì),用protues進(jìn)行電路設(shè)計(jì)與仿真</p><p><b>  4、軟件設(shè)計(jì)</b></p><p>  5、焊接電路板,對(duì)電路進(jìn)行檢查</p><p><b>  6、調(diào)試電路與程序<

56、;/b></p><p>  7、反復(fù)試驗(yàn)確定PID參數(shù)</p><p>  8、對(duì)整個(gè)系統(tǒng)進(jìn)行調(diào)試,使其達(dá)到要求</p><p>  本設(shè)計(jì)理論上能完成設(shè)計(jì)要求,但在調(diào)試中發(fā)現(xiàn)每次到達(dá)設(shè)定溫度的時(shí)間都不確定,溫度的誤差也比較大。設(shè)定溫度為30攝氏度,有時(shí)會(huì)出現(xiàn)只到達(dá)28.5攝氏度時(shí)就不再加熱。</p><p><b>  參

57、考文獻(xiàn)</b></p><p>  [1] 張開(kāi)生. 郭國(guó)法.MCS-51單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息.2005,7(6).52-56</p><p>  [2] 譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.49-54</p><p>  [3] 張建波. 韓崧.淺談溫度測(cè)量的發(fā)展現(xiàn)狀[J].計(jì)測(cè)技術(shù).2001,12(2):

58、30-32</p><p>  [4] 李新剛.于巍?。悄茈娂訜釡乜叵到y(tǒng)的研制[J].機(jī)械工程師.2005,7(3):92-98</p><p>  [5] 郭天祥.51單片機(jī)C語(yǔ)言教程[M].北京:電子工業(yè)出版社.2013 .230-250</p><p>  [6] 胡漢才.單片機(jī)原理及系統(tǒng)設(shè)計(jì)[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è)計(jì)與發(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論