題目:基于熱敏電阻的數字溫度計 專業:新能源科學與工程 班級: 成員:
1 設計任務及要求 設計任務:使用熱敏電阻類的溫度傳感器件利用其感溫效應,將隨被測溫度變化的電壓或電流用單片機采集下來,將被測溫度在顯示器上顯示出來。 要求:(1)測量溫度范圍?50℃~110℃。(2)精度誤差小于0.5℃。(3)LED數碼直讀顯示。 本題目使用鉑熱電阻PT100,其阻值會隨著溫度的變化而改變。PT后的100即表示它在0℃時阻值為100歐姆,在100℃時它的阻值約為138.5歐姆。廠家提供有PT100在各溫度下電阻值值的分度表,在此可以近似取電阻變化率為 0.385Ω/℃。向PT100輸入穩恒電流,再通過A/D轉換后測PT100兩端電壓,即得到PT100的電阻值,進而算出當前的溫度值。 采用2.55mA的電流源對PT100進行供電,然后用運算放大器LM324搭建的同相放大電路將其電壓信號放大10倍后輸入到AD0808中。利用電阻變化率0.385Ω/℃的特性,計算出當前溫度值。 我們也考慮到當測量溫度低于(或高于)所測溫度時會對該測量裝置造成損壞,所以可以添加一個溫度報警裝置,因為該課程并無嚴格要求,所以在下面我們會簡單帶過。
2 方案設計與論證 2.1溫度傳感器的選擇 方案一: 采用熱電偶溫差電路測溫,溫度檢測部分可以使用低溫熱偶,熱電偶由兩個焊接在一起的異金屬導線所組成(熱電偶的構成如圖 2-1),熱電偶產生的熱電勢由兩種金屬的接觸電勢和單一導體的溫差電勢組成。通過將參考結點保持在已知溫度并測量該電壓,便可推斷出檢測結點的溫度。數據采集部分則使用帶有A/D 通道的單片機,在將隨被測溫度變化的電壓或電流采集過來,進行A/D 轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來。熱電偶的優點是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來自導線環路的噪聲影響以及漂移較高的缺點,并且這種設計需要用到A/D轉換電路,感溫電路比較麻煩。 圖 2-1熱電偶電路圖 系統主要包括對A/D0808的數據采集,自動手動工作方式檢測,溫度的顯示等,這幾項功能的信號通過輸入輸出電路經單片機處理。還有復位電路,晶振電路,啟動電路等。故現場輸入硬件有手動復位鍵、A/D 轉換芯片,處理芯片為51 芯片,執行機構有4 位數碼管、報警器等。系統框圖如 2-1-2所示: 圖 2-1-2熱電偶溫差電路測溫系統框圖 方案二 我們用鉑電阻PT100作為傳感器。熱電阻PT100是最常用的溫度傳感器之一,與其他熱敏電阻相比,它的主要優點是測量精度高(可精確到0.1攝氏度),線性度好,測量范圍廣(-200℃~650℃),性能穩定,使用方便,完全滿足設計要求,所以我最終選擇鉑電阻PT100采用熱敏電阻PT-100測量溫度,輸出信號全數字化。便于單片機處理及控制,省去傳統的測溫方法的很多外圍電路。且該芯片的物理化學性很穩定,它能用做工業測溫元件,此元件線形較好。在0—100 攝氏度時,最大線形偏差小于1 攝氏度。當PT100在0攝氏度的時候他的阻值為100歐姆,它的阻值會隨著溫度上升而成近似勻速的增長。,測溫系統的結構就比較簡單,體積也不大。采用51單片機控制,軟件編程的自由度大,可通過編程實現各種各樣的算術算法和邏輯控制,而且體積小,硬件實現簡單,安裝方便。 該系統利用AT89C51芯片控制溫度傳感器數碼顯示器進行實時溫度檢測并顯示,能夠實現快速測量環境溫度,并可以根據需要設定上下限報警溫度。該系統擴展性非常強,它可以在設計中加入時鐘芯片DS1302以獲取時間數據,在數據處理同時顯示時間。系統框圖如圖 2-1-3所示: 圖2-1-3溫度測溫系統框圖 從以上兩種方案,容易看出方案一的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案二的測溫裝置電路簡單、精確度較高、實現方便、軟件設計也比較簡單,故本次設計采用了方案二。 2.2微處理器ADC0808 ADC0808是采樣分辨率為8位的、以逐次逼近原理進行模/數轉換的器件(如圖2-2)。其內部有一個8通道多路開關,它可以根據地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉換。ADC0808是ADC0809的簡化版本,功能基本相同。一般在硬件仿真時采用ADC0808進行A/D轉換,實際使用時采用ADC0809進行A/D轉換。 ADC0808芯片有28條引腳,采用雙列直插式封裝,如右圖所示。各引腳功能如下: 1~5和26~28(IN0~IN7):8路模擬量輸入端。 8、14、15和17~21:8位數字量輸出端。 22(ALE):地址鎖存允許信號,輸入,高電平有效。 6(START): A/D轉換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復位,下降沿啟動A/D轉換)。 7(EOC): A/D轉換結束信號,輸出,當A/D轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。 9(OE):數據輸出允許信號,輸入,高電平有效。當A/D轉換結束時,此端輸入一個高電平,才能打開輸出三態門,輸出數字量。 10(CLK):時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。 12(VREF(+))和16(VREF(-)):參考電壓輸入端 11(Vcc):主電源輸入端。 13(GND):地。 23~25(ADDA、ADDB、ADDC):3位地址輸入線,用于選通8路模擬輸入中的一路 圖2-2微處理器ADC0808 3系統硬件電路設計 3.1 系統時鐘電路設計 
系統時鐘電路的設計如圖3-1。對于時間要求不是很高的系統,只要按圖進行設計就能使系統可靠起振并穩定運行。但由于圖中的C1、C2電容起著系統時鐘頻率微調和穩定的作用,因此,在本鬧鐘系統的實際應用中一定要注意正確選擇參數(30±10 PF),并保證對稱性(盡可能匹配),選用正牌廠家生產的瓷片或云母電容,如果可能的話,溫度系數要盡可能低。實驗表明,這2個電容元件對鬧鐘的±走時誤差有較大關系。 3.2系統復位電路 智能系統一般應有手動或上電復位電路。復位電路的實現通常有兩種方式:1)RC復位電路;2)專用μP監控電路。前者實現簡單,成本低,但復位可靠性相對較低;后者成本較高,但復位可靠性高,尤其是高可靠重復復位。對于復位要求高、并對電源電壓進行監視的場合,大多采用這種方式。 專用μP監控電路又稱電源監視電路,具有上電時可靠產生復位信號和電源電壓跌落到“門檻值”時可靠產生復位信號等功能。按有效電平分,有高電平輸出、低電平輸出兩種;按功能分,有簡單的電源監視復位電路、帶“看門狗”定時器(WATCH DOG,又簡稱“WDT”)的監控電路、和WDT+EEPROM的監控電路等多種類型。比較常見的生MAX813L、MAX809、X25043/5等。 
本系統采用的是這種復位方式。RC復位電路的實質是一階充放電電路,現結合圖說明這種復位電路的特點。系統上電時該電路提供有效的復位信號RST(高電平)直至系統電源穩定后撤銷復位信號(低電平)。理論上說,51系列單片機復位引腳只要外加2個機器周期的有效信號即可復位,即只要保證t=RC>2M(機器周期)便可,但實際設計中,通常取C1為10μF以上,R1通常取10K左右。實踐發現R1如果取值太小,例如1K,則會導致RST信號驅動能力變差而無法使系統可靠復位。另外,從圖3-2-2的復位信號波形圖可以明顯看出,圖3-2-1中的虛線所接的續流二極管D1對于改善復位性能,起到了重要作用,它的作用是在電源電壓瞬間下降時使電容迅速放電,因此一定寬度的電源毛刺(如波形中A點)也可令系統可靠復位。圖3-2-2為未加二極管和加二極管的復位信號特性對比。 圖3-2-2 加二極管前后的復位信號特性對比 3.3 基于熱敏電阻的溫度計電路設計 測量部分可以采用熱敏電阻,熱電偶及溫度傳感器。由于精度要求不高,故我們通過熱敏電阻實現溫度的測量功能,同時也是為了按照課題要求采用熱敏電阻。信號放大部分為使信號不失真,就得保證電路的對稱性,所以我們采用單端輸入雙端輸出的差動放大電路進行信號的變換,同時用高精度,低漂移的運放來代替晶體三極管。 A/D轉換部分CPU8051通過P0口P0.0-P0.2向A/D發送模擬的地址編碼信息,并通過地址線P2.0和寫控制線 控制地址編碼信號的鎖存。選通相應的模擬輸入通道,然后啟動A/D轉換。當轉換結束后,A/D經過EOC發出標志信號,經反相后送入8051向8051發出中斷請求,當8051響應請求后,通過P2.0的讀控制端 使A/D的OE端變為高電平,從而控制轉換器的三態數據輸出,鎖存器通過P0口P0.0-P0.7向8051輸出。 我們控制器使用單片機AT89C51,溫度計數碼顯示部分用74LS164驅動顯示。,另外我們用一個PNP型的三極管來控制數碼管的電源,是因為164沒有數據鎖存端,數據在傳送過程中,對輸出端來說是透明的,這樣,數據在傳送過程中,數碼管上有閃動現象,驅動的位數越多,閃動現象越明顯。為了消除這種現象,在數據傳送過程中,關閉三極管使數碼管沒電不顯示,數據傳送完后立刻使三極管導通,這樣就實現鎖存功能。 3.4基于熱敏電阻的溫度計系統仿真測試 確定好方案后,用Protues軟件搭建好系統電路,將寫好的程序添加進仿真圖中,仿真結果如圖3-4所示: 圖3-4熱敏電阻溫度計的仿真圖
3.5參數計算與元器件清單 表3-5熱敏溫度計整機元器件清單 | | | | | | | | 使其正常工作和采集模數轉換后的數字信號,使用軟件濾除干擾,并對數字信號進行計算,然后輸出顯示。 | | | | | 采樣分辨率為8位的、以逐次逼近原理進行模/數轉換的器件。 | | | | | | | | | |
| | | | | | | | | | 是低成本的四路運算放大器,具有真正的差分輸入。該四路放大器可以工作于低至3.0 V或高達32 V的電源電壓。 | | | | | | | | | | 當溫度變化時,電橋處于不平衡狀態,從而輸出不平衡電壓,為測溫的基礎。 | |
4 軟件設計 4.1 主程序流程圖
圖 4-1主程序流程圖 4.2基于熱敏電阻溫度計的簡單報警器框圖 圖 4-2 報警模塊子程序流程圖 4.3 C語言實現 - #include<reg52.h>
- #include<math.h>
- #define uchar unsigned char
- sbit STAR=P2^4;
- sbit EOC=P2^6;
- sbit CLOCK=P2^5;
- sbit OE =P2^7;
- sbit P20=P2^0;
- sbit P21=P2^1;
- sbit P22=P2^2;
- sbit P23=P2^3;
- uchar dispbuf[6];
- uchar code
- table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar code
- table2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xdf};
- void TimeInitial()
- {
- TMOD=0x10;
- TH1=(65536-200)/256;
- TL1=(65536-200)%256;
- EA=1;
- ET1=1;
- TR1=1;
- }
- void Delay(uchar i)
- {
- unsigned int j;
- for(;i>0;i--)
- {
- for(j=0;j<125;j++) {;}
- } }
- void t1(void) interrupt 3 using 0
- {
- TH1=(65536-200)/256;
- TL1=(65536-200)%256;
- CLOCK=~CLOCK;
- }
- void Display()//
- {
- P0=table1[dispbuf[1]];
- P20=0;
- P21=1;
- P22=1;
- P23=1;
- Delay(10);
- P0=0x00;
- P0=table2[dispbuf[2]];
- P20=1;
- P21=0;
- P22=1;
- P23=1;
- Delay(10);
- P0=0x00;
- P0=table1[dispbuf[1]];
- P20=1;
- P21=1;
- P22=0;
- P23=1;
- Delay(10);
- P0=0x00;
- P0=table1[dispbuf[0]];
- P20=1;
- P21=1;
- P22=1;
- P23=0;
- Delay(10);
- P0=0x00;
- }
- void main()//主函數
- {
- uchar getdata,temp;
- uchar count=0;
- uchar i=0;
- TimeInitial();
- while(1)
- {
- STAR=0;//關閉轉換
- OE=0;//關閉輸出
- STAR=1;//開啟轉換
- STAR=0;//關閉轉換
- while(EOC==0)
- {
- OE=1;//開啟數據輸出允許
- Delay(10);
- getdata=P1;
- OE=0;
- temp=getdata*1.0/255*500;
- dispbuf[0]=temp%10;
- dispbuf[1]=temp/10%10;
- dispbuf[2]=temp/100%10;
- Display();
- }
- } }
復制代碼
5 組裝調試 5.1 單片機測試 判斷單片機芯片及時鐘系統是否正常工作有一個簡單的辦法,就是用萬用表測量單片機晶振引腳(18、19腳)的對地電壓,以正常工作的單片機用數字萬用表測量為例:18腳對地約2.24V,19腳對地約2.09V。對于懷疑是復位電路故障而不能正常工作的單片機也可以采用模擬復位的方法來判斷,單片機正常工作時第9腳對地電壓為零,可以用導線短時間和+5V連接一下,模擬一下上電復位,如果單片機能正常工作了,說明這個復位電路有問題。 5.2硬件及軟件調試 硬件調試:第一步是目測,在印好電路板之后,先檢查印制線是否有斷線、是否有毛刺、是否與其它線或焊盤粘連、焊盤是否有脫落、過孔是否有未金屬化現象。而在目測的過程中,我們發現有一條印制線斷開,因此我們用焊錫使這條斷線連在一起。第二步是用萬用表測量。在目測完之后,利用萬用表來測量連線和接點,檢查它們的通斷狀態是否和設計一樣。再檢查各種電源線和地線是否有短路現象,在檢查的過程中,發現不管是連線還是接點都符合設計規定,電源和地線也沒有短路現象。第三步是加電檢查。給印制板加電時,我們檢查到的器件的電源端符合要求的電壓值+5V,同時接地端的電壓為0。第四步是聯機檢查。利用系統和單片機開發系統用仿真電纜連接起來,發現聯機檢查完后以上是連接都正確、暢通、可靠。 軟件調試:第一步是在具有匯編軟件的主機上和用戶系統連接起來,進行調試準備。第二步是單步運行。第三步是系統連調,即進行軟件和硬件聯合調試。經調試,軟件運行良好。 5.3整機的調試與測試 首先是測試顯示電路的正確性,根據硬件寫好一段顯示程序,寫入單片機中。安裝好硬件,上電,顯示正常,達到預期效果。證明顯示電路正常。按下復位按鍵,LED無顯示,松開,顯示正常,證明復位電路正常。 然后測試得到溫度程序,將初始化程序,熱敏電阻正常工作的初始化程序、寫熱敏電阻程序、讀熱敏電阻程序,得到溫度子程序,溫度轉換子程序,數據轉換子程序,顯示子程序正確編排后寫入單片機中,上電,顯示不正常。重新讀取源程序,經檢查后發現問題在于熱敏電阻初始化程序有錯,修改后重新編譯并寫入單片機。上電后,顯示當前溫度。證明溫度傳感器熱敏電阻工作正常,各部分子程序運行正常。 最后是按鍵子程序及報警子程序的調試,將按鍵子程序及報警子程序及上述程序正確編排后,寫入單片機中,上電后,各個部分工作正常,在測得當前溫度超出設定溫度上下限后,蜂鳴器發出報警聲,調試基本成功。但后來發現,按鍵要在按下1S后才反應,再次研讀程序發現原因在于按鍵程序采用掃描方式,程序每執行一遍才掃描按鍵一次。進而到考慮采用中斷方式解決此問題,但因為熱敏電阻正常工作有嚴格的時序限制,否則不能正常工作,而中斷則在很大可能上會影響到熱敏電阻正常工作。在嘗試并采用中斷方式卻失敗后,決定仍采用掃描方式。后來仔細排查發現按鍵反應遲緩是由于顯示程序占用時間過長造成的,修改顯示程序并且在主程序和按鍵子程序中增加調用顯示程序的次數,問題得以解決。至此,此次設計的調試部分完成。設計的所有功能全部得以實現 6 結論與心得 本設計利用AT89C51 芯片控制溫度傳感器熱敏電阻,再輔之以部分外圍電路實現對環境溫度的測控,性能穩定,精度教高,而且擴展性能很強大。可以加入1302 時鐘芯片實現對時間進行顯示,加之AT89C51存儲芯片來實現對時間和溫度數據的記錄,利用MAX232芯片和計算機實現串口通訊,這樣就可以方便的統計出特定時間內的需要的時間和溫度數據。由于測量精度只有±1 度,往往很多場合需要更加精確的溫度,在所測溫度精度不變的基礎上必須對數據進行校正。不過,其誤差在時間和外部環境變化的條件下,保持相當高的穩定性。針對這一特性,基于線性插補的數學思想,利用DSP技術,對其進行誤差校正補償.這種誤差校正的補償方法,不需增加硬件電路,計算方法簡單,軟件費用也很小,既提高了測量精度,又不需增加成本。它充分利用監控計算機上用線性插補的數學方法對其進行誤差校正補償,能輕易地將其提高其精度。 經過將近三周的單片機課程設計,終于完成了我們的數字溫度計的設計,雖然沒有完全達到設計要求,但從心底里說,還是高興的,畢竟這次設計把實物都做了出來,高興之余不得不深思呀! 在本次設計的過程中,我們發現很多的問題,雖然以前還做過這樣的設計但這次設計真的讓我們長進了很多,單片機課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我們覺的寫好一個程序并不是一件簡單的事,舉個例子,以前寫的那幾次,數據加減時,我們用的都是BCD碼,這一次,我們全部用的都是16進制的數直接加減,顯示處理時在用除法去刪分,感覺效果比較好,有好多的東西,只有我們去試著做了,才能真正的掌握,只學習理論有些東西是很難理解的,更談不上掌握。 從這次的課程設計中,我們真真正正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的寫與讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。
完整的Word格式文檔51黑下載地址:
|