天天看點

測溫晶片DS18B20詳細解讀

第一部分:DS18B20的封裝和管腳定義

      首先,我們來認識一下DS18B20這款晶片的外觀和針腳定義,DS18B20晶片的常見封裝為TO-92,也就是普通直插三極管的樣子,當然也可以找到以SO(DS18B20Z)和μSOP(DS18B20U)形式封裝的産品,下面為DS18B20各種封裝的圖示及引腳圖。

測溫晶片DS18B20詳細解讀

     了解了這些該晶片的封裝形式,下面就要說到各個管腳的定義了,如下表即為該晶片的管腳定義:

測溫晶片DS18B20詳細解讀

     上面的表中提到了一個“奇怪”的詞——“寄生電源”,那我有必要說明一下了,DS18B20晶片可以工作在“寄生電源模式”下,該模式允許DS18B20工作在無外部電源狀态,當總線為高電平時,寄生電源由單總線通過VDD引腳,此時DS18B20可以從總線“竊取”能量,并将“偷來”的能量儲存到寄生電源儲能電容(Cpp)中,當總線為低電平時釋放能量供給器件工作使用。是以,當DS18B20工作在寄生電源模式時,VDD引腳必須接地。

第二部分:DS18B20的多種電路連接配接方式

如下面的兩張圖檔所示,分别為外部供電模式下單隻和多隻DS18B20測溫系統的典型電路連接配接圖。

(1)外部供電模式下的單隻DS18B20晶片的連接配接圖

測溫晶片DS18B20詳細解讀

(2)外部供電模式下的多隻DS18B20晶片的連接配接圖

測溫晶片DS18B20詳細解讀

      這裡需要說明的是,DS18B20晶片通過達拉斯公司的單總線協定依靠一個單線端口通訊,當全部器件經由一個三态端口或者漏極開路端口與總線連接配接時,控制線需要連接配接一個弱上拉電阻。在多隻DS18B20連接配接時,每個DS18B20都擁有一個全球唯一的64位序列号,在這個總線系統中,微處理器依靠每個器件獨有的64位片序列号辨認總線上的器件和記錄總線上的器件位址,進而允許多隻DS18B20同時連接配接在一條單線總線上,是以,可以很輕松地利用一個微處理器去控制很多分布在不同區域的DS18B20,這一特性在環境控制、探測建築物、儀器等溫度以及過程監測和控制等方面都非常有用。

      對于DS18B20的電路連接配接,除了上面所說的傳統的外部電源供電時的電路連接配接圖,DS18B20也可以工作在“寄生電源模式”,而下圖則表示了DS18B20工作在“寄生電源模式”下的電路連接配接圖。沒錯,這樣就可以使DS18B20工作在寄生電源模式下了,不用額外的電源就可以實時采集到位于多個地點的溫度資訊了。

測溫晶片DS18B20詳細解讀

第三部分:DS18B20内部寄存器解析及工作原理

      介紹完DS18B20的封裝、針腳定義和連接配接方式後,我們有必要了解DS18B20晶片的各個控制器、存儲器的相關知識,如下圖所示,為DS18B20内部主要寄存器的結果框圖。

測溫晶片DS18B20詳細解讀

       結合圖中的内部寄存器框圖,我們先簡單說一下DS18B20晶片的主要寄存器工作流程,而在對DS18B20工作原理進行詳細說明前,有必要先上幾張相關圖檔:

(1)DS18B20内部寄存器結構圖

測溫晶片DS18B20詳細解讀

(2)DS18B20主要寄存器資料格式圖示

測溫晶片DS18B20詳細解讀

(3)DS18B20通訊指令圖

測溫晶片DS18B20詳細解讀

了解了這些内部結構和細節,下面說一下DS18B20晶片的工作原理。

         DS18B20啟動後将進入低功耗等待狀态,當需要執行溫度測量和AD轉換時,總線控制器(多為單片機)發出[44H]指令完成溫度測量和AD轉換(其他功能指令見上面的指令表),DS18B20将産生的溫度資料以兩個位元組的形式存儲到高速暫存器的溫度寄存器中,然後,DS18B20繼續保持等待狀态。當DS18B20晶片由外部電源供電時,總線控制器在溫度轉換指令之後發起“讀時隙”(詳見本帖的“DS18B20時隙圖”),進而讀出測量到的溫度資料通過總線完成與單片機的資料通訊(DS18B20正在溫度轉換中由DQ引腳傳回0,轉換結束則傳回1。如果DS18B20由寄生電源供電,除非在進入溫度轉換時總線被一個強上拉拉高,否則将不會有傳回值)。另外,DS18B20在完成一次溫度轉換後,會将溫度值與存儲在TH(高溫觸發器)和TL(低溫觸發器)中各一個位元組的使用者自定義的報警預置值進行比較,寄存器中的S标志位(詳見寄存器格式圖示中的“TH和TL寄存器格式”圖示)指出溫度值的正負(S=0時為正,S=1時為負),如果測得的溫度高于TH或者低于TL數值,報警條件成立,DS18B20内部将對一個報警辨別置位,此時,總線控制器通過發出報警搜尋指令[ECH]檢測總線上所有的DS18B20報警辨別,然後,對報警辨別置位的DS18B20将響應這條搜尋指令。

