基于51單片機(jī)的水溫測(cè)控系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
基于51單片機(jī)的水溫測(cè)控系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
基于51單片機(jī)的水溫測(cè)控系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
基于51單片機(jī)的水溫測(cè)控系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
基于51單片機(jī)的水溫測(cè)控系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

簡(jiǎn)易水溫測(cè)控系統(tǒng)設(shè)計(jì)報(bào)告2-摘要 本次實(shí)驗(yàn)是軟硬件相結(jié)合的實(shí)驗(yàn),通過傳感器得到的阻值與其它電阻,可以搭建一個(gè)電橋,將水溫轉(zhuǎn)化為電壓,然后通過放大器將電壓放大到所需要的值,將所得的電壓送入單片機(jī)的AD轉(zhuǎn)換電路,將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),從而在單片機(jī)的液晶屏上顯示當(dāng)前的溫度。此燒水壺是可控制的,即設(shè)定溫度,使水加熱到設(shè)定溫度且保溫,此控制算法采用PID控制算法來控制繼電器的通斷,來保證水溫恒定在設(shè)定溫度處。一、設(shè)計(jì)要求1.傳感器:Pt100鉑熱電阻2.測(cè)量放大器:自己設(shè)計(jì)與搭建3.被控對(duì)象:400W電熱杯,約0.5公斤自來水4.執(zhí)行機(jī)構(gòu):12V驅(qū)動(dòng),5A負(fù)載能力的繼電器5.控制系統(tǒng):51單片機(jī)6.控制算法:PID7.溫度范圍:環(huán)境溫度~100度8.測(cè)量誤差1度,控制誤差2度二、設(shè)計(jì)原理及方案熱電阻傳感器熱電阻傳感器是利用導(dǎo)體或半導(dǎo)體的電阻值隨溫度變化而變化的原進(jìn)行測(cè)溫的。

