計(jì)算機(jī)溫度控制系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p><b>  摘要2</b></p><p><b>  1.設(shè)計(jì)目的3</b></p><p>  2.設(shè)計(jì)要求和設(shè)計(jì)指標(biāo)3</p><p>  3. 總體方案設(shè)計(jì)3</p><p> 

2、 4.硬件選擇以及相關(guān)電路設(shè)計(jì)4</p><p>  4.1溫度傳感器的選擇4</p><p>  4.2 模數(shù)轉(zhuǎn)換器5</p><p>  4.2.1ADC0809內(nèi)部結(jié)構(gòu)6</p><p>  4.2.2信號(hào)引腳7</p><p>  4.2.3工作時(shí)序與使用說明8</p><p&g

3、t;  4.3控制器89C5110</p><p>  4.4數(shù)碼管顯示電路11</p><p>  4.4.1 LED數(shù)碼管的組成11</p><p>  4.4.2數(shù)碼管顯示方式12</p><p>  5.PID控制算法14</p><p>  6. 各子程序流程圖15</p><

4、p>  6.1 PID控制程序流程圖15</p><p>  6.2 A/D轉(zhuǎn)換程序流程圖15</p><p>  6.3 顯示程序流程圖16</p><p>  6.4溫度控制總程序流程圖16</p><p><b>  心得體會(huì)17</b></p><p><b> 

5、 參考文獻(xiàn)18</b></p><p>  附錄1:溫度控制系統(tǒng)總電路圖19</p><p>  附錄2:溫度控制系統(tǒng)程序清單21</p><p><b>  摘要</b></p><p>  溫度控制是工業(yè)生產(chǎn)過程中經(jīng)常遇到的過程控制,有些工藝過程對(duì)其溫度的控制效果直接影響著產(chǎn)品的質(zhì)量,因而設(shè)計(jì)一種較

6、為理想的溫度控制系統(tǒng)是非常有價(jià)值的。本設(shè)計(jì)介紹了以AD590集成溫度傳感器為采集器、AT89C51為控制器、ADC0809為A/D轉(zhuǎn)換器對(duì)溫度進(jìn)行智能控制的溫度控制系統(tǒng)。其主要過程如下:利用傳感器對(duì)將非電量信號(hào)轉(zhuǎn)化成電信號(hào),轉(zhuǎn)換后的電信號(hào)再入A/D轉(zhuǎn)換成數(shù)字量,傳遞給單片機(jī)進(jìn)行數(shù)據(jù)處理,并向外圍設(shè)備發(fā)出控制信號(hào)。</p><p>  論文首先介紹了單片機(jī)控制系統(tǒng)的整體方案設(shè)計(jì)及原理,然后具體介紹了控制系統(tǒng)的溫度傳

7、感器部分、A/D轉(zhuǎn)換部分、控制器89C51部分以及數(shù)碼管顯示和鍵盤控制部分,接著相信介紹了溫度控制系統(tǒng)各個(gè)單元電路的設(shè)計(jì),最后闡述了溫度控制系統(tǒng)軟件設(shè)計(jì)的主程序和各個(gè)子程序。</p><p>  關(guān)鍵字:?jiǎn)纹瑱C(jī)89C51 溫度傳感器 A/D轉(zhuǎn)換器 溫度控制</p><p><b>  計(jì)算機(jī)溫度測(cè)控系統(tǒng)</b></p><p><b

8、>  1.設(shè)計(jì)目的</b></p><p>  設(shè)計(jì)制作和調(diào)試一個(gè)由工業(yè)控制機(jī)控制的溫度測(cè)控系統(tǒng)。通過這個(gè)過程學(xué)習(xí)溫度的采樣方法,A/D變換方法以及數(shù)字濾波的方法。通過實(shí)踐過程掌握溫度的幾種控制方法,了解利用計(jì)算機(jī)進(jìn)行自動(dòng)控制的系統(tǒng)結(jié)構(gòu)。</p><p>  2.設(shè)計(jì)要求和設(shè)計(jì)指標(biāo)</p><p>  1、每組4~5同學(xué),每個(gè)小組根據(jù)設(shè)計(jì)室提供的設(shè)

9、備及設(shè)計(jì)要求,設(shè)計(jì)出實(shí)際電路組成一個(gè)完整的計(jì)算機(jī)溫度測(cè)控系統(tǒng)。</p><p>  2、根據(jù)設(shè)備情況以及被控對(duì)象,選擇1~2種合適的控制算法, </p><p>  框圖和源程序,并進(jìn)行實(shí)際操作和調(diào)試通過。</p><p>  編制程序溫度指標(biāo):60~80℃之間任選;偏差:1℃。</p><p><b>  總體方案設(shè)計(jì)<

