版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于單片機(jī)的PID溫度控制畢業(yè)設(shè)計(jì)(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)
前言基于單片機(jī)的PID溫度控制畢業(yè)設(shè)計(jì)(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)溫度是表征物體冷熱程度的物理量。在很多生產(chǎn)過(guò)程中,特別是在冶金、化工、建材、食品、機(jī)械、石油等工業(yè)中,溫度的測(cè)量和控制都直接和安全生產(chǎn)、提高生產(chǎn)效率、保證產(chǎn)品質(zhì)量、節(jié)約能源等重大技術(shù)經(jīng)濟(jì)指標(biāo)相聯(lián)系.因此,溫度的測(cè)量與控制在國(guó)民經(jīng)濟(jì)各個(gè)領(lǐng)域中均受到了相當(dāng)程度的重視。單片機(jī)系統(tǒng)的開(kāi)發(fā)應(yīng)用給現(xiàn)代工業(yè)測(cè)控領(lǐng)域帶來(lái)了一次新的技術(shù)革命,自動(dòng)化、智能化均離不開(kāi)單片機(jī)的應(yīng)用.將單片機(jī)控制方法運(yùn)用到溫度控制系統(tǒng)中,可以克服溫度控制系統(tǒng)中存在的嚴(yán)重滯后現(xiàn)象,同時(shí)在提高采樣頻率的基礎(chǔ)上可以很大程度的提高控制效果和控制精度.現(xiàn)代自動(dòng)控制越來(lái)越朝著智能化發(fā)展,在很多自動(dòng)控制系統(tǒng)中都用到了工控機(jī),小型機(jī)、甚至是巨型機(jī)處理機(jī)等,當(dāng)然這些處理機(jī)有一個(gè)很大的特點(diǎn),那就是很高的運(yùn)行速度,很大的內(nèi)存,大量的數(shù)據(jù)存儲(chǔ)器.但隨之而來(lái)的是巨額的成本。在很多的小型系統(tǒng)中,處理機(jī)的成本占了系統(tǒng)成本的比例高達(dá)20%,而對(duì)于這些小型的系統(tǒng)來(lái)說(shuō),配置一個(gè)如此高速的處理機(jī)沒(méi)有任何必要,因?yàn)檫@些小系統(tǒng)追求經(jīng)濟(jì)效益,而不是最在乎系統(tǒng)的快速性,所以用成本低廉的單片機(jī)控制小型的,而又不是很復(fù)雜,不需要大量復(fù)雜運(yùn)算的系統(tǒng)中是非常適合的。隨著電子技術(shù)以及應(yīng)用需求的發(fā)展,單片機(jī)技術(shù)得到了迅速的發(fā)展,在高集成度,高速度,低功耗以及高性能方面取得了很大的進(jìn)展。現(xiàn)在完全可以運(yùn)用單片機(jī)和電子溫度傳感器對(duì)某處進(jìn)行溫度檢測(cè),而且可以很容易地做到多點(diǎn)的溫度檢測(cè),如果對(duì)此原理圖稍加改進(jìn),還可以進(jìn)行不同地點(diǎn)的實(shí)時(shí)溫度檢測(cè)和控制。1緒論1.1研究的目的和意義溫度是工業(yè)生產(chǎn)中主要被控參數(shù)之一,溫度控制自然是生產(chǎn)的重要控制過(guò)程。工業(yè)生產(chǎn)中溫度很難控制,對(duì)于要求嚴(yán)格的的場(chǎng)合,溫度過(guò)高或過(guò)低將嚴(yán)重影響工業(yè)生產(chǎn)的產(chǎn)質(zhì)量及生產(chǎn)效率,降低生產(chǎn)效益。這就需要設(shè)計(jì)一個(gè)良好溫度控制器,隨時(shí)向用戶顯示溫度,而且能夠較好控制。單片機(jī)具有和普通計(jì)算機(jī)類(lèi)似的強(qiáng)大數(shù)據(jù)處理能力,結(jié)合PID,程序控制可大大提高控制效力,提高生產(chǎn)效益[9].例如鋼鐵生產(chǎn)過(guò)程中,按照工藝條件的規(guī)定保持一定的溫度才能保證產(chǎn)品質(zhì)量和設(shè)備的安全。對(duì)電氣設(shè)備進(jìn)行溫度的監(jiān)控,例如高壓開(kāi)關(guān)、變壓器的出線套管等,判斷可能存在的熱缺陷,進(jìn)而能及時(shí)發(fā)現(xiàn)、處理、預(yù)防重大事故的發(fā)生。因此研究溫度控制儀具有重要的意義[10].在單片機(jī)溫度測(cè)量系統(tǒng)中的關(guān)鍵是測(cè)量溫度、控制溫度和保持溫度,溫度測(cè)量是工業(yè)對(duì)象中主要的被控參數(shù)之一。因此,單片機(jī)溫度測(cè)量則是對(duì)溫度進(jìn)行有效的測(cè)量,并且能夠在工業(yè)生產(chǎn)中得到了廣泛的應(yīng)用,尤其在電力工程、化工生產(chǎn)、機(jī)械制造、冶金工業(yè)等重要工業(yè)領(lǐng)域中,擔(dān)負(fù)著重要的測(cè)量任務(wù).在日常生活中,也可廣泛實(shí)用于地?zé)帷⒖照{(diào)器、電加熱器等各種家庭室溫測(cè)量及工業(yè)設(shè)備溫度測(cè)量場(chǎng)合[16]。目前市場(chǎng)上熱水器的控制系統(tǒng)大多存在功能單一、操作復(fù)雜、控制不方便等問(wèn)題,很多控制器只具有溫度和水位顯示功能,不具有溫度控制功能.即使熱水器具有輔助加熱功能。也可能由于加熱時(shí)間不能控制而產(chǎn)生過(guò)燒,從而浪費(fèi)電能。本文設(shè)計(jì)的熱水器控制系統(tǒng)以51單片機(jī)為檢測(cè)控制中心單元,具有溫度設(shè)定與控制功能。該控制器和以往顯示儀相比具有性價(jià)比高、溫度控制與顯示精度高、使用方便和性能穩(wěn)定等優(yōu)點(diǎn),提高了電能的使用效率,具有可觀的經(jīng)濟(jì)效益和社會(huì)效益[18].1.2國(guó)內(nèi)外發(fā)展?fàn)顩r溫度控制采用單片機(jī)設(shè)計(jì)的全數(shù)字儀表,是常規(guī)儀表的升級(jí)產(chǎn)品。溫度控制的發(fā)展引入單片機(jī)之后,有可能降低對(duì)某些硬件電路的要求,但這絕不是說(shuō)可以忽略測(cè)試電路本身的重要性,尤其是直接獲取被測(cè)信號(hào)的傳感器部分,仍應(yīng)給予充分的重視,有時(shí)提高整臺(tái)儀器的性能的關(guān)鍵仍然在于測(cè)試電路,尤其是傳感器的改進(jìn)?,F(xiàn)在傳感器也正在受著微電子技術(shù)的影響,不斷發(fā)展變化。傳感器正朝著小型、固態(tài)、多功能和集成化的方向發(fā)展。近年來(lái),溫度控制的發(fā)展尤為迅速。國(guó)內(nèi)外市場(chǎng)上已經(jīng)出現(xiàn)了多種多樣溫度控制儀表,應(yīng)用于社會(huì)的各個(gè)方面。例如能夠進(jìn)行程序控溫的智能多段溫度控制儀,能夠?qū)崿F(xiàn)數(shù)字PID和各種復(fù)雜控制規(guī)律的智能式溫度調(diào)節(jié)器等[11].水溫系統(tǒng)的傳遞函數(shù)事先難以精確獲得,因而很難判斷哪一種控制方法能夠滿足系統(tǒng)對(duì)控制品質(zhì)的要求。但從對(duì)控制方法的分析來(lái)看,PID控制方法最適合本例采用。另一方面,由于可以采用單片機(jī)實(shí)現(xiàn)控制過(guò)程,無(wú)論采用上述哪一種控制方法都不會(huì)增加系統(tǒng)硬件成本,而只需對(duì)軟件作相應(yīng)改變即可實(shí)現(xiàn)不同的控制方案。因此本系統(tǒng)可以采用PID的控制方式,以最大限度地滿足系統(tǒng)對(duì)諸如控制精度、調(diào)節(jié)時(shí)間和超調(diào)量等控制品質(zhì)的要求[7]。傳統(tǒng)的一位式模擬控制方案,選用模擬電路,用電位器設(shè)定值,反饋的溫度值和設(shè)定值比較后,決定加熱或不加熱。其特點(diǎn)是電路簡(jiǎn)單,易于實(shí)現(xiàn),但是系統(tǒng)所得結(jié)果的精度不高并且調(diào)節(jié)動(dòng)作頻繁,系統(tǒng)靜態(tài)差大、不穩(wěn)定。系統(tǒng)受環(huán)境影響大,不能實(shí)現(xiàn)復(fù)雜的控制算法,不能用數(shù)碼管顯示,不能用鍵盤(pán)設(shè)定[13]。傳統(tǒng)的二位式模擬控制方案,其基本思想與方案一相同,但由于采用上下限比較電路,所以控制精度有所提高。這種方法還是模擬控制方式,因此也不能實(shí)現(xiàn)復(fù)雜的控制算法使控制精度做得較高,而且不能用數(shù)碼管顯示,對(duì)鍵盤(pán)進(jìn)行設(shè)定[13]。現(xiàn)在國(guó)內(nèi)外一般采用經(jīng)典的溫度控制系統(tǒng).采用模擬溫度傳感器對(duì)加熱杯的溫度進(jìn)行采樣,通過(guò)放大電路變換為0~5V的電壓信號(hào),經(jīng)過(guò)A/D轉(zhuǎn)換,保存在采樣值單元;利用鍵盤(pán)輸入設(shè)定溫度,經(jīng)溫度標(biāo)度轉(zhuǎn)換轉(zhuǎn)化成二進(jìn)制數(shù),保存在片內(nèi)設(shè)定值單元;然后調(diào)顯示子程序,多次顯示設(shè)定溫度和采樣溫度,再把采樣值與設(shè)定值進(jìn)行PID運(yùn)算得出控制量,用其去調(diào)節(jié)可控硅觸發(fā)端的通斷,實(shí)現(xiàn)對(duì)電阻絲加熱時(shí)間的控制,以此來(lái)調(diào)節(jié)水溫使其基本保持恒定[2]。采用單片機(jī)AT89C52設(shè)計(jì)溫度實(shí)時(shí)測(cè)量及控制系統(tǒng)。單片機(jī)AT89C52能夠根據(jù)溫度傳感器DS18B20所采集的溫度數(shù)據(jù)來(lái)控制加熱器或致冷器的啟停,從而把溫度控制在設(shè)定的范圍之內(nèi)。在溫控開(kāi)關(guān)被激活的情況下,當(dāng)溫度低于設(shè)定的下限時(shí),單片機(jī)啟動(dòng)加熱器加熱,同時(shí)點(diǎn)亮綠色發(fā)光二極管,當(dāng)溫度高于設(shè)定的上限時(shí),單片機(jī)啟動(dòng)致冷器降溫,同時(shí)點(diǎn)亮紅色發(fā)光二極管.所有溫度數(shù)據(jù)均通過(guò)液晶顯示器LCM1602顯示出來(lái).為了防止單片機(jī)掉電引起的數(shù)據(jù)丟失,溫度上下限的設(shè)定值存儲(chǔ)在AT24C02B中[8]。采用一線制數(shù)字溫度傳感器DS18B20來(lái)作為溫度傳感器。傳感器輸出信號(hào)進(jìn)4。7K的上拉電阻直接接到單片機(jī)的P1.0引腳上。DS18B20溫度傳感器是美國(guó)達(dá)拉斯(DALLAS)半導(dǎo)體公司推出的應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上。溫度傳感器之所以選擇單線數(shù)字器件DS18B20,是在經(jīng)過(guò)多方面比較和考慮后決定的[12]。從硬件和軟件兩方面來(lái)講述水溫自動(dòng)控制過(guò)程,在控制過(guò)程中主要應(yīng)用AT89C52、ADC0809、LED顯示器、LM324比較器,而主要是通過(guò)DS18B20數(shù)字溫度傳感器采集環(huán)境溫度,以單片機(jī)為核心控制部件,并通過(guò)四位數(shù)碼管顯示實(shí)時(shí)溫度的一種數(shù)字溫度計(jì)。軟件方面采用匯編語(yǔ)言來(lái)進(jìn)行程序設(shè)計(jì),使指令的執(zhí)行速度快,節(jié)省存儲(chǔ)空間。為了便于擴(kuò)展和更改,軟件的設(shè)計(jì)采用模塊化結(jié)構(gòu),使程序設(shè)計(jì)的邏輯關(guān)系更加簡(jiǎn)潔明了,使硬件在軟件的控制下協(xié)調(diào)運(yùn)作.而系統(tǒng)的過(guò)程則是:首先,通過(guò)設(shè)置按鍵,設(shè)定恒溫運(yùn)行時(shí)的溫度值,并且用數(shù)碼管顯示這個(gè)溫度值.然后,在運(yùn)行過(guò)程中將采樣的溫度模擬量送入A/D轉(zhuǎn)換器中進(jìn)行模擬—數(shù)字轉(zhuǎn)換,再將轉(zhuǎn)換后的數(shù)字量用數(shù)碼管進(jìn)行顯示,最后用單片機(jī)來(lái)控制加熱器,進(jìn)行加熱或停止加熱,直到能在規(guī)定的溫度下恒溫加熱[5].2系統(tǒng)總體設(shè)計(jì)2.1系統(tǒng)設(shè)計(jì)任務(wù)與要求該溫度自動(dòng)控制系統(tǒng)采用AT89C52單片機(jī)為主控芯片,傳感器采用數(shù)字溫度傳感器DS18B20,實(shí)現(xiàn)對(duì)溫度的檢測(cè)和控制。技術(shù)要求:1、能夠連續(xù)測(cè)量水的溫度值,用十進(jìn)制數(shù)碼管來(lái)顯示實(shí)際溫度,最小單位為1℃。2、能夠設(shè)定水的溫度值,設(shè)定范圍是30℃~90℃,溫度誤差≤±0。5℃.3、能夠?qū)崿F(xiàn)水溫的自動(dòng)控制,如果設(shè)定水溫為80℃,則能使水溫保持恒定在80℃的溫度下運(yùn)行.4、用單片機(jī)AT89C52控制,通過(guò)按鍵來(lái)控制水溫的設(shè)定值,數(shù)值采用數(shù)碼管顯示。該溫度自動(dòng)控制系統(tǒng)由溫度信號(hào)采樣電路,鍵盤(pán)及顯示電路,溫度控制電路,報(bào)警電路,時(shí)鐘信號(hào)電路等構(gòu)成,并運(yùn)用PID算法進(jìn)行溫度控制和調(diào)整.根據(jù)設(shè)計(jì)任務(wù),詳細(xì)分析溫度自動(dòng)控制系統(tǒng)的設(shè)計(jì)需求,并進(jìn)行軟硬件的總體設(shè)計(jì)。由鍵盤(pán)電路輸入設(shè)定溫度信號(hào)給單片機(jī),溫度信號(hào)采集電路采集現(xiàn)場(chǎng)溫度信號(hào)給單片機(jī),單片機(jī)根據(jù)輸入與反饋信號(hào)的偏差進(jìn)行PID計(jì)算,輸出反饋量給溫度控制電路,實(shí)現(xiàn)升溫。顯示電路實(shí)現(xiàn)現(xiàn)場(chǎng)溫度的實(shí)時(shí)監(jiān)控。設(shè)計(jì)人員需完成全部硬件和軟件的設(shè)計(jì),并利AltiumDesigner6.0仿真軟件對(duì)設(shè)計(jì)結(jié)果進(jìn)行驗(yàn)證。2。2系統(tǒng)方案的選擇在這個(gè)系統(tǒng)中我們從性能及設(shè)計(jì)成本考慮,我們選擇AT89C52芯片.AT89C52的廣泛使用,使單片機(jī)的價(jià)格大大下降.在溫度傳感器的選擇上我們采用溫度芯片DS18B20測(cè)量溫度。該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,且此元件線形較好。該芯片直接向單片機(jī)傳輸數(shù)字信號(hào),便于單片機(jī)處理及控制。本制作的最大特點(diǎn)之一就是直接采用溫度芯片對(duì)溫度進(jìn)行測(cè)量,使數(shù)據(jù)傳輸和處理簡(jiǎn)單化.采用溫度芯片DS18B20測(cè)量溫度,體現(xiàn)了作品芯片化的這個(gè)趨勢(shì).部分功能電路的集成,使總體電路更簡(jiǎn)潔,搭建電路和焊接電路時(shí)更快。而且,集成塊的使用,有效地避免外界的干擾,提高測(cè)量電路的精確度。在這個(gè)過(guò)程中,我們通過(guò)單片機(jī)將傳感器所測(cè)量出來(lái)的溫度通過(guò)LCD1602可以顯示出來(lái)。這樣就能實(shí)時(shí)顯示溫度情況。本設(shè)計(jì)采用了PID控制。在工程實(shí)際中,PID控制器以其結(jié)構(gòu)簡(jiǎn)單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一.當(dāng)被控對(duì)象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的數(shù)學(xué)模型,控制理論的其他技術(shù)也難以采用,系統(tǒng)控制器的結(jié)構(gòu)和參須依靠經(jīng)驗(yàn)和現(xiàn)場(chǎng)調(diào)試來(lái)確定時(shí),應(yīng)用PID控制技術(shù)最為方便。
PID控制器的參數(shù)整定是控制系統(tǒng)設(shè)計(jì)的核心內(nèi)容。它是根據(jù)被控過(guò)程的特性確定PID控制器的比例系數(shù)、積分時(shí)問(wèn)和微分時(shí)間的大小。PID控制器參數(shù)整定的方法概括起來(lái)有兩大類(lèi):一是理論計(jì)算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過(guò)理論計(jì)算確定控制器參數(shù)。這種方法所得到的計(jì)算數(shù)據(jù)未必可以直接用,還必須通過(guò)工程實(shí)際進(jìn)行調(diào)整和修改。二是工程整定方法,它主要依賴工程經(jīng)驗(yàn),直接且方法簡(jiǎn)單、易于掌握,在實(shí)際中被廣泛應(yīng)用。3器件和模塊的選用3。1AT89C52單片機(jī)AT89C52是一種低功耗、高性能8位微控制器,具有8K在系可編程Flash存儲(chǔ)器。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使AT89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、有效的解決方案.AT89C52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門(mén)狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。其主要工作特性為:1、內(nèi)含8KB的Flash存儲(chǔ)器,擦寫(xiě)次數(shù)達(dá)1000次;2、內(nèi)含128字節(jié)的RAM;3、具有32根可編程I/O線;4、具有2個(gè)16位可編程定時(shí)器;5、具有6個(gè)中斷源、5個(gè)中斷矢量、2級(jí)優(yōu)先權(quán)的中斷結(jié)構(gòu);6、具有1個(gè)全雙工的可編程串行通信接口;7、具有1個(gè)數(shù)據(jù)指針DPTR;8、兩種低功耗工作模式,即空閑模式和掉電模式;9、具有可編程的3級(jí)程序鎖定位;10、工作電源電壓為5±1.2V,典型值為5V;11、最高工作頻率為24MHz。引腳排列如圖3.1所示。圖3.1AT89C52引腳排列3。2DS18B20傳感器DS18B20原理與特性:采用了DS18B20單總線可編程溫度傳感器,來(lái)實(shí)現(xiàn)對(duì)溫度的采集和轉(zhuǎn)換,大大簡(jiǎn)化了電路的復(fù)雜度,以及算法的要求.首先來(lái)介紹一下DS18B20這塊傳感器的特性及其功能:DSl8B20的管腳及特點(diǎn)DS18B20可編程溫度傳感器有3個(gè)管腳。內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器.DS18B20的外形及管腳排列如圖3.2所示.GND為接地線,DQ為數(shù)據(jù)輸入輸出接口,通過(guò)一個(gè)較弱的上拉電阻與單片機(jī)相連.VDD為電源接口,既可由數(shù)據(jù)線提供電源,又可由外部提供電源,范圍3。0~5.5V。本文使用外部電源供電.主要特點(diǎn)有:1。用戶可自設(shè)定報(bào)警上下限溫度值。不需要外部組件,能測(cè)量-55~+125℃范圍內(nèi)的溫度。-10℃~+85℃范圍內(nèi)的測(cè)溫準(zhǔn)確度為±0。5℃. 圖3。2DS18B20的外形及管腳圖通過(guò)編程可實(shí)現(xiàn)9~l2位的數(shù)字讀數(shù)方式,可在至多750ms內(nèi)將溫度轉(zhuǎn)換成12位的數(shù)字,測(cè)溫分辨率可達(dá)0.0625℃。獨(dú)特的單總線接口方式,與微處理器連接時(shí)僅需要一條線即可實(shí)現(xiàn)與微處理器雙向通訊。測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以“一線總線"串行傳送給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作.DS18B20支持多點(diǎn)組網(wǎng)的功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫。DS18B20內(nèi)部功能模塊如圖3.3所示,圖3.3DS18B20原理圖DS18B20的讀寫(xiě)時(shí)序和測(cè)溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同DS18B20為9位~12位A/D轉(zhuǎn)換精度,而DS1820為9位A/D轉(zhuǎn)換,雖然我們采用了高精度的芯片,但在實(shí)際情況上由于技術(shù)問(wèn)題比較難實(shí)現(xiàn),而實(shí)際精度此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線性,其輸出用于修正計(jì)數(shù)器1的預(yù)置值.如下3.4的測(cè)溫原理圖不同,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s減為750ms。DS18B20測(cè)溫原理如圖3。4所示。圖3.4DS18B20的測(cè)溫原理框圖圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1.則高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的脈沖輸入.計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值時(shí)。計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生脈沖信號(hào),進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值。在DS18B20測(cè)溫程序設(shè)計(jì)中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序要等待DS18B20的返回信號(hào),一旦某個(gè)DS18B20接觸不好或斷線,當(dāng)程序讀該DS18B20時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS1820硬件連接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。測(cè)溫電纜線采用屏蔽4芯雙絞線,其中有一對(duì)接地線與信號(hào)線,另一組接VCC和地線。3.3復(fù)位和時(shí)鐘電路的設(shè)計(jì)本系統(tǒng)中采用手動(dòng)復(fù)位鍵復(fù)位相的方式。系統(tǒng)時(shí)鐘電路設(shè)計(jì)采用內(nèi)部方式.AT89C52內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器。這個(gè)放大器與作為反饋元件的片外晶體諧振器構(gòu)成一個(gè)自激振蕩器.外接晶體諧振器以及電容構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中.本系統(tǒng)電路采用的晶體振蕩器頻率為11。0592MHz。采用這種頻率的晶體振蕩器的原因是可以方便的獲得標(biāo)準(zhǔn)的波特率。復(fù)位電路和時(shí)鐘電路如圖3.5所示.復(fù)位電路有上電自動(dòng)復(fù)位和按鈕手動(dòng)復(fù)位兩種。上電復(fù)位是利用電容充電來(lái)實(shí)現(xiàn)的,上電瞬間RST/VPD端的電位與VCC相同,隨著充電電流的減少,RST/VPD的電位逐漸下降,圖3.5中的10K的電阻是施密特觸發(fā)器輸入端的一個(gè)下拉電阻,時(shí)間常數(shù)為10*10-6*10*103s=100ms,只要Vcc的上升時(shí)間不超過(guò)1ms,振蕩器建立時(shí)間不超過(guò)10ms,這個(gè)時(shí)間常數(shù)足以保證完成復(fù)位操作[6]。上電復(fù)位所需最短時(shí)間是震蕩周期建立時(shí)間加上2個(gè)機(jī)器周期時(shí)間.按鈕復(fù)位采用電平復(fù)位方式,按下復(fù)位電鈕時(shí),電源對(duì)外接電容充電,使RST/VPD端為高電平,復(fù)位按鈕松開(kāi)后,電容通過(guò)內(nèi)部下拉電阻放電,逐漸使RST/VPD端恢復(fù)低電平。圖3。5復(fù)位電路和時(shí)鐘電路3.4溫度采集電路數(shù)據(jù)采集電路如圖3。6所示,1腳接地,2腳即為單總線數(shù)據(jù)口,3腳接電源.溫度傳感器DS18B20采集被控對(duì)象的實(shí)時(shí)溫度,提供給AT89C52的P3。5口作為數(shù)據(jù)輸入。圖3.6數(shù)據(jù)采集電路3。5顯示電路的設(shè)計(jì)數(shù)碼管顯示部分,采用與單片機(jī)相連接,將溫度傳感器采集到的信息迅速轉(zhuǎn)化為可視溫度,增加了可讀性。圖3.7數(shù)碼管顯示電路圖3。6供電系統(tǒng)供電部分采用TL431構(gòu)成的恒壓源,TL431是一個(gè)有良好的熱穩(wěn)定性能的三端可調(diào)分流基準(zhǔn)源。他的輸出電壓用兩個(gè)電阻就可以任意的設(shè)置到從Verf(2。5V)到36V范圍內(nèi)的任何值。該器件的典型動(dòng)態(tài)阻抗為0.2Ω.其穩(wěn)壓電路圖如圖3.8:圖3。8供電電路4PID控制和參數(shù)整定4。1P(pán)ID調(diào)節(jié)器控制原理PID控制器是一種線性控制器,一種它根據(jù)給定值rin(t)與實(shí)際輸出值yout(t)構(gòu)成控制偏差:Error(t)=rin(t)-yout(t)PID控制就是對(duì)偏差信號(hào)進(jìn)行比例、積分、微分運(yùn)算后,形成一種控制規(guī)律。即,控制器的輸出為:SKIPIF1<0(4.1)或?qū)懗蓚鬟f函數(shù)的形式:SKIPIF1〈0(4.2)式中,kp—-比例系數(shù);Ti-—積分時(shí)間常數(shù);Td——微分時(shí)間常數(shù)。簡(jiǎn)單說(shuō)來(lái),PID控制器各校正環(huán)節(jié)的作用如下:比例環(huán)節(jié):成比例地反映控制系統(tǒng)的偏差信號(hào)error(t),偏差一旦產(chǎn)生,控制器立即產(chǎn)生控制作用,以減小偏差[10]。比例控制:Gc(s)=Kp積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無(wú)差度。積分作用的強(qiáng)盡弱取決于積分時(shí)間常數(shù)Ti,Ti越大,積分作用越弱,反之則越強(qiáng)。積分控制:Gc(s)=Kp/Tis微分環(huán)節(jié):反偏差信號(hào)的變化趨勢(shì)(變化速率),并能在偏差信號(hào)變得太大之前,在系統(tǒng)中引入一個(gè)有效的早期修正信號(hào),從而加快系統(tǒng)的動(dòng)作速度,減少調(diào)節(jié)時(shí)間。微分控制:Gc(s)=KpTds4。2PID控制的分類(lèi)基本PID控制器的理想算式為(4.3)式中u(t)——控制器(也稱調(diào)節(jié)器)的輸出;e(t)——控制器的輸入(常常是設(shè)定值與被控量之差,即e(t)=r(t)—c(t));Kp--控制器的比例放大系數(shù);Ti-—控制器的積分時(shí)間;Td——控制器的微分時(shí)間。設(shè)u(k)為第k次采樣時(shí)刻控制器的輸出值,可得離散的PID算式(4.4),由于計(jì)算機(jī)的輸出u(k)直接控制執(zhí)行機(jī)構(gòu)(如閥門(mén)),u(k)的值與執(zhí)行機(jī)構(gòu)的位置(如閥門(mén)開(kāi)度)一一對(duì)應(yīng),所以稱式(2)為位置式PID控制算法。位置式PID控制算法的缺點(diǎn):當(dāng)前采樣時(shí)刻的輸出與過(guò)去的各個(gè)狀態(tài)有關(guān),計(jì)算時(shí)要對(duì)e(k)進(jìn)行累加,運(yùn)算量大;而且控制器的輸出u(k)對(duì)應(yīng)的是執(zhí)行機(jī)構(gòu)的實(shí)際位置,如果計(jì)算機(jī)出現(xiàn)故障,u(k)的大幅度變化會(huì)引起執(zhí)行機(jī)構(gòu)位置的大幅度變化。增量式只需計(jì)算增量,算式中不需要累加,控制增量的確定僅與最近幾次偏差采樣值有關(guān),當(dāng)出現(xiàn)計(jì)算誤差或精度不足時(shí),對(duì)控制量計(jì)算的影響較小,且較容易通過(guò)加權(quán)處理獲得比較好的控制效果.4。3數(shù)字PID參數(shù)的整定PID控制器的參數(shù)整定是控制系統(tǒng)設(shè)計(jì)的核心內(nèi)容.它是根據(jù)被控過(guò)程的特性確定PID控制器的比例系數(shù)、積分時(shí)間和微分時(shí)間的大小。PID控制器參數(shù)整定的方法很多,概括起來(lái)有兩大類(lèi):一是理論計(jì)算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過(guò)理論計(jì)算確定控制器參數(shù).這種方法所得到的計(jì)算數(shù)據(jù)未必可以直接用,還必須通過(guò)工程實(shí)際進(jìn)行調(diào)整和修改。二是工程整定方法,它主要依賴工程經(jīng)驗(yàn),直接在控制系統(tǒng)的試驗(yàn)中進(jìn)行,且方法簡(jiǎn)單、易于掌握,在工程實(shí)際中被廣泛采用。本設(shè)計(jì)采用PID歸一整定法把對(duì)控制臺(tái)三個(gè)參數(shù)(Kc、Ti、Td,)轉(zhuǎn)換為一個(gè)參數(shù)KP,從而使問(wèn)題明顯簡(jiǎn)化。以達(dá)到控制器的特性與被控過(guò)程的特性相匹配,滿足某種反映控制系統(tǒng)質(zhì)量的性能指標(biāo)。4。4PID計(jì)算程序PID調(diào)節(jié)規(guī)律的基本輸入輸出關(guān)系可用微分方程表示為:SKIPIF1〈0(4。5)式中SKIPIF1〈0為調(diào)節(jié)器的輸入誤差信號(hào),且SKIPIF1<0(4.6)其中:SKIPIF1<0為給定值,SKIPIF1〈0為被控變量;SKIPIF1〈0為調(diào)節(jié)器的輸出控制信號(hào);SKIPIF1〈0為比例系數(shù);SKIPIF1〈0為積分時(shí)間常數(shù);SKIPIF1<0微分時(shí)間常數(shù)。計(jì)算機(jī)只能處理數(shù)字信號(hào),若采樣周期為T第n次采樣的輸入誤差為SKIPIF1<0,且SKIPIF1<0,輸出為SKIPIF1<0,PID算法用的微分SKIPIF1<0由差分SKIPIF1<0代替,積分SKIPIF1<0由SKIPIF1<0代替,于是得到SKIPIF1〈0(4.7)寫(xiě)成遞推形式為SKIPIF1<0△SKIPIF1<0=SKIPIF1<0=SKIPIF1<0=SKIPIF1<0SKIPIF1<0=SKIPIF1〈0(4.8)其中:SKIPIF1<0(4.9)SKIPIF1<0(4.10)SKIPIF1〈0(4。11)顯然,PID計(jì)算△un只需要保留現(xiàn)時(shí)刻en以及以前的兩個(gè)偏差量en-1和en—2。初始化程序初值en-1=en-2=0通過(guò)采樣并根據(jù)參數(shù)KP、KD、KI以及en、en-1和en-2計(jì)算△un。根據(jù)輸出控制增量△un,可求出本次控制輸出為SKIPIF1<0+△SKIPIF1<0=SKIPIF1〈0(4。12)下面對(duì)PID運(yùn)算加以說(shuō)明:所有的數(shù)都變成定點(diǎn)純小數(shù)進(jìn)行處理.算式中的各項(xiàng)有正有負(fù),以最高位作為符號(hào)位,最高位為0表示為正數(shù),為1表示負(fù)數(shù)。正負(fù)數(shù)都是補(bǔ)碼表示,最后的計(jì)算以原碼輸出。節(jié)16位進(jìn)行計(jì)算,最后將運(yùn)算結(jié)果取成高8位有效值輸出。輸出控制量un的限幅處理.為了便于實(shí)現(xiàn)對(duì)晶閘管的通斷處理,PID的輸出在0~250之間。大于250或小于0的控制量SKIPIF1<0都是沒(méi)有意義的,因在算法上對(duì)SKIPIF1〈0進(jìn)行限幅,即SKIPIF1〈0=SKIPIF1〈0(4。13)開(kāi)始開(kāi)始計(jì)算PD=K計(jì)算PD=KD(en--2en-1+en-2)輸入Cn5rn計(jì)算en=r計(jì)算en=rn--Cn計(jì)算un=un-1+PP+P1+PDunun-1unun-1,en-1en--2,enen-1P1=K1*en計(jì)算Pp=Kp(en計(jì)算Pp=Kp(en--en-1)un輸出限幅處理計(jì)算Pun輸出限幅處理計(jì)算P1+Pp返回返回圖4。1PID計(jì)算程序的流程圖PID的計(jì)算公式采用位置式算法,計(jì)算公式為SKIPIF1〈0+SKIPIF1<0=SKIPIF1〈0(4.14)5軟件設(shè)計(jì)系統(tǒng)的軟件主要由主程序模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、控制算法模塊等組成。主模塊的功能是為其余幾個(gè)模塊構(gòu)建整體框架及初始化工作;數(shù)據(jù)采集模塊的作用是將數(shù)字量采集并儲(chǔ)存到存儲(chǔ)器中;數(shù)據(jù)處理模塊是將采集到的數(shù)據(jù)進(jìn)行一系列的處理,其中最重要的是數(shù)字濾波程序:控制算法模塊完成控制系統(tǒng)的PID運(yùn)算并且輸出控制量.5.1主程序模塊主程序模塊要做的主要工作是上電后對(duì)系統(tǒng)初始化和構(gòu)建系統(tǒng)整體軟件框架,其中初始化包括對(duì)單片機(jī)的初始化、串口初始化等。然后等待溫度設(shè)定,若溫度已經(jīng)設(shè)定好了,判斷系統(tǒng)運(yùn)行鍵是否按下,若系統(tǒng)運(yùn)行,則依次調(diào)用各個(gè)相關(guān)模塊,循環(huán)控制直到系統(tǒng)停止運(yùn)行。設(shè)計(jì)模塊圖如下圖5。1所示。供電系統(tǒng)供電系統(tǒng)單片機(jī)單片機(jī)STC89C52數(shù)碼管顯示溫度溫度傳感器數(shù)碼管顯示溫度溫度傳感器按鍵設(shè)置按鍵設(shè)置蜂鳴器報(bào)警蜂鳴器報(bào)警圖5.1設(shè)計(jì)模塊圖主程序模塊的程序流程圖如圖5。2所示。YNYNNYNYNYNNYNY圖5.2主程序流程圖開(kāi)始讀溫度設(shè)定值等待數(shù)據(jù)采集溫度顯示PID運(yùn)算控制輸出系統(tǒng)初始化溫度設(shè)定否運(yùn)行/停止鍵按下否運(yùn)行/停止鍵按下否等待5.2數(shù)據(jù)采集和顯示模塊數(shù)據(jù)采集模塊的任務(wù)是負(fù)責(zé)溫度信號(hào)的采集以及將采集到的數(shù)字量提供給單片機(jī).AT89C52通過(guò)控制DS18B20讀取實(shí)時(shí)溫度,然后,通過(guò)P0口送到LCD1602進(jìn)行顯示。顯示程序設(shè)計(jì)框圖如圖5.3所示.測(cè)試顯示屏幕是否忙狀態(tài)返回開(kāi)始測(cè)試顯示屏幕是否忙狀態(tài)返回開(kāi)始清除屏幕N清除屏幕送顯示地址送顯示地址送顯示數(shù)據(jù)Y送顯示數(shù)據(jù)圖5.3顯示程序設(shè)計(jì)框圖6仿真與實(shí)物展示6.1AltiumDesigner6.0軟件簡(jiǎn)介2005年年底,Protel軟件的原廠商Altium公司推出了Protel系列的最新高端版本AltiumDesigner6.0.AltiumDesigner6。0,它是完全一體化電子產(chǎn)品開(kāi)發(fā)系統(tǒng)的一個(gè)新版本,也是業(yè)界第一款也是唯一一種完整的板級(jí)設(shè)計(jì)解決方案。AltiumDesigner是業(yè)界首例將設(shè)計(jì)流程、集成化PCB設(shè)計(jì)、可編程器件(如FPGA)設(shè)計(jì)和基于處理器設(shè)計(jì)的嵌入式軟件開(kāi)發(fā)功能整合在一起的產(chǎn)品,一種同時(shí)進(jìn)行PCB和FPGA設(shè)計(jì)以及嵌入式設(shè)計(jì)的解決方案,具有將設(shè)計(jì)方案從概念轉(zhuǎn)變?yōu)樽罱K成品所需的全部功能。6。2仿真通過(guò)對(duì)電路的硬件設(shè)計(jì)和程序設(shè)計(jì),我們使用了PROTEUS對(duì)設(shè)計(jì)的電路進(jìn)行仿真設(shè)計(jì)。首先,我們將硬件電路在PROTEUS中連接好,按照設(shè)計(jì)總電路圖連接各個(gè)硬件,通過(guò)單片機(jī)C語(yǔ)言來(lái)進(jìn)行編程,程序如附錄所示。通過(guò)KEIL軟件降我們的源程序轉(zhuǎn)換成目標(biāo)程序來(lái)進(jìn)行仿真,生成*.hex文件。最后從PROTEUS中,將我們的程序?qū)雴纹瑱C(jī)中,便能進(jìn)行實(shí)時(shí)仿真.PCB電路圖如圖6.1所示:圖6。1整體設(shè)計(jì)PCB圖通過(guò)PCB圖做出的實(shí)物圖如圖6.2所示:圖6。2實(shí)物圖致謝畢業(yè)設(shè)計(jì)已經(jīng)接近了尾聲,這也意味著我的大學(xué)生活就要結(jié)束了,學(xué)生活一晃而過(guò),回首走過(guò)的歲月,心中倍感充實(shí),當(dāng)我寫(xiě)完這篇畢業(yè)論文的時(shí)候,有一種如釋重負(fù)的感覺(jué),感慨良多。首先,我要特別感謝我的指導(dǎo)老師陳媛媛老師。做設(shè)計(jì)的過(guò)程是艱辛的,但是在我的努力之下還是完成了。在這個(gè)過(guò)程中陳媛媛老師給了我很大的的幫助,沒(méi)有她的盡心指導(dǎo)和嚴(yán)格的要求,我也不會(huì)順利完成這次設(shè)計(jì)。陳老師平日里工作繁多,但我做畢業(yè)設(shè)計(jì)的每個(gè)階段,從選題到查閱資料,論文提綱的確定,中期論文的修改,后期論文格式調(diào)整等各個(gè)環(huán)節(jié)中都給予了我悉心的指導(dǎo)。這幾個(gè)月以來(lái),陳老師不僅在學(xué)業(yè)上給我以精心指導(dǎo),同時(shí)還在思想給我以無(wú)微不至的關(guān)懷,在此謹(jǐn)向陳媛媛老師致以誠(chéng)摯的謝意和崇高的敬意。其次,還要感謝這四年來(lái)教我知識(shí)的美味老師們,畢業(yè)論文能夠順利完成,你們也都有很大的功勞。這次的畢業(yè)設(shè)計(jì),對(duì)于培養(yǎng)我們理論聯(lián)系實(shí)際的設(shè)計(jì)思想;訓(xùn)練綜合運(yùn)用有關(guān)課程的理論,結(jié)合生產(chǎn)實(shí)際反系和解決工程實(shí)際問(wèn)題的能力;鞏固、加深和擴(kuò)展有關(guān)方面的知識(shí)等方面有重要的作用。寫(xiě)作畢業(yè)論文是一次再系統(tǒng)學(xué)習(xí)的過(guò)程,畢業(yè)論文的完成,同樣也意味著新、生活的開(kāi)始.希望大家在將來(lái)的生活中繼續(xù)追逐最初的夢(mèng)想,永不放棄。在此,我還要特別感謝我的同學(xué)們,由于你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,你們對(duì)本課題做了不少工作,直至本文的順利完成,給予我不少的幫助,謝謝你們!參考文獻(xiàn)[1]陳妙芳,胡曉東.基于AT89C51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)[J]。機(jī)械工程師,2009,(01):151-152.[2]趙鴻圖。基于單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)機(jī)信息,2008,(26):96—98。[3]葉景?;趩纹瑱C(jī)的溫度控制系統(tǒng)的設(shè)計(jì)[J]。中國(guó)新通信,2009,(13):1-2.[4]紀(jì)綱。HD7279A鍵盤(pán)顯示驅(qū)動(dòng)芯片及應(yīng)用[J].儀表技術(shù),2001,(30):15-16。[5]羅云松。基于單片機(jī)AT89C51的溫度控制系統(tǒng)設(shè)計(jì)[J]。中國(guó)科技信息,2009(12):23—25。[6]楊萬(wàn)超.51單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)[J]。黑龍江科技信息,2009,(29):3-4。[7]張艷艷.基于PID算法和89C52單片機(jī)的溫度控制系統(tǒng)[J]。現(xiàn)代電子技術(shù),2009,(21):8—9.[8]胡朝.基于單片機(jī)的溫度控制系統(tǒng)的開(kāi)發(fā)應(yīng)用[J]。商場(chǎng)現(xiàn)代化,2010,(14):62-65.[9]張青。單片機(jī)溫度控制系統(tǒng)方案的研究[J]。上海交通大學(xué)學(xué)報(bào),2007,(41):4-7.[10]ZhouZ,VuceticB.DesignofadaptivemodulstionusingimpactCSIinMIMOsystems[J].ElesctronicsLctters,2004,40(17):73-74.[11]DaiL,ZhouSD,ZhangHR,etal,Closed-loopMIMOarchitecturebasedonwater-filling[J]。ElesctronicsLctters,2002,38(25):118—120.[12]NarulaA,LopczMJ,TroctMD,etal。Efficientuseofsideinformationinmultiplc—antennadatatransmissionoverfadingchannels[J].IEEEKat(yī)suhikoOgata.ModenControlEngineering。Publishinghouseofelectronicsindustry,2000:196—202.[13]趙娜?;?1單片機(jī)的溫度測(cè)量系統(tǒng)[J]。微計(jì)算機(jī)信息,2007,(16):146—148.[14]JangJ,LeeKB,Lee(cuò)YH,TransmitpowerandbitallocationsforOFDMsystemsinafadingchanncl[C]IEEEGLOHECOM,USA;IEEE,2003:858—862。[15]劉伯春。智能PID調(diào)節(jié)器的設(shè)計(jì)及應(yīng)用[J]。電子自動(dòng)化,1995,(3):20~25.[16]張佳賢.基于單片機(jī)的溫度控制器設(shè)計(jì)[J]??萍寂c生活,2010,(19):5~8.[17]歐亞軍.Proeus軟件在單片機(jī)實(shí)驗(yàn)中的應(yīng)用[J].科技信息,2006,(1):1—2。[18]葉劍超.單片機(jī)實(shí)驗(yàn)教學(xué)改進(jìn)芻議[J].臺(tái)州學(xué)院學(xué)報(bào),2006,(1):3—4.[19]李朝青。單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社.2006。[20]王忠飛,胥芳.MCS-51單片機(jī)原理及嵌入式系統(tǒng)應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007。附錄附錄1:?jiǎn)纹瑱C(jī)程序//*************************************************************************************//****************************李奇畢設(shè)**********************************************//Descriptoon://*采用89C52+DS1820+數(shù)碼管+蜂鳴器//*DS1820設(shè)置為12位精度//*環(huán)境溫度超過(guò)Alarm值蜂鳴器報(bào)警//*Alarm值可通過(guò)按鍵自由設(shè)定//? ? *該溫度可設(shè)定范圍1--100度,測(cè)量范圍-55--125度//**********************************************************************************//*************************可調(diào)溫度報(bào)警器********************************************#include<REG52。H〉#include<intrins.h〉#include<mat(yī)h.h>#defineucharunsignedcharunsignedcharcodedis_code[]={? 0xC0,/*0*/ ?? 0xF9,/*1*/ ? ??0xA4,/*2*/ ???? 0xB0,/*3*/? ? ?0x99,/*4*/ ? ? 0x92,/*5*/ ???0x82,/*6*/??? ?0xF8,/*7*/ ???? 0x80,/*8*/ ???0x90,/*9*/0xF7,/*負(fù)號(hào)*/0xB6,/*溫度設(shè)定狀態(tài)*/};uchardat(yī)adis_buf[8],i;uchardat(yī)adis_index;//數(shù)碼管顯示標(biāo)簽uchardis_digit=0xfe;//數(shù)碼管位選通控制端sbitSpk=P3^7;//驅(qū)動(dòng)蜂鳴器報(bào)警sbitKey_UP=P3^3;//上調(diào)溫度sbitKey_DOWN=P3^4;//下調(diào)溫度sbitKey_SET=P3^2;//設(shè)定鍵(溫度設(shè)定)/*************************************************************18B20驅(qū)動(dòng)程序,DQ為數(shù)據(jù)口,接于P1.4*11.0592M晶振,上拉4。7k電阻*************************************************************/#defineucharunsignedchar#defineuintunsignedintsbitdq=P1^0;//定義18B20的數(shù)據(jù)端bitflag;uintTemperat(yī)ure;uchargechar,shichar,baichar,Alarm;uchartemp_buff[9];//存儲(chǔ)讀取的字節(jié),readscratchpad為9字節(jié),readromID為8字節(jié)ucharid_buff[8];uchar*p;ucharcrc_dat(yī)a;ucharcodeCrcTable[256]={0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220,35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22,233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53};//CRC校驗(yàn)表/*************************************************************Function:延時(shí)處理*************************************************************/voidTempDelay(uintus){ while(us—-);}/*************************************************************Function:18B20初始化*************************************************************/voidInit18b20(void){?EA=0;?dq=1; _nop_(); dq=0;?TempDelay(86);//delay530uS//80?_nop_();?dq=1; TempDelay(14);//delay100uS//14 _nop_();?_nop_();?_nop_(); if(dq==0)?flag=1;//detect1820success!?else flag=0;//detect1820fail! TempDelay(20);//20 _nop_();?_nop_();?dq=1;?EA=1;}/*************************************************************Function:向18B20寫(xiě)入一個(gè)字節(jié)*************************************************************/voidWriteByte(ucharwr)//單字節(jié)寫(xiě)入{?uchari;?EA=0;?for(i=0;i<8;i++) { ?dq=0;??_nop_(); ?dq=wr&0x01;??TempDelay(5);//delay45uS//5??_nop_(); _nop_();??dq=1;? wr>>=1;?}?EA=1;}/*************************************************************Function:讀18B20的一個(gè)字節(jié)*************************************************************/ucharReadByte(void)//讀取單字節(jié){?uchari,u=0;?EA=0; for(i=0;i<8;i++)?{ ?dq=0;??u>>=1; ?dq=1;? if(dq==1)??u|=0x80;??TempDelay(4); _nop_();?}?EA=1; return(u);}/*************************************************************Function:讀18B20*************************************************************/voidreadbytes(ucharj){ uchari;?for(i=0;i〈j;i++)?{? *p=ReadByte();//讀取的溫度值存到指針?biāo)肝恢? p++; }}/*************************************************************Function:CRC校驗(yàn)*************************************************************/ucharCRC(ucharj){ uchari,crc_data=0;?for(i=0;i<j;i++) ?crc_data=CrcTable[crc_dat(yī)a^temp_buff[i]];?return(crc_data);}/*************************************************************Function:讀取溫度*************************************************************/voidGemTemp(void){ readbytes(9); if(CRC(9)==0)//校驗(yàn)正確?{? Temperat(yī)ure=temp_buff[1]*0x100+temp_buff[0];? Temperature/=16;//忽略小數(shù)部分??TempDelay(1);? Alarm=temp_buff[2];?}}/*************************************************************Function:內(nèi)部配置*************************************************************/voidConfig18b20(void)//重新配置報(bào)警限定值{?Init18b20();?WriteByte(0xcc);//skiprom WriteByte(0x4e);//writescratchpad WriteByte(Alarm);//寫(xiě)入溫度上限 Init18b20(); WriteByte(0xcc);//skiprom WriteByte(0x48);//保存設(shè)定值?Init18b20();?WriteByte(0xcc);//skiprom WriteByte(0xb8);//回調(diào)設(shè)定值}/*************************************************************Function:讀18B20的ID*************************************************************/voidReadID(void)//讀取器件id{ Init18b20(); WriteByte(0x33);//readrom?readbytes(8);}/*************************************************************Function:18B20全處理*************************************************************/voidTemperatuerResult(void){ p=id_buff; ReadID();?Init18b20();?WriteByte(0xcc);//skiprom?WriteByte(0x44);//Temperatureconvert?Init18b20();?WriteByte(0xcc);//skiprom?WriteByte(0xbe);//readTemperature?p=temp_buff; GemTemp();}/*************************************************************Function:數(shù)碼管顯示掃描中斷*************************************************************/voiddisplay()interrupt1using1//顯示掃描中斷?{?TH0=0xFC; TL0=0x17; P2=0xff; //先關(guān)閉所有數(shù)碼管 P0=dis_buf[dis_index];? //顯示代碼傳送到P0口 P2=dis_digit;? ?//傳送位選通值 dis_digit=_crol_(dis_digit,1); //位選通值左移,下次中斷時(shí)選通下一位數(shù)碼管?dis_index++; dis_index&=0x03;//掃描到第四個(gè)數(shù)碼管后返回 }/*************************************************************Function:顯示代碼處理*************************************************************/voidprocessCode(void)//顯示代碼處理(分離數(shù)值){ gechar=(uchar)(Temperat(yī)ure%10); shichar=(uchar)(Temperat(yī)ure%100/10);?baichar=(uchar)(Temperature/100); dis_buf[0]=dis_code[gechar]; ?//顯示代碼的個(gè)位傳送到數(shù)碼管一?dis_buf[1]=dis_code[shichar]; ?//顯示代碼的十位傳送到數(shù)碼管二?dis_buf[2]=dis_code[baichar]; //顯示代碼的百位傳送到數(shù)碼管三 dis_buf[3]=dis_code[0];? //第四位不用顯示0}/*************************************************************Function:按鍵處理*************************************************************/voidprocessKey(void)//按鍵處理程序{ ucharAlarm_ge,Alarm_shi,Alarm_bai;?while(1) {??Alarm_ge=(uchar)(Alarm%10);? Alarm_shi=(uchar)(Alarm%100/10); Alarm_bai=(uchar)(Alarm/100); ?dis_buf[0]=dis_code[Alarm_ge];? //第一位用來(lái)顯示所設(shè)報(bào)警值的個(gè)位 dis_buf[1]=dis_code[Alarm_shi]; ?//第二位用來(lái)顯示所設(shè)報(bào)警值的十位 dis_buf[2]=dis_code[Alarm_bai]; ?//第三位用來(lái)顯示所設(shè)報(bào)警值的百位? dis_buf[3]=dis_code[11];??//第四位用來(lái)表示現(xiàn)在正在設(shè)定報(bào)警上限值中? if(Key_UP==0) ?{???TempDelay(10000);//延時(shí)防抖按下10ms再測(cè)? if(Key_UP==0)? Alarm=Alarm+1;//上調(diào)溫度 ?if(Alarm〉=100)//限制溫度上限為100度 ? Alarm=100; } if(Key_DOWN==0)? {?? TempDelay(10000);//延時(shí)防抖按下10ms再測(cè) ?if(Key_DOWN==0)?? Alarm=Alarm-1;//上調(diào)溫度?? if(Alarm<=1)//限制溫度下限為1度 ??Alarm=1;??} if(Key_SET==0) {?? Spk=0;???TempDelay(10000);//延時(shí)防抖按下10ms再測(cè)? ?Spk=1; if(Key_SET==0) ? {?? ?Config18b20(); ? ?break;//跳出while循環(huán) ??} }?}}/*****************************************************************Function:主程序***************主程序入口*****************************************/voidmain(){ TH0=0XFC;?TL0=0X17;?TR0=1;//定時(shí)器T0開(kāi)始運(yùn)行 EA=1;//總中斷打開(kāi) ET0=1;//T0中斷打開(kāi)?dis_index=0; dis_buf[0]=dis_code[0]; //第一位初始值為0?dis_buf[1]=dis_code[0];??//第二位初始值為0?dis_buf[2]=dis_code[0]; ?//第三位初始值為0 dis_buf[3]=dis_code[0];??//第四位初始值為0 TemperatuerResult(); while(1) {??TemperatuerResult();//開(kāi)始采集溫度? if(Temperature>Alarm)//超過(guò)Alarm值蜂鳴器報(bào)警(低電平有效)? {? Spk=0; ?} ?else??{ Spk=1;? } processCode();//顯示代碼處理if(!Key_SET)//檢測(cè)Key_SET鍵是否被按下(低電平有效)??{???TempDelay(10000);//延時(shí)防抖按下10ms再測(cè) ?if(!Key_SET)//如果Key_SET鍵確實(shí)被按下,則開(kāi)始進(jìn)入功能鍵處理程序? ?processKey();//按鍵處理程序? } }}/***************程序結(jié)束****************************************/附錄2:PID控制具體程序/*********************************************************/
/*名稱:float(yī)PIDprocess1*/?/*功能:PIDadjust*/?/*說(shuō)明:*/
/*調(diào)用:*/
/*輸入:floatxdat(yī)a*Yn,floatxdata*Rn*/
/*返回值:deltaPn*/?/*********************************************************/?floatPIDprocess1()?{
intdataE_0;?floatdatadeltaPn,deltaPi,deltaPp,deltaPd,PsumCopy;
E_0=SetTemperat(yī)ure1-CurrentTemperature1;?if(abs(E_0)〉Emax)
{?deltaPp=(float)Kp*(E_0-E_11);
deltaPd=(float)Kd*(E_0—2*E_11+E_21);?//if(deltaPd>=dPdmax)deltaPd=0;?deltaPn=deltaPp+deltaPd;?}
else
{?if(abs(E_0)>E0)
{?deltaPi=(float)Ki*E_0*(Emax-abs(E_0))/(Emax-E0);?}
else
{//小誤差時(shí)的處理
deltaPi=(float)Ki*E_(tái)0;
//if(fabs(deltaPi)<dPimin)deltaPi=0;?}?deltaPp=(float)Kp*(E_(tái)0—E_11);?deltaPd=(float(yī))Kd*(E_0-2*E_(tái)11+E_21);?//if(deltaPd>=dPdmax)deltaPd=0;
deltaPn=deltaPp+deltaPi+deltaPd;?}?/*if(fabs(deltaPn)〉dPmax)
{?if(deltaPn〉0)deltaPn=dPmax;?elsedeltaPn=—dPmax;
}*/
Psum1+=deltaPn;
PsumCopy=Psum1;?if(PsumCopy〉Pmax)PsumCopy=Pmax;
if(PsumCopy<Pmin)PsumCopy=Pmin;
E_(tái)21=E_11;
E_11=E_0;
return(PsumCopy);
}?/*********************************************************/
/*名稱:float(yī)PIDprocess2*/?/*功能:PIDadjust*/
/*說(shuō)明:*/
/*調(diào)用:*/?/*輸入:floatxdat(yī)aYn,float(yī)xdataRn*/
/*返回值:Psum2*/?/*********************************************************/
floatPIDprocess2()
{
intdat(yī)aE_0;
floatdat(yī)adeltaPn,deltaPi,PsumCopy;?E_0=SetTemperat(yī)ure2-CurrentTemperature2;?if(abs(E_0)〉Emax)?{?deltaPn=(float(yī))Kp*(E_0—E_12)+(float)Kd*(E_(tái)0—2*E_12+E_22);
}
else?{
if(abs(E_0)〉E0)
{
deltaPi=(float)Ki*E_0*(Emax—abs(E_0))/(Emax—E0);
}
else?{//小誤差時(shí)的處理?deltaPi=(float)Ki*E_0;?}
deltaPn=(float)Kp*(E_0—E_12)+deltaPi+(float)Kd*(E_0—2*E_12+E_(tái)22);?}?/*if(fabs(deltaPn)>dPmax)?{?if(deltaPn>0)deltaPn=dPmax;?elsedeltaPn=-dPmax;?}*/?Psum2+=deltaPn;?PsumCopy=Psum2;?if(PsumCopy〉Pmax)PsumCopy=Pmax;
if(PsumCopy〈Pmin)PsumCopy=Pmin;?E_22=E_12;?E_12=E_0;
return(PsumCopy);?}/基于單片機(jī)的水溫控制系統(tǒng)設(shè)計(jì)學(xué)生:指導(dǎo)教師:內(nèi)容摘要:說(shuō)起溫度控制系統(tǒng),大家并不陌生了,在我們生活中許許多多的家用電器都可以涉及到溫度的控制,像存儲(chǔ)美食的電冰箱,為我們帶來(lái)涼爽的空調(diào)都會(huì)用到溫度控制系統(tǒng),為我們帶來(lái)熱氣騰騰開(kāi)水的飲水機(jī)等等。而本文介紹了水溫控制系統(tǒng)的基本原理,本系統(tǒng)可以用于飲水機(jī)等電路,整個(gè)系統(tǒng)的核心就是AT89C51單片機(jī),它是這個(gè)系統(tǒng)的主控制單元,對(duì)于水溫控制當(dāng)然溫度控制系統(tǒng)也是必不可少的,這個(gè)系統(tǒng)則應(yīng)用了DS18B20為溫度傳感器的溫度控制系統(tǒng),采集溫度后利用數(shù)碼管顯示當(dāng)前溫度,并通過(guò)繼電器對(duì)其加熱等。總而言之水溫控制系統(tǒng)在生活中的大量應(yīng)用為我們帶來(lái)了方便,提高了我們的生活質(zhì)量.關(guān)鍵詞:水溫控制系統(tǒng)單片機(jī)AT89C51DS18B20繼電器DesignformicrocomputertemperaturecontrolsystemAbstract:Speakingoftemperat(yī)urecontrolsystem,everybodyisnotstrange,inourlife,manyhouseholdappliancescanbeinvolvedintemperat(yī)urecontrol,likefoodstoragerefrigerator,bringuscoolairconditioning,thetemperaturecontrolsystemisusedforusasteaminghotwaterdrinkingmachine,andsoon。Watertemperaturecontrolsystemareintroducedinthispaper,thebasicprincipleofthissystemcanbeusedforwaterdispenserscircuit,suchasthecoreofthewholesystemisAT89C51singlechipmicrocomputer,itisthemaincontrolunittothesystem,thewatertemperat(yī)urecontroltemperaturecontrolsystemisalsoindispensable,ofcourse,theapplicationsystem,thetemperaturecontrolsystemoftemperat(yī)uresensorDS18B20,aftercollectingtemperatureusingdigitaltubedisplaythecurrenttemperature,andthroughtherelayontheheating,etc.Overallwatertemperaturecontrolsysteminthelifeofalargenumberofapplicationsforourbroughtconvenient,improvethequalityofourlife。Keywords:wat(yī)ertemperaturecontrolsystemofsinglechipmicrocomputerAT89C51DS18B20relay.目錄前言.....。...。。..。..。。。。....。。...。..。.。.。。。.。..。。...。.......。。..。。1TOC\o"1—3”\h\z\uHYPERLINK\l_Toc29361水溫控制器背景PAGEREF_Toc29361HYPERLINK\l_Toc295552方案比較PAGEREF_Toc2955512。1控制電路的方案比較PAGEREF_Toc220111HYPERLINK\l_Toc321702.2溫度采集模塊 PAGEREF_Toc3217022.3顯示模塊PAGEREF_Toc3192422.4溫度控制模塊PAGEREF_Toc1267323硬件電路PAGEREF_Toc2053HYPERLINK\l_Toc326443.1硬件框圖PAGEREF_Toc326443HYPERLINK\l_Toc236783。2功能介紹2367833.2.1控制電路模塊PAGEREF_Toc752133。2.2溫度采集
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年食品安全管理人員考試試題+答案
- 檢驗(yàn)科考試試題含答案
- 醫(yī)院裝備科考試題及答案
- 德州中考語(yǔ)文試題及答案
- 畜禽敗血癥試題及答案
- 護(hù)理課件插圖設(shè)計(jì)技巧
- 中國(guó)農(nóng)業(yè)科學(xué)院2026年度第一批統(tǒng)一公開(kāi)招聘參考題庫(kù)附答案
- 北京中國(guó)石油大學(xué)教育基金會(huì)招聘2人備考題庫(kù)附答案
- 南昌職教城教育投資發(fā)展有限公司2025年第七批公開(kāi)招聘工作人員專(zhuān)題備考題庫(kù)必考題
- 岳池縣天平鎮(zhèn)人民政府關(guān)于公開(kāi)招聘社區(qū)專(zhuān)職網(wǎng)格員的參考題庫(kù)必考題
- 2026年咨詢工程師現(xiàn)代咨詢方法與實(shí)務(wù)模擬測(cè)試含答案
- 甘肅省酒泉市2025-2026學(xué)年高一上學(xué)期期末語(yǔ)文試題(解析版)
- GB/T 3634.1-2025氫氣第1部分:工業(yè)氫
- 2025年公務(wù)員(省考)測(cè)試卷附答案詳解
- JJG 499-2021 精密露點(diǎn)儀檢定規(guī)程
- T-CPQS A0011-2022 二手車(chē)車(chē)況檢測(cè)及評(píng)估通則
- 吸毒的危害性后果
- 2025年湖南邵陽(yáng)經(jīng)開(kāi)貿(mào)易投資有限公司招聘12人筆試考試參考試題及答案解析
- 白內(nèi)障手術(shù)術(shù)前準(zhǔn)備和術(shù)后護(hù)理流程
- 多動(dòng)癥兒童在感統(tǒng)訓(xùn)練
- 環(huán)保生產(chǎn)應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論