馬弗爐是高性能機(jī)電一體化的新一代智能產(chǎn)品,適用于煤炭,、電力、化工,、冶金等行業(yè)和部門進(jìn)行工業(yè)分析,。馬弗爐溫度控制器設(shè)計(jì)以單片機(jī)STC12C5A60S2作為控制中心,采用PID控制算法和自適應(yīng)控制技術(shù),,自動(dòng)調(diào)整預(yù)加熱溫度,,并可以存儲(chǔ)記憶,確保試驗(yàn)順利完成,,自動(dòng)化程度高,。
1.馬弗爐主要技術(shù)指標(biāo)
測溫范圍:0~1000℃
測溫精度:±3℃
控溫精度:±10℃(在250~1000℃范圍內(nèi))
升溫時(shí)間:(室溫~920℃)≤30min
電源:AC220V±22V@50Hz±1Hz
功率:3.5kW
具有快速灰化和緩慢灰化、揮發(fā)分,、羅加指數(shù),、黏結(jié)指數(shù)等四個(gè)專用加熱程序;另外,,溫度控制器有一個(gè)自選程序,,通過按鍵可選擇所需設(shè)定的溫度和保溫時(shí)間。
2.設(shè)計(jì)思路
馬弗爐溫度控制器設(shè)計(jì)采用PID算法來控制PWM的占空比,,由PWM信號(hào)控制IGBT的通斷,,使用時(shí)鐘專用芯片DS1302進(jìn)行定時(shí)控制,從而實(shí)現(xiàn)在不同時(shí)段對爐溫的控制,。
3.系統(tǒng)結(jié)構(gòu)
馬弗爐溫度控制器由單片機(jī)STC12C5A60S2,,熱電偶放大器與數(shù)字轉(zhuǎn)換器MAX6675,時(shí)鐘芯片DS1302,,I級(jí)精度K形熱電偶,,鍵盤及顯示系統(tǒng)組成,系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
PID簡介
1.基本概念
①基本偏差e(t):表示當(dāng)前測量值與設(shè)定目標(biāo)之間的偏差,。設(shè)定目標(biāo)是被減數(shù),,結(jié)果可以是正或負(fù),正數(shù)表示還沒有達(dá)到,,負(fù)數(shù)表示已經(jīng)超過了設(shè)定值,,這是面向比例項(xiàng)用的一個(gè)變動(dòng)數(shù)據(jù)。
②累計(jì)偏差∑e(t)=e(t)+e(t-1) +…+e(t-n):這是我們每一次測量得到偏差值的總和,,是代數(shù)和,,要考慮正負(fù)號(hào)運(yùn)算的。這是面向積分項(xiàng)用的一個(gè)變動(dòng)數(shù)據(jù),。
③基本偏差的相對量e(t)-e(t-1):用本次的基本偏差減去上一次的基本偏差,,用于考察當(dāng)前控制對象的趨勢,作為快速反應(yīng)的重要依據(jù),,這是面向微分項(xiàng)用的一個(gè)變動(dòng)數(shù)據(jù),。
④三個(gè)基本參數(shù)Kp、Ki,、Kd:這是做好一個(gè)控制器的關(guān)鍵常數(shù),,分別稱為比例常數(shù)、積分常數(shù)和微分常數(shù),。不同的控制對象需要選取不同的值,,經(jīng)過現(xiàn)場調(diào)試才能獲得較好的效果。
2.三個(gè)基本參數(shù)Kp,、Ki,、Kd實(shí)際控制中的作用
①比例環(huán)節(jié):即時(shí)成比例地反應(yīng)控制系統(tǒng)的偏差信號(hào)e(t),偏差一旦產(chǎn)生,,調(diào)節(jié)器立即產(chǎn)生控制作用以減小偏差,。比例作用大,可以加快調(diào)節(jié),,減少誤差,,但過大比例會(huì)使系統(tǒng)穩(wěn)定性下降。
②積分環(huán)節(jié):主要用于消除靜差,,提高系統(tǒng)的無差度,。積分作用的強(qiáng)弱取決于積分時(shí)間常數(shù)Ti。Ti越大,,積分作用越弱,,反之則越強(qiáng)。
③微分環(huán)節(jié):能反應(yīng)偏差信號(hào)的變化趨勢(變化速率),,并能在偏差信號(hào)的值變得過大之前,,在系統(tǒng)中引入一個(gè)有效的早期修正信號(hào),從而加快系統(tǒng)的動(dòng)作速度,減小調(diào)節(jié)時(shí)間,。
3.參數(shù)的設(shè)置與調(diào)整
①加溫迅速達(dá)到目標(biāo)值,,但溫度過沖很大。
比例系數(shù)太大,,致使在未達(dá)到設(shè)定溫度前加熱比例過高,;微分系數(shù)過小,對對象反應(yīng)不敏感,。
②加溫經(jīng)常達(dá)不到目標(biāo)值,,小于目標(biāo)值時(shí)間多。
比例系數(shù)過小,,加溫比例不夠,;積分系數(shù)過小,對靜差補(bǔ)償不足,。
③基本在控制溫度內(nèi),,但上下偏差大,經(jīng)常波動(dòng),。
微分系數(shù)小,,對及時(shí)變化反應(yīng)慢;積分系數(shù)過大,,使微分反應(yīng)被鈍化。
④受環(huán)境影響較大
微分系數(shù)小,,對及時(shí)變化反應(yīng)慢,;設(shè)定的基本定時(shí)周期過長,不能得到及時(shí)修正,。
下面給出PID控制程序:
#ifndef _PID_H__
#define _PID_H__
#include
#include
#include
struct PID {
unsigned int SetPoint; // 設(shè)定目標(biāo) Desired Value
unsigned int Proportion; // 比例常數(shù) Proportional Const
unsigned int Integral; // 積分常數(shù) Integral Const
unsigned int Derivative; // 微分常數(shù) Derivative Const
unsigned int LastError; // Error[-1]
unsigned int PrevError; // Error[-2]
unsigned int SumError; // Sums of Errors
}
struct PID spid; // PID Control Structure
unsigned int rout; // PID Response (Output)
unsigned int rin; // PID Feedback (Input)
sbit output=P1^4;
unsigned char high_time,low_time,count=0;//占空比調(diào)節(jié)參數(shù)
unsigned char set_temper=920;
void PIDInit (struct PID *pp)
{
memset ( pp,0,sizeof(struct PID));
}
unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )
{
unsigned int dError,Error;
Error = pp->SetPoint - NextPoint; // 偏差
pp->SumError += Error; // 積分
dError = pp->LastError - pp->PrevError; // 當(dāng)前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (pp->Proportion * Error//比例
+ pp->Integral * pp->SumError //積分項(xiàng)
+ pp->Derivative * dError); // 微分項(xiàng)
}
4. 溫度采集電路
熱電偶作為一種主要的測溫元件,,具有結(jié)構(gòu)簡單、制造容易,、使用方便,、測溫范圍寬、測溫精度高等特點(diǎn),。但是,,熱電偶的應(yīng)用卻存在著非線性、冷端補(bǔ)償,、數(shù)字化輸出等幾方面的問題,。設(shè)計(jì)中采用的MAX6675是一個(gè)集成了熱電偶放大器、冷端補(bǔ)償,、A/D轉(zhuǎn)換器及SPI串口的熱電偶放大器與數(shù)字轉(zhuǎn)換器,,其電路如圖2所示。
圖2 溫度采集電路圖
MAX6675從SPI串行接口輸出數(shù)據(jù)的過程如下:MCU使CS變低并提供時(shí)鐘信號(hào)給SCK,由SO讀取測量結(jié)果,。CS變低將停止任何轉(zhuǎn)換過程,;CS變高將啟動(dòng)一個(gè)新的轉(zhuǎn)換過程。一個(gè)完整串行接口讀操作需16個(gè)時(shí)鐘周期,,在時(shí)鐘的下降沿讀16個(gè)輸出位,,第1位和第15位是一偽標(biāo)志位且總為0;第14位到第3位為以MSB到LSB順序排列的轉(zhuǎn)換溫度值,;第2位平時(shí)為低,,當(dāng)熱電偶輸入開放時(shí)為高;開放熱電偶檢測電路完全由MAX6675實(shí)現(xiàn),,為開放熱電偶檢測器操作,,T-必須接地,并使接地點(diǎn)盡可能接近GND腳,;第1位為低電平以提供MAX6675器件身份碼,,第0位為三態(tài)。
圖3 SO端輸出溫度數(shù)據(jù)的格式
圖4 MAX6675的SPI接口時(shí)序
下面給出相應(yīng)的溫度值讀取程序及數(shù)據(jù)轉(zhuǎn)換程序:
void max6675()
{
uchar m;
uint temp;
temp=0;
max_sck=0;
max_cs=1;
delay(180ms);
max_cs=0 ;
max_sck=1;
_nop_();
max_sck=0;
_nop_();
if(max_so==1) {temp |=0x0001;}
for(m=0;m<15;m++)
{
temp<<=1;
max_sck=1;
_nop_();
max_sck=0;
if(max_so==1) {temp |=0x0001;} }
temp=(temp&0x7fe0)>>5;
t[0]=temp/1000+0x30;
t[1]=temp%1000/100+0x30;
t[2]=temp%100/10+0x30;
t[3]=temp%10+0x30;
print(1,0,t);
}
圖5 定時(shí)電路圖
圖6 單片機(jī)系統(tǒng)電路圖
圖7 主程序流程圖
5.定時(shí)電路
使用時(shí)鐘專用芯片DS1302進(jìn)行定時(shí)控制,,通過外加很少的電路就可以實(shí)現(xiàn)高精度的時(shí)鐘信號(hào),。外圍電路簡單可靠,時(shí)間精度高,,通過外接鋰電池后可以實(shí)現(xiàn)時(shí)間信息存儲(chǔ),。
6.單片機(jī)系統(tǒng)
采用STC12C5A60S2組成單片機(jī)最小系統(tǒng),有2路PWM,,選用一路作為IGBT的控制信號(hào),。另外,STC12C5A60S2內(nèi)部還有1K的EEPROM,,用于設(shè)置自選程序,,通過按鍵選擇所需設(shè)定的溫度和保溫時(shí)間。顯示模塊采用128×64液晶顯示,。
7.軟件設(shè)計(jì)
圖8 子程序流程圖
程序流程圖如圖8所示,。