第四部分:針對DS18B20的單片機程式設計

      針對DS18B20的程式設計,可以了解為總線控制器通過相關指令操作器件或者器件中的相應寄存器,進而完成器件也總線控制器的資料通信,是以要真正搞定DS18B20的通訊程式設計,還需要詳細的了解該晶片的各種寄存器結構、寄存器資料格式和相關的指令系統,下面我們就結合上面圖示,說說DS18B20的内部存儲器結構。

      DS18B20的每個暫存器都有8bit存儲空間,用來存儲相應資料,其中byte0和byte1分别為溫度資料的低位和高位,用來儲存測量到的溫度值,且這兩個位元組都是隻讀的;byte2和byte3為TH、TL告警觸發值的拷貝,可以在從片内的電可擦可程式設計隻讀存儲器EEPROM中讀出,也可以通過總線控制器發出的[48H]指令将暫存器中TH、TL的值寫入到EEPROM,掉電後EEPROM中的資料不會丢失;byte4的配置寄存器用來配置溫度轉換的精确度(最大為12位精度);byte5、6、7為保留位,禁止寫入;byte8亦為隻讀存儲器,用來存儲以上8位元組的CRC校驗碼。

       參考上面的DS18B20通訊指令圖,即為DS18B20晶片中主要寄存器的資料格式和必要的個别辨別位說明,隻要做到對寄存器資料精準的控制,就可以很容易的完成DS18B20的程式編寫,而對于總線控制器發出的控制指令,我們需要知道,DS18B20的指令包括ROM指令和功能指令,其中ROM指令用來進行ROM的操作,而功能指令則可以控制DS18B20完成溫度轉換,寄存器操作等功能性工作。一旦總線控制器檢測到一個存在脈沖,它就會發出一條ROM指令,如果總線上挂載多隻DS18B20,這些指令将利用器件獨有的64位ROM片序列碼選出特定的要進行操作的器件,同樣,這些指令也可以識别哪些器件符合報警條件等。在總線控制器發給要連接配接的DS18B20一條ROM指令後,就可以發送一條功能指令完成相關的工作了,也就是說,總線控制器在發起一條DS18B20功能指令前,需要首先發出一條ROM指令。了解了這些功能指令的功能和用法,再對DS18B20程式設計就容易多了!~

第五部分:DS18B20晶片的兩點使用心得

(1)對TH(高溫觸發寄存器)和TL(低溫觸發寄存器)的操作心得

       針對于DS18B20中TH(高溫觸發寄存器)和TL(低溫觸發寄存器),可以找到的代碼資料很少,而如果在某一測溫系統中需要用到TH和TL寄存器時,其實不必覺得無從下手,參見本帖中的“DS18B20寄存器結構”,總線控制器的讀操作将從位0開始逐漸向下讀取資料,直到讀完位8,而且TH和TL寄存器的内部結構和資料格式和片内其他寄存器是相同的,當然,針對TH和TL寄存器的讀寫和其他片内寄存器的讀寫也是相同的,是以在實際應用中,當DS18B20初始化完成後,首先通過總線控制器發出的[B8H]指令将EEPROM中儲存的資料召回到暫存器的TH和TL中,然後通過總線控制器發出的“讀時隙”對器件暫存器進行讀操作,隻要将讀到的每8bit資料及時擷取,就可以很容易地通過總線控制器讀出TH和TL寄存器資料;總線控制器對器件的寫操作原理亦然,換句話說,隻要掌握了其他寄存器的操作程式設計,就完全可以很容易地對TH和TL這兩個報警值寄存器進行讀寫操作。同時,可以通過[48H]指令将TH和TL寄存器資料拷貝到EEPROM中進行儲存。

(2)對DS18B20通訊時隙的掌握心得

       在由DS18B20晶片建構的溫度檢測系統中,采用達拉斯公司獨特的單總線資料通訊方式,允許在一條總線上挂載多個DS18B20,那麼,在對DS18B20的操作和控制中,由總線控制器發出的時隙信号就顯得尤為重要。如下圖所示,分别為DS18B20晶片的上電初始化時隙、總線控制器從DS18B20讀取資料時隙、總線控制器向DS18B20寫入資料時隙的示意圖,在系統程式設計時,一定要嚴格參照時隙圖中的時間資料,做到精确的把握總線電平随時間(微秒級)的變化,才能夠順利地控制和操作DS18B20。另外,需要注意到不同單片機的機器周期是不盡相同的,是以,程式中的延時函數并不是完全一樣,要根據單片機不同的機器周期有所改動。在平常的DS18B20程式調試中,若發現諸如溫度顯示錯誤等故障,基本上都是由于時隙的誤差較大甚至時隙錯誤導緻的,在對DS18B20程式設計時需要格外注意。

上電初始化時隙圖

測溫晶片DS18B20詳細解讀

資料讀取時通訊總線的時隙圖

測溫晶片DS18B20詳細解讀

資料寫入時通訊總線的時隙圖

測溫晶片DS18B20詳細解讀

繼續閱讀