任作為
(長江大學,湖北 荊州 434000)
溫度的檢測與控制在現代工業生產中有著極其廣泛的應用,而隨著現代檢測技術的發展,人們對傳感器性能的要求越來越高。另一方面,單片機技術已經深入到各個技術領域。所以可以采用新型的數字溫度傳感器,并利用單片機對溫度傳感器進行控制,則可以使測溫電路大大簡化,并且更易于智能化控制。
本系統的硬件接口電路相對比較簡單,主要就是MSP430單片機和數字化溫度傳感器DS1820的連接。首先簡要介紹數字化溫度傳感器DS1820。
DS1820是美國DALLAS半導體公司生產的數字化溫度傳感器,是世界上第一片支持“一線總線”接口的溫度傳感器,在其內部使用了在板(ON-B0ARD)專利技術。全部傳感元件及轉換電路集成在形如一只三極管的集成電路內。一線總線獨特而且經濟的特點,使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。它只需要單片機的一個一般I/O接口就可以實現連接。
DS1820的主要特性如下:
(1)獨特的單線接口方式,DS1820在與微處理器連接時只需要一根總線就可以實現與微處理器的雙向通信;
(2)DS1820支持多點組網功能,多個DS1820可以并聯在唯一的總線上,以實現多點測溫;
(3)DS1820在使用中不需要任何外圍元器件件;
(4)可以由數據線來供電;
(5)測溫范圍-55℃至+125℃,固有測溫分辨率為0.5℃;
(6)測量結果以9位數字量方式串行傳送;
(7)用戶可以設置報警溫度。
以下是該芯片內部結構方框圖,如圖1所示。

圖1 芯片內部結構方框圖
由上圖可以看出,DS1820主要有存儲器、寄存器、邏輯控制、單線接口、溫度傳感器和溫度上、下限寄存器等幾個部分組成。為了便于進行硬件電路的設計,有必要說明芯片的管腳定義,如圖2所示。

圖2 管腳
由圖2可以看到,該芯片共有3個管腳,其功能分別如下:
Vcc:電源管腳,供電電壓范圍為2.8~5.5V。
GND:接地管腳;
DQ:單線接口管腳,與單片機接口實現數據的傳輸。
由于DS1820芯片采用單線協議,即只需要一根線與MSP430單片機進行接口,因此接口電路非常簡單。MSP430單片機能通過端口的方向寄存器來設置端口的輸入輸出方向,因此能很好地實現單總線的數據讀寫功能。使用MSP430單片機的一般I/O接口P1.0與DS1820芯片進行連接。
如圖3所示為具體的接口電路圖。

圖3 接口電路圖
MSP430單片機與DS1820芯片的接口非常簡單。將MSP430單片機的P1.0管腳與DS1820芯片相連接,實現數據的傳輸。在上面電路的設計中,DQ線通過10KΩ的電阻拉高,保證總線在沒有數據傳輸時始終為高電平。為了減少干擾,在電源的管腳增加一個0.1μF的電容來進行濾波處理。
軟件設計主要是對DS1820芯片進行讀取溫度的操作,在進行具體編程之前,現對單總線協議進行簡單介紹。
單總線協議能夠實現數據的雙向傳輸,這樣就必須包括數據的讀寫,另外該總線還必須具有復位功能。
2.1.1 總線復位
總線復位主要是起初始化總線的作用,在數據讀寫之前,都必須對總線進行復位。總線復位就是由單片機向總線發送低電平脈沖,然后等待DS1820的響應,DS1820在接受到總線復位信號后給出相應的電平。如圖4所示為總線復位的時序圖。

圖4 總線復位的時序圖
可以看出,低電平和高電平保持的時間是有限制的,這就要求在軟件實現時特別注意高低電平的保持時間。
2.1.2 總線寫
總線寫是單片機向DS1820寫數據,由于總線數據傳輸是以“位”為單位的,單總線通信協議中存在兩種寫時隙:寫 “0”和寫“1”。MSP430 單片機采用寫“1”時隙向 DS1820 寫入“1”,而寫“0“時隙向DS1820寫入“0”。所有寫時隙至少要60μs,且在兩次獨立的寫時隙之間至少要1μs的恢復時間。兩種寫時隙均起始于MSP430單片機拉低數據總線。產生“1”時隙的方式:MSP430單片機拉低總線后,接著必須在15μs之內釋放總線,由上拉電阻將總線拉至高電平;產生寫“0”時隙的方式為在MSP430單片機拉低后,只需要在整個時隙間保持低電平即可(至少60μs)。在寫時隙開始后15~60μs期間,單總線器件采樣總電平狀態。如果在此期間采樣值為高電平,則邏輯“1”被寫入器件;如果為“0”,寫入邏輯“0”。
如圖5所示為寫時隙(包括1和0)時序。

