趙彩霞
摘 要:該文提出了采用單總線數(shù)字式溫度傳感器DS18B20和單片機組成的新型智能多點溫度檢測系統(tǒng)。在文中,首先介紹了DS18B20的基本特性,然后給出了相應(yīng)的硬件接口電路、軟件流程及主要程序代碼。DS18B20具有直接輸出數(shù)字信號、單總線接口、成本低等優(yōu)點。經(jīng)試驗,基于單總線器件DS18B20的多點溫度檢測系統(tǒng)測量溫度準(zhǔn)確、測溫范圍寬、體積小、控制方便。
關(guān)鍵詞:單總線 DS18B20 多點測溫
中圖分類號:TP21 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2015)01(c)-0100-03
Abstract:In this paper,a new multi-spot temperature survey system composed of 1-wire temperature sensor DS18B20 and MCU is designed.This article introduces the basic characteristics of DS18B20,and this article also gives the corresponding hardware interface circuit,software flow diagram and the primary code.DS18B20 has a series of characteristics such as digital output,1-wire interface and low cost.Test show that the multi-spot temperature survey system has the advantages of accurate measurement,wide temperature range,small volume and convenient controlling.
Key Words:1-wire;DS18B20;Multi-spot measuring temperature
在中央空調(diào)系統(tǒng)、冷庫系統(tǒng)、反季節(jié)大棚等多種系統(tǒng)中都需要多點的溫度檢測。因此,多點溫度檢測系統(tǒng)的高效率和低成本對實際生活生產(chǎn)具有重要意義。傳統(tǒng)的溫度檢測系統(tǒng)大都以熱電阻、熱電偶為傳感器,將被檢測的模擬信號放大、調(diào)理及A/D轉(zhuǎn)換,然后將所得的數(shù)字信號送入CPU處理,其可靠性相對較差,且處理電路復(fù)雜、成本高,對CPU的資源占用較多。而Dallas公司推出的DS18B20是單總線數(shù)字溫度傳感器,它可以將輸入的溫度模擬信號直接轉(zhuǎn)換為數(shù)字信號,轉(zhuǎn)換給CPU,電路簡單。系統(tǒng)設(shè)計中可以用總線拓?fù)?,在一根I/O線上掛接多個傳感器,非常適合溫度的多點測量。
1 DS18B20簡介
DS18B20是美國Dallas半導(dǎo)體公司生產(chǎn)的單總線數(shù)字溫度傳感器,它將半導(dǎo)體溫敏元件、A/D轉(zhuǎn)換器、存儲器等做在一個很小的集成電路芯片上,傳感器直接輸出的是溫度信號數(shù)字值。它具有微型化、低功率、高性能、抗干擾能力強、電壓范圍寬、易于與單片機接口等優(yōu)點,適合于各種溫度測控系統(tǒng)。[]DS18B20內(nèi)部的64位激光ROM用于存儲由生產(chǎn)廠家光刻的全球唯一的、且不可更改的64位序列號。CPU通過ROM指令讀取總線上掛接的各個傳感器ROM識別碼以選擇單總線上的某一個從器件,未被選中的從器件則忽略CPU的后續(xù)指令。即以該序列號為傳感器節(jié)點的地址。
2 系統(tǒng)的硬件基礎(chǔ)
測溫系統(tǒng)的主要組成部分有溫度傳感器DS18B20、EEPROM、人機界面(鍵盤、LCD顯示器)和STC15單片機,結(jié)構(gòu)框圖如圖1所示。
系統(tǒng)以單總線的形式掛接多個傳感器于MCU的某一I/O端口。MCU通過單總線完成于傳感器節(jié)點的通訊,主要工作包括:節(jié)點地址的讀取及識別,對選定節(jié)點讀取或傳輸數(shù)據(jù)。EEPROM可以用于對各個傳感器64位序列號的存儲和簡單的溫度記錄。顯示模塊選用字符型液晶顯示器LCD1602,對測量結(jié)果進(jìn)行顯示。
本設(shè)計中的EEPROM可以存儲各個傳感器的64位序列號并進(jìn)行簡單的溫度記錄。此處選用的是ATMEL公司基于I2C總線接口的24C64。對于24C64,要在I2C總線上連續(xù)發(fā)送兩個器件子地址,其尋址范圍可達(dá)16KB。
3 多點識別的實現(xiàn)與軟件設(shè)計
對DS18B20的訪問分為3個步驟。(1)初始化:單片機通過單總線,向DS18B20發(fā)送一個復(fù)位脈沖,單總線上的所有傳感器都被復(fù)位。(2)序列號訪問命令:MCU發(fā)送某一個DS18B20的序列號。單總線上所有相連的DS18B20都進(jìn)行編碼匹配,只有編碼一致的從芯片才被激活。(3)內(nèi)存訪問命令:MCU對選中的DS18B20發(fā)送內(nèi)存訪問命令。
3.1 關(guān)于DS18B20的時序
單總線(1-Wire)是美國Dallas公司推出的外圍串行擴展總線。所有單總線的器件都掛在這跟線上,即僅通過1條連接線,便可以完成全部的控制、通信甚至是供電。與I2C、SPI等芯片間的通信協(xié)議不同,單總線協(xié)議中并沒有專門的時鐘線,所以嚴(yán)格的時序控制是通信得以實現(xiàn)的基礎(chǔ)。DS18B20的通信協(xié)議主要包括復(fù)位和應(yīng)答脈沖時序、寫時序和讀時序。
對DS18B20的每一次操作,都是由復(fù)位開始的。復(fù)位時序如圖2。
首先由單片機發(fā)送復(fù)位脈沖,然后釋放之。若總線上有正常工作的芯片,在15-60us后,傳感器芯片會發(fā)送存在脈沖——60-240us的低電平信號。此時DS18B20的復(fù)位與應(yīng)答已經(jīng)完成了,適當(dāng)延時后既可對其進(jìn)行讀寫操作。
寫時序是單片機主動發(fā)出的,其開始是主機將單總線從高電平拉為低電平,時序如圖3。
讀時序和寫時序類似,由主機發(fā)起,不同的是主機會進(jìn)入采樣狀態(tài),接收數(shù)據(jù)。
3.2 DS18B20的序列號采集
在系統(tǒng)的實際應(yīng)用中,需要測溫節(jié)點的數(shù)字地址與物理位置相一致。即用戶需要知道所顯示的溫度是哪個測溫節(jié)點測出來的,否則一切都沒有意義。
當(dāng)新的DS18B20接入系統(tǒng)時,需要讀取其64位序列號,將該序列號與用戶賦予的人工編碼相對應(yīng),并存入EEPROM中。如此一來,即使系統(tǒng)掉電以后,各個傳感器芯片的序列號也能得以被保存。
傳感器芯片的64位序列號采集流程如圖4所示。當(dāng)單片機發(fā)出復(fù)位脈沖并受到芯片的應(yīng)答信號,就對DS18B20發(fā)送讀ROM命令,即對總線寫#33H。此時,傳感器芯片會做出發(fā)送64位ROM序列號的準(zhǔn)備,但是數(shù)據(jù)的讀時序依然是由主機發(fā)起。當(dāng)64位的ROM序列號讀取完畢后,就可以將當(dāng)前單總線器件的序列號存入EEPROM為其開辟的存儲空間內(nèi)。
3.3 主程序設(shè)計
模塊設(shè)計是使程序結(jié)構(gòu)化的有效方法。該測溫系統(tǒng)的主程序主要分為DS18B20初始化模塊、溫度轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊、顯示模塊以及上文提到的傳感器ROM序列號采集模塊,其中序列號采集模塊是獨立于溫度檢測之外的。
初始化模塊的主要任務(wù)是設(shè)置DS18B20的上、下限報警溫度及傳感器的分辨率,其操作對象是芯片內(nèi)部高速暫存器RAM的第2、3、4字節(jié)。DS18B20內(nèi)部的高速RAM是由9個字節(jié)的高速暫存器和非易失性電擦寫EEPROM集成的,其中EEPROM用于存儲TH、TL和配置存儲器的值。數(shù)據(jù)是先寫入RAM,經(jīng)校驗后在傳給EEPROM,這樣就可以保證本次設(shè)置的參數(shù)在下次開機復(fù)位之后還會有效。此模塊編寫為子程序“DS18B20_INT”。
在溫度轉(zhuǎn)換模塊中,采用了統(tǒng)一轉(zhuǎn)換,逐個讀取的算法。系統(tǒng)中,設(shè)置DS18B20為12位分辨率,溫度轉(zhuǎn)換的時間為750ms(實際的程序延時設(shè)置為1s)。所以,如果要等傳感器逐一進(jìn)行溫度轉(zhuǎn)換并讀取的話,會對影響系統(tǒng)的實時性:第一個傳感器和最后一個傳感器測得溫度的時間差是分鐘級的。所以在溫度轉(zhuǎn)換模塊中,我們先復(fù)位所有的DS18B20,然后發(fā)送“跳過ROM”命令(#0CCH)和“溫度轉(zhuǎn)換”命令(#44H),這就可以實現(xiàn)用一秒的時間使全部傳感器完成溫度轉(zhuǎn)換,然后再逐一讀取并保存,其中最后一步操作只需要極端的時間。此模塊編寫為子程序“TEMP_RD”,其流程見圖5。
DS18B20作為溫度傳感器,突出特點就是它向主機傳輸?shù)牟⒉皇请妷夯螂娏鞯饶M信號,而是不易失真的數(shù)字信號。既然是數(shù)字信號,其結(jié)果就有特定的格式。在DS18B20內(nèi)部,測溫結(jié)果存儲在暫存RAM中,其字節(jié)1的高5位是符號位,字節(jié)0的低4位是小數(shù)部分,中間7位是整數(shù)部分。
當(dāng)數(shù)據(jù)上傳到單片機之后,需要經(jīng)過數(shù)據(jù)轉(zhuǎn)換才可以存入顯示緩沖區(qū)供顯示子程序讀取。數(shù)據(jù)轉(zhuǎn)換模塊的功能是將二進(jìn)制數(shù)據(jù)通過查表的方法轉(zhuǎn)換為按十進(jìn)制位存儲的ASCII碼,存入顯示緩沖區(qū)。此模塊編寫為子程序“DS18B20_DIV”,具體流程見圖6。
4 結(jié)語
基于DS18B20的單總線多點測溫系統(tǒng)具有硬件簡單的突出優(yōu)點,易于擴展,成本低廉。在本課題中,由外接的EEPROM保存單總線器件的獨有序列號和物理地址,使用方便。本設(shè)計經(jīng)試驗條件下測試,工作穩(wěn)定,使用帶屏蔽的三芯電纜,在80米內(nèi)可準(zhǔn)確傳輸數(shù)據(jù)。
參考文獻(xiàn)
[1] 梅麗風(fēng),王艷秋,汪毓鐸,等.單片機原理及接口技術(shù)[M].北京:清華大學(xué)出版社,2006.
[2] 丁向榮.單片機原理與接口技術(shù)—— 基于STC15系列單片機[M].北京:電子工業(yè)出版社,2012.
[3] DALLAS公司的DS18B20數(shù)據(jù)手冊.
[4] 楊海波,張瑋,劉曉靜,等.一種基于數(shù)字溫度傳感器DS18B20的多功能電子溫度計設(shè)計[J].中國醫(yī)學(xué)物理學(xué)雜志,2013,30(1):3890-3893.
[5] 韓雪,蔣國平,馬幼軍.數(shù)字式溫度傳感器DS18B20在溫室環(huán)境監(jiān)測中的應(yīng)用[J].儀表技術(shù)傳感器,2002(9):29-31.
[6] 秦芹.一種基于DS18B20的溫度采集新方案[J].電子技術(shù),2010(10):62-64.