10、;/b></p><p>  本系統(tǒng)主要由數(shù)據(jù)采集、信號(hào)放大、模數(shù)轉(zhuǎn)換等模塊構(gòu)成。設(shè)計(jì)思想是通過溫度傳感器將溫度信號(hào)轉(zhuǎn)變?yōu)殡娏鳎妷海┬盘?hào),但我們要知道經(jīng)溫度變化引起電流(電壓)信號(hào)的改變是非常小的,此時(shí)如果被模數(shù)轉(zhuǎn)換器采集的話效果是非常不明顯的,因此我們將其通過一個(gè)信號(hào)放大模塊進(jìn)行放大。再通過模數(shù)轉(zhuǎn)換器后送入單片機(jī)AT89C51,而單片機(jī)通過PID算法控制烘箱的電爐加熱,并且使數(shù)碼管顯示實(shí)時(shí)溫度,從而實(shí)現(xiàn)

11、溫度的高精度控制。</p><p>  4.硬件選擇以及相關(guān)電路設(shè)計(jì)</p><p>  4.1溫度傳感器的選擇</p><p>  傳感器的選取目前市場(chǎng)上溫度傳感器繁多就此我們提出了以下三種選取方案:</p><p>  方案一:選用鉑電阻溫度傳感器,此類溫度傳感器在各方面特性都比較優(yōu)秀,但其成本較高。</p><p&g

12、t;  方案二:采用熱敏電阻,選用此類元器件有價(jià)格便宜的優(yōu)點(diǎn),但由于熱敏電阻的非線性特性會(huì)影響系統(tǒng)的精度。</p><p>  方案三:選用美國(guó)Analog Devices 公司生產(chǎn)的二端集成電流傳感器AD590,此器件具有體積小、質(zhì)量輕、線形度好、性能穩(wěn)定等優(yōu)點(diǎn)。其測(cè)量范圍在-50℃--+150℃,滿刻度范圍誤差為±0.3℃,當(dāng)電源電壓在5—10V之間,穩(wěn)定度為1﹪時(shí),誤差只有±0.01℃,

13、其各方面特性都滿足此系統(tǒng)的設(shè)計(jì)要求。</p><p>  比較以上三種方案,方案三具有明顯的優(yōu)點(diǎn),因此此次設(shè)計(jì)選用方案三。</p><p>  圖4-1 溫度采集電路</p><p>  選用溫度傳感器AD590,AD590具有較高精度和重復(fù)性(重復(fù)性優(yōu)于0.1℃,其良好的非線形可以保證優(yōu)于0.1℃的測(cè)量精度,利用其重復(fù)性較好的特點(diǎn),通過非線形補(bǔ)償,可以達(dá)到0.1℃

14、測(cè)量精度)。超低溫漂移高精度運(yùn)算放大器OP-07將“溫度-電壓”信號(hào)放大。便于A/D進(jìn)行轉(zhuǎn)換,以提高溫度采集電路的可靠性。</p><p>  集成溫度傳感器的輸出形式分為電壓輸出和電流輸出兩種。電壓輸出型的靈敏度一般為10mV/K,溫度0℃時(shí)輸出為0,溫度25℃時(shí)輸出為2.982V。電流輸出型的靈敏度為1µA/K。這樣便于A/D轉(zhuǎn)換器采集數(shù)據(jù)。</p><p><b>

15、;  4.2 模數(shù)轉(zhuǎn)換器</b></p><p>  ADC0809是M美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的CMOS工藝8通道,8位逐次逼近式A/D轉(zhuǎn)換器。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換,其轉(zhuǎn)換時(shí)間為100μs左右。是目前國(guó)內(nèi)應(yīng)用最廣泛的8位通用A/D芯片。</p><p>  圖4-2 ADC0809引腳圖<

16、;/p><p>  4.2.1ADC0809內(nèi)部結(jié)構(gòu)</p><p>  圖中多路開關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,這是一種經(jīng)濟(jì)的多路數(shù)據(jù)采集方法。地址鎖存與譯碼電路完成對(duì)A、B、C 3個(gè)地址位進(jìn)行鎖存和譯碼,其譯碼輸出用于通道選擇,其轉(zhuǎn)換結(jié)果通過三態(tài)輸出鎖存器存放、輸出,因此可以直接與系統(tǒng)數(shù)據(jù)總線相連,表4-1為通道選擇表。 </p>

17、<p>  圖4-3 ADC0809內(nèi)部結(jié)構(gòu)圖</p><p><b>  表4-1通道選擇表</b></p><p><b>  4.2.2信號(hào)引腳</b></p><p>  ADC0809的內(nèi)部結(jié)構(gòu)和外部引腳分別如圖4-3和圖4-2所示。內(nèi)部各部分的作用和工作原理在內(nèi)部結(jié)構(gòu)圖中已一目了然,在此就不再贅述,

18、下面僅對(duì)各引腳定義分述如下: </p><p> ?。?)IN0~I(xiàn)N7——8路模擬輸入,通過3根地址譯碼線ADDA、ADDB、ADDC來選通一路。</p><p> ?。?)D7~D0——A/D轉(zhuǎn)換后的數(shù)據(jù)輸出端,為三態(tài)可控輸出,故可直接和微處理器數(shù)據(jù)線連接。8位排列順序是D7為最高位,D0為最低位。</p><p>  (3)ADDA、ADDB、ADDC——模擬

