單片機(jī)高精度溫度控制
2016/12/11 16:16:01??????點(diǎn)擊:
溫度控制是工業(yè)生產(chǎn)過程中經(jīng)常遇到的過程控制,有些工藝過程對其溫度的控制效果直接影響著產(chǎn)品的質(zhì)量,因而設(shè)計(jì)一種較為理想的溫度控制系統(tǒng)是非常有價(jià)值的。
一 系統(tǒng)設(shè)計(jì)方案的論證與比較
根據(jù)題目要求,電熱鍋爐溫度控制系統(tǒng)由核心處理模塊、溫度采集模塊、鍵盤顯示模塊、及控制執(zhí)行模塊等組成。
方案一 采用8031作為控制核心,以使用最為普遍的器件ADC0809作模數(shù)轉(zhuǎn)換,控制上使用對電阻絲加電使其升溫和開動風(fēng)扇使其降溫。此方案簡易可行,器件的價(jià)格便宜,但8031內(nèi)部沒有程序存儲器,需要擴(kuò)展,增加了電路的復(fù)雜性,且ADC0809是8位的模數(shù)轉(zhuǎn)換,不能滿足本題目的精度要求。
方案二 采用比較流行的AT89S51作為電路的控制核心,使用12位的高精度模數(shù)轉(zhuǎn)換器AD574A進(jìn)行數(shù)據(jù)轉(zhuǎn)換,控制電路部分采用PWM控制可控硅的通斷以實(shí)行對鍋爐溫度的連續(xù)控制,此方案電路簡單并且可以滿足題目中的各項(xiàng)要求的精度。
根據(jù)溫度變化慢,并且控制精度不易掌握的特點(diǎn),我們設(shè)計(jì)了以AT89S51單片機(jī)為檢測控制中心的電熱鍋爐溫度自動控制系統(tǒng)。溫度控制采用改進(jìn)的PID數(shù)字控制算法,顯示采用3位LED靜態(tài)顯示。該設(shè)計(jì)結(jié)構(gòu)簡單,控制算法新穎,控制精度高,有較強(qiáng)的通用性。所設(shè)計(jì)的控制系統(tǒng)有以下功能:
· 溫度控制設(shè)定波動范圍小于±1%,測量精度小于±1%,控制精度小于±2%,超調(diào)整量小于±4%;
· 實(shí)現(xiàn)控制可以升溫也可以降溫;
· 實(shí)時顯示當(dāng)前溫度值;
· 按鍵控制:設(shè)置復(fù)位鍵、運(yùn)行鍵、功能轉(zhuǎn)換鍵、加一鍵、減一鍵;
· 越限報(bào)警。
二 硬件電路設(shè)計(jì)
硬件電路主要有兩大部分組成:模擬部分和數(shù)字部分:從功能模塊上來分有:主機(jī)電路、數(shù)據(jù)采集電路、鍵盤顯示電路、控制執(zhí)行電路。
1 主機(jī)電路的設(shè)計(jì)
主機(jī)選用ATMEL公司的51系列單片機(jī)AT89S51來實(shí)現(xiàn),利用單片機(jī)軟件編程靈活、自由度大的特點(diǎn),力求用軟件完善各種控制算法和邏輯控制。本系統(tǒng)選用的AT89S51芯片時鐘可達(dá)12MHz,運(yùn)算速度快,控制功能完善。其內(nèi)部具有128字節(jié)RAM,而且內(nèi)部含有4KB的flash ROM 不需要外擴(kuò)展存儲器,可使系統(tǒng)整體結(jié)構(gòu)更為簡單、實(shí)用。
2 I/0通道的硬件電路的設(shè)計(jì)
就本系統(tǒng)來說,需要實(shí)時采集水溫?cái)?shù)據(jù),然后經(jīng)過A/D轉(zhuǎn)換為數(shù)字信號,送入單片機(jī)中的特定單元,然后一部分送去顯示;另一部分與設(shè)定值進(jìn)行比較,通過PID算法得到控制量并經(jīng)由單片機(jī)輸出去控制電熱鍋爐加熱或降溫。
2.1 數(shù)據(jù)采集電路的設(shè)計(jì)
數(shù)據(jù)采集電路主要由AD590, 0P07,74LS373,AD574A等組成。由于控制精度要求為0.1 度,而考慮到測量干擾和數(shù)據(jù)處理誤差,則溫度傳感器和AD 轉(zhuǎn)化器的精度應(yīng)更高才能保證控制精度的實(shí)現(xiàn),這個精度可處粗略定為0.1 度。故溫度傳感器需要能夠區(qū)分0.1 度;而對于AD 轉(zhuǎn)換器,由于測量范圍為40-90 度,以0.1 度作為響應(yīng)的AD 區(qū)分度要求,則AD 需要區(qū)分(90-40)/0.1=500 個數(shù)字量,顯然需要10 位以上的AD 轉(zhuǎn)換器。為此,選用高精度的12位AD574A。
為了達(dá)到測量高精度的要求,選用溫度傳感器AD590,AD590具有較高精度和重復(fù)性(重復(fù)性優(yōu)于0.1℃,其良好的非線形可以保證優(yōu)于0.1℃ 的測量精度,利用其重復(fù)性較好的特點(diǎn),通過非線形補(bǔ)償,可以達(dá)到0.1℃測量精度.)超低溫漂移高精度運(yùn)算放大器0P07將溫度一電壓信號進(jìn)行放大,便于A/D進(jìn)行轉(zhuǎn)換,以提高溫度采集電路的可靠性。
2.2 電控制執(zhí)行電路的設(shè)計(jì)
由輸出來控制電爐,電爐可以近似建立為具有滯后性質(zhì)的一階慣性環(huán)節(jié)數(shù)學(xué)模型。其傳遞函數(shù)形式為:
可控硅可以認(rèn)為是線形環(huán)節(jié)實(shí)現(xiàn)對水溫的控制。單片機(jī)輸出與電爐功率分別屬于弱電與強(qiáng)電部分,需要進(jìn)行隔離處理,這里采用光耦元件TLP521 在控制部分進(jìn)行光電隔離,此外采用變壓器隔離實(shí)現(xiàn)弱強(qiáng)電的電源隔離。
單片機(jī)PWM 輸出電平為0 時,光耦元件導(dǎo)通,從而使三極管形成有效偏置而導(dǎo)通,通過整流橋的電壓經(jīng)過集電極電阻以及射集反向偏壓,有7V 左右的電壓加在雙向可控硅控制端,從而使可控硅導(dǎo)通,交流通路形成,電阻爐工作;反之單片機(jī)輸出電平為0 時,光耦元件不能導(dǎo)通,三極管不能形成有效偏置而截止,可控硅控制端電壓幾乎為零,可控硅截止從而截?cái)嘟涣魍?電爐停止工作。此外,還有越限報(bào)警,當(dāng)溫度低于下限時發(fā)光二極管亮;高上限時蜂鳴器叫。
3 鍵盤及顯示的設(shè)計(jì)
鍵盤采用軟件查詢和外部中斷相結(jié)合的方法來設(shè)計(jì),低電平有效。
按鍵AN3與P3.2相連,采用外部中斷方式,并且優(yōu)先級定為最高;按鍵AN5和AN4分別與P1.7和P1.6相連,采用軟件查詢的方式;AN1則為硬件復(fù)位鍵,與R、C構(gòu)成復(fù)位電路。
顯示采用3位共陽LED靜態(tài)顯示方式,顯示內(nèi)容有溫度值的十位、個位及小數(shù)點(diǎn)后一位,這樣可以只用P3.0(RXD)口來輸出顯示數(shù)據(jù),從而節(jié)省了單片機(jī)端口資源,在P1.4 口和P3.1(TXD)的控制下通過74LS164來實(shí)現(xiàn)3位靜態(tài)顯示。數(shù)字電路硬件部分見圖4.
圖4 數(shù)字硬件電路示意圖
三 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的軟件由三大模塊組成:主程序模塊、功能實(shí)現(xiàn)模塊和運(yùn)算控制模塊。
1 主程序模塊
在主程序中首先給定PID算法的參數(shù)值,然后通過循環(huán)顯示當(dāng)前溫度,并且設(shè)定鍵盤外部中斷為最高優(yōu)先級,以便能實(shí)時響應(yīng)鍵盤處理;軟件設(shè)定定時器T0為5秒定時,在無鍵盤響應(yīng)時每隔5秒響應(yīng)一次,以用來采集經(jīng)過A/D轉(zhuǎn)換的溫度信號;設(shè)定定時器T1為嵌套在T0之中的定時中斷,初值由PID算法子程序提供。在主程序中必須分配好每一部分子程序的起始地址,形式如下:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INTO
ORG 000BH
AJMP TT0
ORG 001BH
AJMP TT1
2 功能實(shí)現(xiàn)模塊
以用來執(zhí)行對可控硅及電爐的控制。功能實(shí)現(xiàn)模塊主要由A/D轉(zhuǎn)換子程序、中斷處理子程序、鍵盤處理子程序、顯示子程序等部分組成。
2.1 T0中斷子程序
該中斷是單片機(jī)內(nèi)部5s定時中斷,優(yōu)先級設(shè)為最低,但卻是最重要的子程序。在該中斷響應(yīng)中,單片機(jī)要完成A/D數(shù)據(jù)采集轉(zhuǎn)換、數(shù)字濾波、判斷是否越限、標(biāo)度轉(zhuǎn)換處理、繼續(xù)顯示當(dāng)前溫度、與設(shè)定值進(jìn)行比較,調(diào)用PID算法子程序并輸出控制信號等功能
.3 T1中斷子程序
T1定時中斷嵌套在T 中斷之中,優(yōu)先級高于T 中斷,其定時初值由PID算法子程序提供,T1中斷響應(yīng)的時間用于輸出可控硅(電爐)的控制信號?!?nbsp;
3 運(yùn)算控制模塊
運(yùn)算控制模塊涉及標(biāo)度轉(zhuǎn)換、PID算法、以及該算法調(diào)用到的乘法子程序等。
3.1 標(biāo)度轉(zhuǎn)換子程序
該子程序作用是將溫度信號(00H~FFH)轉(zhuǎn)換為對應(yīng)的溫度值,以便送顯示或與設(shè)定值在相同量綱下進(jìn)行比較。所用線形標(biāo)度變換公式為:
式中,Ax: 實(shí)際測量的溫度值;Nx:經(jīng)過A/D轉(zhuǎn)換的溫度量;
Am =90; Ao=40; Nm =FEH; No=01H;
單片機(jī)運(yùn)算采用定點(diǎn)數(shù)運(yùn)算,并且在高溫區(qū)和低溫區(qū)分別用程序作矯正處理,溫度計(jì)測量值與LED顯示見圖7。
3.2 PID算法子程序
系統(tǒng)算法控制采用工業(yè)上常用的位置型PID數(shù)字控制,并且結(jié)合特定的系統(tǒng)加以算法的改進(jìn),形成了變速積分PID一積分分離PID控制相結(jié)合的自動識別的控制算法。該方法不僅大大減小了超調(diào)量(見圖9),而且有效地克服了積分飽和的影響,使控制精度大大提高。PID控制算法的流程圖如圖8。
e(k) ≥ε 使用PD算法;
e(k) <ε使用變速積分PID算法。
在此只給出本算法的控制結(jié)果曲線(見下圖9)。
圖9 溫度控制曲線圖
四 源程序
本設(shè)計(jì)方案軟件實(shí)現(xiàn)完全使用匯編程序語言。具體源程序略。
五 結(jié)果分析論述
本文針對電熱鍋爐溫度控制系統(tǒng)模型,提出了一種基于單片機(jī)AT89S51的設(shè)計(jì)方案。設(shè)計(jì)中運(yùn)用PID算法更新T1的定時常數(shù),PWM輸出控制可控硅的通斷,從而實(shí)現(xiàn)對溫度的連續(xù)控制。設(shè)計(jì)結(jié)果由圖7和圖9可以看出:本設(shè)計(jì)的控制器工作穩(wěn)定,控制精度高,改進(jìn)的PID算法超調(diào)量大大降低;軟件采用模塊化結(jié)構(gòu),提高了通用性。本設(shè)計(jì)的目的不僅僅是溫度控制本身,主要提供了單片機(jī)外圍電路及軟件包括控制算法設(shè)計(jì)的思想,應(yīng)該說,這種思想比控制系統(tǒng)本身更為重要 .
一 系統(tǒng)設(shè)計(jì)方案的論證與比較
根據(jù)題目要求,電熱鍋爐溫度控制系統(tǒng)由核心處理模塊、溫度采集模塊、鍵盤顯示模塊、及控制執(zhí)行模塊等組成。
方案一 采用8031作為控制核心,以使用最為普遍的器件ADC0809作模數(shù)轉(zhuǎn)換,控制上使用對電阻絲加電使其升溫和開動風(fēng)扇使其降溫。此方案簡易可行,器件的價(jià)格便宜,但8031內(nèi)部沒有程序存儲器,需要擴(kuò)展,增加了電路的復(fù)雜性,且ADC0809是8位的模數(shù)轉(zhuǎn)換,不能滿足本題目的精度要求。
方案二 采用比較流行的AT89S51作為電路的控制核心,使用12位的高精度模數(shù)轉(zhuǎn)換器AD574A進(jìn)行數(shù)據(jù)轉(zhuǎn)換,控制電路部分采用PWM控制可控硅的通斷以實(shí)行對鍋爐溫度的連續(xù)控制,此方案電路簡單并且可以滿足題目中的各項(xiàng)要求的精度。
根據(jù)溫度變化慢,并且控制精度不易掌握的特點(diǎn),我們設(shè)計(jì)了以AT89S51單片機(jī)為檢測控制中心的電熱鍋爐溫度自動控制系統(tǒng)。溫度控制采用改進(jìn)的PID數(shù)字控制算法,顯示采用3位LED靜態(tài)顯示。該設(shè)計(jì)結(jié)構(gòu)簡單,控制算法新穎,控制精度高,有較強(qiáng)的通用性。所設(shè)計(jì)的控制系統(tǒng)有以下功能:
· 溫度控制設(shè)定波動范圍小于±1%,測量精度小于±1%,控制精度小于±2%,超調(diào)整量小于±4%;
· 實(shí)現(xiàn)控制可以升溫也可以降溫;
· 實(shí)時顯示當(dāng)前溫度值;
· 按鍵控制:設(shè)置復(fù)位鍵、運(yùn)行鍵、功能轉(zhuǎn)換鍵、加一鍵、減一鍵;
· 越限報(bào)警。
二 硬件電路設(shè)計(jì)
硬件電路主要有兩大部分組成:模擬部分和數(shù)字部分:從功能模塊上來分有:主機(jī)電路、數(shù)據(jù)采集電路、鍵盤顯示電路、控制執(zhí)行電路。
1 主機(jī)電路的設(shè)計(jì)
主機(jī)選用ATMEL公司的51系列單片機(jī)AT89S51來實(shí)現(xiàn),利用單片機(jī)軟件編程靈活、自由度大的特點(diǎn),力求用軟件完善各種控制算法和邏輯控制。本系統(tǒng)選用的AT89S51芯片時鐘可達(dá)12MHz,運(yùn)算速度快,控制功能完善。其內(nèi)部具有128字節(jié)RAM,而且內(nèi)部含有4KB的flash ROM 不需要外擴(kuò)展存儲器,可使系統(tǒng)整體結(jié)構(gòu)更為簡單、實(shí)用。
2 I/0通道的硬件電路的設(shè)計(jì)
就本系統(tǒng)來說,需要實(shí)時采集水溫?cái)?shù)據(jù),然后經(jīng)過A/D轉(zhuǎn)換為數(shù)字信號,送入單片機(jī)中的特定單元,然后一部分送去顯示;另一部分與設(shè)定值進(jìn)行比較,通過PID算法得到控制量并經(jīng)由單片機(jī)輸出去控制電熱鍋爐加熱或降溫。
2.1 數(shù)據(jù)采集電路的設(shè)計(jì)
數(shù)據(jù)采集電路主要由AD590, 0P07,74LS373,AD574A等組成。由于控制精度要求為0.1 度,而考慮到測量干擾和數(shù)據(jù)處理誤差,則溫度傳感器和AD 轉(zhuǎn)化器的精度應(yīng)更高才能保證控制精度的實(shí)現(xiàn),這個精度可處粗略定為0.1 度。故溫度傳感器需要能夠區(qū)分0.1 度;而對于AD 轉(zhuǎn)換器,由于測量范圍為40-90 度,以0.1 度作為響應(yīng)的AD 區(qū)分度要求,則AD 需要區(qū)分(90-40)/0.1=500 個數(shù)字量,顯然需要10 位以上的AD 轉(zhuǎn)換器。為此,選用高精度的12位AD574A。
為了達(dá)到測量高精度的要求,選用溫度傳感器AD590,AD590具有較高精度和重復(fù)性(重復(fù)性優(yōu)于0.1℃,其良好的非線形可以保證優(yōu)于0.1℃ 的測量精度,利用其重復(fù)性較好的特點(diǎn),通過非線形補(bǔ)償,可以達(dá)到0.1℃測量精度.)超低溫漂移高精度運(yùn)算放大器0P07將溫度一電壓信號進(jìn)行放大,便于A/D進(jìn)行轉(zhuǎn)換,以提高溫度采集電路的可靠性。
2.2 電控制執(zhí)行電路的設(shè)計(jì)
由輸出來控制電爐,電爐可以近似建立為具有滯后性質(zhì)的一階慣性環(huán)節(jié)數(shù)學(xué)模型。其傳遞函數(shù)形式為:
可控硅可以認(rèn)為是線形環(huán)節(jié)實(shí)現(xiàn)對水溫的控制。單片機(jī)輸出與電爐功率分別屬于弱電與強(qiáng)電部分,需要進(jìn)行隔離處理,這里采用光耦元件TLP521 在控制部分進(jìn)行光電隔離,此外采用變壓器隔離實(shí)現(xiàn)弱強(qiáng)電的電源隔離。
單片機(jī)PWM 輸出電平為0 時,光耦元件導(dǎo)通,從而使三極管形成有效偏置而導(dǎo)通,通過整流橋的電壓經(jīng)過集電極電阻以及射集反向偏壓,有7V 左右的電壓加在雙向可控硅控制端,從而使可控硅導(dǎo)通,交流通路形成,電阻爐工作;反之單片機(jī)輸出電平為0 時,光耦元件不能導(dǎo)通,三極管不能形成有效偏置而截止,可控硅控制端電壓幾乎為零,可控硅截止從而截?cái)嘟涣魍?電爐停止工作。此外,還有越限報(bào)警,當(dāng)溫度低于下限時發(fā)光二極管亮;高上限時蜂鳴器叫。
3 鍵盤及顯示的設(shè)計(jì)
鍵盤采用軟件查詢和外部中斷相結(jié)合的方法來設(shè)計(jì),低電平有效。
按鍵AN3與P3.2相連,采用外部中斷方式,并且優(yōu)先級定為最高;按鍵AN5和AN4分別與P1.7和P1.6相連,采用軟件查詢的方式;AN1則為硬件復(fù)位鍵,與R、C構(gòu)成復(fù)位電路。
顯示采用3位共陽LED靜態(tài)顯示方式,顯示內(nèi)容有溫度值的十位、個位及小數(shù)點(diǎn)后一位,這樣可以只用P3.0(RXD)口來輸出顯示數(shù)據(jù),從而節(jié)省了單片機(jī)端口資源,在P1.4 口和P3.1(TXD)的控制下通過74LS164來實(shí)現(xiàn)3位靜態(tài)顯示。數(shù)字電路硬件部分見圖4.
圖4 數(shù)字硬件電路示意圖
三 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的軟件由三大模塊組成:主程序模塊、功能實(shí)現(xiàn)模塊和運(yùn)算控制模塊。
1 主程序模塊
在主程序中首先給定PID算法的參數(shù)值,然后通過循環(huán)顯示當(dāng)前溫度,并且設(shè)定鍵盤外部中斷為最高優(yōu)先級,以便能實(shí)時響應(yīng)鍵盤處理;軟件設(shè)定定時器T0為5秒定時,在無鍵盤響應(yīng)時每隔5秒響應(yīng)一次,以用來采集經(jīng)過A/D轉(zhuǎn)換的溫度信號;設(shè)定定時器T1為嵌套在T0之中的定時中斷,初值由PID算法子程序提供。在主程序中必須分配好每一部分子程序的起始地址,形式如下:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INTO
ORG 000BH
AJMP TT0
ORG 001BH
AJMP TT1
2 功能實(shí)現(xiàn)模塊
以用來執(zhí)行對可控硅及電爐的控制。功能實(shí)現(xiàn)模塊主要由A/D轉(zhuǎn)換子程序、中斷處理子程序、鍵盤處理子程序、顯示子程序等部分組成。
2.1 T0中斷子程序
該中斷是單片機(jī)內(nèi)部5s定時中斷,優(yōu)先級設(shè)為最低,但卻是最重要的子程序。在該中斷響應(yīng)中,單片機(jī)要完成A/D數(shù)據(jù)采集轉(zhuǎn)換、數(shù)字濾波、判斷是否越限、標(biāo)度轉(zhuǎn)換處理、繼續(xù)顯示當(dāng)前溫度、與設(shè)定值進(jìn)行比較,調(diào)用PID算法子程序并輸出控制信號等功能
.3 T1中斷子程序
T1定時中斷嵌套在T 中斷之中,優(yōu)先級高于T 中斷,其定時初值由PID算法子程序提供,T1中斷響應(yīng)的時間用于輸出可控硅(電爐)的控制信號?!?nbsp;
3 運(yùn)算控制模塊
運(yùn)算控制模塊涉及標(biāo)度轉(zhuǎn)換、PID算法、以及該算法調(diào)用到的乘法子程序等。
3.1 標(biāo)度轉(zhuǎn)換子程序
該子程序作用是將溫度信號(00H~FFH)轉(zhuǎn)換為對應(yīng)的溫度值,以便送顯示或與設(shè)定值在相同量綱下進(jìn)行比較。所用線形標(biāo)度變換公式為:
式中,Ax: 實(shí)際測量的溫度值;Nx:經(jīng)過A/D轉(zhuǎn)換的溫度量;
Am =90; Ao=40; Nm =FEH; No=01H;
單片機(jī)運(yùn)算采用定點(diǎn)數(shù)運(yùn)算,并且在高溫區(qū)和低溫區(qū)分別用程序作矯正處理,溫度計(jì)測量值與LED顯示見圖7。
3.2 PID算法子程序
系統(tǒng)算法控制采用工業(yè)上常用的位置型PID數(shù)字控制,并且結(jié)合特定的系統(tǒng)加以算法的改進(jìn),形成了變速積分PID一積分分離PID控制相結(jié)合的自動識別的控制算法。該方法不僅大大減小了超調(diào)量(見圖9),而且有效地克服了積分飽和的影響,使控制精度大大提高。PID控制算法的流程圖如圖8。
e(k) ≥ε 使用PD算法;
e(k) <ε使用變速積分PID算法。
在此只給出本算法的控制結(jié)果曲線(見下圖9)。
圖9 溫度控制曲線圖
四 源程序
本設(shè)計(jì)方案軟件實(shí)現(xiàn)完全使用匯編程序語言。具體源程序略。
五 結(jié)果分析論述
本文針對電熱鍋爐溫度控制系統(tǒng)模型,提出了一種基于單片機(jī)AT89S51的設(shè)計(jì)方案。設(shè)計(jì)中運(yùn)用PID算法更新T1的定時常數(shù),PWM輸出控制可控硅的通斷,從而實(shí)現(xiàn)對溫度的連續(xù)控制。設(shè)計(jì)結(jié)果由圖7和圖9可以看出:本設(shè)計(jì)的控制器工作穩(wěn)定,控制精度高,改進(jìn)的PID算法超調(diào)量大大降低;軟件采用模塊化結(jié)構(gòu),提高了通用性。本設(shè)計(jì)的目的不僅僅是溫度控制本身,主要提供了單片機(jī)外圍電路及軟件包括控制算法設(shè)計(jì)的思想,應(yīng)該說,這種思想比控制系統(tǒng)本身更為重要 .
- 上一篇:基于ATmega48單片機(jī)的簡易滅火機(jī)器人設(shè)計(jì) 2016/12/11
- 下一篇:單片機(jī)短消息收發(fā)系統(tǒng) 2016/12/11