




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、自動(dòng)化工程學(xué)院創(chuàng)新實(shí)驗(yàn)室 水溫自動(dòng)控制系統(tǒng) 參與人: 指導(dǎo)老師: 水溫自動(dòng)控制系統(tǒng)摘要:水溫自動(dòng)控制系統(tǒng)在工業(yè)及日常生活中應(yīng)用廣泛,在生產(chǎn)和生活中都發(fā)揮著重要作用,如一些現(xiàn)代化車間里,生產(chǎn)特殊產(chǎn)品加工需要在一定的溫度才能進(jìn)行,水產(chǎn)養(yǎng)殖中也要對水的溫度進(jìn)行嚴(yán)格的控制,才能確保達(dá)到最好的效果。在居家生活中,我們同樣也離不開水溫的控制,如電熱水器,自動(dòng)飲水機(jī)等,都要用到水溫控制。實(shí)現(xiàn)水溫控制的方法很多,如單片機(jī)控制、plc控制等等。而其中用單片機(jī)實(shí)現(xiàn)的水溫控制系統(tǒng),具有可靠性高、價(jià)格低、簡單易實(shí)現(xiàn)等眾多優(yōu)點(diǎn)。單片機(jī)用于工業(yè)控制是近年來發(fā)展非常迅速的領(lǐng)域,現(xiàn)在許多自動(dòng)化的生產(chǎn)車間里,都是靠單片機(jī)來實(shí)現(xiàn)
2、的。溫度是工業(yè)控制對象主要被控參數(shù)之一,在溫度控制中,由于受到溫度被控對象特性(如慣性大、滯后大、非線性等)的影響,使得控制性能難以提高,有些工藝過程其溫度控制的好壞直接影響著產(chǎn)品的質(zhì)量,因而設(shè)計(jì)一種較為理想的溫度控制系統(tǒng)是非常有價(jià)值的。為了實(shí)現(xiàn)高精度的水溫測量和控制,本文介紹了一種以stm32 32位單片機(jī)為核心,以pid算法控制以及pid參數(shù)整定相結(jié)合的控制方法來實(shí)現(xiàn)的水溫控制系統(tǒng),其硬件電路還包括溫度采集、溫度控制、溫度顯示、鍵盤輸入以及rs232接口等電路。該系統(tǒng)可實(shí)現(xiàn)對溫度的測量,并能根據(jù)設(shè)定值對溫度進(jìn)行調(diào)節(jié),實(shí)現(xiàn)控溫的目的。關(guān)鍵詞:stm32;溫度控制;pt100;piddesig
3、n of temperature automatic control systemabstract:the temperature is one of the mainly charged parameters which are industrial control targets. it is difficult to enhance the control performance due to the characteristics of the temperature charged object. such as inertia, hysteresis and non-linear,
4、 etcits temperature control process will have a direct impact on the quality of the product in some technological process. therefore it is absolute valuable to design a ideal temperature control system.in order to realize the high accuracy survey and control of water temperature. systematic core is
5、stm32, which is high-performance 32-bit mcu of atmel company. the system unifies pid control algorithm and pid parameter tuning to control the water temperature. its hardware circuit also includes temperature gathering, temperature control and temperature display, keyboard input and rs232 interfaces
6、. the system can realize to survey the water temperature, and it can adjust the temperature according to the setting value.keywords:stm32; temperature control; pt100; pid一、引言1.1 課題背景一些價(jià)格比較昂貴的觀賞魚,如蝴蝶魚,銀龍魚等對于溫度的要求比較苛刻。隨著人們生活水平的提高,這些魚類在我國的飼養(yǎng)開始興盛,因此,對飼養(yǎng)環(huán)境溫度進(jìn)行恒溫控制十分必要。現(xiàn)有的一些溫度控制設(shè)備,如hal68型的溫度控制棒,結(jié)構(gòu)比較簡單,一般采
7、取的是開關(guān)式的控制,即當(dāng)測量溫度低于設(shè)定溫度時(shí)進(jìn)行加熱,其結(jié)果是飼養(yǎng)水域內(nèi)溫度不均,控溫效果不理想。1.2 國內(nèi)外研究現(xiàn)狀目前,國外溫度控制系統(tǒng)及儀表正朝著高精度智能化、小型化等方面快速發(fā)展。 溫度控制系統(tǒng)在國內(nèi)各行各業(yè)的應(yīng)用雖然已經(jīng)十分廣泛,但從國內(nèi)生產(chǎn)的溫度控制器來講,總體發(fā)展水平仍然不高,同國外的日本、美國、德國等先進(jìn)國家相比,仍然有著較大的差距。目前,我國在這方面總體技術(shù)水平處于20世紀(jì)80年代中后期水平。成熟產(chǎn)品主要以“點(diǎn)位”控制及常規(guī)的pid控制器為主,它只能適應(yīng)一般溫度系統(tǒng)控制,難于控制滯后復(fù)雜時(shí)變溫度系統(tǒng)控制,而且適應(yīng)于較高控制場合的智能化、自適應(yīng)控制儀表國內(nèi)技術(shù)還不十分成熟,
8、形成商品化并廣泛應(yīng)用的控制儀表較少。現(xiàn)在,我國在溫度等控制儀表業(yè)與國外還有著一定的差距。隨著嵌入式系統(tǒng)開發(fā)技術(shù)的快速發(fā)展及其在各個(gè)領(lǐng)域的廣泛應(yīng)用,人們對電子產(chǎn)品的小型化和智能化要求越來越高,作為高新技術(shù)之一的單片機(jī)以其體積小、價(jià)格低、可靠性高、適用范圍大以及本身的指令系統(tǒng)等諸多優(yōu)勢,在各個(gè)領(lǐng)域、各個(gè)行業(yè)都得到了廣泛應(yīng)用。1.3研究方法本文主要介紹單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)過程,其中涉及系統(tǒng)結(jié)構(gòu)設(shè)計(jì)、元器件的選取和控制算法的選擇、程序的調(diào)試和系統(tǒng)參數(shù)的整定。以stm32為cpu,溫度信號(hào)由pt1000和電壓放大電路提供。電壓放大電路用超低溫漂移高精度運(yùn)算放大器op07將溫度-電壓信號(hào)進(jìn)行放大,用單
9、片機(jī)控制ssr固態(tài)繼電器的通斷時(shí)間以控制水溫,系統(tǒng)控制對象為1升凈水,容器為高性能塑料水杯。水溫可以在環(huán)境溫度降低時(shí)實(shí)現(xiàn)自動(dòng)控制,以保持設(shè)定的溫度基本不變,具有較好的快速性與較小的超調(diào)。 二、 系統(tǒng)框架2.1 水溫控制系統(tǒng)設(shè)計(jì)任務(wù)和要求該系統(tǒng)為一實(shí)驗(yàn)系統(tǒng),系統(tǒng)設(shè)計(jì)任務(wù):設(shè)計(jì)一個(gè)水溫自動(dòng)控制系統(tǒng),控制對象為1升凈水,容器為搪瓷器皿。水溫可以在一定范圍內(nèi)由人工設(shè)定,并能在環(huán)境溫度降低時(shí)實(shí)現(xiàn)自動(dòng)調(diào)整,以保持設(shè)定的溫度基本不變。系統(tǒng)設(shè)計(jì)具體要求:溫度設(shè)定范圍為2090;環(huán)境溫度降低時(shí)(例如用電風(fēng)扇降溫)溫度控制的靜態(tài)誤差0.5;采用適當(dāng)?shù)目刂品椒ǎ?dāng)設(shè)定溫度突變(由40提高到60)時(shí),減小系統(tǒng)的調(diào)節(jié)時(shí)
10、間和超調(diào)量;用12864 顯示水溫曲線和設(shè)定值|、測量值。2.2 水溫控制系統(tǒng)部分水溫控制系統(tǒng)是一個(gè)過程控制系統(tǒng),組成框圖如圖1所示,由控制器、執(zhí)行器、被控對象其反饋?zhàn)饔玫臏y量變送組成。控制系統(tǒng)框圖除了以上的組成元件以外,還要選擇合適的算法以實(shí)現(xiàn)所要求的控制精度,以下我會(huì)對關(guān)鍵的元件以及電路的確定進(jìn)行詳細(xì)的分析。因?yàn)樗鼈冞x取的好壞將直接影響著整個(gè)系統(tǒng)實(shí)現(xiàn)效果的優(yōu)劣。2.2.1 cpu(computer processing unit)中央處理器方案一:此方案采用89s52單片機(jī)實(shí)現(xiàn),89c52單片機(jī)的ad是采用外置的,單片機(jī)處理速度比較低,而且單片機(jī)編程軟件自由度小,端口較少。方案二,stm3
11、2核心,stm32有自帶的ad數(shù)模轉(zhuǎn)換模塊,此方案簡易可行,器件的性價(jià)比很高宜采用。此單片機(jī)軟件編程自由度大,可用編程實(shí)現(xiàn)各種控制算法和邏輯控制。進(jìn)行數(shù)據(jù)轉(zhuǎn)換,控制電路部分采用ssr固態(tài)繼電器控制電爐絲的通斷此方案電路簡單并且可以滿足題目中的各項(xiàng)要求的精度。總體框圖如圖2所示。 按鍵設(shè)置12864液晶顯示pt100前置放大 ad采集stm32ssr固態(tài)繼電器熱電阻制器設(shè)計(jì)總體框圖溫度控制采用改進(jìn)的pid數(shù)字控制算法,顯示采用電腦上位機(jī)串口靜態(tài)顯示pid調(diào)節(jié)的占空比,這樣更能直觀的看到調(diào)節(jié)程度及調(diào)節(jié)過程。2.2.2 溫度控制系統(tǒng)算法分析系統(tǒng)算法控制采用工業(yè)上常用的增量型pid數(shù)字控制,并且結(jié)合特
12、定的系統(tǒng)加以算法的改進(jìn),形成了變速積分pid積分分離pid控制相結(jié)合的自動(dòng)識(shí)別的控制算法。該方法不僅大大減小了超調(diào)量,而且有效地克服了積分飽和的影響,使控制精度大大提高。長期以來國內(nèi)外科技工作者對溫度控制器進(jìn)行了廣泛深入的研究,產(chǎn)生了大批溫度控制器,如性能成熟應(yīng)用廣泛的pid調(diào)節(jié)器、智能控制pid調(diào)節(jié)器、自適應(yīng)控制等。此處主要對一些控制器特性進(jìn)行分析以便選擇適合的控制方法應(yīng)用于改造。常用的控制算法有以下幾種: 經(jīng)典的比例積分微分控制算法; 根據(jù)動(dòng)態(tài)系統(tǒng)的優(yōu)化理論得到的自適應(yīng)控制和最優(yōu)控制方法;根據(jù)模糊集合理論得到模糊控制算法。自適應(yīng)控制、最優(yōu)控制方法以及模糊控制算法是建立在精確的數(shù)學(xué)模型基礎(chǔ)上
13、的,在實(shí)時(shí)過程控制中,由于控制對象的精確數(shù)學(xué)模型難于建立,系統(tǒng)參數(shù)經(jīng)常發(fā)生變化,運(yùn)用控制理論進(jìn)行綜合分析要花很大代價(jià),主要是時(shí)間。同時(shí)由于所得到的數(shù)學(xué)模型過于復(fù)雜難于實(shí)現(xiàn)。在實(shí)時(shí)控制系統(tǒng)中要求信號(hào)的控制信號(hào)的給出要及時(shí),所以在目前的過程控制系統(tǒng)中較少采用自適應(yīng)控制、最優(yōu)控制方法和模糊控制算法。目前在過程控制中應(yīng)用較多的還是pi控制算法、pd控制算法和pid控制算法。水溫控制系統(tǒng)的控制對象具有熱儲(chǔ)存能力大,慣性也較大的特點(diǎn),水在容器內(nèi)的流動(dòng)或熱量傳遞都存在一定的阻力,因而可以歸于具有純滯后的一階大慣性環(huán)節(jié)。對于大慣性系統(tǒng)的過渡過程控制,一般可采用以下控制方案:開關(guān)量控制 這種方法通過比較給定值與
14、被控參數(shù)的偏差來控制輸出的狀態(tài),開通或關(guān)斷,因此控制過程十分簡單,也容易實(shí)現(xiàn);但由于輸出控制量只有兩種狀態(tài),使被控參數(shù)在兩個(gè)方向上變化的速率均為最大,因此容易引起反饋回路振蕩,控制精度不高;這種控制方案一般在大慣性系統(tǒng)對控制精度和動(dòng)態(tài)特性要求不高的情況下采用。我們采用的是比例微分控制加比例積分微分控制,由于在溫度上升的過程中為了減少超調(diào)量,我們先采用比例積分微分控制,當(dāng)溫度到一定范圍的時(shí)候:例如當(dāng)溫度偏差到0.5的時(shí)候就加上積分控制,這樣既能減少超調(diào)量,又能積分累加,保持溫度調(diào)節(jié)。 ty 圖4 比例控制ty ty 比例積分控制 圖6 比例積分微分控制方案選擇:結(jié)合本設(shè)計(jì)任務(wù)與要求,由于水溫系統(tǒng)
15、的傳遞函數(shù)事先難以精確獲得,因而很難判斷哪一種控制方法能夠滿足系統(tǒng)對控制品質(zhì)的要求;但從以上對控制方法的分析來看,pid控制方法最適合本例采用:一方面,由于可以采用單片機(jī)實(shí)現(xiàn)控制過程,無論哪一種控制方法都不會(huì)增加系統(tǒng)硬件成本,而只需對軟件作相應(yīng)改變即可實(shí)現(xiàn)不同的控制方案;另一方面,采用pid的控制方式可以最大限度地滿足系統(tǒng)對諸如控制精度、調(diào)節(jié)時(shí)間和超調(diào)量等控制品質(zhì)的要求。由圖7可知pid調(diào)節(jié)器是一種線性調(diào)節(jié)器,這種調(diào)節(jié)器是將設(shè)定值與實(shí)際輸出值進(jìn)行比較構(gòu)成偏差,下面是pid調(diào)節(jié)控制過程算法。set_wendu=chuan_wendu; measure_wendu=wendu; ek=set_we
16、ndu-measure_wendu;/這兩個(gè)溫度值,set_wendu來自于鍵盤的設(shè)定值,measure_wendu來自于adc if(measure_wendu40.0) if(ek50.0) if(set_wendu-measure_wendu)1.5|(set_wendu-measure_wendu)=-1.5&(set_wendu-measure_wendu)=1.5) dpk=kp*pk+ki*ik+kd*dk; else if(measure_wendu0.2|(set_wendu-measure_wendu)=-0.2&(set_wendu-measure_wendu)=0.2)
17、 dpk=kp*pk+ki*ik+kd*dk; pout=pout+dpk;if(pout=0) pout=0; tim4_configuration(pout); ek2=ek1;ek1=ek 模擬pid控制可見溫度pid調(diào)節(jié)器有三個(gè)可設(shè)定參數(shù),即比例放大系數(shù)、積分時(shí)間常數(shù)、微分時(shí)間常數(shù)。比例調(diào)節(jié)的作用是使調(diào)節(jié)過程趨于穩(wěn)定,但會(huì)產(chǎn)生穩(wěn)態(tài)誤差;積分作用可消除被調(diào)量的穩(wěn)態(tài)誤差,但可能會(huì)使系統(tǒng)振蕩甚至使系統(tǒng)不穩(wěn)定;微分作用能有效的減小動(dòng)態(tài)偏差。pid采樣周期一定要設(shè)定一個(gè)恰當(dāng)?shù)闹担鄿y量幾組數(shù)據(jù)調(diào)一下kp、ki、kd的系數(shù)找到一個(gè)恰當(dāng)?shù)闹怠囟瓤刂魄€圖控制方式:該控制系統(tǒng)是把輸出量檢測出來,經(jīng)過
18、物理量的轉(zhuǎn)換,再反饋到輸入端去與給定量進(jìn)行比較(綜合),并利用控制器形成的控制信號(hào)通過執(zhí)行機(jī)構(gòu)ssr對控制對象進(jìn)行控制,抑制內(nèi)部或外部擾動(dòng)對輸出量的影響,減小輸出量的誤差,達(dá)到控制目的。自動(dòng)控制框圖下圖所示,在此控制系統(tǒng)中單片機(jī)就相當(dāng)于常規(guī)控制系統(tǒng)中的運(yùn)算器控制器,它對過程變量的實(shí)測值和設(shè)定位之間的誤差信號(hào)進(jìn)行運(yùn)算然后給出控制信息。單片機(jī)的運(yùn)算規(guī)則稱為控制法則或控制算法。 stm32熱電阻 自動(dòng)控制框圖三、系統(tǒng)硬件模塊單片機(jī)系統(tǒng)是整個(gè)控制系統(tǒng)的核心,stm32單片機(jī)需的i/o口、中斷、定時(shí)及存放中間結(jié)果的ram電路;前向通道是信息采集的通道,主要包括傳感器、信號(hào)放大、a/d轉(zhuǎn)換等電路;由于水溫
19、變化是一個(gè)相對緩慢的過程,因此前向通道中沒有使用采樣保持電路;信號(hào)的濾波可由軟件實(shí)現(xiàn),以簡化硬件、降低硬件成本。鍵盤設(shè)定:用于溫度設(shè)定,用的是4*4矩陣鍵盤。數(shù)據(jù)采樣:將由傳感器及相關(guān)電路采集到的溫度轉(zhuǎn)為電壓信號(hào),經(jīng)a/d轉(zhuǎn)換后,送入stm32ad采集接口并把電壓值轉(zhuǎn)換溫度值。數(shù)據(jù)顯示:采用了12864顯示溫度與測量溫度并顯示溫度曲線。串行口傳輸:將pwm輸出的占空比用上位機(jī)顯示在電腦上,以供觀察調(diào)節(jié)的正確性。繼電器/熱電阻;通過光耦控制晶體管,讓晶體管來控制繼電器,通過光耦來控制輸入和輸出的隔離。 3.2 外部電路設(shè)計(jì)3.2.1 溫度采集電路本系統(tǒng)運(yùn)放采用op07,op07是一種高精度單片運(yùn)
20、算放大器,具有很低的輸入失調(diào)電壓和漂移。op07的優(yōu)良特性使它特別適合作前級放大器,放大微弱信號(hào)。使用op07一般不用考慮調(diào)零和頻率問題就能滿足要求。 op07典型應(yīng)用圖multimeter 8模擬圖采用溫度傳感器鉑電阻pt100,對于溫度的精密測量而言,溫度測量部分是整個(gè)系統(tǒng)設(shè)計(jì)的第一步。溫度傳感器的選擇是這塊電路的關(guān)鍵,它是直接影響整個(gè)系統(tǒng)的性能與效果的關(guān)鍵因素之一。這里采用的是精密級鉑電阻溫度傳感器pt100,它的金屬鉑含量達(dá)99. 9999%,因?yàn)殂K電阻的物理和化學(xué)性能在高溫和氧化介質(zhì)中很穩(wěn)定、價(jià)格又便宜,常用作工業(yè)測量元件,以鉑電阻溫度計(jì)作基準(zhǔn)器線性好,溫度系數(shù)分散性小,在0100攝
21、氏度時(shí),最大非線性偏差小于0.5攝氏度,性能穩(wěn)定,廣泛用于精密溫度測量和標(biāo)定。鉑熱電阻與溫度關(guān)系式,其中:-溫度為t攝氏度時(shí)的電阻; -溫度為0攝氏度時(shí)的電阻;a、b-溫度系數(shù) a=3.94*102/;其中b=-/;t-任意溫度。3.2.2 溫度控制電路此部分通過控制繼電器的通斷從而控制熱電阻(俗稱“熱得快”),采用對加在熱電阻兩端的電壓進(jìn)行通斷的方法進(jìn)行控制,以實(shí)現(xiàn)對水加熱功率的調(diào)整,從而達(dá)到對水溫控制的目的,即在閉環(huán)控制系統(tǒng)中對被控對象實(shí)施控制。此部分的繼電器采用的是ssr(solid state relays,縮寫ssr)繼電器,即固態(tài)繼電器。工作原理:固態(tài)繼電器是一種無觸點(diǎn)電子開關(guān),由
22、分立元器件、膜固定電阻網(wǎng)絡(luò)和芯片,主要由輸入(控制)電路,驅(qū)動(dòng)電路和輸出(負(fù)載)電路三部分組成。固態(tài)繼電器的輸入電路是為輸入控制信號(hào)提供一個(gè)回路,使之成為固態(tài)繼電器的觸發(fā)信號(hào)源。固態(tài)繼電器的輸入電路多為直流輸入,個(gè)別的為交流輸入。固態(tài)繼電器的輸出電路是在觸發(fā)信號(hào)的控制下,實(shí)現(xiàn)固態(tài)繼電器的通斷切換。輸出電路主要由輸出器件(芯片)和起瞬態(tài)抑制作用的吸收回路組成,固態(tài)繼電器(ssr)是一種全電子電路組合的元件,它依靠半導(dǎo)體器件和電子元件的電、磁和光特性來完成其隔離和繼電切換功能。固態(tài)繼電器與傳統(tǒng)的電磁繼電器(emr)相比,是一種沒有機(jī)械、不含運(yùn)動(dòng)零部件的繼電器,但具有與電磁繼電器本質(zhì)上相同功能。工作
23、原理:下圖是繼電器的工作原理,stm32端口通過端口控制光耦,然后光耦控制晶體管,讓晶體管來控制繼電器的開關(guān)。ssr工作原理圖注意:光耦的 輸入端與輸出端一定要隔離開。 四、 系統(tǒng)軟件設(shè)計(jì)4.1 程序框架結(jié)構(gòu)一個(gè)整體的系統(tǒng)軟件設(shè)計(jì)是由各個(gè)在系統(tǒng)里起著不同作用的模塊整合在一起,從而實(shí)現(xiàn)系統(tǒng)的所要實(shí)現(xiàn)的功能。本系統(tǒng)硬件接口如下:gpioa_pin8,ad采集;gpioc_pin0gpioc_pin712864顯示;gpiob_pin8控制繼電器;gpioa_pin0gpioa_pin7矩陣鍵盤掃描;此系統(tǒng)包括主控制程序,a/d采樣數(shù)據(jù)處理程序,pid算法程序,12864顯示及按鍵處理程序。結(jié)構(gòu)框架
24、圖如下圖所示。12864顯示程序結(jié)構(gòu)圖主程序模塊相當(dāng)于調(diào)度室,對子程序模塊的調(diào)用進(jìn)行管理,它主要負(fù)責(zé)初始化io口;等待鍵盤的被按下,并調(diào)用相應(yīng)的模塊進(jìn)行處理;在適當(dāng)?shù)臅r(shí)候接受a/d采樣的數(shù)據(jù),并與所設(shè)定的值進(jìn)行比較,然后通過調(diào)用pid算法處理數(shù)據(jù),處理后來控制繼電器的通斷,從而控制熱電管達(dá)到控制水溫的目的。4.2 程序流程圖及部分程序4.2.1 主程序模塊由于模塊化程序的設(shè)計(jì),通過調(diào)用程序即可實(shí)現(xiàn)所用功能,主程序流程圖如圖25所示。 主程序流程圖五、設(shè)計(jì)總結(jié) 針對現(xiàn)在一些人想養(yǎng)一些名貴的魚,以及在一些工業(yè)中對溫度要求很嚴(yán)格的場合,都要求用到溫度控制體系,所以溫度控制顯得尤為重要。本項(xiàng)目的設(shè)計(jì)滿
25、足一部分基本要求。總之,溫度控制技術(shù)在現(xiàn)在要求的越來越重要。六、心得體會(huì)在本次課程設(shè)計(jì)制作過程中,我們收獲頗多。首先,自學(xué)能力大大提高。由一開始的一無所知到最終設(shè)計(jì)成功,我們所需要的知識(shí)除了來自課堂,更多的是課外通過上網(wǎng)查詢、向老師和師兄請教等多種渠道獲得。其次,在制作過程中遇到很多硬件和軟件等各方面的問題,多次修改無果失去耐心時(shí),團(tuán)隊(duì)的力量使我們重新振作,并最終將困難一一解決,由此我們體會(huì)到合作的重要性。團(tuán)隊(duì)分工明確、成員互相鼓勵(lì)以及個(gè)人的責(zé)任感都起了至關(guān)重要的作用。第三,我們切身感受到了理論與實(shí)踐的巨大差距,課本上的知識(shí)是不能照搬的,需要結(jié)合自己的創(chuàng)造力才能實(shí)現(xiàn)其作用。附錄1參考程序如下:
26、主程序#include stm32f10x_lib.h#include stdio.htim_ocinittypedef tim_ocinitstructure;void rcc_configuration(void);void gpio_configuration(void);void systick_configuration(void);void usart_configuration(void);void ds_in(void);void ds_out(void);void delay_1us(u16 m);void delay_ms(u16 time);void shuchu_128
27、64(void);void shuru_12864(void);void drawpoint(unsigned char x,unsigned char y); void write_com(u16 com); void write_data(u16 data);unsigned char read_data(void);void init(void);void clear(void); void display(u8 *a); void ds(u8 dz,u16 shu); void tim4_configuration(u16 chu); void tim2_configuration(v
28、oid);void nvic_configuration(void);void adc_configuration(void); void filter(void);void guan_bi(void); double dat;u8table2=1,2,3,a,4,5,6,b,7,8,9,c,*,0,#,d; double ad_get;double table480=0;double kp,ki,kd; double wendu=0.0;double set_wendu=80.0;double measure_wendu=0.0;double ek1=0.0;double ek2=0.0;d
29、oubleek=0.0;double chushi=1000;doublechuan_wendu=80.0;int flag2;u32 pout; u8g=0; u32 f=0;/18b20的程序 void ds_init(void) ds_in(); gpio_resetbits(gpiob,gpio_pin_6); delay_1us(480); gpio_setbits(gpiob,gpio_pin_6);delay_1us(25); ds_out(); while(gpio_readinputdatabit(gpiob,gpio_pin_6); /等待18b20的應(yīng)答脈沖 delay_
30、1us(300); ds_in(); void ds_write(u8 dat) u16 i,teep; for(i=1;i=1; ds_in(); gpio_resetbits(gpiob,gpio_pin_6); delay_1us(2); if(teep) gpio_setbits(gpiob,gpio_pin_6); /寫delay_1us(60); else delay_1us(60); gpio_setbits(gpiob,gpio_pin_6); /寫0 delay_1us(20); u8 ds_read(void) u16 i; u8 dat=0; for(i=1;i=1; d
31、s_in(); gpio_resetbits(gpiob,gpio_pin_6); delay_1us(2); ds_out();delay_1us(12); if(gpio_readinputdatabit(gpiob,gpio_pin_6) /讀1 dat|=0x80;elsedat&=0x7f; /讀0 delay_1us(50); return dat;void ds_change(void)ds_init();ds_write(0xcc);ds_write(0x44);u16 ds_get()u8 a,b;u16 temp;ds_init(); ds_write(0xcc); ds_
32、write(0xbe);a=ds_read();b=ds_read(); temp=(u16)b8|a;return temp; void ds_in(void) gpio_inittypedef ds18b20_in; /輸出模式 ds18b20_in.gpio_pin = gpio_pin_6; ds18b20_in.gpio_speed = gpio_speed_50mhz; ds18b20_in.gpio_mode = gpio_mode_out_pp; gpio_init(gpiob, &ds18b20_in); void ds_out(void) gpio_inittypedef
33、ds18b20_out; /輸入模式 /* 設(shè)置 gpioa.4 為推挽輸出,最大翻轉(zhuǎn)頻率為50mhz*/ ds18b20_out.gpio_pin = gpio_pin_6; ds18b20_out.gpio_speed = gpio_speed_50mhz; ds18b20_out.gpio_mode = gpio_mode_in_floating; gpio_init(gpiob, &ds18b20_out);void delayms(vu32 m) u32 i; for(; m != 0; m-) for (i=0; i5000; i+);void delay_ms(u16 time)
34、 /延時(shí)函數(shù) u16 i,j;for(i=0;itime;i+) for(j=0;jodr&0xff00)|com); gpioc-odr =com; delay_ms(1); gpio_setbits(gpiob,gpio_pin_10); delay_ms(1); gpio_resetbits(gpiob,gpio_pin_10);void write_data(u16 data) gpio_setbits(gpiob,gpio_pin_7);/rs gpio_resetbits(gpiob,gpio_pin_9);/rw gpio_resetbits(gpiob,gpio_pin_10)
35、;/e shuchu_12864(); data=(gpioc-odr&0xff00)|data); gpioc-odr=data; delay_ms(1); gpio_setbits(gpiob,gpio_pin_10); delay_ms(1); gpio_resetbits(gpiob,gpio_pin_10); void init(void) gpio_setbits(gpiob,gpio_pin_11); write_com(0x30); delay_ms(1); write_com(0x02); delay_ms(1); write_com(0x06); delay_ms(1);
36、write_com(0x0c); delay_ms(1);write_com(0x01);delay_ms(1); void clear(void) u16 i,j,m;u8 h=0x80; u8 l=0x80; write_com(0x34); for(i=0;i2;i+) for(j=0;j32;j+) write_com(l+j); /清屏函數(shù)write_com(h);for(m=0;m16;m+) write_data(0x00); delay_ms(1); h=0x88; write_com(0x36); write_com(0x30); void display(u8 *a) u8
37、 j,m;u8 h=0x80;u8 l=0x80; write_com(0x34); for(j=16;j32;j+) write_com(l+j); write_com(h); for(m=0;m16;m+) write_data(*a+); h=0x88; for(j=0;j32;j+) write_com(l+j); write_com(h); for(m=0;modr=0xff;shuru_12864();gpio_resetbits(gpiob,gpio_pin_10); delay_ms(1);gpio_setbits(gpiob,gpio_pin_10); delay_ms(1)
38、;readvalue=gpioc-idr;/ delay_ms(1);gpio_resetbits(gpiob,gpio_pin_10);/shuchu_12864();return readvalue;/&0xff00;void drawpoint(unsigned char x,unsigned char y)/x是每行的第幾個(gè)像素(實(shí)際上是列的位置),y是每列的第幾個(gè)像素(實(shí)際上是行的位置)unsigned char row,collum,cbite; /color=0寫白點(diǎn),color=1寫點(diǎn)unsigned char temph,templ;u8 m3;write_com(0x34)
39、;/關(guān)閉繪圖顯示 collum=(x4); /在哪一個(gè)字節(jié),正確cbite=x&0x0f; /那個(gè)字節(jié)的第幾個(gè)點(diǎn)if(y32) /上半屏row=y;elserow=y-32; /下半屏 collum+=8;write_com(0x80+row); /設(shè)定讀的位置 (列)write_com(0x80+collum);/設(shè)定讀的位置(行)m3=read_data();temph=read_data();templ=read_data();write_com(0x80+row); /寫的位置write_com(0x80+collum);/寫的位置if(cbite8) write_data(temph
40、|=(1(7-cbite);/ write_data(templ);else if(8=cbite16) write_data(temph); write_data(templ|=(1(15-cbite); write_com(0x36);write_com(0x30);void ds(u8 dz,u16 shu) u8 bai,ge,shi,s;bai=shu/100;s=shu%100;shi=s/10;ge=s%10; write_com(dz+0x80); write_data(0x30+bai); write_data(0x30+shi); write_data(.); write_
41、data(0x30+ge); delay_ms(5); void ds_1(u8 dz,u16 shu) u8 qian,bai,ge,shi; qian=shu/1000;bai=shu/100%10;shi=shu/10%10;ge=shu%10; write_com(dz+0x80); write_data(0x30+qian); write_data(0x30+bai); write_data(.); write_data(0x30+shi); write_data(0x30+ge); delay_ms(5); /鍵盤/ u8 key_can(void) u8 temp,a=30,nu
42、m; gpio_write(gpioa,0xf0); temp=gpio_readinputdata(gpioa); temp=temp&0xf0; if(temp!=0xf0) delayms(5); temp=gpio_readinputdata(gpioa);temp=temp&0xf0;if(temp!=0xf0) gpio_write(gpioa,0xfe);temp=gpio_readinputdata(gpioa); switch(temp) case 0xee: num=0;a=table2num;break; case 0xde: num=1;a=table2num;brea
43、k; case 0xbe: num=2;a=table2num;break; case 0x7e: num=3;a=table2num;break; while(temp!=0xfe) temp=gpio_readinputdata(gpioa); temp=temp&0xfe; gpio_write(gpioa,0xfd); temp=gpio_readinputdata(gpioa); switch(temp) case 0xed: num=4;a=table2num;break; case 0xdd: num=5;a=table2num;break; case 0xbd: num=6;a
44、=table2num;break; case 0x7d: num=7;a=table2num;break; while(temp!=0xfd) temp=gpio_readinputdata(gpioa); temp=temp&0xfd; gpio_write(gpioa,0xfb); temp=gpio_readinputdata(gpioa); switch(temp) case 0xeb: num=8;a=table2num;break; case 0xdb: num=9;a=table2num;break; case 0xbb: num=10;a=table2num;break; ca
45、se 0x7b: num=11;a=table2num;break; while(temp!=0xfb) temp=gpio_readinputdata(gpioa); temp=temp&0xfb; gpio_write(gpioa,0xf7); temp=gpio_readinputdata(gpioa); switch(temp) case 0xe7: num=12;a=table2num;break; case 0xd7: num=13;a=table2num;break; case 0xb7: num=14;a=table2num;break; case 0x77: num=15;a
46、=table2num;break; while(temp!=0xf7) temp=gpio_readinputdata(gpioa); temp=temp&0xf7; return a; void p_i_d(void)double ik,dk,dpk; double pk;u32 m2;kp=1000.0; /以下三個(gè)參數(shù)就是需要調(diào)的參數(shù)ki=25.0;kd=0.0;/set_wendu=chuan_wendu;set_wendu=chuan_wendu; measure_wendu=wendu; ek=set_wendu-measure_wendu;/這兩個(gè)溫度值,set_wendu來自于
47、鍵盤的設(shè)定值,measure_wendu來自于adc if(measure_wendu40.0) if(ek50.0) if(set_wendu-measure_wendu)1.5|(set_wendu-measure_wendu)=-1.5&(set_wendu-measure_wendu)=1.5) dpk=kp*pk+ki*ik+kd*dk; else if(measure_wendu0.2|(set_wendu-measure_wendu)=-0.2&(set_wendu-measure_wendu)=0.2) dpk=kp*pk+ki*ik+kd*dk; pout=pout+dpk;
48、if(pout=0) pout=0; tim4_configuration(pout); m2=pout; usart_senddata(usart1,m2/10000+0x30);while(usart_getflagstatus(usart1,usart_flag_txe)=reset); usart_senddata(usart1,m2/1000%10+0x30);while(usart_getflagstatus(usart1,usart_flag_txe)=reset); usart_senddata(usart1,m2/100%10+0x30); while(usart_getflagstatus(usart1,usart_flag_txe)=reset); usart_senddata(usart1,m2/10%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 禽類屠宰行業(yè)安全生產(chǎn)管理考核試卷
- 漁業(yè)機(jī)械化養(yǎng)殖機(jī)械化與養(yǎng)殖設(shè)備維護(hù)與管理考試考核試卷
- 空間站用紡織品考核試卷
- 糖果企業(yè)市場推廣與廣告策略考核試卷
- 礦山機(jī)械出口策略與全球市場布局考核試卷
- 電力系統(tǒng)電力系統(tǒng)繼電保護(hù)配置考核試卷
- 箱包企業(yè)社會(huì)責(zé)任實(shí)踐考核試卷
- 稀土金屬在稀土醫(yī)療材料中的應(yīng)用考核試卷
- 遼寧工程職業(yè)學(xué)院《流體力學(xué)及其工程應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省蘇州市第三中學(xué)2024-2025學(xué)年秋初三下學(xué)期期末測試卷化學(xué)試題(一診康德卷)(高清版)含解析
- 2024年國家義務(wù)教育質(zhì)量監(jiān)測-八年級心理健康考核試題
- 第12課《終身學(xué)習(xí) 持續(xù)發(fā)展》第2框《信息素養(yǎng)助力發(fā)展》-【中職專用】《心理健康與職業(yè)生涯》同步課堂課件
- 再生資源消防安全培訓(xùn)
- 高考地理二輪復(fù)習(xí)課件專題3S技術(shù)
- 安全生產(chǎn)治本攻堅(jiān)三年行動(dòng)主要任務(wù)
- 2024年濟(jì)南城市發(fā)展集團(tuán)投資開發(fā)有限公司招聘筆試參考題庫含答案解析
- 2024年贛州市章貢區(qū)文化旅游發(fā)展集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 糧食熏蒸操作要點(diǎn)培訓(xùn)課件
- 同等學(xué)力申碩-同等學(xué)力(政治學(xué))筆試(2018-2023年)真題摘選含答案
- 園林植物的識(shí)別與應(yīng)用-灌木園林植物的識(shí)別與應(yīng)用
- 親子鑒定報(bào)告樣本
評論
0/150
提交評論