19、通道選擇地址信號(hào),ADDA為低位,ADDC為高位。地址信號(hào)與選中通道對(duì)應(yīng)關(guān)系如表4-1所示。</p><p> ?。?)VR(+)、VR(-)——正、負(fù)參考電壓輸入端,用于提供片內(nèi)DAC電阻網(wǎng)絡(luò)的基準(zhǔn)電壓。在單極性輸入時(shí),VR(+)=5V,VR(-)=0V;雙極性輸入時(shí),VR(+)、VR(-)分別接正、負(fù)極性的參考電壓。</p><p>  (5)ALE——地址鎖存允許信號(hào),高電平有效。當(dāng)

20、此信號(hào)有效時(shí),A、B、C三位地址信號(hào)被鎖存,譯碼選通對(duì)應(yīng)模擬通道。在使用時(shí),該信號(hào)常和START 信號(hào)連在一起,以便同時(shí)鎖存通道地址和啟動(dòng)A/D轉(zhuǎn)換。</p><p>  START——A/D轉(zhuǎn)換啟動(dòng)信號(hào),正脈沖有效。加于該端的脈沖的上升沿使逐次逼近寄存止,重新從頭開始轉(zhuǎn)換器清零,下降沿開始A/D轉(zhuǎn)換。如正在進(jìn)行轉(zhuǎn)換時(shí)又接到新的啟動(dòng)脈沖,則原來的轉(zhuǎn)換進(jìn)程被中。</p><p&g

21、t; ?。?)EOC——轉(zhuǎn)換結(jié)束信號(hào),高電平有效。該信號(hào)在A/D轉(zhuǎn)換過程中為低電平,其余時(shí)間為高電平。該信號(hào)可作為被CPU查詢的狀態(tài)信號(hào),也可作為對(duì)CPU的中斷請(qǐng)求信號(hào)。在需要對(duì)某個(gè)模擬量不斷采樣、轉(zhuǎn)換的情況下,EOC也可作為啟動(dòng)信號(hào)反饋接到START端,但在剛加電時(shí)需由外電路第一次啟動(dòng)。</p><p> ?。?)OE——輸出允許信號(hào),高電平有效。當(dāng)微處理器送出該信號(hào)時(shí),ADC0808/0809的輸出三態(tài)門被打

22、開,使轉(zhuǎn)換結(jié)果通過數(shù)據(jù)總線被讀走。在中斷工作方式下,該信號(hào)往往是CPU發(fā)出的中斷請(qǐng)求響應(yīng)信號(hào)。</p><p>  4.2.3工作時(shí)序與使用說明</p><p>  圖4-4 ADC0809工作時(shí)序圖</p><p>  用單片機(jī)控制ADC時(shí),多數(shù)采用查詢和中斷控制兩種方式。查詢法是在單片機(jī)把啟動(dòng)命令送到ADC之后,執(zhí)行別的程序,同時(shí)對(duì)ADC的狀態(tài)進(jìn)行查詢,以檢查A

23、DC變換是否已經(jīng)完成,如查詢到變換已結(jié)束,則讀入轉(zhuǎn)換完畢的數(shù)據(jù)。中斷控制是在啟動(dòng)信號(hào)送到ADC之后,單片機(jī)執(zhí)行別的程序。當(dāng)ADC轉(zhuǎn)換結(jié)束并向單片機(jī)發(fā)出中斷請(qǐng)求信號(hào)時(shí),單片機(jī)響應(yīng)此中斷請(qǐng)求,進(jìn)入中斷服務(wù)程序,讀入轉(zhuǎn)換數(shù)據(jù),并進(jìn)行必要的數(shù)據(jù)處理,然后返回到原程序。這種方法單片機(jī)無需進(jìn)行轉(zhuǎn)換時(shí)間管理,CPU效率高,所以特別適合于變換時(shí)間較長(zhǎng)的ADC。本設(shè)計(jì)采用查詢方式進(jìn)行數(shù)據(jù)收集。由于ADC0809片內(nèi)無時(shí)鐘,故運(yùn)用8051提供的地址鎖存使能

