DS1821使用說明

  DS1821FAQ集

寫在前面

本文內容部分取材自DALLAS公司的DATASHEET資料,再加上個人的一些使用經驗,如有錯誤,歡迎指正。

 

最近利用時間,將DS1821的溫度電路做起來了,光是看datasheet就耗掉很多的時間,英文當初沒學好,這時才知道重要。僅將DS1821的使用上的一些重點,以及一些datasheet文件把他中文化,讓網友可以參考。至於實際應用的電路,會另闢文章說明,供大家參考。

 

DS1821概述

1.DS1821是一顆由DALLAS公司出品的溫度sensor,解析度為1C,溫度範圍為-55C ∼+125C

2.只要使用一支腳,就可以控制DS1821的各種功能,基本上我覺得,他已經算是一個微處理器了。雖然他只有3支腳,一支接正電源,一支接GND,一支是控制腳。所以在控制上,他可以節省使用I/O接腳,對於簡化電路來說,是非常好的選擇。

3.輸出訊號是數位8bits訊號,不是類比訊號,因此可以省去AD轉換的麻煩,輸出的資料可以直接給各種數位電路直接使用處理,對於一些非電子科系的單晶片設計者來說,算是非常簡單易用的。

4.我個人覺得DS1821唯一的缺點是,價格太貴了,市面上的售價大概是150元左右。

 

DS1821外觀包裝

 

DS1821的操作模式

 

1-wire bus模式

這真的很難翻譯,DALLAS公司把這種模式定義成一種通信協定模式,我把他稱為單線控制模式。當DS1821進入此模式時,使用者可以對DS1821下達指令,包括設定DS1821各種功能,寫入資料或是讀出DS1821內部的暫存器資料或是溫度資料。DS1821的資料都是存放在EEPROM中,因此使用者不用擔心資料會因為停電後就會消失。

 

自動調溫模式(thermostat mode)

此模式可以讓DS1821依據設定在THTL暫存器內的值,判斷溫度是否高低於TH,當溫度高於THDQ腳輸出為High條件是狀態暫存器的POL bit=1),然後維持這個狀態,直到溫度低於TL的設定溫度時,DQ腳位電位會轉態為Low電位。如果狀態暫存器的POL bit=0時,則狀態正好相反。那就是溫度高於TH時,DQ腳輸出是Low,然後維持狀態,一直到溫度低於TL時,DQ腳才會輸出High,這有點像是磁滯控制的方式。

自動調溫模式的設定,也必須先在1-wire bus模式下先做好設定後,才能使用。而且當自動調溫模式使用後,如果溫度已經低於TL或是高於TH設定的溫度時,狀態暫存器中相對的THFTLF旗標,也會被設定為1,並且不會歸0,必須由使用者寫入0。因此可以經由判斷THF或是THL旗標,得知溫度是否達到TL或是TH的設定。這個模式的DS1821,本身就像一個單純的溫度開關,所以被稱為自動調溫模式(thermostat mode)

 

DS1821的暫存器

狀態/結構暫存器(status/configuration register)

這個暫存器是DS1821非常重要的一個暫存器,所有DS1821的動作模式設定,或是旗標狀態,都跟他有關,因此要使用DS1821,必須先了解這個暫存器的內容意義。

 

R

R

R

R/W

R/W

R/W

R/W

R/W

DONE

1

NVB

THF

TLF

T/R

POL

1SHOT

bit7

 

 

 

 

 

 

bit0

R表示只能讀

R/W表示能讀跟寫

這些可讀寫的bit,都是EEPROM方式。

bit 7            DONE位元,當DS1821設定在1SHOT模式時,指示是否已完成溫度轉換工作,當完成時,本位元會被設定成1

bit 6            無作用。

bit 5            NVB位元,指示EEPROM是否正在進行寫入資料工作,當本位元為0時,表示EEPROM閒置中。當本位元為1時,表示EEPROM正在處理資料讀寫中。

Bit 4            THF位元,THF=0時,表示目前量測的溫度沒有超過儲存在TH暫存器內的設定值。THF=1時,表示目前量測的溫度已經超過儲存在TH暫存器內的設定值。當本位元被設定為1時,必須由使用者自行再設定回0,不會自動歸零。

Bit 3            TLF位元,TLF=0時,表示目前量測的溫度沒有低於儲存在TL暫存器內的設定值。THF=1時,表示目前量測的溫度已經低於儲存在TL暫存器內的設定值。當本位元被設定為1時,必須由使用者自行再設定回0,不會自動歸零。

Bit 2            T/R位元,T/R=0時,表示DS1821開機時是處於1-wire模式。而當T/R=1表示DS1821開機時是處於自動調溫模式(thermostat mode)

