基于單片機在溫度控制器的應(yīng)用_第1頁
基于單片機在溫度控制器的應(yīng)用_第2頁
基于單片機在溫度控制器的應(yīng)用_第3頁
基于單片機在溫度控制器的應(yīng)用_第4頁
基于單片機在溫度控制器的應(yīng)用_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于單片機在溫度控制器的應(yīng)用摘要單片機系統(tǒng)的開發(fā)應(yīng)用給現(xiàn)代工業(yè)測控領(lǐng)域帶來了一次新的技術(shù)革命,自動化、智能化均離不開單片機的應(yīng)用。單片機由于其微小的體積和極低的成本,廣泛的應(yīng)用于家用電器、工業(yè)控制等領(lǐng)域中。在工業(yè)生產(chǎn)中,電流、電壓、溫度、壓力和流量也都是常用的被控參數(shù)。

本文介紹了“基于單片機的溫度控制系統(tǒng)”的設(shè)計及其相關(guān)內(nèi)容。系統(tǒng)屬于典型的基于單片機的大慣性環(huán)節(jié)的PID閉環(huán)控制裝置,通用性很強,在工業(yè)過程控制中有著廣泛的應(yīng)用。控制系統(tǒng)中引入單片機,可以充分利用單片機在對采集數(shù)據(jù)加以分析并根據(jù)所得結(jié)果做出邏輯判斷等方面的能力,編制出符合某種技術(shù)要求的控制程序、管理程序,實現(xiàn)對被控參數(shù)的控制與管理。