熱電阻的工作原理:溫度升高,金屬內(nèi)部原子晶格的振動(dòng)加劇,從而使金屬內(nèi)部的自由電子通過金屬導(dǎo)體時(shí)的阻礙增大,宏觀上表現(xiàn)出電阻率變大,電阻值增加,我們稱其為正溫度系數(shù),即電阻值與溫度的變化趨勢(shì)相同。實(shí)驗(yàn)原理框圖測(cè)量放大器電路圖說明:電位器R10用來調(diào)節(jié)偏置電壓,而電位器R7則用來調(diào)節(jié)增益。實(shí)驗(yàn)時(shí),用R10來調(diào)節(jié)零點(diǎn),用R7來調(diào)節(jié)滿度。該電路將0℃-100 上述電路圖采用儀表放大器,將鉑熱電阻兩端的電壓U2與電位器R10兩端的電壓U1差放大,放大器輸出電壓U0與電壓差的關(guān)系為:由鉑熱電阻阻值與水溫的關(guān)系可知,鉑熱電阻的范圍是。則整理得:而儀表放大器的輸出電壓為0~5V,所以放大倍數(shù)大約為:5/0.04=125。當(dāng)假設(shè)R8/R4=2時(shí),R2/R7=30由此,我們可以選擇R8=20K,R4=10K,R2=10K,R7=2K的電位器,為了使放大器的性能更好,我們可以把R10選為200歐姆的電位器。調(diào)節(jié)R,可以調(diào)節(jié)電平,調(diào)節(jié)R7是調(diào)節(jié)放大倍數(shù)。A/D轉(zhuǎn)換原理調(diào)節(jié)測(cè)量放大電路的電位器R2和R7,使差分放大器輸出0-5V電壓,送入單片機(jī)。單片機(jī)的A/D轉(zhuǎn)換電路將0-5V電壓劃分為1024個(gè)量化臺(tái)階,即0-5V對(duì)應(yīng)0-1023。用10位二進(jìn)制數(shù)表示。采樣讀出DIO口的連續(xù)10個(gè)電平值,當(dāng)量化臺(tái)階為1000時(shí),剛好1000對(duì)應(yīng)的是100攝氏度,所以只需把采樣讀出的電平值左移一位,即可換算出對(duì)應(yīng)的溫度值。PID控制算法三、程序設(shè)計(jì)主要思想:首先AD轉(zhuǎn)換器TLC1549是10位的,故轉(zhuǎn)換最大值為1023,為顯示及計(jì)算方便,只取到1000,對(duì)應(yīng)輸入電壓值4.88V,對(duì)應(yīng)顯示溫度值100攝氏度.由于溫度傳感器基本是線性的,故0攝氏度對(duì)應(yīng)電壓值0V,取放大器放大倍數(shù)約100倍,將輸入的微小電流放大.程序中計(jì)時(shí)器定時(shí)為50ms,每50次也就是2.5秒進(jìn)行一次AD轉(zhuǎn)換,顯示及PID計(jì)算,也就是2.5秒的加熱周期,故占空比的比例為五十分之幾,這個(gè)幾是PID計(jì)算出來的u換算出來的.u的取值有負(fù)有正,且大小范圍非常大,不好確定,故對(duì)u經(jīng)行比例壓縮,u越大加熱的占空比就越高,u為0對(duì)應(yīng)不加熱,這樣就將u轉(zhuǎn)換為占空比.雖然可能精度不夠,但基本實(shí)現(xiàn)了溫度的控制.關(guān)于TMOD設(shè)置 1.采用T1定時(shí)/計(jì)數(shù)器,工作在方式1下,見下表:GATEC/TM1M0GATEC/TM1M000010000所以TMOD=10H 2.開中斷:EA=1; 定時(shí)器T1開:ET1=1 3.TH1、TL1設(shè)置 定時(shí)時(shí)間設(shè)為50ms,所以 50×10-3=(216-初始值)×(12/11.0592)×10-6 解得:初始值=19456=0100110000000000B 因此:TH1=01001100B=4CHTL1=00000000B=00H程序中需用到的系統(tǒng)地址A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A010100000000000RSR/WA1A0系統(tǒng)地址:0A000H0A001H0A002H0A003H源程序附在附錄里面。四、實(shí)驗(yàn)結(jié)果 在電熱水杯加熱的初始階段,繼電器始終保持接通狀態(tài),電熱水杯全速加熱。當(dāng)水溫到達(dá)50℃以上,繼電器在PID算法的控制下開始通斷交替,且隨著水溫的升高,繼電器接通的時(shí)間逐漸減少,斷開的頻率逐漸增大。當(dāng)水溫到達(dá)設(shè)定溫度左右(±2℃)時(shí),繼電器通斷時(shí)間比例不再變化,電熱水杯處在保溫狀態(tài),水溫恒定在設(shè)定溫度上下。經(jīng)過調(diào)試和溫度的校后顯示的溫度值是比較準(zhǔn)確的,誤差大約在零點(diǎn)幾攝氏度內(nèi).在做溫度控制的時(shí)候,由于我顯示出了占空比值和時(shí)間t,故調(diào)整系數(shù)很方便和直觀.控制誤差大約一攝氏度左右,也是符合要求的,但系統(tǒng)的超調(diào)量還是比較大的,故做了適當(dāng)軟件上的調(diào)整,如溫度超過設(shè)定值時(shí)直接將繼電器斷開,而不是等待PID做出反應(yīng),五、實(shí)驗(yàn)總結(jié) 3年大學(xué)時(shí)光中,覺得最有用的課程就是這些實(shí)驗(yàn)了,它讓我們學(xué)有所用,而不僅僅是各種理論,而是通過實(shí)踐來鞏固深入理解理論。這門實(shí)驗(yàn)課讓我們不僅在軟件上花了大量的功夫,代碼力求精益求精;而且.在實(shí)際的調(diào)試中,還是發(fā)現(xiàn)軟件只是一方面的內(nèi)容,外硬件的優(yōu)劣也是影響系統(tǒng)性能和精度的致命因素.尤其是做控制的時(shí)候和調(diào)整溫度的時(shí)候,一個(gè)可靠的硬件可以省下不少功夫.溫度控制系統(tǒng)的設(shè)計(jì)讓我們學(xué)會(huì)的不僅僅是對(duì)單片機(jī)的內(nèi)部結(jié)構(gòu)的進(jìn)一步理解與運(yùn)用,還在上一次實(shí)驗(yàn)的基礎(chǔ)上進(jìn)一步提高運(yùn)放集成電路設(shè)計(jì)與運(yùn)用的能力。附:源程序#include<REG52.H>#include<absacc.h>#include<intrins.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedint#defineKP0.55//比例系數(shù)#defineKI0.02//積分系數(shù)#defineKD0.1//微分系數(shù)sbitpout=P1^7;sbitSCLK=P1^2;sbitDIO=P1^3;sbitAD_CS=P1^4;ucharnum1[13]={0x53,0x45,0x54,0x54,0x3A,0,0,0,0x2E,0,0xDF,0x43};ucharnum2[13]={0x4E,0x4F,0x57,0x54,0x3A,0,0,0,0x2E,0,0xDF,0x43};unsignedintsettemp=500,nowtemp;unsignedchartimecount=0;bitadflag,showflag;//ad標(biāo)志位unsignedcharduty=0,duty_tem=0;//輸出控制量floatel,en=0,es=0;floatp_out,i_out,d_out;voidwrite();voidBUSY();voidLCD_inti();voiddelay(ucharn){ intii,jj; for(ii=0;ii<n;ii++) for(jj=0;jj<120;jj++); return;}voidkeyscan(){ucharkey=0,tempKey=0; XBYTE[0x8fff]=0x0f; delay(100); tempKey=XBYTE[0x8fff];//讀取按鍵 tempKey&=0x0f;delay(100); key=XBYTE[0x8fff];//再次讀取按鍵 key&=0x0f; if(key==tempKey) { while(key==tempKey)//等待按鍵彈起 { key=XBYTE[0x8fff]; key&=0x0f; } switch(tempKey) { case1:if(settemp<=900)settemp+=100;break; case2:if(settemp>100)settemp-=100;break; case4:if(settemp<=990)settemp+=10;break; case8:if(settemp>10)settemp-=10;break; default:break; }} } voidwriteData(uchardata1){ while(XBYTE[0xa001]&0x80);//等待可寫 XBYTE[0xa002]=(data1);//向數(shù)據(jù)端口寫入數(shù)據(jù)}voidwriteString(uchardata1[],intlen){ intk=0; for(k=0;k<len;k++)//寫入字符串 writeData(data1[k]);}//LCD初始化voidLCD_inti(){ BUSY(); XBYTE[0xa000]=0x01; BUSY(); XBYTE[0xa000]=0x06; BUSY(); XBYTE[0xa000]=0x1c; BUSY(); XBYTE[0xa000]=0x38; BUSY(); XBYTE[0xa000]=0x0c; }voidBUSY(){ ucharBUSYBF=0; while(1) { BUSYBF=XBYTE[0xa001]; if(BUSYBF<0x80)break; } return;}//AD初始化voidAD_init() { AD_CS=1;//必須為高 SCLK=1;//上升沿有效 DIO=1; //置高}unsignedintAD()//本次AD讀取上一次的值{uinttemp=0;uchari;AD_CS=0;SCLK=0;for(i=0;i<10;i++){ temp<<=1;temp|=DIO;SCLK=1;SCLK=0;}AD_CS=1;delay(256);//延遲>17usreturntemp;}//定時(shí)器初始化voidtimer_init(){ TMOD=0x10;//T1:計(jì)時(shí)器 EA=1; //全局中斷允許 TH1=0x4C; TL1=0x00;//初值19456 ET1=1; //允許定時(shí)器中斷 timecount=0; TR1=1;//開始計(jì)時(shí)}voidOnTimer1()interrupt3{ TR1=0;//停止計(jì)時(shí)EA=0; TH1=0x4C; TL1=0x00;//初值19456 timecount++; if(timecount>50)//2.5秒進(jìn)行一次PID控制 { timecount=1; adflag=1;//ad采樣開始控制 }/* if(timecount<=duty) { pout=1; } else { pout=0; }*/ if(timecount%10==0) {showflag=1;//0.5秒對(duì)屏幕進(jìn)行一次刷新 //nowtemp+=1; } TR1=1;//開始計(jì)時(shí) EA=1;}//pid控制算法pid(){el=en;en=(signed)settemp-(signed)nowtemp;es+=en;p_out=KP*en;//比例項(xiàng)輸出i_out=KI*es;//積分項(xiàng)輸出d_out=KD*(en-el);//微分項(xiàng)輸出if(i_out>100)//積分分離i_out=100;if(i_out<-100)i_out=-100;duty_tem=p_out+i_out+d_out;//總輸出量if(duty_tem<0)duty_tem=0;if(duty_tem>=100)duty_tem=100; duty=floor(duty_tem)/2; //u最大值為50 if(duty_tem<0)pout=1; elsepout=0; return(pout);}///////////////////////main(){pout=1; LCD_inti(); AD_init(); timer_init();if(adflag) { nowtemp=AD(); nowtemp=AD();

溫馨提示

  • 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)論