基于單總線數(shù)字溫度傳感器的分布式測溫系統(tǒng)_第1頁
基于單總線數(shù)字溫度傳感器的分布式測溫系統(tǒng)_第2頁
基于單總線數(shù)字溫度傳感器的分布式測溫系統(tǒng)_第3頁
基于單總線數(shù)字溫度傳感器的分布式測溫系統(tǒng)_第4頁
基于單總線數(shù)字溫度傳感器的分布式測溫系統(tǒng)_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于單總線數(shù)字溫度傳感器的分布式測溫系統(tǒng) 金 懿, 劉彭義, 張葡青(暨南大學(xué) 物理系,廣東 廣州 510632)摘 要 闡述一種新型單總線數(shù)字溫度傳感器DS18B20,以及利用單總線數(shù)字輸出特點(diǎn)和微機(jī)、89C51單片機(jī)構(gòu)成的分布式測溫系統(tǒng),并介紹了該系統(tǒng)軟、硬件設(shè)計(jì)。關(guān)鍵詞 單總線 溫度傳感器 分布式 單片機(jī) 中圖分類號 TP273 文獻(xiàn)標(biāo)示碼 A 文章編號DS18B20是美國DALLAS公司的新一代單總線數(shù)字溫度傳感器,其單總線是將地址線、數(shù)據(jù)線、控制線合三為一根信號線,實(shí)現(xiàn)了一信號線上進(jìn)行雙向數(shù)據(jù)傳輸,最大限度使通訊線數(shù)量減到最少,使系統(tǒng)構(gòu)成更趨于簡單化。該系統(tǒng)是以PC機(jī)為上位主機(jī),以單

2、片機(jī)為核心的數(shù)據(jù)采集為下位機(jī),單片機(jī)只需一根端口線就能與多個(gè)DS18B20串接和通訊,單片機(jī)通過串行口跟PC機(jī)連在一起,構(gòu)成三位一體的主從分布式控制系統(tǒng)。該系統(tǒng)具有溫度檢測、顯示、打印和故障自檢等多種功能。 1 數(shù)字溫度傳感器DS18B20的特性 DS18B20單線數(shù)字溫度傳感器是新一代溫度傳感器,它具有微型化、低功耗與其它溫度傳感器相比,具有以下特性:(1) 將被測溫度直接轉(zhuǎn)換為計(jì)算機(jī)可識別的數(shù)字信號輸出,使用中不需要任何外圍設(shè)備,避免了傳統(tǒng)溫度傳感器存在的參數(shù)不一致,所造成電路重新調(diào)試的問題,克服了模擬溫度傳感器互換性差的缺點(diǎn);(2) 獨(dú)特的單線接口方式,僅需要一條線與微處理器連接即可實(shí)現(xiàn)

3、雙向通訊。(3) 每個(gè)DS18B20都含有一個(gè)唯一的序列號,允許多個(gè)DS18B20并聯(lián)在同一總線上,支持多點(diǎn)組網(wǎng)功能,實(shí)現(xiàn)多點(diǎn)測溫。(4) 測溫范圍為-55+125,在10 +85時(shí)其精度為0.5。(5) 在93.75ms750ms內(nèi)將溫度轉(zhuǎn)換為912位數(shù)字量位數(shù)輸出,結(jié)果已串行傳送。(6) 非易失性溫度限制觸發(fā)器TH和TL存儲用戶通過軟件寫入的限制溫度的上下限值。(7) 有5條關(guān)于ROM的操作命令、6條關(guān)于存儲器的操作命令。(8) 含寄生電源,既可單總線供電,也可用外部電源供電。并具有良好的負(fù)壓特性,當(dāng)電源極性接反時(shí),DS18B20雖然不能正常工作,但不會發(fā)熱而損壞。正是由于DS18B20有

4、以上特性,它在解決各種誤差分析、可靠性和系統(tǒng)優(yōu)化等方面比傳統(tǒng)溫度傳感器有極大的優(yōu)勢。2 DS18B20操作協(xié)議 一般較小的硬件需要相對復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS18B20與單片機(jī)間采用串行數(shù)據(jù)傳送,因此,它們之間有嚴(yán)格的時(shí)隙概念。單線信號包括復(fù)位脈沖,響應(yīng)脈沖,寫“0”,寫“1”,讀“1”。所以系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行,否則將無法讀取測溫結(jié)果。操作協(xié)議為: 初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令數(shù)據(jù)處理。DS18B20單總線上所有處理均有初始序列開始。 為了識別已連接到單總線上的數(shù)字溫度傳感器,處理器先向DS18B20發(fā)送一個(gè)持續(xù)480960u