24、信號(hào)ALE經(jīng)D觸發(fā)器二分頻后獲得時(shí)鐘。因?yàn)锳LE信號(hào)的頻率是單片機(jī)時(shí)鐘頻率的1/6,如果時(shí)鐘頻率為6MHz,則ALE信號(hào)的頻率為1MHz,經(jīng)二分頻后為500kHz,與AD0809時(shí)鐘頻率的典型值吻合。由于AD0809具有三態(tài)輸出鎖存器,故其數(shù)據(jù)輸出引角可直接與單片機(jī)的總線相連。地址碼引腳ADDA~C分別與地址總線的低3位A0、A1、A2相連,以選通IN0~I(xiàn)N7中的一個(gè)通道。采用單片機(jī)的P2.7(地址總線最高位</p>&

25、lt;p>  ADC0809是一個(gè)8路8位逐次逼近的A/D轉(zhuǎn)換器。AD0809的轉(zhuǎn)換時(shí)間為100µs。在CPU啟動(dòng)A/D命令后,便執(zhí)行一個(gè)固定的延時(shí)程序,延時(shí)時(shí)間應(yīng)略大于A/D的轉(zhuǎn)換時(shí)間;延時(shí)程序一結(jié)束,便執(zhí)行數(shù)據(jù)讀入指令,讀取轉(zhuǎn)換結(jié)果。我們只用了其一路AD轉(zhuǎn)換,參考電壓2.56V,即一位數(shù)字量對(duì)應(yīng)10mV即1℃。所以用起來很方便。</p><p>  ADC0809是帶有8路模擬開關(guān)的8位A/D

26、轉(zhuǎn)換芯片,所以它可有8個(gè)模擬量的輸入端,由芯片的A,B,C三個(gè)引腳來選擇模擬通道中的一個(gè)。A,B,C三端分別與AT89C51的P0.0~P0.2相接。地址鎖存信號(hào)(ALE)和啟動(dòng)轉(zhuǎn)換信號(hào)(START),由P2.6和/WR或非得到。輸出允許,由P2.6和/RD或非得到。時(shí)鐘信號(hào),可有89C51的ALE輸出得到,不過當(dāng)采用12M晶振時(shí),應(yīng)該先進(jìn)行二分頻,以滿足ADC0809的時(shí)鐘信號(hào)必須小于640K的要求。</p><p

27、>  4.3控制器89C51</p><p>  AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓 ,高性能CMOS 8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM ),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C51單片機(jī)

28、可為您提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。</p><p>  AT89C51單片機(jī)的主要特性:</p><p>  (1)與MCS-51 兼容,4K字節(jié)可編程閃爍存儲(chǔ)器;</p><p>  (2)靈活的在線系統(tǒng)編程,掉電標(biāo)識(shí)和快速編程特性;</p><p>  (3)壽命為1000次寫/擦周期,數(shù)據(jù)保留時(shí)間可10年以上;

29、</p><p>  (4)全靜態(tài)工作模式:0Hz-33Hz;</p><p>  (5)三級(jí)程序存儲(chǔ)器鎖定;</p><p>  (6)128*8位內(nèi)部RAM,32可編程I/O線;</p><p>  (7)兩個(gè)16位定時(shí)器/計(jì)數(shù)器,6個(gè)中斷源;</p><p>  (8)全雙工串行UART通道,低功耗的閑置和掉電模

30、式;</p><p>  (9)片內(nèi)振蕩器和時(shí)鐘電路;</p><p>  圖4-5 AT89C51結(jié)構(gòu)圖</p><p>  4.4數(shù)碼管顯示電路</p><p>  4.4.1 LED數(shù)碼管的組成</p><p>  LED數(shù)碼管顯示器是由發(fā)光二極管顯示字段的顯示器件,也稱為數(shù)碼管。其結(jié)構(gòu)如圖4-6所示。它由8個(gè)發(fā)

31、光二極管構(gòu)成,通過不同的組合可用來顯示0-9、A-F及小數(shù)點(diǎn)“.”等字符。</p><p>  數(shù)碼管有共陰極和共陽(yáng)極兩種結(jié)構(gòu)規(guī)格,電阻為外接。共陰極數(shù)碼管的發(fā)光二極管陰極共地,當(dāng)某發(fā)光二極管的陽(yáng)極為高電平時(shí),二極管點(diǎn)亮;共陽(yáng)極數(shù)碼管的發(fā)光二極管是陽(yáng)極,并接高電平,對(duì)于需點(diǎn)亮的發(fā)光二極管將其陰極接低電平即可。</p><p>  圖4-6 LED數(shù)碼管顯示圖</p><

32、p>  4.4.2數(shù)碼管顯示方式</p><p>  (1) 靜態(tài)顯示方式</p><p>  直接利用并行口輸出。LED顯示工作于靜態(tài)顯示方式時(shí),各位的共陰極連接在一起接地;每位的段選線分別于一個(gè)8位的鎖存輸出相連。一般稱之為靜態(tài)顯示,是由于顯示器中的各位相互獨(dú)立。而且各位的顯示字符一經(jīng)確定,相應(yīng)鎖存器的輸出將維持不變,直到顯示另一個(gè)字符為止。本實(shí)驗(yàn)采用串入并出的靜態(tài)顯示方式。&l

33、t;/p><p>  利用通信號(hào)串行輸出。在實(shí)際應(yīng)用中,多位LED顯示時(shí),為了簡(jiǎn)化電路,在系統(tǒng)不需要通信功能時(shí),經(jīng)常采用串行通信口工作方式0,外接移位寄存器74LS164來實(shí)現(xiàn)靜態(tài)顯示。</p><p> ?。?) 動(dòng)態(tài)顯示方式</p><p>  對(duì)多位LED顯示器的動(dòng)態(tài)顯示,通常都時(shí)采用動(dòng)態(tài)掃描的方法進(jìn)行顯示,即逐個(gè)循環(huán)點(diǎn)亮各位顯示器。這樣雖然在任一時(shí)刻只有一位顯示

