摘 要:MAXIM公司的MAX6577是一種將溫度轉換為頻率的溫度傳感器,通過AT89C2051單片機對輸出信號頻率進行計算處理,設計實用的溫度測控系統,可以實現包括溫度測量、顯示、控制與報警等功能。介紹了硬件電路和軟件編寫,提供完整的電路圖,給出了軟件的總體設計,特別是對數據計算處理部分的程序編寫做了詳細分析。
關鍵詞:溫度傳感器;單片機;MX6577;AT89C2051
中圖分類號:TP277 文獻標識碼:B
文章編號:1004373X(2008)0112103
Design and Analysis of Temperature Measuring and Contorlling System Based on AT89C2051
LIU Jingbo
(Nanjing Institute of Technology,Nanjing,211167,China)
Abstract:The MAX6577 of MAXIM Company is a temperature sensor which converts the temperature to frequency,calculates and processes the output signal frequency by the single chip microcomputer AT89C2051,designing practical temperature measure and control system,can realize the function including temperature measure,display,control,alarm and so on.This articleintroduces hardware circuit and software,provides complete circuit,gives the design of software,detailed analyses the data calculation and processing especially.
Keywords:temperature sensor;single chip microcomputer;MAX6577;AT89C2051
溫度是單片機應用系統中常見的一個測控參數,根據溫度傳感器的不同,其測控系統亦有較大差別。在滿足應用場合需求的前提下,選擇合適的溫度傳感器,同時兼顧測量溫度誤差小、電路簡潔可靠是本設計考慮的主要內容。
1 硬件電路設計
1.1 溫度傳感器
采用MAXIM公司的MAX6577作為溫度傳感芯片,這是一種將溫度轉換為均衡頻率方波的傳感器(溫度→頻率)[1],其主要特點如下:
(1) 方波輸出,無需A/D轉換與單片機計數端直接相連。
(2) 溫度測量范圍-40~+125 ℃。
(3) 較低的測量誤差。測量溫度是+25 ℃時,誤差范圍為±0.8 ℃;測量溫度是+125 ℃時,誤差范圍為±0.5 ℃。
(4) 不需外接元件,體積小(最大3 mm×3 mm),適合用作溫度測量探頭。需要注意的是,該傳感芯片將溫度轉換為頻率是以絕對溫度(K)為前提,因此對頻率的計數結果應減去273才能得到攝氏度℃,這當然可以在軟件編寫時方便地做運算處理。MAX6577采用SOT23-6腳封裝,圖1可見其管腳分布,表1是各管腳功能描述。
圖1中TS0,TS1分別接在VDD和GND上,設置比例關系為1 Hz/K,因此換算為攝氏溫度時,只需將計數的數值減去273。
1.2 電路設計
圖2是硬件電路設計示意圖[2]。按照圖1預先設計完成傳感部分,并與圖2的J1連接實現信號輸入。MAX6577輸出的方波信號連接到AT89C2051[3]的P3.4(T0計數端),在軟件中統計信號頻率數值,并減去273就是當前測量出的攝氏溫度(℃)。四位共陰數碼管用于顯示測量溫度值,根據MAX6577的測量范圍與特點,DS2~DS4用來顯示溫度,DS1是符號顯示,如顯示負號“—”時,表示當前溫度是負溫度。輸出段碼由P1口輸出,P3.0~P3.3是DS1~DS4的選通信號。P3.7連接有蜂鳴器LS1,當測量的溫度超過“預設報警溫度”時,發出提示音,以P3.7為低電平有效,使PNP型三極管9012導通[4]。由于省略A/D轉換,因此電路簡潔,提高可靠性,降低成本。
2 軟件設計
總體思路是采用單片機的T0為計數器工作方式,T1為定時工作方式的模式設計軟件,即設計每1 s定時時間到達后,統計出T0計數的數值,這就是當前MAX6577將溫度轉換的頻率數值,并在軟件中把統計的計數值減去273就是攝氏溫度,送到P1端口顯示出溫度值。圖3是程序總流程框圖。整體來看,這是一個不斷調用顯示處理子程序的循環,或者說是一個等待刷新顯示溫度的狀態。其中當報警標志00H(位尋址)[1]為0時,軟件只要把溫度值顯示出來,這當然是由T1定時中斷服務子程序在每1 s時間達到后提供刷新的溫度顯示數值。當報警標志00H為1時,則發出報警信號,并返回繼續等待刷新。不難看出,當被測溫度超過“預設報警溫度”后,每次在主循環中,報警標志00H被清零,而在T1中斷服務子程序中被置1,因此這樣的設計可以實現報警和顯示閃爍的效果,這從圖3的程序總流程不難理解。這樣的設計在下文的2.2.4節中也可以體現出其特點。
2.1 T0,T1初始設置
設置T0為外部計數方式,T1為50 ms定時方式,并設有20次的軟件計數存儲單元,實現1 s定時。以下是對相應寄存器進行設置,并預設T1定時器的初值[1,5]。
2.2 中斷服務子程序
T1中斷服務子程序是軟件設計的重要部分,實現的功能如下:取出計數器T0的計數值;判斷正、負溫度;分別對正、負溫度進行運算處理,即應減去273,得到攝氏溫度;把攝氏溫度通過除以100,10而分離得出百、十、個位;與“預設報警溫度”參數進行比較,超過設定值后將報警標志00H置為1;把百、十、個位數值加上段碼起始地址,得到相對應的段碼,送至P1口顯示溫度。
[BT4]2.2.1 T1中斷服務子程序總體設計
進入中端服務子程序后,通常是保護現場、重置T1初值,然后判斷是否為20次50 ms中斷結束(1 s時間到)?如未到,則恢復現場,重新啟動T1定時并返回。若1 s時間到,則先取出TH0,TL0的計數數值,并保存到自定義好的存儲單元TEMPH和TEMPL,注意接下來應把T0計數器的TH0,TL0單元清零,為下次計數做準備。最后對保存在TEMPH和TEMPL中的數據進行處理、計算。圖4是T1中斷子程序流程,其中的“計算程序”如何對數據進行計算處理,是軟件設計的重點。
[BT4]2.2.2 數據處理、計算分析
T1中斷服務子程序實現的功能均由該部分程序完成。首先判斷正、負溫度后,送出符號位并保存在存儲單元40H中,然后分別對其進行減273計算處理,并分離得到百、十、個位。可以利用R1作為設置“預設報警溫度”參數,并在程序中預設正、負的報警參數。BAIWEI,SHIWEI,GEWEI是定義的3個存儲單元用作保存分離的百、十、個位數。存儲單元40H~41H作為顯示緩沖單元,其中40H是保存符號位的顯示狀態,41H~43H分別保存百、十、個位顯示用的段碼數據。最后顯示時依次把40H~43H送到P1口就可以實現溫度數值的動態顯示。
2.2.3 關于減去273計算
首先說明的是,正、負溫度的判斷以273為基準判斷,軟件中必須有存儲單元(TEMPH,TEMPL)保存T0計數得到的數據。因為最終應將數值分離出百、十、個位而送出顯示,因此判斷是正溫度或是負溫度,然后區別對待計算,這也是2.2.2節中“減273運算”各自獨立計算的原因。減去273(0111H)實際上就是把TEMPH和TEMPL分別減去01H和11H,判斷正、負溫度也是同樣的道理,只不過此時是通過測試借位標志CY來實現的,這是不難實現的。以下的介紹中主要考慮在當前的測量范圍,如何對TEMPL在減去11H后作出恰當的處理,保證通過除法運算而分離出正確的百、十、個位數,并正確地顯示出來。[JP]
負溫度條件下的減273計算是這樣考慮的:
第一步:TEMPL減去11H后的數值先保留;
第二步:用FFH減去第一步的結果;
第三步,把第二步的結果加1。接下來再分別除以100,10而分離出百、十、個位,從而達到預想的目的。
正溫度計算程序中考慮了TEMPH減01H的情況,并且是帶借位的減法。在實際調試時,采用信號發生器輸出信號驗證程序顯示和報警的正確性,結果表明,采用以下程序計算時,可以正確地顯示到255 ℃(即信號發生器的輸出頻率可達528 Hz),當顯示溫度超過+50 ℃時,發出報警。這對于MAX6577的測溫范圍是足夠的。
2.2.4 關于控制
圖2中AT89C2051的P3.5可以接驅動電路驅動繼電器,當溫度超過“預設報警溫度”參數時驅動繼電器切斷被控制對象。圖2中沒有給出具體電路,考慮有兩種方法:第一是把P3.5分別安置在主程序和T1中斷服務子程序中,與報警標志00H同樣對待,這種方法前面已經已有闡述,顯然在系統報警時,P3.5是以脈沖形式出現,那么接下來可以設計一個小電路,例如當連續檢測P3.5有超過n個脈沖后再驅動繼電器切斷被控制對象,避免測量溫度在“預設報警溫度”參數左右變化時繼電器頻繁動作,只有超過n個脈沖(確認有效報警)時再使繼電器動作。第二是P3.5直接接驅動電路,則在軟件中考慮設置存儲單元,統計“報警標志00H”出現n次變化后,再使P3.5電位發生變化后驅動繼電器切斷被控對象。第二種方法節省硬件開銷,是值得考慮的。
3 結 語
本文的創新在于遵循硬件電路簡潔可靠,充分利用軟件編程的便利,實現溫度測控的目的,文中較詳細地闡述了整體方案與計算程序單元,對正、負溫度的數據處理提出了明確方法,對于報警與控制的設計則表現出主程序結構的特點。溫度測量的精度主要取決于傳感器的測量誤差,而1 s定時時間的精度是可以保證的。相比于其他溫度傳感器件更高的測量精度,MAX6577的優勢在于節省A/D轉換,并且與單片機接口處理上更簡潔,因此在電信裝置、醫療裝置、汽車等方面的溫度測量、監測等方面有一定實用價值。
參 考 文 獻
[1][JP3]Maxim.MAX6576-MAX6577.pdf[EB/OL].http://www.max[CD*3]
im-ic.com.cn/pdfserv/en/ds/MAX6576-MAX6577.pdf.[JP]
[2]江思明.電路工程設計——Protel 99實例演練[M].北京:人民郵電出版社,2000.
[3]趙娜,趙剛,于珍珠,等.基于51單片機的溫度測量系統[J].微計算機信息,2007,23(2):146-148.
[4]康華光.電子技術基礎(模擬部分)[M].北京:高等教育出版社,2001.
[5]胡漢才.單片機原理及其接口技術[M].北京:清華大學出版社,2004.
作者簡介
劉靜波 男,1969年出生,江蘇靖江人,學士,實驗師。研究方向為電子技術應用。
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”