《《計(jì)算機(jī)控制技術(shù)》課程設(shè)計(jì)PWM溫度自動(dòng)控制系統(tǒng)的設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《計(jì)算機(jī)控制技術(shù)》課程設(shè)計(jì)PWM溫度自動(dòng)控制系統(tǒng)的設(shè)計(jì)(8頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、
《 計(jì)算機(jī)控制技術(shù)》
課程設(shè)計(jì)
題 目:PWM溫度自動(dòng)控制系統(tǒng)的設(shè)計(jì)
學(xué)生姓名:
學(xué) 號(hào):
專業(yè)班級(jí):
指導(dǎo)教師:
二○一○年十二月二十五日
目 錄
1.設(shè) 計(jì) 目 的…………………………………………………1
2.設(shè) 計(jì) 要 求…………………………………………………1
3.PID控制原理
2、…………………………………………………1
4. 帶死區(qū)的PID算法……………………………………………2
5.系統(tǒng)框圖………………………………………………………2
6.程序流程圖以及程序代碼…………………………………………4
7.心得體會(huì)………………………………………………………5
8.參考目錄………………………………………………………5
一.設(shè)計(jì)的目的
1. 通過課程設(shè)計(jì),來加深對過程控制中自動(dòng)化控制系統(tǒng)框架的理解
2. 通過課程設(shè)計(jì),來加深對PID控制系統(tǒng)的理解
3. 利用所學(xué)的理論知識(shí),設(shè)計(jì)一個(gè)工業(yè)常用中的溫度控制系統(tǒng),達(dá)到對一個(gè)系統(tǒng)的初步設(shè)計(jì)
3、二.設(shè)計(jì)要求
1. 要求設(shè)計(jì)溫度控制系統(tǒng),設(shè)定溫度為230度,才用電阻絲做為加熱器件,采用PID算法,無余差,超調(diào)小,加熱速度快。
2. 硬件采用51系列單片機(jī),采用固態(tài)繼電器作為控制元件
3. 采用keil c作為編程語言,采用結(jié)構(gòu)化的設(shè)計(jì)方法
三.PID控制原理
將偏差的比例,積分和微分通過線性組合構(gòu)成控制量,用這一控制對被控對象進(jìn)行控制,這一樣的控制器稱PID控制器
1.模擬PID控制原理
在模擬控制系統(tǒng)中,控制器最常用的控制規(guī)律是PID控制。為了說明控制器的原理,以圖1.1的例子說明。給定輸入信號(hào)n0(t)與實(shí)際輸出信號(hào)n(t)進(jìn)行比較,其差值e(t)=n0(t)-n(t
4、),經(jīng)過PID控制器調(diào)整輸出控制信號(hào)u(t),u(t)對目標(biāo)進(jìn)行作用,使其按照期望運(yùn)行。
常規(guī)的模擬PID控制系統(tǒng)原理框圖如同1.2所示。該系統(tǒng)有模擬PID和被控對象組成。圖中r(t)是給定的期望值,y(t)是系統(tǒng)的實(shí)際輸出值,給定值與實(shí)際輸出值,給定值與實(shí)際值構(gòu)成控制偏差e(t):
e(t)作為PID控制的輸入,u(t)作為PID控制的輸出和被控對象的輸入。構(gòu)成PID和被控對象的輸入。構(gòu)成PID控制的規(guī)律為:
5、
其中:Kp為控制器的比例系數(shù)
Ti為控制器的積分時(shí)間,也稱積分系數(shù)
Td為控制器的未分時(shí)間,也稱微分系數(shù)
四.帶死區(qū)PID的算法
帶死區(qū)的PID控制
作用:消除由于頻繁動(dòng)作所引起的振蕩
計(jì)算機(jī)中帶死區(qū)的PID:
五. 系統(tǒng)框圖
(1)系統(tǒng)框圖
帶死區(qū)的PID
PWM波
電阻絲
溫度
溫度傳感器
AD轉(zhuǎn)化
(2) 系統(tǒng)工作過程:溫度傳感器檢測容器內(nèi)部的溫度,把溫度信號(hào)傳送給D/A轉(zhuǎn)換芯片進(jìn)行模/數(shù)轉(zhuǎn)化,轉(zhuǎn)化完的數(shù)字信號(hào)送入51單片機(jī),再與設(shè)定值進(jìn)行比較,比較完的
6、差值進(jìn)行帶死區(qū)的PID算法運(yùn)算,PID后的U(k)經(jīng)過PWM波比較,輸出占空比隨U(k)調(diào)整的脈沖波形,再通過光電耦合器控制固態(tài)繼電器的通斷時(shí)間,達(dá)到對容器內(nèi)溫度加熱的控制,從而能較精確地控制器內(nèi)溫度。
六. 程序流程圖以及程序代碼
開始
(1) .程序流程圖
設(shè)定值初始化
AD轉(zhuǎn)化
設(shè)定值與轉(zhuǎn)化數(shù)值相減
e(k)
死區(qū)PID運(yùn)算
U(k)
PWM()
P3_0輸出脈沖波
電阻絲對容器加熱
(2)程序代碼
#include
#incl
7、ude //用“#include”即可使用其中定義的宏來訪問絕對地址
#include
sbit P3_0=P3^0;
#define kp 10 //假設(shè)的比例系數(shù)設(shè)定值
#define ki 20 /假設(shè)的積分系數(shù)設(shè)定值
#define kd 30 //假設(shè)的微分系數(shù)設(shè)定值
#define set 90 //容器內(nèi)溫度的設(shè)定值
#define k1 5
8、 //誤差在死區(qū)內(nèi)時(shí),系數(shù)的設(shè)定值
#define x 3 //死區(qū)范圍的設(shè)定值
#define AD_adr XBYTE[0x7ff8] //AD芯片的地址
int ek,ek_1,uk,sum,b;
int PID( ); //死區(qū)PID算法函數(shù)調(diào)用的聲明
void AD( ); //進(jìn)行AD轉(zhuǎn)換函數(shù)調(diào)用的聲明
PWM(); //產(chǎn)生對應(yīng)占空比的波形的函數(shù)聲明
main( )
{ int a;
9、
ek_1=0;
sum=0;
b=0;
while(1)
{AD( ); //先進(jìn)行溫度的AD轉(zhuǎn)化
a=P0; //讀取AD轉(zhuǎn)化完的值
ek=set-a; //轉(zhuǎn)化數(shù)值與設(shè)定值進(jìn)行比較
uk=PID( ); //比較的差值進(jìn)行PID運(yùn)算
PWM( ); //PID算出的值進(jìn)行D/A轉(zhuǎn)化輸出
}
}
void AD( )
{
AD_adr=1;
10、 //啟動(dòng)轉(zhuǎn)化芯片
while(P3_0==1) //等待轉(zhuǎn)化
{}; //轉(zhuǎn)化結(jié)束,數(shù)值送入P0
P0=AD_adr;
}
PWM()
{ET0=1; //開T0定時(shí)器中斷
EA=1; //開總中斷
TMOD=0X01; //使用T0計(jì)時(shí)器,模式1
TH0=0X3C;
TL0=0XB0; //定時(shí)100ms,計(jì)數(shù)器賦初值
TR0=1;
11、 //開啟計(jì)時(shí)
}
USE() interrupt 1 //T0定時(shí)器中斷
{b++;
If(b>10) b=0; //10假設(shè)的三角波的峰值
else if(uk>b) P3_0=0;
else P3_0=1;
}
int PID( ) //死區(qū)PID算法函數(shù)
{
int s1,s2,s3,k;
sum=sum+ek;
s1=kp*ek;
s2=ki*sum;
s3=kd*(ek-
12、ek_1);
ek_1=ek;
if(abs(ek)>x) //abs()為計(jì)算絕對值
k=s1+s2+s3;
else k=k1*(s1+s2+s3)
return k;
}
七. 心得體會(huì)
在這次課設(shè)上由于很多知識(shí)都是以前學(xué)過的不過由于沒有去鞏固所以導(dǎo)致很多地方很生疏,在些不該出問題的小細(xì)節(jié)上出來問題。不過在老師的帶領(lǐng)下,與同學(xué)的討論下,用實(shí)踐的方法把以前學(xué)到的知識(shí)鞏固了一遍,我相信這樣的鞏固不是背書能得到的,是對單片機(jī)的理解更加的深入。這次課設(shè)中也對這學(xué)期所學(xué)的知識(shí)進(jìn)一步的提高,在查閱資料的工程中也學(xué)習(xí)到了許多課本相關(guān)的知識(shí),這次課設(shè)讓我對實(shí)踐與課本有了新的認(rèn)識(shí)。
八.參考書錄:
[1]網(wǎng)絡(luò)資源
[2] 袁任光.可編程序控制器選用手冊[M].北京:機(jī)械工業(yè)出版社,2002.7.
[3] 何友華.可編程序控制器及常用控制電器[M].北京:冶金工業(yè)出版社
[4] 萬光毅,嚴(yán)義,邢春香.單片機(jī)實(shí)驗(yàn)與實(shí)踐教程[M].北京:北京航空航天大學(xué)出版社,2006.4
5