34、器被點(diǎn)亮,但是由于間隔時(shí)間較短,且人眼具有視覺殘留效應(yīng),看起來與全部顯示器持續(xù)點(diǎn)亮一樣。為了實(shí)現(xiàn)LED顯示器的動(dòng)態(tài)掃描,除了要給顯示器提供的輸入之外,還要對(duì)顯示器加位選擇控制,這就是通常所說的段控和位控。因此多位LED顯示器接口電路需要有兩個(gè)輸出口,其中一個(gè)用于輸出8位控信號(hào);另一個(gè)用于輸出段控信號(hào),其連接圖如圖4-7所示。</p><p>  圖4-7 數(shù)碼管顯示電路</p><p> 

35、 表4-2 七段LED段選碼表</p><p><b>  5.PID控制算法</b></p><p>  在工程實(shí)際中,應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律為比例、積分、微分控制,簡(jiǎn)稱PID控制,又稱PID調(diào)節(jié)。PID控制器問世至今已有近70年歷史,它 以其結(jié)構(gòu)簡(jiǎn)單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。當(dāng)被控對(duì)象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的

36、數(shù)學(xué)模型時(shí),控制理論的 其它技術(shù)難以采用時(shí),系統(tǒng)控制器的結(jié)構(gòu)和參數(shù)必須依靠經(jīng)驗(yàn)和現(xiàn)場(chǎng)調(diào)試來確定,這時(shí)應(yīng)用PID控制技術(shù)最為方便。即當(dāng)我們不完全了解一個(gè)系統(tǒng)和被控對(duì)象,或 不能通過有效的測(cè)量手段來獲得系統(tǒng)參數(shù)時(shí),最適合用PID控制技術(shù)。PID控制,實(shí)際中也有PI和PD控制。PID控制器就是根據(jù)系統(tǒng)的誤差,利用比例、 積分、微分計(jì)算出控制量進(jìn)行控制的。   </p><p>  比例控制   比例控制是一種最簡(jiǎn)單的控

37、制方式。其控制器的輸出與輸入誤差信號(hào)成比例關(guān)系。當(dāng)僅有比例控制時(shí)系統(tǒng)輸出存在穩(wěn)態(tài)誤差。   </p><p>  積分控制   在積分控制中,控制器的輸出與輸入誤差信號(hào)的積分成正比關(guān)系。對(duì)一個(gè)自動(dòng)控制系統(tǒng),如果在進(jìn)入穩(wěn)態(tài)后存在穩(wěn)態(tài)誤差,則稱這個(gè)控制系統(tǒng)是有穩(wěn)態(tài)誤差的 或簡(jiǎn)稱有差系統(tǒng)。為了消除穩(wěn)態(tài)誤差,在控制器中必須引入“積分項(xiàng)”。積分項(xiàng)對(duì)誤差取決于時(shí)間的積分,隨著時(shí)間的增加,積分項(xiàng)會(huì)增大。這樣,即便誤差很小,積

38、分項(xiàng)也會(huì)隨著時(shí)間的增加而加大,它推動(dòng)控制器的輸出增大使穩(wěn)態(tài)誤差進(jìn)一步減小,直到等于零。因此,比例+積分控制器,可以使系統(tǒng)在進(jìn)入穩(wěn)態(tài)后無穩(wěn) 態(tài)誤差。   </p><p>  微分控制   在微分控制中,控制器的輸出與輸入誤差信號(hào)的微分(即誤差的變化率)成正比關(guān)系。 自動(dòng)控制系統(tǒng)在克服誤差的調(diào)節(jié)過程中可能會(huì)出現(xiàn)振蕩甚至失穩(wěn)。其原因是由于存在有較大慣性組件(環(huán)節(jié))或有滯后組件,具有抑制誤差的作用, 其變化總是落后于誤

39、差的變化。解決的辦法是使抑制誤差的作用的變化“超前”,即在誤差接近零時(shí),抑制誤差的作用就應(yīng)該是零。這就是說,在控制器中僅引入 “比例”項(xiàng)往往是不夠的,比例項(xiàng)的作用僅是放大誤差的幅值,而目前需要增加的是“微分項(xiàng)”,它能預(yù)測(cè)誤差變化的趨勢(shì),這樣,具有比例+微分的控制器,就能 夠提前使抑制誤差的控制作用等于零,甚至為負(fù)值,從而避免了被控量的嚴(yán)重超調(diào)。所以對(duì)有較大慣性或滯后的被控對(duì)象,比例+微分制器能改善系統(tǒng)在 調(diào)節(jié)過程中的動(dòng)態(tài)特性。</

40、p><p>  各子程序設(shè)計(jì)及流程圖</p><p>  6.1 PID控制程序流程圖</p><p>  6.2 A/D轉(zhuǎn)換程序流程圖</p><p>  6.3 顯示程序流程圖</p><p>  6.4溫度控制總程序流程圖</p><p><b>  心得體會(huì)</b>&l

41、t;/p><p>  作為一名自動(dòng)化專業(yè)的大三學(xué)生,我覺得做計(jì)算機(jī)控制系統(tǒng)課程設(shè)計(jì)是很有意義的,而且也是必要的。一個(gè)星期很快就過去了,計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)也告一段落。本次課程設(shè)計(jì),我的題目是計(jì)算機(jī)溫度控制系統(tǒng)。溫度控制是工業(yè)生產(chǎn)過程中經(jīng)常遇到的過程控制,有些工藝過程對(duì)其溫度的控制效果直接影響著產(chǎn)品的質(zhì)量,因而設(shè)計(jì)一種較為理想的溫度控制系統(tǒng)是非常有價(jià)值的,也是十分有必要的。</p><p> 