Bit 1            POL位元,POL=0時,表示DS1821設定成自動調溫模式時,他的動作輸出(DQ腳位電位是Low準位,而當POL=1時,表示DS1821設定成自動調溫模式時,他的動作輸出(DQ腳位電位是High準位。

Bit 0            1SHOT位元,1SHOT=0時,表示連續溫度轉換模式。而當1SHOT=1時,表示1SHOT模式。

 

1-wire bus模式系統

 

由於DS1821只有一條傳輸腳,因此所有的動作都只能透過串列訊號,將指令送進DS1821中,bit0(LSB)先進,bit7(MSB)最後進入。使用者要做的,就是利用單晶片這類的可程式硬體,將DS1821的指令變成串列資料送進DS1821中,以便控制DS1821的動作。

 

硬體結構,請見下圖

指令傳送步驟順序

1.硬體重置Initialization

藉由reset動作,使DS1821重置,重置的步驟如後所述。

I.       先將DQ腳電位拉到Low準位,並且要維持最少480us的時間。DS1821在剛接上電源時,他的DQ腳位是處於High準位的,如果DQ腳沒有處於High準位,請先將DQ腳拉到High準位。因此要重置DS1821時,必須先將DQ腳拉低到Low準位至少480us的時間。

II.     此時DS1821DQ腳拉低準位Low超過480us後,使用者必須先判斷DQ腳是否真的已經變為Low準位確定DS1821 DQ腳位變為Low準位後,DS1821又會自動將DQ腳準位重新拉高到High準位,並且維持約60∼240us時間。這時使用者必須判斷DS1821 DQ腳位,是否真的已經回到High準位。

III.   維持DQ腳在High準位420us左右的時間,以確保訊號正確。

2.DS1821功能指令

DS1821硬體重置完成後,也就是已經進入1-wire bus模式,接下來就可以對DS1821下達各種指令了。DS1821的指令共有9種,並且以十六進位的數字表示,分述如下,使用者使用時,直接將這些十六進位的數字傳輸給DS1821就可以達到控制DS1821的目的。

溫度讀取指令,代碼AAh

 

開始溫度轉換指令,代碼EEh

 

停止溫度轉換指令,代碼22h

 

寫入資料到溫度上限TH暫存器指令,代碼01h

寫入資料到溫度下限TL暫存器指令,代碼02h

 

讀取資料到溫度上限TH暫存器指令,代碼A1h

讀取資料到溫度下限TL暫存器指令,代碼A2h

 

寫入資料到狀態暫存器指令,代碼0Ch

 

讀取狀態暫存器的資料指令,代碼ACh

 

讀取計數器的資料指令,代碼A0h

 

載入斜率累加器的資料到計數器暫存器內的指令,代碼41h

 

3.資料傳輸

當指令已經傳給DS1821後,接下來就是傳輸資料給DS1821,以便將資料寫入DS1821相關的暫存器中。有些功能指令是沒有本步驟的,如溫度讀取指令或是溫度轉換之類的指令。

 

控制DS1821一定都是遵循上述的3個步驟進行,而且要注意時序上的控制。

 

自動調節溫度模式Thermostate mode

本模式其實在前面已經敘述過,只是將狀態暫存器的T/R位元設定成1即可,設定的方式也是先進入1-wire bus模式,然定完成即可在DS1821送電後,就進入自動調節溫度模式Thermostate mode

 

時序控制說明

茲將DS1821的控制方法,以時序步驟說明,以方便網友參考。

將DS1821寫入資料程序  

記得一件事,DS1821一次只能寫入一個資料,如果寫入的資料有兩個(因為設定狀態暫存器一定是要寫入資料到DS1821兩次的,一次是告訴DS1821我要使用狀態暫存器,第二次寫入的就是這個狀態暫存器裡面我要設定的值,這點是網友必須要注意的。),比如說先寫入0x0C後,還要再寫入另一個資料,就必須再重複下面的步驟6~11一次。

1.先將DQ PIN High 1us

2.再將DQ PIN 拉到Low電位,時間最少要480us以上。

3.然後再將DQ PIN拉高到High準位,這時DS1821會偵測上升緣訊號並且會等待15~60us後,又會自動的將DQ PIN拉低Low電位約60~240us

4.確定上述步驟DQ PIN已被拉到Low準位後,再判斷DQ PIN是否又自動再度將DQ PIN拉高到High準位。如果DS1821已經將DQ PIN拉高到High準位,表示DS1821已經完成初始化設定,並且已經可以開始接受指令

5.程式延遲420us,以確保DS1821正確完成上述動作,然後就可以開始對DS1821下達指令。

6.記得先將0x0C數值先寫入DS1821,然後再寫入其他數值資料到DS1821中。 寫入這個0x0C值的用意是做什麼?請到前面的資料複習一下,要把前面的內容消化一下喔!還要記得,寫完0x0C後,還要再寫入什麼值?DS1821才會收到完整的命令?這就交給網友去想了(參考前面的說明吧!)。也要記得這些數值,都要用程式把它變成串列的資料(就是步驟6∼10的動作),然後送到DS1821中。

7.如果寫入0DS1821時,只要把DQ腳電位拉低即可。

8.如果寫入1DS1821時,就要先把DQ腳拉低約1us後,再將DQ腳拉到High

9.保持資料狀態要60∼120us的時間。

10.DQ腳拉高到High,也就是說,每寫入一個bits後,就必須要把DQ腳拉到High

11.回到步驟7,寫入下一個bit,直到寫完8個bit的資料為止(就是寫入0x0C數值到DS1821中的意思) 

如果要繼續寫入下一個數值到DS1821中時,就再重複上面的步驟6∼10。只是在步驟6時的寫入的資料不一樣喔!網友應該知道我在說什麼吧?

將DS1821設定為溫度轉換的程序

1.先將DQ PIN High 1us

2.再將DQ PIN 拉到Low電位,時間最少要480us以上。

3.然後再將DQ PIN拉高到High準位,這時DS1821會偵測上升緣訊號並且會等待15~60us後,又會自動的將DQ PIN拉低到Low電位約60~240us

4.確定上述步驟DQ PIN已被拉到Low準位後,再判斷DQ PIN是否又自動再度將DQ PIN拉高到High準位。如果DS1821已經將DQ PIN拉高到High準位,表示DS1821已經完成初始化設定,並且已經可以開始接受指令

5.程式延遲420us,以確保DS1821正確完成上述動作,然後就可以開始對DS1821下達指令。

6.寫入0xEE數值到DS1821中。 寫入0xEE這個值的用意是做什麼?請到前面的資料複習一下,要把前面的內容消化一下喔!

7.如果寫入0DS1821時,只要把DQ腳電位拉低即可。

8.如果寫入1DS1821時,就要先把DQ腳拉低約1us後,再將DQ腳拉到High

9.保持資料狀態要60∼120us的時間。

10.     降將DQ腳拉高到High,也就是說,每寫入一個bits後,就必須要把DQ腳拉到High

11.     回到步驟7,寫入下一個bit,直到寫完8個bit的資料為止

將DS1821內部溫度資料讀出的程序

1.先將DQ PIN High 1us

2.再將DQ PIN 拉到Low電位,時間最少要480us以上。

3.然後再將DQ PIN拉高到High準位,這時DS1821會偵測上升緣訊號並且會等待15~60us後,又會自動的將DQ PIN拉低到Low電位約60~240us

4.確定上述步驟DQ PIN已被拉到Low準位後,再判斷DQ PIN是否又自動再度將DQ PIN拉高到High準位。如果DS1821已經將DQ PIN拉高到High準位,表示DS1821已經完成初始化設定,並且已經可以開始接受指令

5.程式延遲420us,以確保DS1821正確完成上述動作,然後就可以開始對DS1821下達指令。

6.寫入0xAA數值到DS1821中,寫入這個值的用意是做什麼?也請到前面的資料複習一下,要把前面的內容消化一下喔!也要記得這些數值,都要用程式把它變成串列的資料,然後送到DS1821中。

7.如果寫入0DS1821時,只要把DQ腳電位拉低即可。

8.如果寫入1DS1821時,就要先把DQ腳拉低約1us後,再將DQ腳拉到High

9.每個bit資料要保持資料狀態60∼120us的時間。

10.     DQ腳拉高到High,也就是說,每寫入一個bits後,就必須要把DQ腳拉到High

11.     回到步驟7,寫入下一個bit,直到寫完8個bit的資料為止  (就是寫入0xAA這個數值到DS1821中的意思)

接下來是讀出DS1821內部的溫度資料:

12.     DQ腳拉到Low1us

13.     再將DQ腳拉到High

14.     延時15us

15.     判斷DQ腳的準位為01,這個就是從DS1821讀出的資料。

16.     每個bit資料要保持資料狀態60∼120us的時間。

17.     回到步驟15,讀取下一個資料,直到8個bit的資料讀完為止8bit的溫度資料

從上面的設定程序,我們可以得到一個結論,那就是DS1821平時是不會做出任何的輸出動作的,一定要由使用者下達命令(指令)給它,他才會將結果輸出。而且不論是做哪種讀寫動作,步驟1∼步驟5都是一定會用到的。所以每個DS1821的指令運用,使用者必須要確實去了解,就自然能夠完全的操作這顆DS1821了。

還有就是狀態暫存器status/configuration register) 主宰了整個DS1821的動作,因此要寫什麼樣的資料到狀態暫存器,是使用者最要注意的一件事。

DS1821FAQ集

聯絡EMAIL:rushoun@gmail.com

回DIY首頁