摘 要:1-Wire總線技術(shù)具有節(jié)省I/O資源、結(jié)構(gòu)簡單,、成本低廉,,便于總線擴(kuò)展和方便維護(hù)等特點(diǎn)。文章中介紹了1-Wire總線技術(shù)數(shù)字溫度傳感器的基本特性與功能塊圖,,數(shù)字溫度傳感器ROM命令和功能命令,。闡述了1-Wire總線技術(shù)數(shù)字溫度傳感器供電方式。利用1-Wire總線技術(shù)使用多個數(shù)字溫度傳感器,,實時時鐘電路,,鍵盤顯示電路,串行存儲器電路,,RS485通信電路以及看門狗電路等,,組成了火災(zāi)報警系統(tǒng)硬件系統(tǒng)。繪制了溫度采集與處理流程圖,。采用多個傳感器測量不同房間內(nèi)的溫度,,可以設(shè)置不同房間的報警上限值,可以實現(xiàn)多個房間對應(yīng)溫度的顯示和報警,。1-Wire總線技術(shù)數(shù)字溫度傳感器已經(jīng)成功地應(yīng)用于火災(zāi)報警系統(tǒng)中,。
關(guān)鍵詞:1-Wire技術(shù);溫度傳感器;火災(zāi)報警;溫度采集
1.引言
1-Wire總線技術(shù)具有節(jié)省I/O資源、結(jié)構(gòu)簡單,、成本低廉,,便于總線擴(kuò)展和方便維護(hù)等特點(diǎn)。因此在分布式測溫系統(tǒng)中有著廣泛的應(yīng)用,。而美國DALLAS公司生產(chǎn)的單總線智能溫度傳感器DS18B20是采用1-Wire總線技術(shù)的典型產(chǎn)品[2],。DS18B20通過單線按照1-Wire協(xié)議傳送特定的命令序列并進(jìn)行數(shù)據(jù)通信。該系列產(chǎn)品有個很重要的特性就是在出廠前每個器件都被寫入了唯一的64位ROM 碼即序列號,,最低有效字節(jié)為家族代碼,。代表器件的類型。如DS1990A的家族碼為01H,,DS18B20的家族碼為28H,。由于在同一條1-Wire 總線上可同時掛接多個相同系列或不同系列的1-Wire 器件,因此主機(jī)必須能夠決定如何正確地訪問位于1-Wire 總線上的各個器件,。64位ROM 碼中家族碼提供了器件的類型,,隨后的6 個字節(jié)是器件的唯一序列號,用以區(qū)分同一個系列的不同器件,。該序列號可作為1-Wire 總線上器件的地址,。這樣1-Wire 總線上的所有器件連同主機(jī)就構(gòu)成了一個微型局域網(wǎng),。它們之間通過一條公共線來進(jìn)行通信[5].
2.數(shù)字溫度傳感器特性與功能塊圖。
DS18B20的核心功能就是可以直接轉(zhuǎn)換成數(shù)字量,。由于每一個智能溫度傳感器DS18B20有一個唯一的64位序列號,。允許多個DS18B20在同一條總線上工作。因此可以用一個單片機(jī)在一個大范圍內(nèi)控制多個數(shù)字溫度傳感器DS18B20,,經(jīng)常用于環(huán)境溫度控制,、溫度監(jiān)測系統(tǒng)以及過程監(jiān)測和控制系統(tǒng)中。1-Wire 器件64位序列號的最高有效字節(jié)是循環(huán)冗余校驗CRC 碼,。該值基于前面的56位數(shù)據(jù),。當(dāng)系統(tǒng)主機(jī)開始與某個器件進(jìn)行通信時,可以從低位開始讀取8個ROM 字節(jié)即64位序列號,。
1-Wire總線技術(shù)的溫度傳感器DS18B20溫度的測量范圍為 - 55℃ ~ + 125℃ ,。便箋存儲器中包含兩個字節(jié)溫度寄存器用于存儲溫度傳感器的數(shù)字輸出。另外提供一個字節(jié)報警上限TH和一個字節(jié)報警下限TL寄存器,。還有一個字節(jié)組態(tài)寄存器。組態(tài)寄存器允許用戶設(shè)置分辨率為9 ~ 12位,。分別對應(yīng)溫度值0.5℃,、0.25℃、0.125℃和0.0625℃,。TH,、、TL和組態(tài)寄存器可以存放在EEPROM中,,因此當(dāng)系統(tǒng)掉電時,,TH、,、TL和組態(tài)寄存器中的數(shù)據(jù)仍將保存,。1-Wire總線技術(shù)的溫度傳感器DS18B20功能塊如圖1所示。
圖1 1-Wire技術(shù)的溫度傳感器DS18B20功能塊圖
3.數(shù)字溫度傳感器ROM命令和功能命令,。
為了能夠使1-Wire總線技術(shù)的溫度傳感器DS18B20正常工作,,需要按照一定順序執(zhí)行相關(guān)命令。首先進(jìn)行初始化,,其次執(zhí)行ROM命令,,最后執(zhí)行DS18B20功能命令。常用的ROM命令有5個,。每個命令均為一個字節(jié),。在發(fā)送DS18B20功能命令之前,主CPU必須發(fā)布適當(dāng)?shù)腞OM命令,。對ROM的五種操作命令有ROM搜索命令(代碼為F0H),,ROM命令(代碼為33H),,匹配ROM命令(代碼為55H),跳過ROM命令(代碼為CCH)和搜索報警命令(代碼為ECH),。
當(dāng)主CPU使用了ROM命令之后,,如果訪問想要通信的從設(shè)備DS18B20時,主CPU能夠發(fā)布一個DS18B20功能命令,。1-Wire總線技術(shù)的溫度傳感器DS18B20功能命令主要有5條,。這些命令允許主CPU讀或?qū)慏S18B20的便箋存儲器,開始溫度轉(zhuǎn)換以及決定電源的模式,。DS18B20功能命令如下所述,。
1.溫度轉(zhuǎn)換命令(代碼為44H)使DS18B20開始轉(zhuǎn)換。轉(zhuǎn)換完畢的溫度數(shù)據(jù)存放在兩個字節(jié)的溫度寄存器中,。
2.寫便箋存儲器命令(代碼為4EH)允許主CPU 寫3個字節(jié)數(shù)據(jù)到便箋存儲器中,。第一個數(shù)據(jù)字節(jié)被寫入到TH寄存器中,第二個數(shù)據(jù)字節(jié)被寫入到TL寄存器中,,第三個數(shù)據(jù)字節(jié)被寫入到組態(tài)寄存器中,。數(shù)據(jù)寫入從最低有效位開始。在主CPU發(fā)出復(fù)位脈沖之前,,三個字節(jié)必須被寫完,。
3.讀便箋存儲器命令(代碼為BEH)允許主CPU 讀出便箋存儲器中的內(nèi)容。數(shù)據(jù)傳輸從字節(jié)0的最低有效位開始到字節(jié)8,。便箋存儲器中的9個字節(jié)內(nèi)容被讀出,。其中字節(jié)8為CRC校驗碼。如果只需要讀出便箋存儲器中的部分字節(jié),,主CPU可以隨時發(fā)出復(fù)位脈沖終止讀操作,。
4.拷貝便箋存儲器命令(代碼為48H)將拷貝便箋存儲器字節(jié)2、3,、4即TH ,、TL和組態(tài)寄存器內(nèi)容到EEPROM。
5.從EEPROM重新調(diào)出命令(代碼為B8H)將從EEPROM重新調(diào)出TH ,、TL和組態(tài)寄存器內(nèi)容,,并將數(shù)據(jù)放置到便箋存儲器字節(jié)2、3,、4中,。上電時從EEPROM重新調(diào)出命令(代碼為B8H)將會自動執(zhí)行。
4. 火災(zāi)報警系統(tǒng)硬件組成
火災(zāi)報警系統(tǒng)由AT89C51,,實時時鐘電路DS1302,,鍵盤與顯示電路,RS485通信電路,,MAX813L組成的看門狗電路,,串行E2PROM存儲器電路等組成,,采用多個傳感器測量不同房間內(nèi)的溫度,可以設(shè)置不同房間的報警上限值,,可以實現(xiàn)多個房間對應(yīng)溫度的顯示和報警,。
火災(zāi)報警系統(tǒng)硬件組成如圖2所示。
圖2 火災(zāi)報警系統(tǒng)硬件組成圖
5. 1-Wire總線技術(shù)數(shù)字溫度傳感器供電方式
DS18B20的電源供電有兩種,。外部供電方式和寄生電源供電方式,。外部供電方式如圖3所示。圖3中引腳 VDD接外部電源,。而寄生電源供電方式不需要外部電源如圖4所示,。工作于寄生電源供電方式時,VDD和GND 均接地,。在需要遠(yuǎn)程溫度檢測和空間受限制時非常有用,。圖3中當(dāng)1-Wire總線為高電平時,DS18B20從1-Wire總線上經(jīng)過引腳DQ“偷竊”電源,,偷竊的電荷給總線供電,。當(dāng)總線為低電平時,存儲在寄生電源電容上的電荷為傳感器供電,。當(dāng)DS18B20用于寄生電源供電方式時,,VDD必須要接地[1]。但是在寄生電源供電方式時,,當(dāng)DS18B20執(zhí)行溫度轉(zhuǎn)換和拷貝便箋存儲器內(nèi)容到EEPROM中時,操作電流能夠達(dá)到1.5mA. 此電流能夠?qū)е码妷好黠@下降而使傳感器不能正常工作,。為了保證DS18B20有充足的供電電流,,當(dāng)進(jìn)行溫度轉(zhuǎn)換和拷貝便箋存儲器內(nèi)容到EEPROM中時,必須要在總線上提供足夠強(qiáng)的上拉,??梢杂靡粋€MOSFET管來完成對總線的上拉如圖4 所示。一般當(dāng)檢測的溫度超過100℃時,,建議不要使用寄生電源供電方式而要用外部供電方式,。因為在這樣高的溫度下,由于高的泄漏電流,,DS18B20不可能保持?jǐn)?shù)據(jù)通信,。因此在條件允許的情況下,盡量采用外部供電方式,。
圖3 DS18B20的外部供電方式
圖4 DS18B20的寄生電源供電方式
6. 溫度采集與處理流程圖
基于AT89C51單片機(jī)設(shè)計的火災(zāi)報警系統(tǒng)采用智能溫度傳感器DS18B20,,在正確讀出64位序列號之后,需要根據(jù)時序的嚴(yán)格要求,,編寫溫度讀取程序,。單片機(jī)控制DS18B20的溫度轉(zhuǎn)換必須按照DS18B20的命令流程,。首先執(zhí)行初始化時序,然后單片機(jī)發(fā)出跳過ROM命令(代碼為CCH),,此命令針對所有在線DS18B20,,單片機(jī)再發(fā)出啟動轉(zhuǎn)換命令(代碼為44H),啟動DS18B20完成溫度轉(zhuǎn)換,。對于12位分辨率還需延時750ms之后,。接著再執(zhí)行初始化時序,然后單片機(jī)發(fā)出匹配ROM命令(代碼為55H)并向數(shù)據(jù)線上發(fā)出64位序列號,,再發(fā)出讀9個字節(jié)命令(代碼為BEH),,就可以讀出智能溫度傳感器DS18B20對應(yīng)序列號完成溫度轉(zhuǎn)換之后的相應(yīng)正確溫度?;贒S18B20的溫度采集與處理流程圖如圖5 所示,。
圖5 基于1-Wire技術(shù)的DS18B20溫度采集與處理程序流程圖
7.結(jié)束語
傳統(tǒng)的測溫方法是將模擬信號傳送到采樣電路進(jìn)行A/D轉(zhuǎn)換,為了獲得較高精度,,就必須解決多點(diǎn)測量切換及放大電路零點(diǎn)漂移問題,。而1-Wire總線技術(shù)數(shù)字溫度傳感器的出現(xiàn)較好地解決上述問題。本文作者創(chuàng)新點(diǎn)是應(yīng)用1-Wire總線技術(shù),,采用多個數(shù)字溫度傳感器設(shè)計了火災(zāi)報警系統(tǒng),,分析了傳感器供電方式和特性,闡述了數(shù)字溫度傳感器ROM命令和功能命令,?;贏T89C51設(shè)計了實時時鐘顯示電路,鍵盤顯示電路,,串行存儲器電路,,RS485通信電路,看門狗電路等,,闡述了火災(zāi)報警系統(tǒng)的硬件構(gòu)成圖,。設(shè)計了溫度采集的流程圖,并編寫程序完成了溫度的正確顯示,。1-Wire技術(shù)溫度傳感器DS18B20將溫度信號直接轉(zhuǎn)換成串行數(shù)字信號以供單片機(jī)處理,,在單總線接口上掛接了多個傳感器,直接以一總線的數(shù)字方式傳輸現(xiàn)場溫度,,方便地組成分布式多點(diǎn)測溫系統(tǒng),。使用1-Wire總線技術(shù)數(shù)字溫度傳感器有效地降低成本,使應(yīng)用系統(tǒng)可靠性高而且傳輸距離遠(yuǎn),。目前已經(jīng)較好地應(yīng)用于分布式測溫的火災(zāi)報警系統(tǒng)中,。
參考文獻(xiàn)
[1] Dallas Semiconductor. DS18B20 1-Wire Digital Thermometer [Z]. Dallas Semiconductor Co, 2002
[2] 于永學(xué),葛建,,1-Wire總線數(shù)字溫度傳感器DS18B20及應(yīng)用 [J],,電子產(chǎn)品世界,,2003.12 / 下半月
[3] 谷云輝,劉亞斌,,基于自動測試系統(tǒng)的故障診斷方法研究 [J],,微計算機(jī)信息,2005年第 7 期
[4] 徐維濤,,郝曉弘,,OCXO恒溫槽溫度控制系統(tǒng)控制方法研究 [J],微計算機(jī)信息,,2006年第 3 期
[5] 運(yùn)用和理解Dallas iButtonTM 產(chǎn)品中的循環(huán)冗余校驗(CRC)[Z],,www. dalsemi. Com