42、 其次,在這次課程設(shè)計(jì)中,我們運(yùn)用了以前學(xué)過的專業(yè)課知識(shí),如:Proteus繪圖仿真、C語(yǔ)言、模擬和數(shù)字電路知識(shí)等。雖然以前在上課的時(shí)候?qū)W的都不是很好,很多知識(shí)都學(xué)習(xí)的模棱兩可,可是如果你懷著一種目的性去學(xué)習(xí)它,你就會(huì)發(fā)現(xiàn)學(xué)習(xí)的效率非常高,以前看了都頭痛的東西在你現(xiàn)在一定要用的時(shí)候再拿出來學(xué)習(xí),會(huì)感覺其實(shí)也很簡(jiǎn)單的。這是我做這次課程設(shè)計(jì)的又一收獲。</p><p>  最后,要做好一個(gè)課程設(shè)計(jì),就必須做到:在做設(shè)

43、計(jì)之前,一定要對(duì)我們的對(duì)象有充分的了解,對(duì)所要用到的東西有深刻的認(rèn)識(shí),是指系統(tǒng)化、模塊化,必須有一個(gè)清晰的思路。在設(shè)計(jì)程序時(shí),不能妄想一次將整個(gè)程序設(shè)計(jì)好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計(jì)的必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,這樣為資料的保留和交流提供了方便;在設(shè)計(jì)中遇到的問題要記錄,以免下次遇到同樣的問題。</p><p>  總的來說,此次課程設(shè)計(jì)的過程比較輕松,從拿到問題到徹底解決問題,這是一個(gè)令人振奮并享受的過

44、程。經(jīng)過去圖書館大量的查閱書籍,我也學(xué)到了很多在課本上沒有的知識(shí),收獲頗豐。這段過程讓我懂得了一個(gè)道理,那就是學(xué)生要學(xué)的絕對(duì)不該僅僅是課本上的東西,有些東西只有走進(jìn)圖書館,你才可能學(xué)習(xí)到。也只有這樣,我們才能成為一個(gè)見多識(shí)廣、淵博的人。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]. 于海生等編著.微型計(jì)算機(jī)控制技術(shù)[M].北京:機(jī)械工業(yè)出

45、版社,2007.</p><p>  [2].邴志剛等編著.計(jì)算機(jī)控制:基礎(chǔ)?技術(shù)?工具?實(shí)例[M].北京:清華大學(xué)出版社, 2005.</p><p>  [3]. 鄒伯敏主編.自動(dòng)控制原理(第二版) [M]. 北京:機(jī)械工業(yè)出版社,2002.</p><p>  [4]. 呂震中,劉吉臻,王志明編.計(jì)算機(jī)控制技術(shù)與系統(tǒng)(第二版)[M],北京:中國(guó)電力出版社,20

46、05.</p><p>  [5].張宇河主編.計(jì)算機(jī)控制系統(tǒng)[M].北京:北京理工大學(xué)出版社, 2002.</p><p>  [6].馮勇編,現(xiàn)代計(jì)算機(jī)控制系統(tǒng)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2003</p><p>  [7].karl J.Astrom,Bjorn Wittenmark著.計(jì)算機(jī)控制系統(tǒng)理論與設(shè)計(jì):英文版[M].北京:清華大學(xué)出版社,2

47、002.</p><p>  [8].Morris Driels著.線性控制系統(tǒng)工程(英文影印版)[M].北京:清華大學(xué)出版社,2000.</p><p>  [9].John J.D'azzo & Constantine H.Houpis著.線性控制系統(tǒng)分析與設(shè)計(jì)(第4版)[M].北京:清華大學(xué)出版社,2000.</p><p>  [10].韓建

48、國(guó). Foundation and application of microcontroller .北京:高等教育出版社.2004.10</p><p>  附錄1:溫度控制系統(tǒng)總電路圖</p><p>  附錄2:溫度控制系統(tǒng)程序清單</p><p><b>  (1)主函數(shù)如下:</b></p><p>  #inc

49、lude <reg51.h></p><p>  #include <absacc.h></p><p>  #include"KEYSCAN.H"</p><p>  #include"PID.H"</p><p>  void PIDBEGIN(void); // PID

50、參數(shù)初始化// </p><p>  void main()</p><p><b>  {</b></p><p>  unsigned char key1=0,i,k;</p><p>  unsigned int tmp;</p><p>  unsigned char shu[3]={13

51、,13,0};</p><p>  unsigned char counter=0;</p><p>  PIDBEGIN();</p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  if(counter-- =

52、= 0)</p><p><b>  {</b></p><p>  tmp = ReadTemperature(); </p><p>  counter = 20;</p><p><b>  }</b></p><p>  view(tmp); //溫度顯示

53、;</p><p>  compare_temper(); </p><p><b>  } </b></p><p><b>  }</b></p><p>  (2) PID算法溫度控制程序</p><p>  #ifndef _PID_H__</p>&l

