《《溫度控制系統(tǒng)》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《溫度控制系統(tǒng)》PPT課件.ppt(11頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、溫度控制系統(tǒng),,,,簡介:,本設(shè)計是采用AD590溫度傳感器進(jìn)行溫度采集,測試溫度范圍位0100攝氏度,經(jīng)ADC0804由模擬信號轉(zhuǎn)為數(shù)字信號,經(jīng)單片機(jī)對溫度進(jìn)行處理,并采用了四位數(shù)碼管進(jìn)行帶兩位小數(shù)點(diǎn)的顯示。該設(shè)計包括恒流補(bǔ)償電路,ADC0804模數(shù)轉(zhuǎn)化、單片機(jī)及顯示模塊組成。 設(shè)計框圖如下:,,,恒流補(bǔ)償 電 路,AD590基本知識,恒流補(bǔ)償電路是由AD590及運(yùn)算放大器組成的電流轉(zhuǎn)換為電壓的電路。,AD590的主要特性如下:流過器件的電流(mA)等于器件所處環(huán)境的熱力學(xué)溫度,AD590的測溫范圍為-55到+150。AD590的電源電壓范圍為4V-30V。電源電壓可在4V-6V范圍
2、變化,電流變化1mA,相當(dāng)于溫度變化1K。AD590可以承受44V正向電壓和20V反向電壓,因而器件反接也不會被損壞。輸出電阻為710MW。,AD590溫度與電流的關(guān)系如右表所示,可知AD590的輸出電流I=(273+T)A(T為攝氏溫度),因?yàn)闇y量電壓較方便所以這里應(yīng)把電流轉(zhuǎn)化為電壓再經(jīng)AD轉(zhuǎn)換。所以需一電流轉(zhuǎn)化為電壓的恒流補(bǔ)償電路。,,為了使溫度與電壓的關(guān)系成過原點(diǎn)的線性關(guān)系,變換電路采用了恒流補(bǔ)償電路恒流由穩(wěn)壓管組成電流為273uA從而實(shí)現(xiàn)電壓平移。最終輸出電壓U0= 50(i- 273)/1000,或uo=T/20。那么AD轉(zhuǎn)換輸出的數(shù)字量就和攝氏溫度成線形比例關(guān)系。,,模數(shù)轉(zhuǎn)換電路,
3、電路采用的是AD0804進(jìn)行AD轉(zhuǎn)換。ADC0804 為 8 位模/數(shù)轉(zhuǎn)換電路,分辨率為1/28,其轉(zhuǎn)換結(jié)果與模擬輸入電壓的關(guān)系寫為 。(Vref=5V) (1)、復(fù)位中斷觸發(fā)信號 一般情況下,啟動A/D轉(zhuǎn)換前應(yīng)該復(fù)位這個信號,等待新轉(zhuǎn)換后的數(shù)據(jù)再由ADC0804輸出數(shù)據(jù),這樣才可以讀到新的轉(zhuǎn)換結(jié)果,時序圖如圖A所示。 (2)、啟動ADC0804的A/D轉(zhuǎn)換 ADC0804在片選信號為低電平時啟動A/D轉(zhuǎn)換,時序圖如圖B所示 。,原理分析,(3)讀取轉(zhuǎn)換結(jié)果,在A/D轉(zhuǎn)換結(jié)束以后,ADC0804的 引腳將給出一個低脈沖,如果把這個引腳直接連接到單片機(jī)的外部中斷引腳P3.2或P3.3,這個低脈
4、沖將引起單片機(jī)中斷,單片機(jī)可以在中斷處理程序中讀取ADC0804的轉(zhuǎn)換結(jié)果。,ADC0804與單片機(jī)接口設(shè)計電路,,單片機(jī)處理及顯示,此模塊是對模數(shù)轉(zhuǎn)換輸出的數(shù)字信號進(jìn)行處理,轉(zhuǎn)換為溫度,用四位共陰數(shù)碼管帶兩位小數(shù)點(diǎn)顯示。模塊由STC單片機(jī),74HC573鎖存器及四位數(shù)碼管組成。,,概述,,單片機(jī)及顯示電路如圖所示,圖中P1口作為數(shù)碼管的段碼控制。P2口低四位作為數(shù)碼顯示的位選信號P2-0控制最低位,P2_1控制小數(shù)點(diǎn)后一位,P2_2控制各位,P23控制最高位十位。P0口是接收AD轉(zhuǎn)換輸出的數(shù)據(jù)。74hc573作為鎖存輸出。,,分析,,總結(jié),通過這次的小制作,我發(fā)現(xiàn)在現(xiàn)實(shí)設(shè)計中還需要注意很多的
5、細(xì)節(jié),包括程序設(shè)計和硬件設(shè)計都要我們小心仔細(xì),一個地方出錯就可能會整個系統(tǒng)失效。在硬件設(shè)計時,由于電路的虛焊和漏焊,在調(diào)試過程中引來很大的麻煩.在調(diào)試程序時,我發(fā)現(xiàn)數(shù)碼管不顯示,原因是寫錯了一條指令while(int0==1)寫成了while(int0=1),所以程序陷入了死循環(huán)不執(zhí)行顯示程序。還有在寫顯示程序由于顯示的時間短,AD不斷轉(zhuǎn)換導(dǎo)致顯示不穩(wěn)定。于是在寫驅(qū)動數(shù)碼管的程序加了個For循環(huán)控制顯示時間,這樣就是AD隔一段時間再采集溫度,顯示穩(wěn)定。經(jīng)過幾天的努力之后終于把電路調(diào)試成功,在個人動手能力和程序調(diào)試方面都有了一定的提高,,程序代碼,#include #include #inclu
6、de #include #define TIMER 0X10 sbit CS=P33; unsigned char table=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f; //led字模 void delay(void); void main (void) unsigned char x,y1=0,y2=0,y3=0,y4=0,t; unsigned int i,W; while(1)//AD轉(zhuǎn)換 P0=0 xff;P3=0 xff; W=0 x01; CS=0;WR=0;
7、_nop_;WR=1;//啟動AD轉(zhuǎn)換 while(INT0==1); // 等待轉(zhuǎn)換完畢 CS=1;//停止AD轉(zhuǎn)換 _nop_; CS=0;RD=0;//開始讀轉(zhuǎn)換的數(shù)據(jù),_nop_; _nop_; //等待讀完 x=P0; //讀的數(shù)賦給x RD=1;CS=1;// 讀完畢 t=x*100/255;//溫度 for(i=0;i<300;i++) //數(shù)顯 控制下次AD轉(zhuǎn)換的時間 y1=t*100%10; P2=W;P1=tabley1; //小數(shù)點(diǎn)后兩位 delay(); y2=t*10%10;W<<=1;P2=W;P1=tabley2; //小數(shù)點(diǎn)一位 delay(); y3=t%10; W<<=1;P2=W;P1=tabley3|0 x80; //個位 delay(); y4=t/10;W<<=1;P2=W;P1=tabley4; //十位 delay(); W=0X01; void delay() //延遲 unsigned int i; for(i=0;i< TIMER;i++); ,