5、s的低電平信號,然后進(jìn)入輸入模式釋放總線,在檢測到I/O引腳上升沿之后,等待1560us,當(dāng)DS18B20接收到上述時(shí)序信號時(shí)會 在單數(shù)據(jù)線上產(chǎn)生一個(gè)60us240us的低電平信號來表示就緒狀態(tài)。如果由DS18B20所返回的低電平持續(xù)時(shí)間少于60us,則表示就緒信號無效。主機(jī)要重新發(fā)送初始化時(shí)間序列,DS18B20初始化時(shí)序如圖1所示1。 在測溫系統(tǒng)中,主機(jī)可通過符合ROM命令的64位ROM代碼中找到一個(gè)唯一與ROM代碼相符的DS18B20。 圖1 DS18B20初始化時(shí)序DS18B20讀寫時(shí)序主要有存在脈沖、復(fù)位脈沖、讀時(shí)間片和寫時(shí)間片等操作。芯片本身帶有命令集和存儲器,處理器通過發(fā)出控制命

6、令,對芯片存儲器進(jìn)行讀寫。所有這些信號除“存在脈沖”由DS18B20產(chǎn)生外,其它均有處理器產(chǎn)生。3 分布式測溫系統(tǒng)原理3.1由下位機(jī)與DS18B20組成的溫度數(shù)據(jù)采集系統(tǒng)圖2 下位機(jī)溫度數(shù)據(jù)采集系統(tǒng)本系統(tǒng)利用DS18B20完成溫度采樣及轉(zhuǎn)換工作,而單片機(jī)89C51起實(shí)時(shí)控制及通訊作用。使用時(shí),將多個(gè)DS18B20與單片機(jī)一位口線相連,形成多點(diǎn)測溫,如圖2所示。由于DS18B20單線制,因此發(fā)送、接收口最好分開,我們把89C51的P1.0口作發(fā)送口Tx,P1.1口作接收口Rx2。這樣做可使讀寫在操作上分開,讀寫分開操作,使每一路可掛接DS18B20數(shù)十片,距離可達(dá)約50米,同時(shí)可消除信號競爭問題

7、。如用一個(gè)口時(shí)僅能掛8片,DS18B20距離僅為20米左右。利用單片機(jī)的多根I/O口線來驅(qū)動P1.0P1.7共8條數(shù)據(jù)線,做成4路數(shù)據(jù)采集口。在每一路我們?yōu)榱吮kU(xiǎn)僅連接十片DS18B20,一塊單片機(jī)就能連接40個(gè)DS18B20。供電方式采用外電源供電。液晶顯示用于顯示每片單片機(jī)及與其連接的40個(gè)DS18B20組成的測溫?cái)?shù)據(jù)采集系統(tǒng)的工作狀態(tài)、采樣溫度、超限報(bào)警等,供現(xiàn)場工作人員監(jiān)督系統(tǒng)運(yùn)行狀態(tài)。由于底層的測溫點(diǎn)是由眾多的DS18B20構(gòu)成,所以首先要弄清每一只DS18B20的序列號,以便其做出響應(yīng)。每個(gè)DS18B20都有一個(gè)唯一的64位產(chǎn)品系列號,沒有一個(gè)器件之間的編號是相同的。通訊時(shí)系統(tǒng)第一

8、步首先發(fā)復(fù)位脈沖使線上所有DS18B20芯片都被復(fù)位,圖3 DS18B20操作流程圖后反復(fù)搜索DS18B20序列號,第二步是發(fā)送ROM操作命令,啟動所有在線DS18B20做溫度轉(zhuǎn)換。第三步發(fā)出選擇匹配器件命令,在發(fā)出該操作命令后,掛接于在線上的所有DS18B20器件均對收到的系列編號于其自身系列編號相比較,只有系列號相同的才對隨后的命令進(jìn)行響應(yīng),其余器件則不作任何響應(yīng)。第四步逐個(gè)讀出在線上DS18B20轉(zhuǎn)換后的溫度值。圖3為DS18B20操作總體流程圖。DS18B20與單片機(jī)兩者的通訊及協(xié)作按DS18B20的讀寫時(shí)序串行進(jìn)行。89C51中的監(jiān)控程序不斷地對溫度數(shù)據(jù)進(jìn)行比較。3.2 分布式測溫系