54、t;p>  #define _PID_H__</p><p>  #include<intrins.h> </p><p>  #include<math.h> </p><p>  #include<string.h> </p><p>  struct PID { </p><

55、p>  unsigned int SetPoint; // 設(shè)定目標(biāo) Desired Value </p><p>  unsigned int Proportion; // 比例常數(shù) Proportional Const </p><p>  unsigned int Integral; // 積分常數(shù) Integral Const </p><p>  u

56、nsigned int Derivative; // 微分常數(shù) Derivative Const </p><p>  unsigned int LastError; // Error[-1] </p><p>  unsigned int PrevError; // Error[-2] </p><p>  unsigned int SumError; // Su

57、ms of Errors </p><p><b>  } </b></p><p>  struct PID spid; // PID Control Structure </p><p>  unsigned int rout; // PID Response (Output) </p><p>  unsigned

58、 int rin; // PID Feedback (Input) </p><p>  sbit output=P3^4; </p><p>  unsigned char high_time,low_time,count=0;//占空比調(diào)節(jié)參數(shù) </p><p>  unsigned char set_temper=33; </p><p&g

59、t;  void PIDInit (struct PID *pp) </p><p><b>  { </b></p><p>  memset ( pp,0,sizeof(struct PID)); </p><p><b>  } </b></p><p>  unsigned int PIDC