本論文介紹了基于單片機的溫度控制系統(tǒng)的硬件設(shè)計和軟件開發(fā)的過程。共分五章:第一章介紹了背景和總體的設(shè)計思路;第二章介紹了AT89C51單片機的基本知識;第三章對系統(tǒng)設(shè)計中所涉及的一些主要的芯片做了簡單的介紹;第四章介紹了系統(tǒng)硬件電路的設(shè)計;第五章介紹了系統(tǒng)的軟件設(shè)計過程。關(guān)鍵詞:單片機;溫度控制;PID目錄基于單片機在溫度控制器的應(yīng)用 1摘要 1第一章緒論 2第二章系統(tǒng)的需求和總體思路 32.1功能需求 32.2總體思路 32.3操作模式的規(guī)劃 4第三章系統(tǒng)元器件及相關(guān)算法介紹 43.1ADuC812單片機 43.1.1ADuC812的主要性能 43.1.2ADuC812的系統(tǒng)開發(fā) 63.2溫度檢測元件的選擇 63.3PID算法介紹 10第四章系統(tǒng)設(shè)計 134.1硬件電路設(shè)計 144.1.1溫度檢測電路 144.1.2溫度控制原理 144.1.3PID控制算法的實現(xiàn) 154.1.4控制器與PC之間的數(shù)據(jù)通信 164.2 程序設(shè)計 16第五章系統(tǒng)調(diào)試…………….總結(jié)參考文獻(xiàn)附錄第一章緒論溫度的測量與控制是生產(chǎn)過程自動化的重要任務(wù)之一。溫度控制系統(tǒng)在工業(yè)控制中應(yīng)用廣泛,如在電廠建設(shè)、石油化工、冶金、機械制造、食品加工等行業(yè)中應(yīng)用十分普遍。主要是通過將工業(yè)控制現(xiàn)場的溫度模擬量通過傳感器采集,再經(jīng)過AD/轉(zhuǎn)換成數(shù)字量輸入計算機,由溫度控制系統(tǒng)軟件實現(xiàn)數(shù)據(jù)的存儲、處理、顯示的過程。如今在很多溫度控制系統(tǒng)中,一般是選用單片機來實現(xiàn)。溫度控制有很多方式,如采用模擬儀表控制、數(shù)字儀表控制、單片機控制、PLC控制、微機控制等等。近年來,隨著計算機技術(shù)、電力電子技術(shù)的飛速發(fā)展以及對控制對象在線控制條件、技術(shù)參數(shù)、控制效果及質(zhì)量等方面越來越高的要求,使得采用工業(yè)控制計算機進(jìn)行溫度控制在現(xiàn)代化的工農(nóng)業(yè)領(lǐng)域中得到了愈來愈廣泛的應(yīng)用。大到糧庫、程控交換機、大型溫室等場合,小到變頻空調(diào)甚至現(xiàn)在的一些CP機的主板都用到了溫度監(jiān)控系統(tǒng)。由于溫度控制是工業(yè)生產(chǎn)中典型的過程控制問題,對溫度進(jìn)行準(zhǔn)確的測量和有效的控制是一些設(shè)備優(yōu)質(zhì)高產(chǎn)、低耗和安全生產(chǎn)的重要指標(biāo)。隨著生產(chǎn)的發(fā)展,對溫度控制的要求將會越來越高。本課題屬工業(yè)控制過程研究領(lǐng)域,所謂過程控制系統(tǒng)是指自動控制系統(tǒng)的被控量是溫度、壓力、流量、液位成分、粘度、濕度以及HP值等這樣一些過程變量的系統(tǒng)。如今,隨著自動控制理論與技術(shù)的迅速發(fā)展,特別是現(xiàn)代控制理論和微機技術(shù)的發(fā)展,大大促進(jìn)了工業(yè)自動化的進(jìn)程,但PDI控制仍舊是工業(yè)控制的主力軍。最初的PID控制器是利用氣動系統(tǒng)構(gòu)成的。在50年代運算放大器出現(xiàn)以后,電子元器件取代了氣動元件。60年代后,由于計算機控制的出現(xiàn)使得PDI控制發(fā)展到DDC階段,即計算機直接作為執(zhí)行機構(gòu)來控制被控對象。70年代微處理器的出現(xiàn),使過程控制發(fā)展到分散控制階段,PID控制器則是它的主要組成部分。80年代開始在單回路PID控制器中引入了參數(shù)整定和自適應(yīng)控制理論,PID控制理論從此進(jìn)入了高速發(fā)展階段。PDI控制器在實際控制工程中應(yīng)用最廣,其被廣泛應(yīng)用主要是因為它結(jié)構(gòu)簡單、在實際中容易被理解和實現(xiàn),而且許多高級控制都是以PID控制為基礎(chǔ)的。傳統(tǒng)的PID控制器主要問題是參數(shù)整定問題。方法是在獲取對象數(shù)學(xué)模型的基礎(chǔ)上,根據(jù)某一整定原則來確定PDI參數(shù),其整定一般需要經(jīng)驗豐富的工程技術(shù)人員來完成,既耗時又耗力,加之實際系統(tǒng)千差萬別,又有滯后、非線性等因素,使PID參數(shù)的整定有一定的難度,致使許多PID控制器沒能整定的很好,這樣的系統(tǒng)自然無法工作在令人滿意的狀態(tài)。而且參數(shù)一旦整定計算好以后,在整個控制過程中都是固定不變的。而在實際系統(tǒng)中,由于系統(tǒng)在控制過程中會出現(xiàn)狀態(tài)和參數(shù)的不確定性,因此在現(xiàn)代工業(yè)控制中,采用傳統(tǒng)的PDI控制器已難以獲得滿意的控制效果。所以越來越多的新型PDI控制器得到了人們的重視。近幾年來有眾多的先進(jìn)PDI技術(shù)不斷涌現(xiàn)出來,如最優(yōu)控制、模糊控制、智能控制、自適應(yīng)控制等,本人也將以溫度控制實驗系統(tǒng)為實際工程背景對一些先進(jìn)的PDI技術(shù)進(jìn)行研究。第二章系統(tǒng)的需求和總體思路2.1功能需求單回路溫度控制器實際上是以單片機控制為核心,根據(jù)社頂目標(biāo)溫度值進(jìn)行自動或手動調(diào)節(jié)的單回路溫度控制系統(tǒng),主要包括溫度檢測,溫度控制,參數(shù)顯示,報警指示等部分。根據(jù)模式值,可查看相應(yīng)的參數(shù),如溫度值,溫度上限報警值等,并根據(jù)需要可對參數(shù)進(jìn)行修改,保存等。同時本系統(tǒng)還配有上位機,可以由上位修改設(shè)定溫度,并啟動通信,實時顯示溫度值和趨勢曲線,與下位機配合可構(gòu)成一套完整的溫度監(jiān)控系統(tǒng)。主要功能如下:①設(shè)定溫度顯示,實時溫度顯示②溫度上限報警,溫度報警上限值設(shè)定③溫度下限報警,溫度報警下限值設(shè)定④目標(biāo)溫度設(shè)定⑤放大電路放大倍數(shù)設(shè)定⑥P,I,D控制參數(shù)的設(shè)定⑦手動加熱設(shè)定值⑧手動/自動設(shè)定⑨溫度零點標(biāo)定⑩參數(shù)保存⑾上位機設(shè)定目標(biāo)溫度值⑿上位機顯示實時溫度波形曲線圖2.2總體思路溫度控制系統(tǒng)包括實現(xiàn)溫度控制的CPU——ADUC812,溫度測量裝置,加熱元件,溫度參數(shù)顯示,SSR,輔助控制電路等。整個系統(tǒng)硬件結(jié)構(gòu)如圖10.1所示,其對應(yīng)的硬件線路可參考。數(shù)碼管用來顯示模式值及相應(yīng)的參數(shù),通過控鍵可改變模式值及修改相應(yīng)的參數(shù)值。CPU根據(jù)溫度值對上,下限報警值進(jìn)行比較,控制報警燈的狀態(tài)。本系統(tǒng)采用周波來控制加熱爐的溫度。K分度熱電偶作為溫度傳感器,是檢測電路關(guān)鍵部件。傳感信號通過放大,濾波等處理,可直接有CPU進(jìn)行A/D轉(zhuǎn)換,換算為相應(yīng)的溫度測量值。根據(jù)測量值和設(shè)定值之差,進(jìn)行PID運算,將計算結(jié)果轉(zhuǎn)換為周波數(shù),通過控制SSR通過的周波數(shù)來控制加熱爐的溫度。2.3操作模式的規(guī)劃基于數(shù)碼管的單回路控制器,往往使用菜單模式來切換所有的顯示參數(shù),只有在當(dāng)前模式下才能修改和顯示其對應(yīng)的參數(shù)。本系統(tǒng)可用3個按鍵實現(xiàn)模式切換和參數(shù)修改操作,所以這3個鍵分別定義為模式鍵,數(shù)值增加鍵和數(shù)值減少鍵,用8個數(shù)碼管顯示模式和對應(yīng)的參數(shù),左邊4個數(shù)碼管顯示模式值,右邊4個數(shù)碼顯示相應(yīng)的參數(shù)值。根據(jù)系統(tǒng)的功能需求,應(yīng)該設(shè)計10種模式,各模式的定義如下:模式0:溫度設(shè)定值和溫度實時值顯示;模式1:設(shè)置和顯示溫度上限報警值(0~1200)模式2:設(shè)置和顯示溫度下限報警值(0~1200)模式3:設(shè)置和顯示設(shè)定值得(0~1200)模式4:設(shè)置實時溫度采集放大電路的方法倍數(shù)模式5:設(shè)置和顯示PID算法中的比例系數(shù)(0.00~50.00)模式6:設(shè)置和顯示PID算法中的積分系數(shù)(0.00~50.00)模式7:設(shè)置和顯示PID算法中的微分系數(shù)(0.00~50.00)模式8:設(shè)置和顯示手動輸入值(0~100)模式9:手動/自動切換(1:手動;0:自動)模式10:標(biāo)定和顯示實時溫度的零點。第三章系統(tǒng)元器件及相關(guān)算法介紹3.1ADuC812單片機目前,單片機開發(fā)者接觸的數(shù)字控制系統(tǒng),還有很大一部分反饋和最終控制的都是模擬量,這種控制系統(tǒng),都需要有A/D、D/A轉(zhuǎn)換,為了節(jié)約這類嵌入式控制系統(tǒng)的體積以及開發(fā)成本,AD公司新推出了一種單片機ADuC812,它把AD公司多年生產(chǎn)A/D、D/A轉(zhuǎn)換器的經(jīng)驗和Intel成熟的51單片機技術(shù)結(jié)合在一起。ADuC812是一個全集成的12位數(shù)據(jù)采集控制系統(tǒng),在單個芯片內(nèi)集成了高性能的自校準(zhǔn)多通道ADC,2個12位DAC以及可編程的8位(與51兼容)MCU[1]。由于它許多的優(yōu)越性能,以及便宜的價格,為我們提供了一種方便、快捷、廉價的數(shù)字控制系統(tǒng)設(shè)計模式。3.1.1ADuC812的主要性能ADuC812片內(nèi)帶有8kB的閃速/電擦除(Flash/EE)程序存儲器、640B的閃速/電擦除數(shù)據(jù)存儲器以及256B的SRAM,對于普通的數(shù)字控制系統(tǒng)這些一般可以滿足控制器對存儲空間的需要,不需要外加存儲器芯片。雖然如此,ADuC812還能外接最多16MB的外部數(shù)據(jù)存儲器和最多64kB的外部程序存儲器??梢酝饨痈叽鎯α康臄?shù)據(jù)存儲器使該型單片機能夠在數(shù)據(jù)采集系統(tǒng)以及其它需要高存儲空間的系統(tǒng)中使用。采集速率,也就是A/D轉(zhuǎn)換的速度最高可以達(dá)到200kb/s(12MHz晶振)。AduC812自帶2.5V電壓基準(zhǔn);八通道高精度12位ADC,2個12位電壓輸出DAC。由于具有和8051兼容的內(nèi)核,除了某些特殊功能(如ADC、DAC)的程序編寫外,其它程序的編寫完全和51一樣,這使51單片機的開發(fā)者很容易學(xué)會開發(fā)ADuC812單片機系統(tǒng)。圖2一1AduC812的功能方框圖在外圍接口上面,ADuC812帶有32條可編程的I/O線,包括UART串行口I/O,2線(與I2C兼容)SPI串行I/O。ADuC812和51系列單片機開發(fā)一個顯著的差別就是ADuC812不需要購買專門的單片機開發(fā)系統(tǒng),只需要有QuikStart軟件包,就可以通過串口從上微機直接把程序代碼寫入ADuC812的程序存儲器中。QucikStart開發(fā)系統(tǒng)是一個功能完善的ADuC812單片機系列開發(fā)工具包,可以從AD公司下載,在國內(nèi)也可以從武漢力源公司網(wǎng)站下載。QuikStart軟件包的主要功能有:代碼開發(fā),完整的匯編器和C編譯器(限制2kB代碼);代碼下載,閃速電擦除UART串行下載器,在一切硬件都準(zhǔn)備好以后,運行代碼下載程序就可以把程序代碼寫入到ADuC812芯片中;芯片資料文檔,這些文檔中有關(guān)于ADuC812單片機性能最完整的介紹。在代碼下載前,先把ADuC812的串行接口和計算機的串口依次接好。在ADuC812的52根引腳中,有一根控制引腳PSEN,上電復(fù)位時,如果PSEN引腳接+VCC,芯片上電后就處在正常工作狀態(tài),反之,如果PSEN引腳通過1kΩ的電阻接地,如圖2一2所示,則芯圖2一2程序下載時PSEN引腳接法片上電后,就處如閃速/電擦除程序串行下載模式,這時,運行Quik-Start軟件包中的Download.exe程序就可以把單片機的程序代碼寫入到ADuC812的閃速/電擦除程序存儲器中,寫入前,下載軟件會自動對存儲器進(jìn)行電擦除。這個功能為ADuC812單片機系統(tǒng)的開發(fā)提供了一個非常便利的條件。開發(fā)者可以在既不需要購買專門的開發(fā)系統(tǒng)又可以在調(diào)試過程中不取下芯片的情況下,根據(jù)需要對ADuC812的片內(nèi)存儲器進(jìn)行多次電擦除-寫入操作。作者建議,在PESN引腳端通過跳線器分別接+VCC和10AduC812單片機控制系統(tǒng)的開發(fā)通過1kΩ電阻接地,這樣,只要在上電復(fù)位前,選擇跳線器的狀態(tài)就可以決定上電后,芯片是進(jìn)入工作狀態(tài)還是進(jìn)入編程狀態(tài)。連接上位機和單片機之間的串行線也可以作為單片機正常工作時,單片機和上位機之間的串行數(shù)據(jù)線。3.1.2ADuC812的系統(tǒng)開發(fā)(1)硬件設(shè)計根據(jù)AduC812的特點,硬件設(shè)計中需要注意的問題有ADuC812采用的是52引腳塑料四方型扁平封裝(S-52),引腳之間的間距為0.65mm,和ADuC812相連的印制版線路不能大于引腳自己的寬度0.1mm(14mil),所以對印制電路板制造和焊接工藝都有一定的要求,特別是采用手工焊接時,最好請專門的焊接師。A/D、D/A轉(zhuǎn)換時,芯片自己提供的基準(zhǔn)準(zhǔn)電壓為2.5V,如果外接基準(zhǔn)電壓則不能超過5V,對于12位ADC,轉(zhuǎn)換靈敏度為0.5mV/B。這對印制電路板抗干擾能力的要求比較高,要求電路板中A/D、D/A轉(zhuǎn)換端的干擾電壓要小于0.5mV,否則會降低轉(zhuǎn)換精度。ADuC812芯片對復(fù)位電路要求比較嚴(yán)格,不能采用普通的電阻-電容式復(fù)位電路,否則上電后,單片機不工作,程序無法下載。一般要求采用專門的復(fù)位電路芯片,注意到ADuC812是高電平復(fù)位,以選X5045芯片為宜,如果采用X5043就要先通過一個非門電路再接到單片機的復(fù)位端。雖然ADuC812有自己的看門狗電路,但是,一般單片機自帶的看門狗并不能很好地保證工作的穩(wěn)定性,外接X5045還可以起到看門狗的作用。(2)軟件設(shè)計ADuC812單片機程序代碼可以用匯編語言編寫,也可以用C語言編寫,在普通的編輯環(huán)境下(如DOS中的EDIT編輯環(huán)境中)編輯好后,再用QuikStart軟件包提供的匯編編譯器或C編譯器進(jìn)行編譯。QuikStart軟件包中的可執(zhí)行程序都是構(gòu)建在DOS平臺上的,要在DOS環(huán)境下運行這些軟件。在用到A/D轉(zhuǎn)換結(jié)果時要注意ADuC812單片機的A/D原始轉(zhuǎn)換結(jié)果,由于干擾的原因,有時候會達(dá)不到12位精度要求,所以對A/D轉(zhuǎn)換的結(jié)果要進(jìn)行低通濾波處理后再使用,可以取多次轉(zhuǎn)換的平均值作為A/D轉(zhuǎn)換的實際結(jié)果去進(jìn)行其他的計算。實例表明,只要硬件和軟件設(shè)計得當(dāng),A/D、D/A轉(zhuǎn)換完全可以達(dá)到12位精度。程序代碼下載的步驟為:在所有硬件都準(zhǔn)備好后,首先用編譯器(匯編器為ASM51.EXE)把在其他編譯環(huán)境中編寫好的ASM文件編譯成后綴為HEX的文件;然后用Download執(zhí)行程序?qū)幾g好的HEX文件進(jìn)行處理,就可以把代碼寫入到ADuC812的閃速/電擦除程序存儲器中。在DOS環(huán)境下,以上兩步的命令如下:ASM51*.ASMDOWNLOAD*.HEX3.2溫度檢測元件的選擇溫度傳感器,使用范圍廣,數(shù)量多,居各種傳感器之首。溫度傳感器的發(fā)展大致經(jīng)歷了以下3個階段:1.傳統(tǒng)的分立式溫度傳感器(含敏感元件),主要是能夠進(jìn)行非電量和電量之間轉(zhuǎn)換。2.模擬集成溫度傳感器/控制器。3.智能溫度傳感器。目前,國際上新型溫度傳感器正從模擬式想數(shù)字式、集成化向智能化及網(wǎng)絡(luò)化的方向發(fā)展。溫度傳感器的分類溫度傳感器按傳感器與被測介質(zhì)的接觸方式可分為兩大類:一類是接觸式溫度傳感器,一類是非接觸式溫度傳感器。接觸式溫度傳感器的測溫元件與被測對象要有良好的熱接觸,通過熱傳導(dǎo)及對流原理達(dá)到熱平衡,這是的示值即為被測對象的溫度。這種測溫方法精度比較高,并可測量物體內(nèi)部的溫度分布。但對于運動的、熱容量比較小的及對感溫元件有腐蝕作用的對象,這種方法將會產(chǎn)生很大的誤差。非接觸測溫的測溫元件與被測對象互不接觸。常用的是輻射熱交換原理。此種測穩(wěn)方法的主要特點是可測量運動狀態(tài)的小目標(biāo)及熱容量小或變化迅速的對象,也可測量溫度場的溫度分布,但受環(huán)境的影響比較大。溫度傳感器的發(fā)展1.傳統(tǒng)的分立式溫度傳感器——熱電偶傳感器熱電偶傳感器是工業(yè)測量中應(yīng)用最廣泛的一種溫度傳感器,它與被測對象直接接觸,不受中間介質(zhì)的影響,具有較高的精度;測量范圍廣,可從-50~1600℃進(jìn)行連續(xù)測量,特殊的熱電偶如金鐵——鎳鉻,最低可測到-269℃,鎢——錸最高可達(dá)2.模擬集成溫度傳感器集成傳感器是采用硅半導(dǎo)體集成工藝制成的,因此亦稱硅傳感器或單片集成溫度傳感器。模擬集成溫度傳感器是在20世紀(jì)80年代問世的,它將溫度傳感器集成在一個芯片上、可完成溫度測量及模擬信號輸出等功能。模擬集成溫度傳感器的主要特點是功能單一(僅測量溫度)、測溫誤差小、價格低、響應(yīng)速度快、傳輸距離遠(yuǎn)、體積小、微功耗等,適合遠(yuǎn)距離測溫,不需要進(jìn)行非線性校準(zhǔn),外圍電路簡單。熱電偶是一種感溫元件,是一次儀表,它直接測量溫度,并把溫度信號轉(zhuǎn)換成熱電動勢信號,通過電氣儀表(二次儀表)轉(zhuǎn)換成被測介質(zhì)的溫度。熱電偶測溫的基本原理是兩種不同成份的材質(zhì)導(dǎo)體組成閉合回路,當(dāng)兩端存在溫度梯度時,回路中就會有電流通過,此時兩端之間就存在電動勢——熱電動勢,這就是所謂的塞貝克效應(yīng)。兩種不同成份的均質(zhì)導(dǎo)體為熱電極,溫度較高的一端為工作端,溫度較低的一端為自由端,自由端通常處于某個恒定的溫度下。根據(jù)熱電動勢與溫度的函數(shù)關(guān)系,制成熱電偶分度表;分度表是自由端溫度在0℃在熱電偶回路中接入第三種金屬材料時,只要該材料兩個接點的溫度相同,熱電偶所產(chǎn)生的熱電勢將保持不變,即不受第三種金屬接入回路中的影響。因此,在熱電偶測溫時,可接入測量儀表,測得熱電動勢后,即可知道被測介質(zhì)的溫度。編輯本段工作原理兩種不同成份的導(dǎo)體(稱為熱電偶絲材或熱電極)兩端接合成回路,當(dāng)接合點的溫度不同時,在回路中就會產(chǎn)生電動勢,這種現(xiàn)象稱為熱電效應(yīng),而這種電動勢稱為熱電勢。熱電偶就是利用這種原理進(jìn)行溫度測量的,其中,直接用作測量介質(zhì)溫度的一端叫做工作端(也稱為測量端),另一端叫做冷端(也稱為補償端);冷端與顯示儀表或配套儀表連接,顯示儀表會指出熱電偶所產(chǎn)生的熱電勢。熱電偶實際上是一種能量轉(zhuǎn)換器,它將熱能轉(zhuǎn)換為電能,用所產(chǎn)生的熱電勢測量溫度,對于熱電偶的熱電勢,應(yīng)注意如下幾個問題:1:熱電偶的熱電勢是熱電偶兩端溫度函數(shù)的差,而不是熱電偶兩端溫度差的函數(shù);2:熱電偶所產(chǎn)生的熱電勢的大小,當(dāng)熱電偶的材料是均勻時,與熱電偶的長度和直徑無關(guān),只與熱電偶材料的成份和兩端的溫差有關(guān);3:當(dāng)熱電偶的兩個熱電偶絲材料成份確定后,熱電偶熱電勢的大小,只與熱電偶的溫度差有關(guān);若熱電偶冷端的溫度保持一定,這進(jìn)熱電偶的熱電勢僅是工作端溫度的單值函數(shù)。將兩種不同材料的導(dǎo)體或半導(dǎo)體A和B焊接起來,構(gòu)成一個閉合回路,如圖所示。當(dāng)導(dǎo)體A和B的兩個執(zhí)著點1和2之間存在溫差時,兩者之間便產(chǎn)生電動勢,因而在回路中形成一個大小的電流,這種現(xiàn)象稱為熱電效應(yīng)。熱電偶就是利用這一效應(yīng)來工作的。編輯本段特點◆裝配簡單,更換方便◆壓簧式感溫元件,抗震性能好◆測量范圍大◆機械強度高,耐壓性能好編輯本段熱電偶-種類及結(jié)構(gòu)形成(1)熱電偶的種類常用熱電偶可分為標(biāo)準(zhǔn)熱電偶和非標(biāo)準(zhǔn)熱電偶兩大類。所調(diào)用標(biāo)準(zhǔn)熱電偶是指國家標(biāo)準(zhǔn)規(guī)定了其熱電勢與溫度的關(guān)系、允許誤差、并有統(tǒng)一的標(biāo)準(zhǔn)分度表的熱電偶,它有與其配套的顯示儀表可供選用。非標(biāo)準(zhǔn)化熱電偶在使用范圍或數(shù)量級上均不及標(biāo)準(zhǔn)化熱電偶,一般也沒有統(tǒng)一的分度表,主要用于某些特殊場合的測量。標(biāo)準(zhǔn)化熱電偶我國從1988年1月1日起,熱電偶和熱電阻全部按IEC國際標(biāo)準(zhǔn)生產(chǎn),并指定S、B、E、K、R、J、T七種標(biāo)準(zhǔn)化熱電偶為我國統(tǒng)一設(shè)計型熱電偶。(2)熱電偶的結(jié)構(gòu)形式為了保證熱電偶可靠、穩(wěn)定地工作,對它的結(jié)構(gòu)要求如下:①組成熱電偶的兩個熱電極的焊接必須牢固;②兩個熱電極彼此之間應(yīng)很好地絕緣,以防短路;③補償導(dǎo)線與熱電偶自由端的連接要方便可靠;④保護(hù)套管應(yīng)能保證熱電極與有害介質(zhì)充分隔離。編輯本段常用熱電偶材料熱電偶分度號熱電極材料正極負(fù)極S鉑銠10純鉑R鉑銠13純鉑B鉑銠30鉑銠6K鎳鉻鎳硅T純銅銅鎳J鐵銅鎳N鎳鉻硅鎳硅E鎳鉻銅鎳熱電偶的種類:裝配熱電偶,鎧裝熱電偶,端面熱電偶,壓簧固定熱電偶,高溫?zé)犭娕迹K銠熱電偶,防腐熱電偶,耐磨熱電偶,高壓熱電偶,特殊熱電偶,手持式熱電偶,微型熱電偶,貴金屬熱電偶等等。K型熱電偶也即鎳鉻-鎳硅熱電偶,常用熱電偶分度號有S、B、K、E、T、J等,這些都是標(biāo)準(zhǔn)化熱電偶。熱電偶的原理:它是將兩種不同材料的金屬導(dǎo)體組成閉合回路,一端放在被測介質(zhì)中感受溫度變化,稱為熱端,另一端為冷端。當(dāng)冷端和熱端溫度不同時,在回路中就會產(chǎn)生一定方向和大小的電勢,如此使冷端溫度不變,則熱電勢只與另一端溫度相關(guān),這樣,只要測得熱電勢的大小即可知道溫度的大小。所以熱電偶的電流可以不考慮,測量它的毫伏電勢就行啦。K型熱電偶,它是一種能測量較高溫度的廉價熱偶。由于這種合金具有較好的高溫抗氧化性,可適用于氧化性或中性介質(zhì)中。它可長期測量1000度的高溫,短期可測到1200度。它不能用于還原性介質(zhì)中,否則,很快腐蝕,在此情況下只能用于500度以下的測量。它比S型熱偶要便宜很多,它的重復(fù)性很好,產(chǎn)生的熱電勢大,約為0.041mV/度,因而靈敏度很高,而且它的線性很好。雖然其測量精度略低,但完全能滿足工業(yè)測溫要求,所以它是工業(yè)上最常用的熱電偶。常用熱電偶分度號有S、B、K、E、T、J等,這些都是標(biāo)準(zhǔn)化熱電偶。其中K型也即鎳鉻-鎳硅熱電偶,它是一種能測量較高溫度的廉價熱偶。由于這種合金具有較好的高溫抗氧化性,可適用于氧化性或中性介質(zhì)中。它可長期測量1000度的高溫,短期可測到1200度。它不能用于還原性介質(zhì)中,否則,很快腐蝕,在此情況下只能用于500度以下的測量。它比S型熱偶要便宜很多,它的重復(fù)性很好,產(chǎn)生的熱電勢大,因而靈敏度很高,而且它的線性很好。雖然其測量精度略低,但完全能滿足工業(yè)測溫要求,所以它是工業(yè)上最常用的熱電偶。先確定熱電偶的外觀沒有問題,是好是壞,得通過檢測才能確定。將待測熱電偶穿上熱電偶專用的瓷套管,和標(biāo)準(zhǔn)鉑銠熱電偶一起放入管式電爐中,將熱端插入管式電爐中的一個多孔的均熱用的金屬鎳制成的圓柱體中。將各自的補償導(dǎo)線的冷端放入由冰水混合物保持的零攝氏度的容器中。將管式電爐保持在該熱電偶的許用最高溫度,并穩(wěn)定保持這個范圍。這時候用經(jīng)過檢測合格的惠司登電位差計,測出標(biāo)準(zhǔn)熱電偶和待測熱電偶產(chǎn)生的熱電勢差并記錄。根據(jù)記錄的熱電勢差,查表查出各自對應(yīng)的溫度,如果待測熱電偶超差,可以判定為不合格。這種管式電爐,不是分析化學(xué)用的硅碳棒管式電爐。對于不合格的熱電偶,可以從熱端切斷一小段,重新焊接。焊接的方法很簡單,對普通的鎳鉻熱電偶,可以用自耦變壓器調(diào)至較低電壓,用熱電偶的兩根絲并成一極,另一極用碳棒,直接引燃電弧,兩根熱電偶絲會在頭上熔成一個小球狀。這種操作不難,可以調(diào)整電壓,很快就會掌握。這種焊接使用的是自耦變壓器,千萬注意絕緣以保安全。對貴重的鉑銠熱電偶的焊接,是另一種方法。將調(diào)壓后的電源一極插入氯化鈉水溶液,另一極是擰在一起的熱電偶,用絕緣鉗夾住熱電偶,輕點溶液表面,熱電偶兩端就能夠熔合。這兩種焊接方式,要注意安全和練習(xí),容易掌握的。重新焊接的熱電偶,可以再檢測,確定合格與否。3.3PID算法介紹什么是PID控制?目前工業(yè)自動化水平已成為衡量各行各業(yè)現(xiàn)代化水平的一個重要標(biāo)志。同時,控制理論的發(fā)展也經(jīng)歷了古典控制理論、現(xiàn)代控制理論和智能控制理論三個階段。智能控制的典型實例是模糊全自動洗衣機等。自動控制系統(tǒng)可分為開環(huán)控制系統(tǒng)和閉環(huán)控制系統(tǒng)。一個控控制系統(tǒng)包括控制器、傳感器、變送器、執(zhí)行機構(gòu)、輸入輸出接口??刂破鞯妮敵鼋?jīng)過輸出接口、執(zhí)行機構(gòu),加到被控系統(tǒng)上;控制系統(tǒng)的被控量,經(jīng)過傳感器,變送器,通過輸入接口送到控制器。不同的控制系統(tǒng),其傳感器、變送器、執(zhí)行機構(gòu)是不一樣的。比如壓力控制系統(tǒng)要采用壓力傳感器。電加熱控制系統(tǒng)的傳感器是溫度傳感器。目前,PID控制及其控制器或智能PID控制器(儀表)已經(jīng)很多,產(chǎn)品已在工程實際中得到了廣泛的應(yīng)用,有各種各樣的PID控制器產(chǎn)品,各大公司均開發(fā)了具有PID參數(shù)自整定功能的智能調(diào)節(jié)器(intelligentregulator),其中PID控制器參數(shù)的自動調(diào)整是通過智能化調(diào)整或自校正、自適應(yīng)算法來實現(xiàn)。利用PID控制實現(xiàn)的壓力、溫度、流量、液位控制器,能實現(xiàn)PID控制功能的可編程控制器(PLC),還有可實現(xiàn)PID控制的PC系統(tǒng)等等??删幊炭刂破?PLC)是利用其閉環(huán)控制模塊來實現(xiàn)PID控制,而可編程控制器(PLC)可以直接與ControlNet相連,如Rockwell的PLC-5等。還有可以實現(xiàn)PID控制功能的控制器,如Rockwell的Logix產(chǎn)品系列,它可以直接與ControlNet相連,利用網(wǎng)絡(luò)來實現(xiàn)其遠(yuǎn)程控制功能。1、開環(huán)控制系統(tǒng)開環(huán)控制系統(tǒng)(open-loopcontrolsystem)是指被控對象的輸出(被控制量)對控制器(controller)的輸出沒有影響。在這種控制系統(tǒng)中,不依賴將被控量反送回來以形成任何閉環(huán)回路。2、閉環(huán)控制系統(tǒng)閉環(huán)控制系統(tǒng)(closed-loopcontrolsystem)的特點是系統(tǒng)被控對象的輸出(被控制量)會反送回來影響控制器的輸出,形成一個或多個閉環(huán)。閉環(huán)控制系統(tǒng)有正反饋和負(fù)反饋,若反饋信號與系統(tǒng)給定值信號相反,則稱為負(fù)反饋(NegativeFeedback),若極性相同,則稱為正反饋,一般閉環(huán)控制系統(tǒng)均采用負(fù)反饋,又稱負(fù)反饋控制系統(tǒng)。閉環(huán)控制系統(tǒng)的例子很多。比如人就是一個具有負(fù)反饋的閉環(huán)控制系統(tǒng),眼睛便是傳感器,充當(dāng)反饋,人體系統(tǒng)能通過不斷的修正最后作出各種正確的動作。如果沒有眼睛,就沒有了反饋回路,也就成了一個開環(huán)控制系統(tǒng)。另例,當(dāng)一臺真正的全自動洗衣機具有能連續(xù)檢查衣物是否洗凈,并在洗凈之后能自動切斷電源,它就是一個閉環(huán)控制系統(tǒng)。3、階躍響應(yīng)階躍響應(yīng)是指將一個階躍輸入(stepfunction)加到系統(tǒng)上時,系統(tǒng)的輸出。穩(wěn)態(tài)誤差是指系統(tǒng)的響應(yīng)進(jìn)入穩(wěn)態(tài)后,系統(tǒng)的期望輸出與實際輸出之差??刂葡到y(tǒng)的性能可以用穩(wěn)、準(zhǔn)、快三個字來描述。穩(wěn)是指系統(tǒng)的穩(wěn)定性(stability),一個系統(tǒng)要能正常工作,首先必須是穩(wěn)定的,從階躍響應(yīng)上看應(yīng)該是收斂的;準(zhǔn)是指控制系統(tǒng)的準(zhǔn)確性、控制精度,通常用穩(wěn)態(tài)誤差來(Steady-stateerror)描述,它表示系統(tǒng)輸出穩(wěn)態(tài)值與期望值之差;快是指控制系統(tǒng)響應(yīng)的快速性,通常用上升時間來定量描述。4、PID控制的原理和特點在工程實際中,應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律為比例、積分、微分控制,簡稱PID控制,又稱PID調(diào)節(jié)。PID控制器問世至今已有近70年歷史,它以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。當(dāng)被控對象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的數(shù)學(xué)模型時,控制理論的其它技術(shù)難以采用時,系統(tǒng)控制器的結(jié)構(gòu)和參數(shù)必須依靠經(jīng)驗和現(xiàn)場調(diào)試來確定,這時應(yīng)用PID控制技術(shù)最為方便。即當(dāng)我們不完全了解一個系統(tǒng)和被控對象,或不能通過有效的測量手段來獲得系統(tǒng)參數(shù)時,最適合用PID控制技術(shù)。PID控制,實際中也有PI和PD控制。PID控制器就是根據(jù)系統(tǒng)的誤差,利用比例、積分、微分計算出控制量進(jìn)行控制的。比例(P)控制比例控制是一種最簡單的控制方式。其控制器的輸出與輸入誤差信號成比例關(guān)系。當(dāng)僅有比例控制時系統(tǒng)輸出存在穩(wěn)態(tài)誤差(Steady-stateerror)。積分(I)控制在積分控制中,控制器的輸出與輸入誤差信號的積分成正比關(guān)系。對一個自動控制系統(tǒng),如果在進(jìn)入穩(wěn)態(tài)后存在穩(wěn)態(tài)誤差,則稱這個控制系統(tǒng)是有穩(wěn)態(tài)誤差的或簡稱有差系統(tǒng)(SystemwithSteady-stateError)。為了消除穩(wěn)態(tài)誤差,在控制器中必須引入“積分項”。積分項對誤差取決于時間的積分,隨著時間的增加,積分項會增大。這樣,即便誤差很小,積分項也會隨著時間的增加而加大,它推動控制器的輸出增大使穩(wěn)態(tài)誤差進(jìn)一步減小,直到等于零。因此,比例+積分(PI)控制器,可以使系統(tǒng)在進(jìn)入穩(wěn)態(tài)后無穩(wěn)態(tài)誤差。微分(D)控制在微分控制中,控制器的輸出與輸入誤差信號的微分(即誤差的變化率)成正比關(guān)系。自動控制系統(tǒng)在克服誤差的調(diào)節(jié)過程中可能會出現(xiàn)振蕩甚至失穩(wěn)。其原因是由于存在有較大慣性組件(環(huán)節(jié))或有滯后(delay)組件,具有抑制誤差的作用,其變化總是落后于誤差的變化。解決的辦法是使抑制誤差的作用的變化“超前”,即在誤差接近零時,抑制誤差的作用就應(yīng)該是零。這就是說,在控制器中僅引入“比例”項往往是不夠的,比例項的作用僅是放大誤差的幅值,而目前需要增加的是“微分項”,它能預(yù)測誤差變化的趨勢,這樣,具有比例+微分的控制器,就能夠提前使抑制誤差的控制作用等于零,甚至為負(fù)值,從而避免了被控量的嚴(yán)重超調(diào)。所以對有較大慣性或滯后的被控對象,比例+微分(PD)控制器能改善系統(tǒng)在調(diào)節(jié)過程中的動態(tài)特性。5、PID控制器的參數(shù)整定主要方法PID控制器的參數(shù)整定是控制系統(tǒng)設(shè)計的核心內(nèi)容。它是根據(jù)被控過程的特性確定PID控制器的比例系數(shù)、積分時間和微分時間的大小。PID控制器參數(shù)整定的方法很多,概括起來有兩大類:一是理論計算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過理論計算確定控制器參數(shù)。這種方法所得到的計算數(shù)據(jù)未必可以直接用,還必須通過工程實際進(jìn)行調(diào)整和修改。二是工程整定方法,它主要依賴工程經(jīng)驗,直接在控制系統(tǒng)的試驗中進(jìn)行,且方法簡單、易于掌握,在工程實際中被廣泛采用。PID控制器參數(shù)的工程整定方法,主要有臨界比例法、反應(yīng)曲線法和衰減法。三種方法各有其特點,其共同點都是通過試驗,然后按照工程經(jīng)驗公式對控制器參數(shù)進(jìn)行整定。但無論采用哪一種方法所得到的控制器參數(shù),都需要在實際運行中進(jìn)行最后調(diào)整與完善。現(xiàn)在一般采用的是臨界比例法。利用該方法進(jìn)行PID控制器參數(shù)的整定步驟如下:(1)首先預(yù)選擇一個足夠短的采樣周期讓系統(tǒng)工作;(2)僅加入比例控制環(huán)節(jié),直到系統(tǒng)對輸入的階躍響應(yīng)出現(xiàn)臨界振蕩<--adcode-->,記下這時的比例放大系數(shù)和臨界振蕩周期;(3)在一定的控制度下通過公式計算得到PID控制器的參數(shù)。PID參數(shù)的設(shè)定:是靠經(jīng)驗及工藝的熟悉,參考測量值跟蹤與設(shè)定值曲線,從而調(diào)整P\I\D的大小。書上的常用口訣:參數(shù)整定找最佳,從小到大順序查先是比例后積分,最后再把微分加曲線振蕩很頻繁,比例度盤要放大曲線漂浮繞大灣,比例度盤往小扳曲線偏離回復(fù)慢,積分時間往下降曲線波動周期長,積分時間再加長曲線振蕩頻率快,先把微分降下來動差大來波動慢。微分時間應(yīng)加長理想曲線兩個波,前高后低4比1一看二調(diào)多分析,調(diào)節(jié)質(zhì)量不會低這里介紹一種經(jīng)驗法。這種方法實質(zhì)上是一種試湊法,它是在生產(chǎn)實踐中總結(jié)出來的行之有效的方法,并在現(xiàn)場中得到了廣泛的應(yīng)用。這種方法的基本程序是先根據(jù)運行經(jīng)驗,確定一組調(diào)節(jié)器參數(shù),并將系統(tǒng)投入閉環(huán)運行,然后人為地加入階躍擾動(如改變調(diào)節(jié)器的給定值),觀察被調(diào)量或調(diào)節(jié)器輸出的階躍響應(yīng)曲線。若認(rèn)為控制質(zhì)量不滿意,則根據(jù)各整定參數(shù)對控制過程的影響改變調(diào)節(jié)器參數(shù)。這樣反復(fù)試驗,直到滿意為止。經(jīng)驗法簡單可靠,但需要有一定現(xiàn)場運行經(jīng)驗,整定時易帶有主觀片面性。當(dāng)采用PID調(diào)節(jié)器時,有多個整定參數(shù),反復(fù)試湊的次數(shù)增多,不易得到最佳整定參數(shù)。下面以PID調(diào)節(jié)器為例,具體說明經(jīng)驗法的整定步驟:【1】讓調(diào)節(jié)器參數(shù)積分系數(shù)S0=0,實際微分系數(shù)k=0,控制系統(tǒng)投入閉環(huán)運行,由小到大改變比例系數(shù)S1,讓擾動信號作階躍變化,觀察控制過程,直到獲得滿意的控制過程為止?!?】取比例系數(shù)S1為當(dāng)前的值乘以0.83,由小到大增加積分系數(shù)S0,同樣讓擾動信號作階躍變化,直至求得滿意的控制過程?!?】積分系數(shù)S0保持不變,改變比例系數(shù)S1,觀察控制過程有無改善,如有改善則繼續(xù)調(diào)整,直到滿意為止。否則,將原比例系數(shù)S1增大一些,再調(diào)整積分系數(shù)S0,力求改善控制過程。如此反復(fù)試湊,直到找到滿意的比例系數(shù)S1和積分系數(shù)S0為止?!?】引入適當(dāng)?shù)膶嶋H微分系數(shù)k和實際微分時間TD,此時可適當(dāng)增大比例系數(shù)S1和積分系數(shù)S0。和前述步驟相同,微分時間的整定也需反復(fù)調(diào)整,直到控制過程滿意為止。注意:仿真系統(tǒng)所采用的PID調(diào)節(jié)器與傳統(tǒng)的工業(yè)PID調(diào)節(jié)器有所不同,各個參數(shù)之間相互隔離,互不影響,因而用其觀察調(diào)節(jié)規(guī)律十分方便。PID參數(shù)是根據(jù)控制對象的慣量來確定的。大慣量如:大烘房的溫度控制,一般P可在10以上,I=3-10,D=1左右。小慣量如:一個小電機帶一水泵進(jìn)行壓力閉環(huán)控制,一般只用PI控制。P=1-10,I=0.1-1,D=0,這些要在現(xiàn)場調(diào)試時進(jìn)行修正的。我提供一種增量式PID供大家參考△U(k)=Ae(k)-Be(k-1)+Ce(k-2)A=Kp(1+T/Ti+Td/T)B=Kp(1+2Td/T)C=KpTd/TT采樣周期Td微分時間Ti積分時間用上面的算法可以構(gòu)造自己的PID算法。U(K)=U(K-1)+△U(K)第四章系統(tǒng)設(shè)計4.1硬件電路設(shè)計4.1.1溫度檢測電路本系統(tǒng)采用(K分度)熱電偶作為溫度傳感器,由此構(gòu)成的檢測電路如圖10.0所示。由熱電偶的特性知,進(jìn)入方法器的電壓信號實為熱電偶冷熱端溫差引起的電壓差信號。冷端處于室溫,熱端處于工作環(huán)境,單片機的A/D通道可以直接采集熱電偶信號,經(jīng)K分度查表后則可以得到溫度值,但這并不是實際測量點的溫度,還必須加上室溫的溫度補償才能準(zhǔn)確計算出所需要的溫度。室溫的測量可以通過AD590將室溫變化為電壓信號,經(jīng)放大后直接送給單片機A/D通道,單片機程序自動完成熱偶信號的采集和冷端信號的采集,計算出實際的溫度測量值。圖2一3溫度檢測電路4.1.2溫度控制原理對于電熱加溫的溫度控制可以采用移相控制或周波控制方式。移相控制方式是通過改變可控硅的導(dǎo)通角來控制輸出電壓,從控制加熱對象的溫度,控制電路相對復(fù)雜,但控制精度比較高。周波控制方式的輸出電路如圖10.3所示,他實際上是通過調(diào)節(jié)一定時間的循環(huán)周期內(nèi)的供電時間比例來控制加熱對象在本周期內(nèi)獲得的電能,從而控制其溫度。由于控制加溫的時間比例實現(xiàn)起來相對簡單,因此周波控制方式在溫度控制系統(tǒng)獲得了比較廣泛的應(yīng)用。本系統(tǒng)確定采用周波控制方法。圖2一4周波控制方式的輸出電路由圖2一4可知,CPU的I/O腳輸出低電平時,SSR給加熱元件接通220V交流電源,加熱元件獲得電能,溫度升高;I/O腳輸出高電平時,SSR開路,加熱元件兩端無電壓,停止加熱,如溫度高于環(huán)境高溫,則對象的溫度開始下降。采用時間比例控制的具體方法是:①設(shè)定一個標(biāo)準(zhǔn)的加溫周期T,以T為周期對溫度進(jìn)行采樣,獲得溫度測量值;②根據(jù)設(shè)定值和測量值的偏差,進(jìn)行PID運算;③將PID的輸出轉(zhuǎn)換為SSR的通斷時間。PID的輸出為0%,則SSR接通時間為0。即本周期無輸出;如果PID輸出為100%,則SSR接通時間為T,即本周期為全輸出;如果PID的輸出為MV,則SSR的接通時間為TXMV/100,斷開時間為T-TXMV/100。例如:T=120秒,PID計算結(jié)果為1分30秒,則本次2分鐘內(nèi)就應(yīng)加溫90秒,挺30秒;又如T=120秒,PID的計算結(jié)果為1分25秒,則本周期就應(yīng)加溫85秒。停35秒。4.1.3PID控制算法的實現(xiàn)PID算法有位置式和增量式兩種,增量式PID算法得到的結(jié)果是增量,也就是說,在上一次的控制量的基礎(chǔ)上需要增加的控制量。例如,在可控硅電機調(diào)試系統(tǒng)中,控制量的增量意味著可控硅的觸發(fā)相位在原有的基礎(chǔ)上需要提前或滯后的量;位置式酸法則表現(xiàn)為當(dāng)前的出發(fā)相應(yīng)應(yīng)該在什么位置。又如在溫度控制系統(tǒng)中,增量式算法則表現(xiàn)為在上次通電時間比例的基礎(chǔ)上,還需要增加或減少的通電時間比例;位置式算法則直接指明本周期內(nèi)要通電多長時間。本系統(tǒng)采用的位置式PID算法。標(biāo)準(zhǔn)的直接計算公式:Pout(t)=Kp*e(t)+KixSum_e(t)+Kd*(e(t0-e(t-1);其中,e(t)為基本偏差,表示當(dāng)前測量值與設(shè)定目標(biāo)間的差值,設(shè)定目標(biāo)是被減數(shù),結(jié)果可以是正或負(fù),正數(shù)表示還沒有達(dá)到設(shè)定值,負(fù)數(shù)表示已經(jīng)超過了設(shè)定值。這是面向比例項用的變動數(shù)據(jù)。累計偏差Sum_e(t)=e(t)+e(t-1)+e(t-2)++e(1)是每次偏差值的代數(shù)和,是面向積分項用的一個變動數(shù)據(jù)?;酒畹南鄳?yīng)偏差e(t)-e(t-1)是用本次的基本偏差減去上一次的基本偏差,以考察當(dāng)前被控量的變化趨勢,有利于快速發(fā)應(yīng),是面向微分項的一個變動數(shù)據(jù)。Kp,ki和Kd是PID算法的3個控制參數(shù),分別稱為比例系數(shù),積分系數(shù)和微分系數(shù),不同的控制對象選擇不同的數(shù)值,需要經(jīng)過現(xiàn)場整定才能獲得較好的效果。比例調(diào)節(jié)的作用是按比例反應(yīng)系統(tǒng)的偏差,系統(tǒng)一旦出現(xiàn)了偏差,比例調(diào)節(jié)立即產(chǎn)生調(diào)節(jié)作用以減殺偏差。比例作用大,可以加速調(diào)節(jié),減少誤差,但是過大的比例作用,使系統(tǒng)的穩(wěn)定性下降,甚至造成系統(tǒng)不穩(wěn)定。積分調(diào)節(jié)的作用使系統(tǒng)消除穩(wěn)態(tài)誤差,提高無差度。因為一但有誤差,積分調(diào)節(jié)就進(jìn)行,直至無差,積分調(diào)節(jié)停止,積分調(diào)節(jié)輸出維持常量。微分調(diào)節(jié)作用反映系統(tǒng)偏差信號的變化率,具有預(yù)見性,能預(yù)見偏差變化的趨勢,因此能產(chǎn)生超前的控制作用,以改善系統(tǒng)的動態(tài)性能。為了程序處理上的方便,可在程序內(nèi)部設(shè)計一個PID調(diào)節(jié)時鐘(20MS)。PID計算周期為2分鐘,這樣就對周期進(jìn)行100等分。經(jīng)PID計算后的輸出值即為溫度加熱時間(0-100)。加熱時間到了,關(guān)閉加熱的IO口,直到下一個2分鐘到了,再進(jìn)行新一輪PID計算和加熱控制。為了達(dá)到比較好的控制效果,同時減輕單片機的運算量,Kp,Ki,Kd這三個參數(shù)采用整數(shù),為了放大100倍進(jìn)行計算,三個參數(shù)采用相同的放大比例。運算中往往出現(xiàn)數(shù)據(jù)益出的情況,注意考慮符號,為此我們對輸出值有一定約定界限(0-100),當(dāng)結(jié)果超出約定界限時,不再增加(或減少)。加溫的整個過程沒有必要全程PID控制,一般可以在設(shè)定目標(biāo)值前一個溫度區(qū)域才進(jìn)行PID控制。例如,設(shè)定目標(biāo)溫度為300度,則可以在250度以前全速加溫,當(dāng)達(dá)到250度以后才開始計算PID計算并予以控制,這樣可以加快加溫速度又不影響溫度控制。在不產(chǎn)生過大的超調(diào)量的情況下,盡可能把起控點抬高,有利于后面控制部分的進(jìn)一步細(xì)化。在進(jìn)入控制之前,應(yīng)將積分項清零。4.1.4控制器與PC之間的數(shù)據(jù)通信為了提高通信的可靠信,便于上位機程序員靈活編程,有必要設(shè)計一個簡單的通信格式。表10.1是一種參考設(shè)計,但這種格式?jīng)]有考慮效驗和的問題,讀者可以自行改善。字節(jié)1的數(shù)據(jù)Oxaa為通信起始標(biāo)志,datal和datah為十六進(jìn)制數(shù),其中datal為低8位數(shù)據(jù),dataH為高8位數(shù)據(jù)。如果要進(jìn)行數(shù)據(jù)通信,首先右上位機發(fā)啟通信命令;先將設(shè)定值發(fā)送給上位機,而后每秒鐘發(fā)送一次實時溫度值(溫度測量值)給上位機。如果上位機要修改控制器中的設(shè)定值,則發(fā)送修改設(shè)定值命令,命令中附帶的控制器的設(shè)定值。程序設(shè)計/*頭文件:全局變量聲明,在其它模塊可以直接調(diào)用此內(nèi)的變量主要包括,顯示用的變量和控制用的變量及相關(guān)位標(biāo)志設(shè)置。*/#include<ADUC812.H>unsignedcharV_mode=0;//模式鍵選擇,共有10個模式//模式0:顯示設(shè)定溫度和實時溫度//模式1:高報警值設(shè)置//模式2:低報警值設(shè)置模式3:溫度控制設(shè)定值//模式4:放大倍數(shù)校正值的的模式567為PID調(diào)節(jié)值//模式8:手動輸出值模式9:手動/自動選擇性1:手動,0:自動//模式10:初始值進(jìn)行修正unsignedchardatadisp_buf[8]={1,2,3,4,5,6,7,8}; //8個數(shù)碼管顯示緩沖區(qū)unsignedcharcodeduan_table[]={//段選碼 0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x77,0x4c,0x7f,0x6f,0xA0, 0x01};//0,1,2,3,4,5,6,7,8,9,_,'-'bitkuaisu=0; //按鍵快速處理bitdisplay=0; //顯示刷新標(biāo)志bitsave_flag=0; //數(shù)據(jù)修改標(biāo)志,以保存數(shù)據(jù)unsignedcharpid_value=0;//PID輸出值unsignedcharpid_val_mid=0;//PID計算暫存值unsignedintcanshu[10]={0,200,50,150,23,110,05,100,0,0}; //10個參數(shù)變量存放區(qū)charchushi=0; //計算高端校正值bitadcg_flag=0; //實時溫度采集標(biāo)志bitadcd_flag=0; //室溫計算標(biāo)志bitpid_flag=0; //PID計算標(biāo)志?bittran=0; //通信標(biāo)志//1S鐘發(fā)送一次實時采集溫度值給上位機bitqidong=0; //接收到啟動后才發(fā)送數(shù)據(jù)bitsheding_flag=0; //發(fā)送溫度設(shè)定值給上位機標(biāo)志unsignedcharshiwen=0; //計算室溫變量unsignedintcodeK_Table[131]={0,397,798,1203,1611,2022,2436,2850,3266,3681,4095,4508,4919,5327,5733,6137,6539,6939,7338,7737,8137,8537,8938,9341,9745,10151,10560,10969,11381,11793,12207,12623,13039,13456,13874,14292,14712,15132,15552,15974,16395,16818,17241,17664,18088,18513,18938,19363,19788,20214,20640,21066,21493,21919,22346,22772,23198,23624,24050,24476,24902,25327,25751,26176,26599,27022,27445,27867,28288,28709,29128,29547,29965,30383,30799,31214,31629,32042,32455,32866,33277,33686,34095,34502,34909,35314,35718,36121,36524,36925,37325,37724,38122,38519,38915,39310,39703,40096,40488,40897,41296,41657,42045,42432,42817,43202,43585,43968,44349,44729,45108,45486,45763,46238,46612,46985,47356,47726,48095,48462,48828,49192,49555,49916,50276,50633,50990,51344,51697,52049,52398}; //K分度表0-1300度,10度一值/*文件結(jié)尾*//*系統(tǒng)主模塊:主要是PID控制及溫度采集*/#include<ADUC812.H>#include<INTRINS.H>#include<stdio.h>#define CTH0 0xfa//定時器0裝載值#define CTL0 0x00#define CTH1 0xb7//定時器1裝載值20ms定時器#define CTL1 0xffsbitCONIO=P3^7; //加熱開關(guān)控制,0有效sbitled_gao=P2^3; //溫度高報警燈sbitled_di=P2^4; //低溫度報警燈externbitadcg_flag; //實時溫度采集標(biāo)志externbitadcd_flag; //室溫計算標(biāo)志externbit pid_flag; //PID計算標(biāo)志?externcharshiwen; //計算室溫變?externcharchushi; //計算高端校正值externbitdisplay; //顯示刷新標(biāo)志externbittran; //通信標(biāo)志externbitqidong; //接收到啟動后才發(fā)送數(shù)?externbitsheding_flag; //發(fā)送溫度設(shè)定值給上位機標(biāo)externbitsave_flag; //數(shù)據(jù)修改標(biāo)志,以保存數(shù)externunsignedintcanshu[10]; //10個參數(shù)變量存放區(qū)externunsignedcharV_mode; //模式鍵選擇,共有10個模externunsignedcharpid_value; //PID輸出值externunsignedcharpid_val_mid; //PID計算暫存值externunsignedintcodeK_Table[131];voidadcdi(void); //室溫采集模塊,2S采集一次voidadcgao(void); //實時溫度采集模塊voidpid(void); //PID調(diào)節(jié)函數(shù)voidTongxun(void); //數(shù)據(jù)通信函數(shù),與上位機,主要是發(fā)送數(shù)據(jù)給上位機voidR_command(void); //接收命令模塊,voidtimer1(void); //20MS定時器,用于控制,精確計算時間externvoidBuffer(void);externvoidRead(void);externvoidWrite(unsignedcharpage,unsignedintdat);externvoiddelay(unsignedchara);/*室溫的溫度計算2S計算一次平均濾波,除去最大值,最小值,再平均,計算比較準(zhǔn)確,也可抗干擾*/voidadcdi(void){unsignedintda=0,sum=0,max,min;unsignedchari;floatj=0.00;sum=0;for(i=0;i<10;i++){ADCCON2=1; //通道選擇 SCONV=1; //啟動AD while(ADCCON3>=128); //檢測AD轉(zhuǎn)換是否完成; da=ADCDATAH&0x0f; da=(da<<8)+ADCDATAL; //計算轉(zhuǎn)換代碼 sum=sum+da; if(i==0){max=da;min=da;} elseif(max<da)max=da; elseif(min>da)min=da; } j=sum-max-min;shiwen=j/8/45.8752;///////////計算室溫的溫度//shiwen=i/45.8752;//x/4096=V/2.5V/10K=T按公式計算}/*實時溫度計算模塊,也計算最近10溫度值,進(jìn)行濾波,方法同室溫計算方法*/voidadcgao(void){unsignedintda=0,sum=0,max,min,mid;unsignedchari;staticunsignedintadc_data[10]={0};floatj=0.00,k=0.00;ADCCON2=0; //通道選擇 SCONV=1; //啟動AD while(ADCCON3>=128); //檢測AD轉(zhuǎn)換是否完成; da=ADCDATAH&0x0f; da=(da<<8)+ADCDATAL; //計算轉(zhuǎn)換代碼 if(da>4000&&adc_data[9]>4000)canshu[0]=8888;//斷偶指示 max=adc_data[1]; min=max;sum=0;for(i=1;i<10;i++){adc_data[i-1]=adc_data[i]; sum=sum+adc_data[i]; if(max<adc_data[i])max=adc_data[i]; if(min>adc_data[i])min=adc_data[i]; }adc_data[9]=da;sum=sum+da;if(max<da) max=da;if(min>da)min=da;j=sum-max-min;j=j/8;//計算濾波后的代 碼 有公式:X/4096=K*V/2.5/1000j=j/1.6384/canshu[4]; //計算電壓mV為單位 da=j*1000; //擴大1000倍進(jìn)行查表 max=130; min=0; while(1) //查表求出溫度值二分法查找 { mid=(max+min)/2; if(K_Table[mid]>da) max=mid; else min=mid; if((max-min)<=1) break; } if(max==min)da=min*10; else { //計算溫度值 j=(K_Table[max]-K_Table[min])/10;j=(da-K_Table[min])/j;da=j; da=10*min+da; }canshu[0]=da+chushi+shiwen; //計算實時溫度 }PID算法程序入口PID算法程序入口計算基本偏差ErrorError>50?計算積分項SunError,計算微分項dError根據(jù)公式計算輸出值輸入值>100時,pidvalmid=100輸出值<0時,pidvalmid=0其他值時,直接賦予pidvalmid返回Error<—50?PID計算暫存值pidvalmid=100PID計算暫存值pidvalmid=0/*根據(jù)設(shè)定及采集值進(jìn)行計算PID調(diào)節(jié),計算出PID——VAL——MID的值*/voidpid(void){staticintSumError=0,LastError=0; //整數(shù)計算準(zhǔn)確,最后再同時縮小100倍intdError=0,Error=0;doublej=0.0,i;Error=canshu[3]-canshu[0]; //設(shè)定值--實時值_ if(Error>50){pid_val_mid=100;return;} //溫差在50度以上,直接輸出全值,即全速加溫,不進(jìn)行PID計算 elseif(Error+50<0){pid_val_mid=0;return;} SumError+=Error; //積分項 dError=Error-LastError; //微分項LastError=Error;//j=canshu[5]*Error+canshu[6]*SumError+canshu[7]*dError; //計算輸出值,公式,以下分項計算再相加,比較準(zhǔn)確 i=canshu[5]; j=Error*i; i=canshu[6]; j=j+SumError*i; i=canshu[7]; j=j+dError*i;if(j>0)j=j/100; //如果計算出的值為負(fù),不進(jìn)行輸出if(j>100)pid_val_mid=100; //加熱控制最大為100elseif(j<0)pid_val_mid=0;elsepid_val_mid=j;}/*1s鐘傳輸一次溫度?先傳輸設(shè)定溫度值,后傳送實時溫度值*/voidTongxun(void){unsignedchari; SBUF=0xaa;;;; //起始標(biāo)志 while(TI==0); if(sheding_flag==1) //可以進(jìn)行溫度值,設(shè)定值傳輸 i=canshu[3]&0x00ff; else i=canshu[0]&0x00ff; SBUF=i;;;; while(TI==0); //等待發(fā)送完畢 if(sheding_flag==1) i=(canshu[3]>>8)&0x00ff; elsei=(canshu[0]>>8)&0x00ff; SBUF=i;;;; while(TI==0) if(sheding_flag==1){sheding_flag=0;qidong=1;} //qidong為1時允許實時溫度值通信}/*中斷接收命令*/voidR_command(void)interrupt4{unsignedchari,Command;unsignedintj=0; if(RI==1) { RI=0; i=SBUF; if(i==0xaa) { while(RI==0) ; RI=0; Command=SBUF; if(Command==1) //啟動傳輸溫度值 sheding_flag=1; //先發(fā)設(shè)定溫度值,后發(fā)溫度值 elseif(Command==2) //關(guān)閉通信 qidong=0; elseif(Command==3) //接收設(shè)定溫度值 { while(RI==0) ; RI=0; Command=SBUF; //先接收高字節(jié),再接收低字節(jié) j=Command; j=j<<8; while(RI==0) ; RI=0; Command=SBUF; j=j+Command; canshu[3]=j; Write(3,canshu[3]); } } } elseTI=0;}/*20ms定時器,考慮啟動的ON設(shè)置,控制加熱TR1=1ET1=1;;*/voidtimer1(void)interrupt3using2//20ms{staticunsignedcharcount0=0,count1=0,count2=0; TH1=CTH1; TL1=CTL1; count0++;count1++;count2++ if(count0==pid_value) //PID控制周期為2分鐘,CONIO=1; if(count0==48&&canshu[9]==0) //在PID輸出前,提前進(jìn)行PDI計算,在此設(shè)置標(biāo)志 {adcd_flag=1;pid_flag=1;} //自動控制 elseif(count0==48&&canshu[9]==1)//手動輸出{adcd_flag=1;pid_val_mid=canshu[8];} elseif(count0==100)//2S鐘控制加熱 {count0=0;pid_value=pid_val_mid; //輸出值符值 if(pid_value!=0)CONIO=0; //輸出為0時,不打開控制口 }if(count2==5) //0.1s進(jìn)行一次實時值采集,置標(biāo)志 {adcg_flag=1;count2=0;} if(count1==50) //1s顯示一次AD采樣值進(jìn)行一PID計算 {display=1;count1=0; //刷新采集值,在0模式時 tran=1; //1s傳輸一次數(shù)據(jù) if(canshu[0]>=canshu[1])led_gao=0; //高低報警 elseled_gao=1; if(canshu[0]<=canshu[2])led_di=0; elseled_di=1; }}/*主程序初始化各寄存器,定時器,開中斷*/main(){unsignedchari=10;TMOD=0x11;SCON=0x52;TH0=CTH0;TL0=CTL0;TH1=CTH1;TL1=CTL1;ET0=1; //定時器1啟動TR0=1;T2CON=0x30; //定時器2作波特率發(fā)生器PCON=0x80; RCAP2H=0xff;RCAP2L=0xdc; //9600波特率ET2=1; //定時器啟動TR2=1;ES=1;EA=1;Read();ADCCON1=0x64;adcdi(); //室溫while(i){adcgao(); //高度溫度計算i--;}pid(); //先進(jìn)行PID計算,即初始啟動pid_value=pid_val_mid;Buffer();TR1=1; //啟動PID控制,定時器1ET1=1;if(pid_value!=0)CONIO=0;elseCONIO=1;tran=1;while(1){if(display==1)Buffer(); //刷新數(shù)據(jù) if(sheding_flag==1)Tongxun(); //與上位機通信,發(fā)送設(shè)定溫度值給上位機 if(tran==1&&qidong==1){Tongxun();tran=0;} //發(fā)送實時溫度值給上位機,1S一次 if(adcg_flag==1){adcgao();adcg_flag=0;} //實時溫度計算,根據(jù)標(biāo)志操作 if(adcd_flag==1){adcdi();adcd_flag=0;} //室溫計算 if(pid_flag==1) {i=10; while(i){adcgao();i--;} //準(zhǔn)確計算,以保證PID準(zhǔn)確調(diào)節(jié) pid();pid_flag=0;} if(V_mode!=0&&save_flag==1) //保存參數(shù),根據(jù)標(biāo)志{if(V_mode!=10)Write(V_mode,canshu[V_mode]);elseWrite(10,chushi);delay(255);save_flag=0;}}}/*文件結(jié)尾*//*按鍵、顯示文件:主要包括按鍵處理及定時刷新數(shù)據(jù)*/#include<ADUC812.H>#include<stdio.h>#define CTH0 0xfa//定時器0裝載值#define CTL0 0x00sbitmode=P2^1;//模式鍵sbitadd=P2^0; //參數(shù)改變時的加鍵sbitsub=P2^2; //參數(shù)改變時的減鍵externbitsave_flag;//數(shù)據(jù)保存標(biāo)志externbitkuaisu;//按鍵快速處理標(biāo)志externbitdisplay; //刷新顯示標(biāo)志externunsignedchardatadisp_buf[8]; //顯示緩沖區(qū)externunsignedcharcodeduan_table[]; //段碼externunsignedcharV_mode;//模式變量externunsignedintcanshu[10]; //模式參數(shù)值externcharchushi; //有符號,所以特別處理voidkey_chuli(void); //按鍵處理函數(shù)voidBuffer(void); //刷新函數(shù)voidtimer0(void); //用于鍵盤掃描及段碼顯示voidWrite(unsignedcharpage,unsignedintdat); //存儲器寫參數(shù)函數(shù)voidRead(void); //讀存儲器參數(shù)函數(shù)voiddelay(unsignedchara); //延時函數(shù)/*按鍵處理程序*/voidkey_chuli(void){if(mode==0) //模式鍵處理{V_mode++; if(V_mode==11)V_mode=0;}elseif(add==0&&V_mode!=0) //加處理{if(V_mode==9){canshu[9]+=1;canshu[9]=canshu[9]&0x01;}//模式9:手動/自動控制,開關(guān)控制,單獨處理 if(kuaisu==1&&V_mode<=8)canshu[V_mode]+=10; //快速處理elseif(kuaisu==1&&V_mode==10)chushi+=10; //初始調(diào)零值可正可負(fù),所以單獨處理 elseif(V_mode==10)chushi+=1; elseif(V_mode<=8)canshu[V_mode]++; if(canshu[V_mode]>1200&&V_mode<4)canshu[V_mode]=0; //范圍限制 elseif(canshu[V_mode]>5000&&V_mode<=7)canshu[V_mode]=0; elseif(canshu[V_mode]>100&&V_mode==8)canshu[V_mode]=0; save_flag=1; //參數(shù)修改需進(jìn)行修改 }elseif(sub==0&&V_mode!=0) //減處理{if(V_mode==9&&canshu[9]==0)canshu[9]=1; //模式9單獨處理 elseif(V_mode==9&&canshu[9]==1)canshu[9]=0; if(canshu[V_mode]==0&&V_mode<4)canshu[V_mode]=1200; //范圍限制elseif(canshu[V_mode]==0&&V_mode<=7)canshu[V_mode]=5000; elseif(canshu[V_mode]==0&&V_mode==8)canshu[V_mode]=100; if(kuaisu==1&&V_mode<=8) //快速處理 {if(canshu[V_mode]>10)canshu[V_mode]-=10; elsecanshu[V_mode]=0;} elseif(kuaisu==1&&V_mode==10)chushi-=10; elseif(V_mode==10)chushi-=1; elseif(V_mode<=8)canshu[V_mode]--; save_flag=1; //參數(shù)修改需進(jìn)行修? }}//voidBuffer(void){unsignedintx;if(V_mode==0){x=canshu[3];disp_buf[0]=x/1000; disp_buf[1]=x/100%10;disp_buf[2]=x/10%10; disp_buf[3]=x%10;x=canshu[0];disp_buf[4]=x/1000; disp_buf[5]=x/100%10;disp_buf[6]=x/10%10; disp_buf[7]=x%10;}elseif(V_mode==10) //有正負(fù)之分{disp_buf[0]=10; disp_buf[1]=10;disp_buf[2]=1; disp_buf[3]=0;if(chushi<0){disp_buf[4]=11;x=0-chushi;}else{disp_buf[4]=0;x=chushi;} disp_buf[5]=x/100%10;disp_buf[6]=x/10%10; disp_buf[7]=x%10;}else{disp_buf[0]

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論