9、統(tǒng)的組成圖4 分布式測溫系統(tǒng)結(jié)構(gòu)框圖本系統(tǒng)第一層選用了一臺PC機(jī)作為上位機(jī),是想充分利用其快速的數(shù)值計(jì)算功能及豐富的外設(shè)資源,。上位機(jī)是負(fù)責(zé)全系統(tǒng)的控制和管理,通過串行通信線,按應(yīng)答式通信規(guī)約與第二層的10個(gè)下位機(jī)組成兩級主從分布式測溫系統(tǒng)。它具有收集、整理、采集、顯示、打印等功能;選用單片機(jī)作為第二層下位機(jī),是想發(fā)揮其接口簡單、數(shù)據(jù)傳輸方便、價(jià)格低等優(yōu)點(diǎn)。上下位機(jī)之間的關(guān)系為上位機(jī)向下位機(jī)下達(dá)工作方式命令。系統(tǒng)結(jié)構(gòu)框圖見圖4。從圖中可見該系統(tǒng)是由1臺PC機(jī)、10片單片機(jī)、400個(gè)測溫點(diǎn)所構(gòu)成典型的主從分布式測溫系統(tǒng)。用DS18B20單線數(shù)字溫度傳感器研制的分布式測溫系統(tǒng)中的通訊部分,是基于P

10、C機(jī)與單片機(jī)之間通過RS232串口和RS485通訊總線連接,可實(shí)現(xiàn)遠(yuǎn)距離控制。所有的RS485網(wǎng)上的通信由上位機(jī)控制,采用上位機(jī)主導(dǎo)的命令/響應(yīng)方式,從而避免設(shè)備在同一時(shí)間發(fā)送數(shù)據(jù)而導(dǎo)致競爭。其過程是上位機(jī)通過向下位機(jī) 發(fā)送地址信息來獲取下位機(jī)的響應(yīng)。上位機(jī)通過串口每次將此字節(jié)數(shù)據(jù)定時(shí)接收。通信 方式是,首先由上位機(jī)發(fā)出一通訊命令,單片機(jī)接收道該命令后,通過串口中斷逐一發(fā)送數(shù)據(jù),一旦總線數(shù)據(jù)與總線端口地址相符,下位機(jī)就馬上把采集到的數(shù)據(jù)發(fā)送到總線上,上位機(jī)接收到溫度數(shù)據(jù)后,將數(shù)據(jù)轉(zhuǎn)化成十進(jìn)制數(shù),根據(jù)這些數(shù)據(jù)繪制成曲線顯示在屏幕上。 該系統(tǒng)的第三層傳感器網(wǎng)絡(luò)是由400個(gè)測溫點(diǎn)所組成,實(shí)現(xiàn)多點(diǎn)測溫

11、。下位機(jī)對傳感器操作是根據(jù)DS18B20操作協(xié)議進(jìn)行。系統(tǒng)在操作時(shí)還需將400片DS18B20的序列號讀出并存放在單片機(jī)中,這樣在進(jìn)行溫度采集時(shí),只要根據(jù)序列號,即可對每個(gè)DS18B20進(jìn)行操作。上位機(jī)在使用前也應(yīng)對DS18B20進(jìn)行搜索,并將其序列號存儲起來,以后對DS18B20尋址時(shí),只要發(fā)相應(yīng)的序列號,也可對其操作。4 上位機(jī)軟件及數(shù)據(jù)分析4.1 上位機(jī)系統(tǒng)軟件本系統(tǒng)上位機(jī)的軟件是用VC+6.0編寫的,實(shí)現(xiàn)多種人機(jī)對話方式,操作簡便,適合現(xiàn)場使用。系統(tǒng)主要有設(shè)置選擇下位機(jī)及測溫點(diǎn)數(shù)目,溫度上下限值,測溫時(shí)間,溫度巡檢與巡檢時(shí)切換監(jiān)視畫面的時(shí)間選擇,曲線顯示,打印。上位機(jī)軟件主程序流程圖見

