|
摘要】本文介紹了以at89s51單片機為核心的溫度控制器的設計,在該設計中采用高精度的溫度傳感器ad590對電熱鍋爐的溫度進行實時精確測量,用超低溫漂移高精度運算放大器op07將溫度-電壓信號進行放大,再送入12位的ad574a進行a\d轉換,從而實現(xiàn)自動檢測,實時顯示及越限報警?刂撇糠植捎胮id算法,實時更新pwm控制輸出參數(shù),控制可控硅的通斷時間,最終實現(xiàn)對爐溫的高精度控制。 【關鍵詞】 水溫控制系統(tǒng) pid控制單片機 溫度控制是工業(yè)生產過程中經常遇到的過程控制,有些工藝過程對其溫度的控制效果直接影響著產品的質量,因而設計一種較為理想的溫度控制系統(tǒng)是非常有價值的。 一 系統(tǒng)設計方案的論證與比較 根據(jù)題目要求,電熱鍋爐溫度控制系統(tǒng)由核心處理模塊、溫度采集模塊、鍵盤顯示模塊、及控制執(zhí)行模塊等組成。 方案一 采用8031作為控制核心,以使用最為普遍的器件adc0809作模數(shù)轉換,控制上使用對電阻絲加電使其升溫和開動風扇使其降溫。此方案簡易可行,器件的價格便宜,但8031內部沒有程序存儲器,需要擴展,增加了電路的復雜性,且adc0809是8位的模數(shù)轉換,不能滿足本題目的精度要求。 方案二 采用比較流行的at89s51作為電路的控制核心,使用12位的高精度模數(shù)轉換器ad574a進行數(shù)據(jù)轉換,控制電路部分采用pwm控制可控硅的通斷以實行對鍋爐溫度的連續(xù)控制,此方案電路簡單并且可以滿足題目中的各項要求的精度。 綜上分析,我們采用方案二。系統(tǒng)設計總體框圖如下。 
圖1 控制器設計總體框圖 根據(jù)溫度變化慢,并且控制精度不易掌握的特點,我們設計了以at89s51單片機為檢測控制中心的電熱鍋爐溫度自動控制系統(tǒng)。溫度控制采用改進的pid數(shù)字控制算法,顯示采用3位led靜態(tài)顯示。該設計結構簡單,控制算法新穎,控制精度高,有較強的通用性。所設計的控制系統(tǒng)有以下功能: ·溫度控制設定波動范圍小于±1%,測量精度小于±1%,控制精度小于±2%,超調整量小于±4%; ·實現(xiàn)控制可以升溫也可以降溫; ·實時顯示當前溫度值; ·按鍵控制:設置復位鍵、運行鍵、功能轉換鍵、加一鍵、減一鍵; ·越限報警。 二 硬件電路設計 硬件電路主要有兩大部分組成:模擬部分和數(shù)字部分:從功能模塊上來分有:主機電路、數(shù)據(jù)采集電路、鍵盤顯示電路、控制執(zhí)行電路。 1 主機電路的設計 主機選用atmel公司的51系列單片機at89s51來實現(xiàn),利用單片機軟件編程靈活、自由度大的特點,力求用軟件完善各種控制算法和邏輯控制。本系統(tǒng)選用的at89s51芯片時鐘可達12mhz,運算速度快,控制功能完善。其內部具有128字節(jié)ram,而且內部含有4kb的flash rom 不需要外擴展存儲器,可使系統(tǒng)整體結構更為簡單、實用。 2 i/0通道的硬件電路的設計 就本系統(tǒng)來說,需要實時采集水溫數(shù)據(jù),然后經過a/d轉換為數(shù)字信號,送入單片機中的特定單元,然后一部分送去顯示;另一部分與設定值進行比較,通過pid算法得到控制量并經由單片機輸出去控制電熱鍋爐加熱或降溫。 2.1 數(shù)據(jù)采集電路的設計 數(shù)據(jù)采集電路主要由ad590, 0p07,74ls373,ad574a等組成。由于控制精度要求為0.1度,而考慮到測量干擾和數(shù)據(jù)處理誤差,則溫度傳感器和ad轉化器的精度應更高才能保證控制精度的實現(xiàn),這個精度可處粗略定為0.1度。故溫度傳感器需要能夠區(qū)分0.1度;而對于ad轉換器,由于測量范圍為40-90度,以0.1度作為響應的ad區(qū)分度要求,則ad需要區(qū)分(90-40)/0.1=500個數(shù)字量,顯然需要10位以上的ad轉換器。為此,選用高精度的12位ad574a。 為了達到測量高精度的要求,選用溫度傳感器ad590,ad590具有較高精度和重復性(重復性優(yōu)于0.1℃,其良好的非線形可以保證優(yōu)于0.1℃ 的測量精度,利用其重復性較好的特點,通過非線形補償,可以達到0.1℃測量精度.)超低溫漂移高精度運算放大器0p07將溫度一電壓信號進行放大,便于a/d進行轉換,以提高溫度采集電路的可靠性。模擬電路硬件部分見圖2。  圖2 溫度電壓轉換電路 2.2 電控制執(zhí)行電路的設計 由輸出來控制電爐,電爐可以近似建立為具有滯后性質的一階慣性環(huán)節(jié)數(shù)學模型。其傳遞函數(shù)形式為: 
可控硅可以認為是線形環(huán)節(jié)實現(xiàn)對水溫的控制。單片機輸出與電爐功率分別屬于弱電與強電部分,需要進行隔離處理,這里采用光耦元件tlp521 在控制部分進行光電隔離,此外采用變壓器隔離實現(xiàn)弱強電的電源隔離。 單片機pwm 輸出電平為0 時,光耦元件導通,從而使三極管形成有效偏置而導通,通過整流橋的電壓經過集電極電阻以及射集反向偏壓,有7v 左右的電壓加在雙向可控硅控制端,從而使可控硅導通,交流通路形成,電阻爐工作;反之單片機輸出電平為0 時,光耦元件不能導通,三極管不能形成有效偏置而截止,可控硅控制端電壓幾乎為零,可控硅截止從而截斷交流通路,電爐停止工作。此外,還有越限報警,當溫度低于下限時發(fā)光二極管亮;高上限時蜂鳴器叫?刂茍(zhí)行部分的硬件電路如下圖。 圖3 控制執(zhí)行部分電路 3 鍵盤及顯示的設計 鍵盤采用軟件查詢和外部中斷相結合的方法來設計,低電平有效。圖3 中按鍵an1,an2,an3,an4, an5的功能定義如表1所示。 按鍵an3與p3.2相連,采用外部中斷方式,并且優(yōu)先級定為最高;按鍵an5和an4分別與p1.7和p1.6相連,采用軟件查詢的方式;an1則為硬件復位鍵,與r、c構成復位電路。 表1 按鍵功能 按鍵 鍵名 功能 an1 復位鍵 使系統(tǒng)復位 an2 運行鍵 使系統(tǒng)開始數(shù)據(jù)采集 an3 功能轉換鍵 按鍵按下(d1亮)時,顯示溫度設定值;按鍵升起(d1不亮)時,顯示前溫度值 an4 加一鍵 設定溫度漸次加一 an5 減一鍵 設定溫度漸次減一 顯示采用3位共陽led靜態(tài)顯示方式,顯示內容有溫度值的十位、個位及小數(shù)點后一位,這樣可以只用p3.0(rxd)口來輸出顯示數(shù)據(jù),從而節(jié)省了單片機端口資源,在p1.4 口和p3.1(txd)的控制下通過74ls164來實現(xiàn)3位靜態(tài)顯示。數(shù)字電路硬件部分見圖4.  圖4 數(shù)字硬件電路示意圖 三 系統(tǒng)軟件設計 系統(tǒng)的軟件由三大模塊組成:主程序模塊、功能實現(xiàn)模塊和運算控制模塊。 1 主程序模塊 在主程序中首先給定pid算法的參數(shù)值,然后通過循環(huán)顯示當前溫度,并且設定鍵盤外部中斷為最高優(yōu)先級,以便能實時響應鍵盤處理;軟件設定定時器t0為5秒定時,在無鍵盤響應時每隔5秒響應一次,以用來采集經過a/d轉換的溫度信號;設定定時器t1為嵌套在t0之中的定時中斷,初值由pid算法子程序提供。在主程序中必須分配好每一部分子程序的起始地址,形式如下: org 0000h ajmp main org 0003h ajmp into org 000bh ajmp tt0 org 001bh ajmp tt1 主程序流程圖見圖5。 
圖5 主程序流程圖 圖6 鍵盤及中斷程序圖 2 功能實現(xiàn)模塊 以用來執(zhí)行對可控硅及電爐的控制。功能實現(xiàn)模塊主要由a/d轉換子程序、中斷處理子程序、鍵盤處理子程序、顯示子程序等部分組成。 2.1 t0中斷子程序 該中斷是單片機內部5s定時中斷,優(yōu)先級設為最低,但卻是最重要的子程序。在該中斷響應中,單片機要完成a/d數(shù)據(jù)采集轉換、數(shù)字濾波、判斷是否越限、標度轉換處理、繼續(xù)顯示當前溫度、與設定值進行比較,調用pid算法子程序并輸出控制信號等功能。 2.3 t1中斷子程序 t1定時中斷嵌套在t 中斷之中,優(yōu)先級高于t 中斷,其定時初值由pid算法子程序提供,t1中斷響應的時間用于輸出可控硅(電爐)的控制信號。 3 運算控制模塊 運算控制模塊涉及標度轉換、pid算法、以及該算法調用到的乘法子程序等。 3.1 標度轉換子程序 該子程序作用是將溫度信號(00h~ffh)轉換為對應的溫度值,以便送顯示或與設定值在相同量綱下進行比較。所用線形標度變換公式為:
式中,ax: 實際測量的溫度值;nx:經過a/d轉換的溫度量; am =90; ao=40; nm =feh; no=01h; 單片機運算采用定點數(shù)運算,并且在高溫區(qū)和低溫區(qū)分別用程序作矯正處理,溫度計測量值與led顯示見圖7。 3.2 pid算法子程序 系統(tǒng)算法控制采用工業(yè)上常用的位置型pid數(shù)字控制,并且結合特定的系統(tǒng)加以算法的改進,形成了變速積分pid一積分分離pid控制相結合的自動識別的控制算法。該方法不僅大大減小了超調量(見圖9),而且有效地克服了積分飽和的影響,使控制精度大大提高。pid控制算法的流程圖如圖8。 
圖7 溫度計測量值與報警方式圖  圖8 pid控制算法流程圖 圖9中,初始水溫為26 c。實現(xiàn)思想:ui(k)為第k次采樣溫度值,ur 為設定值。 |e(k)|≥ε 使用pd算法; |e(k)|<ε使用變速積分pid算法。 在此只給出本算法的控制結果曲線(見下圖9)。 |