圖5 總線寫時序圖
由上圖可以看出,低電平和高電平保持是有時間限制的,所以要求在軟件實現時特別注意高低電平的保持時間。
2.1.3 總線讀
總線讀是單片機從DS1820讀取數據,由于總線數據傳輸是以“位”為單位的,所以總線讀包括讀“1”和讀“0”。如圖6所示是總線讀的時序圖。

圖6 總線讀時序圖
由上圖可看出,單片機在讀“1”或讀“0”時,首先需要將總線拉低,然后將總線拉高,再根據總線是高電平還是低電平來判斷是“1”還是“0”,從而使單片機獲取總線上的數據。
對DS1820的控制是通過操作其內部的存儲器來實現的。DS1820的操作指令分為ROM操作命令和存儲器操作命令。
2.2.1 ROM操作命令
(1)Read ROM(0x33):如果只有一片 DS1820,可以用該命令讀出它的序列號。若在線DS1820不止一個,那么將會發生沖突;
(2)Match ROM(0x55):多個 DS1820 一起使用時,可用該命令匹配一個給定序列號的DS1820,此后的命令就針對該DS1820;
(3)Skip ROM(0xCC):執行該命令后的存儲器操作將對所有在線的DS1820有效;
(4)Search ROM(0xF0):用來讀出在線的 DS1820 的序號;
(5)Alarm Search(0xEC):當溫度值高于 TH 或低于 TL中的數值時,該命令可以讀出報警的DS1820。
2.2.2 存儲器操作命令
(1)Write Scratchpad(0x4E):寫兩個字節的數據到溫度寄存器。
(2)Read Scratchpad(0xBE):讀取溫度寄存器的溫度值。
(3)Copy Scratchpad(0x48):將溫度寄存器的數值復制到 EERAM中,以確保溫度值不會丟失。
(4)Convert T(0x44):啟動在線 DS1820 進行溫度 A/D 轉換。
(5)Recall E2(0xB8):將EERAM中的數值復制到溫度寄存器中。
(6)Read Power Supply(0xB4):在該命令送到 DS1820 之后的每一個讀數據間隙,之處電源模式:“0”為寄生電源;“1”則為外部電源。
根據以上的操作命令,一下給出測量溫度的步驟。
①Read ROM(33h),每次對DS1820進行操作之前都需要對其進行初始化,主要目的在于確定傳感器是否連接到單總線上。
②Search ROM(F0h),這條指令使處理器用排除的方法去辨別總線上的DS1820。
③Match ROM(55h),只有準確地符合64位ROM序列的DS1820才能響應接下來的指令。如果是單點測溫,則可以使用Skip ROM(CCh)指令來跳過這一步。
④Convert T(44h),發送該條之后,應查詢總線上的電平,當電平位高時,則溫度轉換完成。
⑤Read Scratchpad(BEh),發送讀指令后則可以從總線上獲得表示溫度的兩字節二進制數。
DS1820的讀寫存儲器操作都是建立在單總線協議程序基礎之上的,所以首先要通過程序來實現單總線協議,然后再編寫DS1820的溫度數據讀取程序。
2.3.1 單總線協議的實現
單總線協議包括總線復位和讀寫字節操作,具體程序代碼如下:


以上的程序需要在總線的讀或者寫時切換管腳的輸入輸出方向,另外,需要注意延時的時間,這主要根據系統的時鐘進行相應的調整。
2.3.2 DS1820溫度數據的讀取
事實上獲得溫度數據就是對DS1820的某些存儲器進行相應的操作,程序如下所示。


這段程序只是進行了簡單的處理,在實際應用中,可能需要添加ROM命令的處理。總線上也可能并聯多個DS1820進行多點測溫,則應該根據具體的需要要進行相應的修改。
本文介紹了采用MSP430單片機與DS1820的接口設計,首先介紹了電路的接口設計,然后給出了相應程序。DS1820通過單總線和單片機來進行里連接,使得系統的硬件電路部分相當簡潔,使外圍擴展器件少,體積減小,也降低了成本。在進行程序設計時,需要注意的是必須滿足單總線協議工作的時序問題。該系統也可以進行硬件和軟件上的擴展,使其具有更完善的功能,以滿足不同的情況下的溫度采集需要。
[1]張希輝,張睿,張志利.基于MSP430單片機和DS18B20的小型測溫系統[J].裝備制造技術,2011(04).
[2]秦龍.MPS430單片機C語言應用程序設計實例精講[M].北京:電子工業出版社,2006.
[3]周秀明,曹雋,張春龍.基于DS18B20的單片機溫度檢測與調節系統設計[J].實驗室科學,2011(01).
[4]李永茂.基于PIC16F877芯片的DS18B20測溫系統設計[J].信息化研究,2010(8).
[5]王明慧.數字溫度傳感器DS18B20在化學工業現場溫度檢測中的應用[J].計算機與應用化學,2007(09).