12、圖5,主程序執(zhí)行全系統(tǒng)監(jiān)控和管理。顯示模塊顯示系統(tǒng)運(yùn)行狀態(tài);數(shù)據(jù)收集處理模塊,從串行接收緩沖區(qū)獲得各下位機(jī)的狀態(tài)、溫圖5 主程序流程圖度采集值、下位機(jī)編號、傳感器序列號,整理后進(jìn)行保存和歸檔;命令輸入模塊,從鍵盤獲取命令進(jìn)行分析、處理;命令分析處理模塊,按不同命令要求或修改系統(tǒng)工作模式、調(diào)整運(yùn)行參數(shù),或整理數(shù)據(jù)送串行發(fā)送緩沖區(qū),由通信中斷服務(wù)發(fā)送到下位機(jī)。 4.2 數(shù)據(jù)分析表1 溫度數(shù)據(jù)(DS18B20)溫度數(shù)據(jù)如表1所示(DS18B20傳感器12位數(shù)據(jù)溫度分辨率為0.0625)。 5、溫度采集軟件流程 我們用DS18B20單線數(shù)字溫度傳感器研制的測溫系統(tǒng)的軟件有溫度采集及兩個(gè)。溫度數(shù)據(jù)采集程

13、序由圖7所示。溫度數(shù)據(jù)采集循環(huán)n個(gè)DS18B20溫度參數(shù)并存放在89C51的40H至53H單元中,每一路溫度占用2個(gè)存儲單元,處理后的溫度值存在73H單元中,上位機(jī)通過RS-232C串口每次將此字節(jié)數(shù)據(jù)定時(shí)接收。通信方式是,首先由上位機(jī)發(fā)出一通訊命令,單片機(jī)接收道該命令后,通過串口中斷逐一發(fā)送數(shù)據(jù)。在讀該程序前應(yīng)先編制一個(gè)DS18B20的序列號讀出子程序,將n片DS18B20的序列號讀出并存放在單片機(jī)的溫度采集程序中,這樣在進(jìn)行溫度采集時(shí),只要依序列號對各個(gè)DS18B20操作即可。本系統(tǒng)上位機(jī)的軟件,實(shí)現(xiàn)多種人機(jī)對話方式,操作簡便,適合現(xiàn)場使用。下位機(jī)軟件實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)與上位機(jī)的數(shù)據(jù)通信。

14、溫度(十進(jìn)制) 溫度輸出(二進(jìn)制) 溫度輸出(十六進(jìn)制)() +30 0000000111100000 01E0H +25.0625 0000000110010001 0191H+10.125 0000000010100010 00A2H+0.5 0000000000001000 0008H 0 0000000000000000 0000H-0.5 1111111111111000 FFF8H-10.125 1111111101011110 FF5EH NN讀數(shù)據(jù)并校驗(yàn)當(dāng)前溫度值是n號DS18B20?等待正確回應(yīng)?發(fā)送skip ROM命令發(fā)送起始信號結(jié)束測量開始發(fā)溫度轉(zhuǎn)換命令(44H)發(fā)送起始

15、信號發(fā)送skip ROM命令YY圖5溫度采集程序流程圖6、實(shí)現(xiàn) DS18B20高精度測溫61 DS18B20測溫原理DS18B20測溫原理如圖3所示。圖中內(nèi)部計(jì)數(shù)器2對一個(gè)隨溫度變化其振蕩頻率明顯改變的振蕩器所產(chǎn)生的脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55對應(yīng)的基數(shù)。低溫時(shí),振蕩器產(chǎn)生的脈沖信號可通過門電路,當(dāng)?shù)竭_(dá)某一設(shè)置溫度值時(shí),振蕩器產(chǎn)生的脈沖信號無法通過門電路,此時(shí)溫度寄存器中的數(shù)值就是所測溫度值,這個(gè)值以16位形式存放在高速存儲器中。此溫度值可由主機(jī)通過發(fā)存儲器讀命令而讀出。斜率累加器用于補(bǔ)償、修正測溫過程的非線性。低溫度系數(shù)振蕩器高溫度系數(shù)振蕩器斜率累加器計(jì)數(shù)器1預(yù)置計(jì)數(shù)器2

