基于單總線的數字溫度傳感器

DSl8B20是Dallas生產的支持單總線接口的溫度感器。單總線獨特而且經濟的特點,使用戶可輕松地組建傳感器網絡。與其他溫度傳感器相比,DSl8B20具有以下特性:
(1)具有3引腳TO-92小體積封裝形式。管腳排列:DQ為數字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。在其內部使用了在板(ON-BOARD)專利技術,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內。
(2)量范圍為-55~+125℃,可編程為9~12位A/D轉換精度。測溫分辨率可達0.0625℃。被測溫度用符號摭展的16位數字量方式串行輸出。
(3)其工作電源既可在遠端引入,也可采用寄生電源方式產生。
(4)獨特的單總線接口方式:DSl8B20在與微處理器連接時僅需要一條口線即可實現微處理器與DSl8B20的雙向通訊。
(5)DS18B20支持多點組網功能。多個DSl8B20可以并聯在唯一的3線上,實現多點測溫,可節省大量的引線和邏輯電路。
1 DS18B20的主要內部結構
DSl8B20內部結構主要由4部分組成:64位光刻ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。每一個DSl8B20包括一個唯一的64位長的序號。該序號值存放在DSl8B20內部的ROM(只讀存貯器)中。開始8位是產品類型編碼(DSl8B20編碼均為28H),接著的48位是每個器件唯一的序號,最后8位是前面56位的CRC循環冗余校驗碼。ROM的作用是使每一個DSl8B20都各不相同,這樣就可以實現一根總線上掛接多個DSl8820的目的。
DSl8B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例,如圖1所示。用16位符號擴展的二進制補碼讀數形式提供,以0.0625℃/LSB形式表達,其中S為符號位。負溫度S=I,正溫度S=O。

2 DS18B20的工作原理
2.1 工作序列
根據DSl8B20的通訊協議,主機控制DSl8B20完成溫度轉換必須經過3個步驟:
(1)每一次讀寫之前都必須要對DSl8B20進行復位;
(2)復位成功后發送一條ROM指令;
(3)最后發送RAM指令,這樣才能對DSl8B20進行預定的操作。
復位要求主CPU將數據線下拉500μs,然后釋放,DSl8B20收到信號后等待16~60μs左右,后發出60~240μs的存在低脈沖,主CPU收到此信號表示復位成功。
2.2 ROM操作命令
當主機收到DSl8B20的響應信號后,便可以發出ROM操作命令之一,這些命令如下:
指令代碼 代碼
Read ROM(讀ROM) [33H]
Match ROM(匹配ROM) [55H]
SkipROM(跳過ROM) [CCH]
SearchROM(搜索ROM) [FOH]
Alarmsearch(告警搜索) [ECH]
3 DS18B20的多點測溫
3.1 多點測溫的原理
每一片DSl8B20在其ROM中都存有其唯一的48位序列號,在出廠前已寫入片內ROM中。主機在進入操作程序前必須用讀ROM(33H)命令將該DSl8B20的序列號讀出:
當主機需要對眾多在線18820的某一個進行操作時,首先要發出匹配ROM命令(55H)。接著主機提供64位序列(包括該18B20的48位序列號),之后的操作就是針對該DSl8820的。而跳過ROM命令,之后的操作是對所有D518820的。
程序可以先跳過ROM.啟動所有DSl8B20進行溫度變換,之后通過匹配ROM,再逐一地讀回每個DSl8B20的溫度數據。
在DSl8B20組成的多點測溫系統中,主機在發出跳ROM命令之后,再發出統一的溫度轉換啟動碼44H,就可以實現所有DSl8B20的統一轉換。再經過1s后就可以用很少的時間去逐一讀取,這種方式使其時間值往往小于傳統方式(由于采取公用的放大電路AD轉換器,只能逐一轉換)。顯然通道數越多這種省時效應就越明顯。
3.2 多點測試系統的組建
實驗采用AT89C51為主機,3個DSl8B20組成一個多點測試系統,如圖2所示。硬件接口非常簡單。DSl8B20的3個管腳DQ、VDD、GND分別接到主機的數據腳P1.0口、外接電源VCC以及GND上,非常節約資源,僅僅用到了主機的一條口線。 風速傳感器相關文章:風速傳感器原理
評論