60、alc( struct PID *pp, unsigned int NextPoint ) </p><p><b>  { </b></p><p>  unsigned int dError,Error; </p><p>  Error = pp->SetPoint - NextPoint; // 偏差 </p>&l

61、t;p>  pp->SumError += Error; // 積分 </p><p>  dError = pp->LastError - pp->PrevError; // 當(dāng)前微分 </p><p>  pp->PrevError = pp->LastError; </p><p>  pp->LastError =

62、Error; </p><p>  return (pp->Proportion * Error//比例 </p><p>  + pp->Integral * pp->SumError //積分項(xiàng) </p><p>  + pp->Derivative * dError); // 微分項(xiàng) </p><p><b

63、>  } </b></p><p>  /*********************************************************** </p><p>  溫度比較處理子程序 </p><p>  ***********************************************************/ &

64、lt;/p><p>  compare_temper() </p><p><b>  { </b></p><p>  unsigned char i; </p><p><b>  //EA=0;</b></p><p>  if(set_temper>temper)

65、</p><p><b>  { </b></p><p>  if(set_temper-temper>1) </p><p><b>  { </b></p><p>  high_time=100; </p><p>  low_time=0; </p>

66、;<p><b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p>  for(i=0;i<10;i++) </p><p>  { get_temper(); </p>

67、<p>  rin = s; // Read Input </p><p>  rout = PIDCalc ( &spid,rin ); // Perform PID Interation </p><p><b>  } </b></p><p>  if (high_time<=100) </p>

68、<p>  high_time=(unsigned char)(rout/800); </p><p><b>  else </b></p><p>  high_time=100; </p><p>  low_time= (100-high_time); </p><p><b>  } <

69、;/b></p><p><b>  } </b></p><p>  else if(set_temper<=temper) </p><p><b>  { </b></p><p>  if(temper-set_temper>0) </p><p>

70、<b>  { </b></p><p>  high_time=0; </p><p>  low_time=100; </p><p><b>  } </b></p><p><b>  else </b></p><p><b>  {

71、 </b></p><p>  for(i=0;i<10;i++) </p><p>  { get_temper(); </p><p>  rin = s; // Read Input </p><p>  rout = PIDCalc ( &spid,rin ); // Perform PID Interati

72、on </p><p><b>  } </b></p><p>  if (high_time<100) </p><p>  high_time=(unsigned char)(rout/10000); </p><p><b>  else </b></p><p&g

73、t;  high_time=0; </p><p>  low_time= (100-high_time);</p><p><b>  //EA=1; </b></p><p><b>  } </b></p><p><b>  } </b></p><

74、p><b>  } </b></p><p>  /***************************************************** </p><p>  T0中斷服務(wù)子程序,用于控制電平的翻轉(zhuǎn) ,40us*100=4ms周期 </p><p>  ********************************

75、**********************/ </p><p>  void serve_T0() interrupt 1 using 1 </p><p><b>  { </b></p><p>  if(++count<=(high_time)) </p><p>  output=1; </p&g

76、t;<p>  else if(count<=100) </p><p><b>  { </b></p><p>  output=0; </p><p><b>  } </b></p><p><b>  else </b></p>&l

77、t;p><b>  count=0; </b></p><p>  TH0=0x2f; </p><p>  TL0=0xe0; </p><p><b>  }</b></p><p>  void PIDBEGIN() </p><p><b>  { &

78、lt;/b></p><p>  TMOD=0x01; </p><p>  TH0=0x2f; </p><p>  TL0=0x40; </p><p><b>  EA=1; </b></p><p><b>  ET0=1; </b></p>&l

79、t;p><b>  TR0=1; </b></p><p>  high_time=50; </p><p>  low_time=50; </p><p>  PIDInit ( &spid ); // Initialize Structure </p><p>  spid.Proportion = 1

80、0; // Set PID Coefficients </p><p>  spid.Integral = 8; </p><p>  spid.Derivative =6; </p><p>  spid.SetPoint = 100; // Set PID Setpoint </p><p><b>  } </b>

81、</p><p><b>  #endif</b></p><p>  (3)ADC0809轉(zhuǎn)換子程序</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define IN0

82、XBYTE[0x7ff8] /*設(shè)置ADC0809的通道0地址*/</p><p>  sbit ad_busy=P3^3; /*即EOC狀態(tài)*/</p><p>  uint overflow_count = 0; /*T1中斷次數(shù)初值*/ </p><p>  void ad0809(ucha

83、r xdata * x) /*采樣函數(shù),結(jié)果x[]放外部數(shù)據(jù)存儲(chǔ)器*/</p><p>  { uchar i;</p><p>  uchar idata * ad_adr;</p><p>  ad_adr=&IN0;</p><p>  for(i=0;i<8;i++) /*處理8通道

84、*/</p><p>  { *ad_adr=0; /*啟動(dòng)轉(zhuǎn)換*/</p><p>  i=i; /*延時(shí)等待EOC變低*/</p><p><b>  i=i;</b></p><p>  while(ad_busy==0); /*查詢等待轉(zhuǎn)換結(jié)束*/</p><p>  x

85、[i]=*ad_adr; /*存轉(zhuǎn)換結(jié)果*/</p><p>  *(*(p+j)+i)=x[i];</p><p>  ad_adr++; /*下一通道*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*

86、 定時(shí)器1中斷服務(wù)程序;每100ms執(zhí)行一次,fosc=6MHz*/</p><p>  void timer1_ISR(void) interrupt 3</p><p>  { TH1 = (65536 – 50000)/256; //定時(shí)器1賦初值</p><p>  TL1 = (65536 – 50000)%256; // 10

87、0ms/1us=50000次計(jì)數(shù)</p><p>  overflow_count++;</p><p><b>  }</b></p><p>  void main(void)</p><p>  { static char xdata ad[10];</p><p>  char (*p)[

88、8];</p><p>  TMOD = 0X10; //設(shè)置定時(shí)器1工作方式1,</p><p>  TH1 = (65536 – 50000)/256; //定時(shí)器1賦初值</p><p>  TL1 = (65536 – 50000)%256;</p><p>  EA = 1; //開定時(shí)

89、器1中斷</p><p><b>  ET1 = 1;</b></p><p>  TR1 = 1; //啟動(dòng)定時(shí)器1</p><p>  uchar j;</p><p>  for(j=0;j<144;j++){ / *采樣24h*/</p><p

90、>  if ( overflow_count == 6000){ /*10分鐘到,采樣ADC0809通道的值*/</p><p>  uchar i,(*p)[8];</p><p>  uchar idata * ad_adr;</p><p>  ad_adr=&IN0;</p><p>  for(i=0;i<8;

91、i++) /*處理8通道*/</p><p>  { *ad_adr=0; /*啟動(dòng)轉(zhuǎn)換*/</p><p>  i=i; /*延時(shí)等待EOC變低*/</p><p><b>  i=i;</b></p><p>  while(ad_busy==0); /*查詢等待轉(zhuǎn)換結(jié)束*/</p>

92、;<p>  x[i]=*ad_adr; /*存轉(zhuǎn)換結(jié)果*/</p><p>  ad_adr++;}</p><p>  for(i=0;i<8;i++)</p><p>  { *(*(p+j)+i)=x[i]}</p><p><b>  } </b></p><p&g

93、t;<b>  }</b></p><p><b>  }</b></p><p>  (4) 數(shù)碼管顯示程序</p><p>  unsigned char code DUAN_TABLE[]={0X3F, 0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0x77,0x7C,0x

94、39,0x5E,0x79,0x71}; //段碼 </p><p>  void Delay(unsigned char n) //延時(shí)0.1*n毫秒 0 </p><p><b>  { </b></p><p>  unsigned char i; </p><p><b>  do </b>&

95、lt;/p><p><b>  { </b></p><p>  for(i=0;i<23;i++) </p><p><b>  ;;; </b></p><p>  } while(n--); </p><p><b>  } </b></p

96、><p><b>  main() </b></p><p><b>  { </b></p><p><b>  while(1) </b></p><p><b>  { </b></p><p>  P1=0xfe; //位碼

97、左邊第1個(gè) </p><p>  P0=DUAN_TABLE[1];Delay(20); //顯示1 </p><p>  P1=0xfd; //位碼左邊第2個(gè) </p><p>  P0=DUAN_TABLE[2];Delay(20); //顯示2 </p><p>  //位碼左邊第3個(gè) </p><p>&l

98、t;b>  P1=0xfb; </b></p><p>  P0=DUAN_TABLE[3];Delay(20); //顯示3 </p><p>  P1=0xf7; //位碼左邊第4個(gè) </p><p>  P0=DUAN_TABLE[4];Delay(20); //顯示4 </p><p><b>  } &l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論