16、0溫度寄存器預(yù)置比較0加1停止設(shè)置/清理LSB圖6 DS18B20測溫原理框圖 DS18B20的溫度值以0.5/LSB(最低有效位)來表示,輸出數(shù)據(jù)格式如下(如T25): MSB LSB111001110 由此可看出,DS18B20的溫度值是以9位二進(jìn)制數(shù)來表示的,其中最高有效位MSB為符號位,符號位為“1”表示負(fù)溫度,“0” 表示正溫度。其中最底有效位(LSB)由比較器進(jìn)行0.25比較,當(dāng)計(jì)數(shù)器1中的余值轉(zhuǎn)化成溫度后低于0.25時(shí),清除溫度寄存器的最底位(LSB), 當(dāng)計(jì)數(shù)器1中的余值轉(zhuǎn)化成溫度后高于0.25時(shí),置位溫度寄存器的最底位(LSB)。表1 溫度對應(yīng)值溫度(十進(jìn)制) 溫度輸出(二進(jìn)

17、制) 溫度輸出(十六進(jìn)制)() (MSB,LSB)+125 00000000,11111010 00FAH+25 00000000,00110010 0032H+0.5 00000000,00000001 0001H 0 00000000,00000000 0000H-0.5 11111111,11111111 FFFFH-25 11111111,11001110 FFCEH-55 11111111,10010010 FF92H62 提高DS18B20測溫精度的方法DS18B20正常使用時(shí)的測溫分辨率為0.5。如果采取直接讀取DS18B20內(nèi)部暫存器的方法,可將DS18B20的測溫分辨率提高到

18、0.1 0.01。DS18B20內(nèi)部暫存器分布如表1所示,其中第7字節(jié)存放的是當(dāng)溫度寄存器停止加1時(shí),計(jì)數(shù)門關(guān)閉后保留在計(jì)數(shù)器1中的值,第8字節(jié)存放的是每度所對應(yīng)的計(jì)數(shù)值,然后,可通過以下方法獲得高精度測溫的結(jié)果。首先用DS18B20提供的暫存器指令(BEH)讀出溫度結(jié)果,然后轉(zhuǎn)化成0.5/LSB(最底有效位),得到所測實(shí)際溫度整數(shù)部分,記為TEMP.READ。隨后再用BEH指令讀取計(jì)數(shù)門關(guān)閉后保留在計(jì)數(shù)器1中的值COUNT.REMAIN和每度所對應(yīng)的計(jì)數(shù)值COUNT.PER.C,由于DS18B20測溫整數(shù)部分以0.25為進(jìn)界限關(guān)系,所以用下面公式直接計(jì)算,可得到高精度實(shí)測溫度。實(shí)際溫度TEM

19、P.READ-0.25+(COUNT.PER.C-COUNT.REMAIN)/ COUNT.PER.C表1 DS18B20內(nèi)部暫存器分布 表2 DS18B2直讀測溫結(jié)果與計(jì)算測溫結(jié)果數(shù)據(jù)比較 寄存器內(nèi) 字節(jié)地址 次數(shù) 直讀測溫?cái)?shù) 計(jì)算測溫?cái)?shù) 溫度最底有效位 0 1 10 9.875 溫度最高有效位 1 2 20 20.016 高溫限值 2 3 30 30.108低溫限值 3 4 40 40.215 保留 4 5 50 49.981 保留 5 6 60 60.171計(jì)數(shù)保留值 6 7 70 69.893每度計(jì)數(shù)值 7 8 80 79.861CRC效驗(yàn) 8 9 90 90.093 表2列出采用直接

20、讀取測溫結(jié)果方法和采用計(jì)算方法得到的測溫?cái)?shù)據(jù)精度比較,通過比較可看出,計(jì)算方法測溫可較大的提高DS18B20的測溫精度。63實(shí)現(xiàn)高精度測溫的軟件流程通過以上分析、計(jì)算,在加上軟件編程(如圖7示),即可得到高精度測溫。 Y開始發(fā)溫度轉(zhuǎn)換命令(44H)讀暫存寄存器(BEH)計(jì)算高精度溫度轉(zhuǎn)換結(jié)束 ?結(jié)束測量。.。N 圖7高精度測溫的軟件流程 先用讀暫存寄存器指令讀出以0.5為分辨率的溫度測量結(jié)果TEMP.READ(暫存寄存器第1、第2字節(jié)),然后在讀出暫存寄存器中第7字節(jié)COUT.REMAIN和第8字節(jié)COUNT.PER.C,再由上述公式計(jì)算精確的溫度值。7、結(jié)束語 溫度傳感器DS18B20構(gòu)成的單總線多點(diǎn)測溫系統(tǒng),具有測點(diǎn)多、工作性能穩(wěn)定、抗干擾能力強(qiáng)、體積小、低功耗、安裝線路簡單、價(jià)格低廉等優(yōu)點(diǎn)。 并且通過單條連接線解

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論