基于單片機(jī)的恒溫控制系統(tǒng)_第1頁(yè)
基于單片機(jī)的恒溫控制系統(tǒng)_第2頁(yè)
基于單片機(jī)的恒溫控制系統(tǒng)_第3頁(yè)
基于單片機(jī)的恒溫控制系統(tǒng)_第4頁(yè)
基于單片機(jī)的恒溫控制系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

摘要:隨著微機(jī)測(cè)量和控制技術(shù)的迅速開展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與控制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對(duì)溫度的控制水平。溫度是工業(yè)控制中主要的被控參數(shù)之一,特別是在冶金、化工、建材、食品、機(jī)械等工業(yè)中,具有舉足重輕的作用,因此,溫度控制系統(tǒng)是典型的控制系統(tǒng)。本文介紹了基于單片機(jī)AT89C51的溫度控制系統(tǒng)的設(shè)計(jì)方案與軟硬件實(shí)現(xiàn),論述了一種以STC89C52單片機(jī)為主控制單元,以DS18B20為溫度傳感器的溫度自動(dòng)控制系統(tǒng)。該控制系統(tǒng)可以根據(jù)設(shè)定的溫度,通過PID算法調(diào)節(jié)和控制pwm波的輸出,控制晶閘管導(dǎo)通時(shí)間從而控制水溫的自動(dòng)調(diào)節(jié),系統(tǒng)設(shè)計(jì)了相關(guān)的硬件電路和相關(guān)應(yīng)用程序。硬件電路主要包括STC89C52單片機(jī)最小系統(tǒng),DS18b20測(cè)溫電路、鍵盤電路.LCD液晶顯示電路,加熱功率電路等。系統(tǒng)程序主要包括主程序,溫度處理子程序、按鍵處理程序、LCD顯示程序等,pwm波輸出程序。給出了系統(tǒng)總體框架、程序流程圖和Proteus仿真結(jié)果,并在硬件平臺(tái)上實(shí)現(xiàn)了所設(shè)計(jì)的功能。關(guān)[關(guān)鍵詞]單片機(jī);溫度控制系統(tǒng);溫度傳感器;PID控制算法。目錄1.選題背景----------------------------------------------------------22.設(shè)計(jì)要求----------------------------------------------------------22.1設(shè)計(jì)任務(wù)-----------------------------------------------------22.2設(shè)計(jì)要求----------------------------------------------------23.方案論證比--------------------------------------------------------33.1溫度檢測(cè)電路方案選擇-----------------------------------------33.2顯示電路方案選擇--------------------------------------------33.3加熱方案選擇------------------------------------------------33.4控制方法方案選擇--------------------------------------------34.總體方案及工作原理----------------------------------------------45.系統(tǒng)硬件設(shè)計(jì)-----------------------------------------------------45.1溫度傳感器電路單元------------------------------------------55.2輸入電壓?jiǎn)卧?-----------------------------------------------65.3液晶顯示單元-------------------------------------------------65.4溫度上下限模塊單元------------------------------------------75.5主控制單元設(shè)計(jì)----------------------------------------------76.系統(tǒng)軟件設(shè)計(jì)-----------------------------------------------------96.1PID控制程序算法--------------------------------------------96.2PWM脈寬調(diào)制技術(shù)--------------------------------------------126.3控制系統(tǒng)程序-----------------------------------------------137.設(shè)計(jì)結(jié)論及總結(jié)---------------------------------------------------19參考文獻(xiàn)資料-------------------------------------------------------211.選題背景對(duì)于不同場(chǎng)所、不同工藝、所需溫度上下范圍不同、精度不同,那么采用的測(cè)溫元件、測(cè)溫方法以及對(duì)溫度的控制方法也將不同;產(chǎn)品工藝不同、控制溫度的精度不同、時(shí)效不同,那么對(duì)數(shù)據(jù)采集的精度和采用的控制算法也不同,因而,對(duì)溫度的測(cè)控方法多種多樣。技術(shù)和微型計(jì)算機(jī)的迅速開展,微機(jī)測(cè)量和控制技術(shù)也得到了迅速的開展和廣泛的應(yīng)用。利用微機(jī)對(duì)溫度進(jìn)行測(cè)控的技術(shù),也便隨之而生,并得到日益開展和完善,越來越顯示出其優(yōu)越性。目前,單片微機(jī)已普遍地作用于生產(chǎn)過程的自動(dòng)控制領(lǐng)域中。單片機(jī)以其體積小、價(jià)格低廉、可用其構(gòu)成計(jì)算機(jī)控制系統(tǒng)中的智能控制單元和可靠性高等特點(diǎn),受到廣闊工程技術(shù)人員的重視。溫度是生產(chǎn)過程中最常見的物理量,許多生產(chǎn)過程是以溫度作為其被控參數(shù)的。因此,溫度控制系統(tǒng)是典型的控制系統(tǒng)2.課題設(shè)計(jì)要求:2.1設(shè)計(jì)任務(wù)設(shè)計(jì)并制作一個(gè)水溫自動(dòng)控制系統(tǒng),控制對(duì)象為300W或400W電阻爐,容器為薄壁不銹鋼可以加溫的器皿。2.2設(shè)計(jì)要求根本要求〔1〕調(diào)溫功能,水溫可以在0~100℃范圍內(nèi)由人工設(shè)定,人工設(shè)定溫度后系統(tǒng)自動(dòng)控制加熱或降溫,最小區(qū)分度為0.1℃,所測(cè)溫度和實(shí)際溫度偏差≤1℃?!?〕恒溫功能,在環(huán)境溫度變化時(shí)〔例如用電風(fēng)扇降溫,電壓波動(dòng)〕實(shí)現(xiàn)自動(dòng)控制,以保持容器內(nèi)根據(jù)設(shè)定的溫度保持根本不變?!?〕用LCD或LED顯示:水的設(shè)定溫度、實(shí)際溫度、工作時(shí)間等參數(shù)信息。2.2.2發(fā)揮局部〔1〕采用適當(dāng)?shù)目刂品椒ǎ?dāng)設(shè)定溫度突變〔由70℃提高到90℃〕時(shí),減小系統(tǒng)的調(diào)節(jié)時(shí)間和超調(diào)量?!?〕采用適當(dāng)?shù)目刂品椒?,?dāng)突加涼水?dāng)_動(dòng)時(shí),減小系統(tǒng)的調(diào)節(jié)時(shí)間和超調(diào)量。〔3〕溫度控制的靜態(tài)誤差≤0.5℃。3.方案論證比擬3.1溫度檢測(cè)電路的方案選擇:方案一:用普通半導(dǎo)體溫度傳感器作為敏感元件,再結(jié)合電壓放大器和AD轉(zhuǎn)換器將感應(yīng)到的溫度數(shù)值轉(zhuǎn)換為數(shù)字量存儲(chǔ)在某一單元內(nèi)。但由于該方案所需元件較多,且電路較繁,調(diào)試起來較復(fù)雜,所以舍之不用。方案二:使用數(shù)字溫度傳感器DS18B20檢測(cè)溫度,內(nèi)含AD轉(zhuǎn)換器,因此線路連接十分簡(jiǎn)單,它無需其他外加電路,直接輸出數(shù)字量,可直接與單片機(jī)通信,讀取測(cè)溫?cái)?shù)據(jù),電路十分簡(jiǎn)單,它能夠到達(dá)0.5℃的固有分辨率,使用讀取溫度暫存存放器的方法還能到達(dá)0.2℃以上精度,應(yīng)用方便,這樣的電路主要工作量就集中到了單片機(jī)軟件編程上,故我們選用該方案。3.2顯示電路的方案選擇:方案一:使用數(shù)碼管顯示,通過數(shù)碼管顯示被測(cè)溫度和設(shè)定溫度。該方案程序簡(jiǎn)單,但硬件占用單片機(jī)I/O口較多,對(duì)于盡量節(jié)約端口,讓線路簡(jiǎn)單來說不是好方法,而且顯示也不夠直觀靈活,只能顯示數(shù)字,不能顯示漢字顯示功能提示,故不適合本次設(shè)計(jì)應(yīng)用。方案二:使用液晶屏lcd12864,可以顯示字母,數(shù)字及漢字,而且一次可以顯示4行,顯示很直觀,通過字幕顯示模式、溫度、曲線。該方案程序較復(fù)雜,而且lcd12864的價(jià)格昂貴,對(duì)于節(jié)約本錢的角度來說,我們選擇放棄選擇方案二。方案三:使用液晶屏1602顯示,可以顯示設(shè)定溫度及測(cè)量溫度,但顯示時(shí)1602能顯示兩行能顯示字符及數(shù)字,不能顯示漢字及曲線,完全滿足本次設(shè)計(jì)的要求,而且本錢低廉,設(shè)計(jì)簡(jiǎn)單可靠,應(yīng)選擇方案三。3.3加熱方案的選擇:方案一:使用電熱爐進(jìn)行加熱,控制電爐的功率即可控制加熱速度,當(dāng)水溫過高時(shí),關(guān)掉電爐即可,但考慮到電爐本錢較高,且精度不好控制,故不選用。方案二:固態(tài)繼電器控制加熱器工作,固態(tài)繼電器使用非常簡(jiǎn)單,而且沒有觸點(diǎn),無需外加光耦,自身就可以實(shí)現(xiàn)電氣隔離,還可以頻繁動(dòng)作。可以使用類似pwm的方式,通過控制固態(tài)繼電器的開,斷時(shí)間比來到達(dá)控制加熱器功率的目的,適合功率不大精度不高,簡(jiǎn)易水溫控制系統(tǒng)。方式三:是使用可控硅控制加熱器的工作??煽毓枋且环N半控器件,通過控制導(dǎo)通角的方式來控制,對(duì)每個(gè)周期的交流電進(jìn)行控制,因?yàn)閷?dǎo)通角連續(xù)可調(diào),故控制精度較高,且元件廉價(jià),易于制作,我們選擇方案三。3.4控制方法選擇方案:方案一:采用普通的控制方法,即隨著水溫的變化調(diào)節(jié)溫度,但局限性太小,由于水溫變化快,且慣性大,不易控制精度,故采用普通控制方法顯得力不從心。方案二:采用PWM控制加PID算法,通過采用PWM可以產(chǎn)生一個(gè)PWM波形,而PWM波形的占空比是通過PID算法調(diào)節(jié),這樣就可以調(diào)節(jié)加熱棒的功率進(jìn)而控制溫度的變化,從而使精度提高,我們選擇方案二。4.總體方案及工作原理溫度傳感器DS18B20從設(shè)備環(huán)境的不同位置采集溫度,單片機(jī)AT89S51獲取采集的溫度值,經(jīng)處理后得到當(dāng)前環(huán)境中一個(gè)比擬穩(wěn)定的溫度值,再根據(jù)當(dāng)前設(shè)定的溫度上下限值,通過加熱和降溫對(duì)當(dāng)前溫度進(jìn)行調(diào)整。當(dāng)采集的溫度經(jīng)處理后超過設(shè)定溫度的上限時(shí),,當(dāng)采集的溫度經(jīng)處理后低于設(shè)定溫度的下時(shí),單片機(jī)通過控制晶閘管開啟升溫設(shè)備(加熱器)。系統(tǒng)總體的原理框圖如下;PC機(jī)PC機(jī)MAX232電平轉(zhuǎn)換芯片MAX232電平轉(zhuǎn)換芯片鍵盤電路鍵盤電路AT89S518BITCPU數(shù)據(jù)顯示AT89S518BITCPU數(shù)據(jù)顯示DS18B20溫度芯片數(shù)據(jù)傳輸DS18B20溫度芯片數(shù)據(jù)傳輸輸入電源輸入電源加熱器雙向可控硅加熱器雙向可控硅系統(tǒng)工作原理框圖5.系統(tǒng)硬件設(shè)計(jì)對(duì)題目進(jìn)行深入的分析和思考,可以將整個(gè)系統(tǒng)硬件總體分為以下幾個(gè)方面:5.1溫度傳感器電路單元測(cè)溫電路是使用DS18b20數(shù)字式溫度傳感器,它無需其他的外加電路,直接輸出數(shù)字量,可直接與單片機(jī)通信,讀取測(cè)溫?cái)?shù)據(jù),電路十分簡(jiǎn)單。它能夠到達(dá)0.5的固有分辨率,使用讀取溫度的暫存存放器的方法還能到達(dá)0.2以上的精度。DS18B20溫度傳感器只有三根外引線:?jiǎn)尉€數(shù)據(jù)傳輸總線端口DQ,外供電源線VDD,共用地線GND。外部供電方式(VDD接+5V,且數(shù)據(jù)傳輸總線接4.7k的上拉電阻。綜上,在本系統(tǒng)中我采用溫度芯片DS18B20測(cè)量溫度。該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,且此元件線形較好。在0—100攝氏度時(shí),最大線形偏差小于1攝氏度。該芯片直接向單片機(jī)傳輸數(shù)字信號(hào),便于單片機(jī)處理及控制。DS18B20接口電路DS18B20實(shí)物圖5.2輸入電壓?jiǎn)卧刂葡到y(tǒng)主控制局部電源需要用5V直流電源供電,其電路所示,把頻率為50Hz、有效值為220V的單相交流電壓轉(zhuǎn)換為幅值穩(wěn)定的5V直流電壓。其主要原理是把單相交流電經(jīng)過電源變壓器、整流電路、濾波電路、穩(wěn)壓電路轉(zhuǎn)換成穩(wěn)定的直流電壓。由于輸入電壓為電網(wǎng)電壓,一般情況下所需直流電壓的數(shù)值和電網(wǎng)電壓的有效值相差較大,因而電源變壓器的作用顯現(xiàn)出來起到降壓作用。降壓后還是交流電壓,所以需要整流電路把交流電壓轉(zhuǎn)換成直流電壓。由于經(jīng)整流電路整流后的電壓含有較大的交流分量,會(huì)影響到負(fù)載電路的正常工作。需通過低通濾波電路濾波,使輸出電壓平滑。穩(wěn)壓電路的功能是使輸出直流電壓根本不受電網(wǎng)電壓波動(dòng)和負(fù)載電阻變化的影響,從而獲得穩(wěn)定性足夠高的直流電壓。本電路使用集成穩(wěn)壓芯片7805解決了電源穩(wěn)壓?jiǎn)栴}。5.3液晶顯示單元LCM1602是2行×16個(gè)字符的字符型LCD顯示器,它由32個(gè)字符點(diǎn)陣塊組成,每個(gè)字符點(diǎn)陣塊由5×7或5×10個(gè)點(diǎn)陣組成,可以顯示ASCII碼表中的所有可視的字符。它內(nèi)置了字符產(chǎn)生器ROM(CharacterGeneratorROM,CGROM)、字符產(chǎn)生器RAM(CharacterGeneratorRAM,CGRAM)和顯示數(shù)據(jù)RAM(DataDisplayRAM,DDRAM)。CGROM中內(nèi)置了192個(gè)常用字符的字模,CGRAM包含8個(gè)字節(jié)的RAM,可存放用戶自定義的字符,DDRAM就是用來存放待顯示的字符代碼。P3.0、P3.1、P3.2接LCD1602的三個(gè)控制引腳,P4口作為L(zhǎng)CD1602的數(shù)據(jù)接口。通過對(duì)控制引腳的控制,從而實(shí)現(xiàn)溫度顯示的功能。5.4溫度上下限鍵盤設(shè)置模塊溫度上下限設(shè)置模塊包括四個(gè)按鍵:〔1〕模式切換鍵:進(jìn)行模式之間的切換,模式包括設(shè)置溫度上限模式、設(shè)置溫度下限模式,每次按下該鍵就在這兩種模式之間切換?!?〕溫度上下限增加鍵:增加溫度上下限的值。〔3〕溫度上下限減少鍵:減少溫度上下限的值?!?〕溫控開關(guān)鍵:是溫控與非溫控之間的切換鍵。它用于設(shè)置是否進(jìn)行溫度控制即是否讓越界的溫度值觸發(fā)加熱器的啟動(dòng)5.5主控制單元設(shè)計(jì):AT89S51是一個(gè)低功耗,高性能CMOS8位單片機(jī),片內(nèi)含8kBytesISP(In-systemprogrammable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。AT89S51具有如下特點(diǎn):40個(gè)引腳,4kBytesFlash片內(nèi)程序存儲(chǔ)器,128bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器〔RAM〕,32個(gè)外部雙向輸入/輸出〔I/O〕口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗〔WDT〕電路,片內(nèi)時(shí)鐘振蕩器。此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。由于系統(tǒng)控制方案簡(jiǎn)單,數(shù)據(jù)量也不大,考慮到電路的簡(jiǎn)單和本錢等因素,因此在本設(shè)計(jì)中選用ATMEL公司的AT89S51單片機(jī)作為主控芯片。主控模塊采用單片機(jī)最小系統(tǒng)是由于AT89S51芯片內(nèi)含有4kB的E2PROM,無需外擴(kuò)存儲(chǔ)器,電路簡(jiǎn)單可靠,其時(shí)鐘頻率為0~24MHz,并且價(jià)格低廉,批量?jī)r(jià)在10元以內(nèi)。其主要功能特性:兼容MCS-51指令系統(tǒng)4k可反復(fù)擦寫(>1000次〕ISPFlashROM32個(gè)雙向I/O口4.5-5.5V工作電壓2個(gè)16位可編程定時(shí)/計(jì)數(shù)器時(shí)鐘頻率0-33MHz全雙工UART串行中斷口線128x8bit內(nèi)部RAM2個(gè)外部中斷源低功耗空閑和省電模式中斷喚醒省電模式3級(jí)加密位看門狗〔WDT〕電路軟件設(shè)置空閑和省電功能靈活的ISP字節(jié)和分頁(yè)編程雙數(shù)據(jù)存放器指針可以看出AT89S51提供以下標(biāo)準(zhǔn)功能:4K字節(jié)Flash閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32個(gè)I/O口線,看門狗〔WDT〕,兩個(gè)數(shù)據(jù)指針,兩個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘。同時(shí),AT89S51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式何在RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直接到一個(gè)硬件復(fù)位。AT89S51單片機(jī)引腳圖6.系統(tǒng)軟件設(shè)計(jì)6.1PID控制程序算法6.1.1PID算法簡(jiǎn)介PID控制算法是控制理論中應(yīng)用很廣泛的一種算法,對(duì)于一般控制系統(tǒng)來說,PID算法從某種意義來說具有通用性,對(duì)各種系統(tǒng)具有廣泛的適用性,通過現(xiàn)場(chǎng)的參數(shù)調(diào)試,可以到達(dá)很好的控制效果。對(duì)于我們這次水溫控制系統(tǒng)的設(shè)計(jì),我們同樣也可以使用PID控制算法,具體算法如下:e(i)=t測(cè)-t設(shè)E=〔2〕算法中,u〔i〕為當(dāng)時(shí)的功率輸出。T為采樣時(shí)間,E為誤差積累,KP為比例常數(shù),Ti為積分常數(shù),Td為微分常數(shù)。根據(jù)實(shí)際系統(tǒng),調(diào)節(jié)這三個(gè)常數(shù),可以到達(dá)很好的效果。大多數(shù)的溫度控制系統(tǒng)可以看作一階純滯后環(huán)節(jié),由于本系統(tǒng)純滯后時(shí)間較小,故可采用PID〔比例、積分、微分〕控制算法實(shí)施控制。6.1.2PID控制作用PID是比例〔P〕、積分〔I〕和微分〔D〕3個(gè)控制作用的組合。連續(xù)系統(tǒng)PID控制器的微分方程為:y(t)=KPP[e(t)+]〔4-1〕式中y(t)為控制器的輸出;e(t)為控制器的輸入;KP比例放大系數(shù);TI為控制器的積分時(shí)間常數(shù);TD為控制器的微分時(shí)間常數(shù)。顯然,KP越大,控制器的控制作用越強(qiáng);只要e(t)不為0,積分項(xiàng)會(huì)因積分而使控制器的輸出變化;只要e(t)有變化的趨勢(shì),控制器就會(huì)在微分作用下,在偏差出現(xiàn)且偏差不大時(shí)提前給輸出一個(gè)較強(qiáng)的控制作用。6.1.3PID算法的微機(jī)實(shí)現(xiàn)由于微機(jī)控制系統(tǒng)是一種時(shí)間離散控制系統(tǒng),故必須把微分方程離散化為差分方程,最終寫出遞推公式才能直接應(yīng)用。顯然:〔4-2〕〔4-3〕于是,KP{e(n)+EQ+[e(n)-e(n-1)]}〔4-4〕式中Δt=T,為采樣周期;e(t)為第n次采樣的偏差值;e(n-1)為第(n-1)次采樣時(shí)的偏差值;n為采樣序列,n=0,1,2,…。由式〔4-4〕可以看出:計(jì)算一次Y〔n〕,不僅需要的存儲(chǔ)器空間大,而且計(jì)算量也很大,于是進(jìn)一步寫出遞推公式:由Y〔n-1〕=KP{e(n-1)++[e(n-1)-e(n-2)]}〔4-5〕由式〔4〕減去式〔5〕得:ΔY〔n〕=Y(n)-Y(n-1)=KP{[e(n)-e(n-1)]+[e(n)-2e(n-1)+e(n-2)]}=KP[e(n)-e(n-1)]+KIe(n)+KD[e(n)-2e(n-1)+e(n-2)]〔4-6〕或Y(n)=Y(n-1)+KP[e(n)-e(n-1)]+KIe(n)+KD[e(n)-2e(n-1)+e(n-2)]〔4-7〕式中KI=KP,稱為積分常數(shù);KD=KP,稱為微分常數(shù)。數(shù)字PID控制的參數(shù)選擇一、數(shù)字PID參數(shù)的原那么要求和整定方法1、原那么要求:被控過程是穩(wěn)定的,能迅速和準(zhǔn)確地跟蹤給定值的變化,超調(diào)量小,在不同干下系統(tǒng)輸出應(yīng)能保持在給定值,操作變量不宜過大,在系統(tǒng)與環(huán)境參數(shù)發(fā)生變化控制應(yīng)保持穩(wěn)定。顯然,要同時(shí)滿足上述各項(xiàng)要求是困難的,必須根據(jù)具體過程的要求,滿足主要方面,并兼顧其它方面。2、PID參數(shù)整定方法:理論計(jì)算法――依賴被控對(duì)象準(zhǔn)確的數(shù)學(xué)模型〔一般較難做到〕工程整定法――不依賴被控對(duì)象準(zhǔn)確的數(shù)學(xué)模型,直接在控制系統(tǒng)中進(jìn)行現(xiàn)場(chǎng)整定〔簡(jiǎn)單易行〕二、常用的簡(jiǎn)易工程整定法1、擴(kuò)充臨界比例度法――適用于有自平衡特性的被控對(duì)象整定數(shù)字調(diào)節(jié)器參數(shù)的步驟是:(1)選擇采樣周期為被控對(duì)象純滯后時(shí)間的十分之一以下。(2)去掉積分作用和微分作用,逐漸增大比例度系數(shù)直至系統(tǒng)對(duì)階躍輸入的響應(yīng)到達(dá)臨界振蕩狀態(tài)(穩(wěn)定邊緣),記下此時(shí)的臨界比例系數(shù)及系統(tǒng)的臨界振蕩周期。(3)選擇控制度。通常,當(dāng)控制度為1.05時(shí)。就可以認(rèn)為DDC與模擬控制效果相當(dāng)。(4)根據(jù)選定的控制度,查表5-3-2求得T、KP、TI、TD的值。2、擴(kuò)充響應(yīng)曲線法――適用于多容量自平衡系統(tǒng)參數(shù)整定步驟如下:(1)讓系統(tǒng)處于手動(dòng)操作狀態(tài),將被調(diào)量調(diào)節(jié)到給定值附近,并使之穩(wěn)定下來,然后突然改變給定值,給對(duì)象一個(gè)階躍輸入信號(hào)。(2)用記錄儀表記錄被調(diào)量在階躍輸入下的整個(gè)變化過程曲線,如下圖。(3)在曲線最大斜率處作切線,求得滯后時(shí)間τ,被控對(duì)象時(shí)間常數(shù)Tτ以及它們的比值Tτ/τ。(4)由求得的τ、Tτ及Tτ/τ查表5-3-3,即可求得數(shù)字調(diào)節(jié)器的有關(guān)參數(shù)KP、TI、TD及采樣周期T。3、歸一參數(shù)整定法令,,。那么增量型PID控制的公式簡(jiǎn)化為改變KP,觀察控制效果,直到滿意為止。5.4數(shù)字PID控制的工程實(shí)現(xiàn)6.2PWM脈寬調(diào)制技術(shù)脈寬調(diào)制〔PWM〕根本原理:控制方式就是對(duì)逆變電路開關(guān)器件的通斷進(jìn)行控制,使輸出端得到一系列幅值相等的脈沖,用這些脈沖來代替正弦波或所需要的波形。也就是在輸出波形的半個(gè)周期中產(chǎn)生多個(gè)脈沖,使各脈沖的等值電壓為正弦波形,所獲得的輸出平滑且低次諧波少。按一定的規(guī)那么對(duì)各脈沖的寬度進(jìn)行調(diào)制,即可改變逆變電路輸出電壓的大小,也可改變輸出頻率。例如,把正弦半波波形分成N等份,就可把正弦半波看成由N個(gè)彼此相連的脈沖所組成的波形。這些脈沖寬度相等,都等于∏/n,但幅值不等,且脈沖頂部不是水平直線,而是曲線,各脈沖的幅值按正弦規(guī)律變化。如果把上述脈沖序列用同樣數(shù)量的等幅而不等寬的矩形脈沖序列代替,使矩形脈沖的中點(diǎn)和相應(yīng)正弦等分的中點(diǎn)重合,且使矩形脈沖和相應(yīng)正弦局部面積〔即沖量〕相等,就得到一組脈沖序列,這就是PWM波形??梢钥闯?,各脈沖寬度是按正弦規(guī)律變化的。根據(jù)沖量相等效果相同的原理,PWM波形和正弦半波是等效的。對(duì)于正弦的負(fù)半周,也可以用同樣的方法得到PWM波形。在PWM波形中,各脈沖的幅值是相等的,要改變等效輸出正弦波的幅值時(shí),只要按同一比例系數(shù)改變各脈沖的寬度即可,因此在交-直-交變頻器中,整流電路采用不可控的二極管電路即可,PWM逆變電路輸出的脈沖電壓就是直流側(cè)電壓的幅值。根據(jù)上述原理,在給出了正弦波頻率,幅值和半個(gè)周期內(nèi)的脈沖數(shù)后,PWM波形各脈沖的寬度和間隔就可以準(zhǔn)確計(jì)算出來。按照計(jì)算結(jié)果控制電路中各開關(guān)器件的通斷,就可以得到所需要的PWM波形。6.3控制系統(tǒng)程序系統(tǒng)主函數(shù):#include<reg52.h> //包含51單片機(jī)頭文件#include<math.h> //包含數(shù)學(xué)計(jì)算頭文件#include"Delay.h" //包含用戶頭文件delay.h,作用:延時(shí)#include"LCD1602.h" //包含用戶頭文件LCD_1602.h,作用:驅(qū)動(dòng)1602液晶顯示器顯示#include"DS18B20.h" //包含用戶頭文件ds18b20.h,作用:驅(qū)動(dòng)溫度傳感器測(cè)量當(dāng)前溫度#include"KeyScan.h" //包含用戶頭文件Keyscan.h,作用:鍵盤掃描,獲取按鍵值#defineucharunsignedchar //用uchar代替unsignedchar#defineuintunsignedint //用uint代替unsignedintsbitkaitong=P2^0; //定義電熱杯開通關(guān)斷引腳intPrevError=0; //定義上上一次偏差值intLastError=0; //定義上一次偏差值intError=0; //定義當(dāng)前偏差值intPError,IError,DError; //中間變量intLastValue; //上一次的輸出值intNowValue; //本次的輸出值intFull,Part; //加熱占空比調(diào)節(jié)參數(shù)intSetValue=600; //初始化溫度值60度floatProportion=0.5; //定義比例參數(shù)floatIntegral=0.1; //定義積分參數(shù)floatDerivative=1; //定義微分參數(shù)intPIDCalc(intNextValue) //增量式PID計(jì)算局部{PrevError=LastError; //將上一次偏差LastError賦給上上一次偏差PrevErrorLastError=Error; //將當(dāng)前偏差Error賦給上一次偏差LastError Error=keyscan()-NextValue;//將新的偏差賦給當(dāng)前偏差Error偏差是絕對(duì)值,有錯(cuò)LastValue=NowValue; //將本次輸出值賦給上一次輸出值if(Error>=100) {return(20); }elseif((Error<100)&&(Error>=50)) {return(14); }elseif((Error<50)&&(Error>=0)) {PError=Proportion*(Error-LastError);IError=Integral*Error;DError=Derivative*(Error-2*LastError+PrevError);NowValue=PError+IError+DError+LastValue; returnNowValue;//計(jì)算PID控制值 }elsereturn0;}voidmain(){//uintccc=100;LCD_init(); //初始化LCDsetPosition(1,2); //從第1行第2個(gè)字符位開始顯示“Welcomto〞prints("Welcomto");setPosition(2,5); //從第1行第2個(gè)字符位開始顯示“SUST〞prints("SUST");delayl(1000); //延時(shí),使歡送界面在屏幕上停留片刻LCD_init(); //初始化LCDwhile(1) { Part=PIDCalc(readtemp()); Full++; //加1, if(Full>20) //如果full大于20,那么復(fù)位為1 { Full=1; } if(Full<=Part) //判斷PID計(jì)算值,如果Full小于等于該值,那么開通發(fā)熱管;否那么關(guān)斷kaitong=0;elsekaitong=1; /*從第2行第2字符位開始顯示設(shè)定溫度值*/setPosition(1,0);IntToStr(keyscan(),buffer,3);//處理溫度值,以便顯示// prints("SV:"); //顯示"SET:"printc(buffer[0]); //顯示十位printc(buffer[1]); //顯示個(gè)位printc('.'); //顯示小數(shù)點(diǎn)printc(buffer[2]); //顯示十分位printc(0xDF); //顯示攝氏度符號(hào)右上角的小圓圈printc('C'); //顯示攝氏度符號(hào)“C〞 /*從第1行第2字符位開始顯示當(dāng)前溫度值*/setPosition(1,8);IntToStr(readtemp(),buffer,3); //處理溫度值,以便顯示// prints("PV:"); //顯示"CUR:"printc(buffer[0]); //顯示十位printc(buffer[1]); //顯示個(gè)位printc('.'); //顯示小數(shù)點(diǎn)printc(buffer[2]); //顯示十分位printc(0xDF); //顯示攝氏度符號(hào)右上角的小圓圈printc('C'); //顯示攝氏度符號(hào)“C〞setPosition(2,0);IntToStr(NowValue,buffer,3); //處理溫度值,以便顯示printc(buffer[0]); //顯示十位printc(buffer[1]); //顯示個(gè)位printc(buffer[2]);setPosition(2,4);IntToStr(PError,buffer,3); //處理溫度值,以便顯示printc(buffer[0]); //顯示十位printc(buffer[1]); //顯示個(gè)位printc(buffer[2]);setPosition(2,8);IntToStr(IError,buffer,3); //處理溫度值,以便顯示printc(buffer[0]); //顯示十位printc(buffer[1]); //顯示個(gè)位printc(buffer[2]);setPosition(2,12);IntToStr(DError,buffer,3); //處理溫度值,以便顯示printc(buffer[0]); //顯示十位printc(buffer[1]); //顯示個(gè)位printc(buffer[2]); }}延時(shí)程序#ifndefDelay#defineDelay#defineuintunsignedint#defineucharunsignedcharvoiddelayl(uintn) //長(zhǎng)延時(shí)n毫秒{uinti,j;for(i=n;i>0;i--)for(j=114;j>0;j--);}voiddelays(uchari)//短延時(shí){while(i--);}#endif6.3.3LCD1602驅(qū)動(dòng)程序#ifndefLCD1602#defineLCD1602#include"Delay.h"/*********端口定義*****************/sbitledrs=P2^3; //讀寫控制字,數(shù)據(jù)/命令,H/Lsbitleden=P2^5; //使能端控制字,高有效sbitledrw=P2^4; //讀/寫,H/L,1=讀,0=寫,ucharbuffer[3];voidwrite_com(ucharcom){ledrw=0;ledrs=0; P0=com;delays(200);leden=1;delays(200);leden=0;}voidwrite_data(uchardate){ledrw=0;ledrs=1; P0=date; //準(zhǔn)備數(shù)據(jù)delays(200);leden=1; //激活LCD〔Enabled〕delays(200);leden=0;}voidLCD_init() //初始化LCD{leden=0;write_com(0x38); //8位數(shù)據(jù)接口,兩行顯示write_com(0x0c); //顯示開關(guān)控制write_com(0x06); //輸入方式設(shè)置write_com(0x01); //清屏}voidsetPosition(ucharx,uchary){ucharpos;switch(x%2) { case1:pos=0x80+y;break;//第一行 case0:pos=0xc0+y;break;//第二行 }write_com(pos); //寫入定位命令}voidprintc(uchara) //寫入一個(gè)字符{write_data(a);}voidprints(uchar*str) //寫入字符串{uchari=0;while(str[i]!='\0'){write_data(str[i++]); //寫一個(gè)字符,指向下一個(gè)}}voidIntToStr(uintt,uchar*str,ucharn){uchara[5];chari,j;//取得整數(shù)值到數(shù)組a[0]=t/100;//百位 a[1]=(t/10)%10;//十位 a[2]=t%10;//個(gè)位 for(i=0;i<3;i++)//轉(zhuǎn)成ASCII碼+32 {a[i]=a[i]+'0'; }for(i=0;a[i]=='0'&&i<=3;i++); for(j=3-n;j<i;j++)//填充空格 { *str='';str++; }for(;i<3;i++) { *str=a[i];str++; }//參加有效的數(shù)字 *str='\0';}#endif6.3.4DS18B20驅(qū)動(dòng)程序#ifndefDS18B20#defineDS18B20#include"Delay.h"sbitDQ=P2^2;//定義通信端口ucharInit_DS18B20(void){ucharx=0; DQ=1;//DQ復(fù)位 delays(2);//稍做延時(shí) DQ=0;//將DQ拉低 delays(80);//精確延時(shí)大于480us DQ=1;//將DQ拉高delays(3); x=DQ;//稍做延時(shí)后如果x=0那么初始化成功,如果x=1那么初始化失敗delays(50);return(x);}intReadOneChar(void){uchari=0;uchardat=0; DQ=1; for(i=8;i>0;i--)//一個(gè)字節(jié)共8位,讀8次 { DQ=0;//給脈沖信號(hào),開始讀dat>>=1;

溫馨提示

  • 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論