任作為
(長江大學(xué),湖北 荊州 434000)
溫度的檢測與控制在現(xiàn)代工業(yè)生產(chǎn)中有著極其廣泛的應(yīng)用,而隨著現(xiàn)代檢測技術(shù)的發(fā)展,人們對傳感器性能的要求越來越高。另一方面,單片機技術(shù)已經(jīng)深入到各個技術(shù)領(lǐng)域。所以可以采用新型的數(shù)字溫度傳感器,并利用單片機對溫度傳感器進行控制,則可以使測溫電路大大簡化,并且更易于智能化控制。
本系統(tǒng)的硬件接口電路相對比較簡單,主要就是MSP430單片機和數(shù)字化溫度傳感器DS1820的連接。首先簡要介紹數(shù)字化溫度傳感器DS1820。
DS1820是美國DALLAS半導(dǎo)體公司生產(chǎn)的數(shù)字化溫度傳感器,是世界上第一片支持“一線總線”接口的溫度傳感器,在其內(nèi)部使用了在板(ON-B0ARD)專利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。它只需要單片機的一個一般I/O接口就可以實現(xiàn)連接。
DS1820的主要特性如下:
(1)獨特的單線接口方式,DS1820在與微處理器連接時只需要一根總線就可以實現(xiàn)與微處理器的雙向通信;
(2)DS1820支持多點組網(wǎng)功能,多個DS1820可以并聯(lián)在唯一的總線上,以實現(xiàn)多點測溫;
(3)DS1820在使用中不需要任何外圍元器件件;
(4)可以由數(shù)據(jù)線來供電;
(5)測溫范圍-55℃至+125℃,固有測溫分辨率為0.5℃;
(6)測量結(jié)果以9位數(shù)字量方式串行傳送;
(7)用戶可以設(shè)置報警溫度。
以下是該芯片內(nèi)部結(jié)構(gòu)方框圖,如圖1所示。
圖1 芯片內(nèi)部結(jié)構(gòu)方框圖
由上圖可以看出,DS1820主要有存儲器、寄存器、邏輯控制、單線接口、溫度傳感器和溫度上、下限寄存器等幾個部分組成。為了便于進行硬件電路的設(shè)計,有必要說明芯片的管腳定義,如圖2所示。
圖2 管腳
由圖2可以看到,該芯片共有3個管腳,其功能分別如下:
Vcc:電源管腳,供電電壓范圍為2.8~5.5V。
GND:接地管腳;
DQ:單線接口管腳,與單片機接口實現(xiàn)數(shù)據(jù)的傳輸。
由于DS1820芯片采用單線協(xié)議,即只需要一根線與MSP430單片機進行接口,因此接口電路非常簡單。MSP430單片機能通過端口的方向寄存器來設(shè)置端口的輸入輸出方向,因此能很好地實現(xiàn)單總線的數(shù)據(jù)讀寫功能。使用MSP430單片機的一般I/O接口P1.0與DS1820芯片進行連接。
如圖3所示為具體的接口電路圖。
圖3 接口電路圖
MSP430單片機與DS1820芯片的接口非常簡單。將MSP430單片機的P1.0管腳與DS1820芯片相連接,實現(xiàn)數(shù)據(jù)的傳輸。在上面電路的設(shè)計中,DQ線通過10KΩ的電阻拉高,保證總線在沒有數(shù)據(jù)傳輸時始終為高電平。為了減少干擾,在電源的管腳增加一個0.1μF的電容來進行濾波處理。
軟件設(shè)計主要是對DS1820芯片進行讀取溫度的操作,在進行具體編程之前,現(xiàn)對單總線協(xié)議進行簡單介紹。
單總線協(xié)議能夠?qū)崿F(xiàn)數(shù)據(jù)的雙向傳輸,這樣就必須包括數(shù)據(jù)的讀寫,另外該總線還必須具有復(fù)位功能。
2.1.1 總線復(fù)位
總線復(fù)位主要是起初始化總線的作用,在數(shù)據(jù)讀寫之前,都必須對總線進行復(fù)位??偩€復(fù)位就是由單片機向總線發(fā)送低電平脈沖,然后等待DS1820的響應(yīng),DS1820在接受到總線復(fù)位信號后給出相應(yīng)的電平。如圖4所示為總線復(fù)位的時序圖。
圖4 總線復(fù)位的時序圖
可以看出,低電平和高電平保持的時間是有限制的,這就要求在軟件實現(xiàn)時特別注意高低電平的保持時間。
2.1.2 總線寫
總線寫是單片機向DS1820寫數(shù)據(jù),由于總線數(shù)據(jù)傳輸是以“位”為單位的,單總線通信協(xié)議中存在兩種寫時隙:寫 “0”和寫“1”。MSP430 單片機采用寫“1”時隙向 DS1820 寫入“1”,而寫“0“時隙向DS1820寫入“0”。所有寫時隙至少要60μs,且在兩次獨立的寫時隙之間至少要1μs的恢復(fù)時間。兩種寫時隙均起始于MSP430單片機拉低數(shù)據(jù)總線。產(chǎn)生“1”時隙的方式:MSP430單片機拉低總線后,接著必須在15μs之內(nèi)釋放總線,由上拉電阻將總線拉至高電平;產(chǎn)生寫“0”時隙的方式為在MSP430單片機拉低后,只需要在整個時隙間保持低電平即可(至少60μs)。在寫時隙開始后15~60μs期間,單總線器件采樣總電平狀態(tài)。如果在此期間采樣值為高電平,則邏輯“1”被寫入器件;如果為“0”,寫入邏輯“0”。
如圖5所示為寫時隙(包括1和0)時序。
圖5 總線寫時序圖
由上圖可以看出,低電平和高電平保持是有時間限制的,所以要求在軟件實現(xiàn)時特別注意高低電平的保持時間。
2.1.3 總線讀
總線讀是單片機從DS1820讀取數(shù)據(jù),由于總線數(shù)據(jù)傳輸是以“位”為單位的,所以總線讀包括讀“1”和讀“0”。如圖6所示是總線讀的時序圖。
圖6 總線讀時序圖
由上圖可看出,單片機在讀“1”或讀“0”時,首先需要將總線拉低,然后將總線拉高,再根據(jù)總線是高電平還是低電平來判斷是“1”還是“0”,從而使單片機獲取總線上的數(shù)據(jù)。
對DS1820的控制是通過操作其內(nèi)部的存儲器來實現(xiàn)的。DS1820的操作指令分為ROM操作命令和存儲器操作命令。
2.2.1 ROM操作命令
(1)Read ROM(0x33):如果只有一片 DS1820,可以用該命令讀出它的序列號。若在線DS1820不止一個,那么將會發(fā)生沖突;
(2)Match ROM(0x55):多個 DS1820 一起使用時,可用該命令匹配一個給定序列號的DS1820,此后的命令就針對該DS1820;
(3)Skip ROM(0xCC):執(zhí)行該命令后的存儲器操作將對所有在線的DS1820有效;
(4)Search ROM(0xF0):用來讀出在線的 DS1820 的序號;
(5)Alarm Search(0xEC):當(dāng)溫度值高于 TH 或低于 TL中的數(shù)值時,該命令可以讀出報警的DS1820。
2.2.2 存儲器操作命令
(1)Write Scratchpad(0x4E):寫兩個字節(jié)的數(shù)據(jù)到溫度寄存器。
(2)Read Scratchpad(0xBE):讀取溫度寄存器的溫度值。
(3)Copy Scratchpad(0x48):將溫度寄存器的數(shù)值復(fù)制到 EERAM中,以確保溫度值不會丟失。
(4)Convert T(0x44):啟動在線 DS1820 進行溫度 A/D 轉(zhuǎn)換。
(5)Recall E2(0xB8):將EERAM中的數(shù)值復(fù)制到溫度寄存器中。
(6)Read Power Supply(0xB4):在該命令送到 DS1820 之后的每一個讀數(shù)據(jù)間隙,之處電源模式:“0”為寄生電源;“1”則為外部電源。
根據(jù)以上的操作命令,一下給出測量溫度的步驟。
①Read ROM(33h),每次對DS1820進行操作之前都需要對其進行初始化,主要目的在于確定傳感器是否連接到單總線上。
②Search ROM(F0h),這條指令使處理器用排除的方法去辨別總線上的DS1820。
③Match ROM(55h),只有準(zhǔn)確地符合64位ROM序列的DS1820才能響應(yīng)接下來的指令。如果是單點測溫,則可以使用Skip ROM(CCh)指令來跳過這一步。
④Convert T(44h),發(fā)送該條之后,應(yīng)查詢總線上的電平,當(dāng)電平位高時,則溫度轉(zhuǎn)換完成。
⑤Read Scratchpad(BEh),發(fā)送讀指令后則可以從總線上獲得表示溫度的兩字節(jié)二進制數(shù)。
DS1820的讀寫存儲器操作都是建立在單總線協(xié)議程序基礎(chǔ)之上的,所以首先要通過程序來實現(xiàn)單總線協(xié)議,然后再編寫DS1820的溫度數(shù)據(jù)讀取程序。
2.3.1 單總線協(xié)議的實現(xiàn)
單總線協(xié)議包括總線復(fù)位和讀寫字節(jié)操作,具體程序代碼如下:
以上的程序需要在總線的讀或者寫時切換管腳的輸入輸出方向,另外,需要注意延時的時間,這主要根據(jù)系統(tǒng)的時鐘進行相應(yīng)的調(diào)整。
2.3.2 DS1820溫度數(shù)據(jù)的讀取
事實上獲得溫度數(shù)據(jù)就是對DS1820的某些存儲器進行相應(yīng)的操作,程序如下所示。
這段程序只是進行了簡單的處理,在實際應(yīng)用中,可能需要添加ROM命令的處理??偩€上也可能并聯(lián)多個DS1820進行多點測溫,則應(yīng)該根據(jù)具體的需要要進行相應(yīng)的修改。
本文介紹了采用MSP430單片機與DS1820的接口設(shè)計,首先介紹了電路的接口設(shè)計,然后給出了相應(yīng)程序。DS1820通過單總線和單片機來進行里連接,使得系統(tǒng)的硬件電路部分相當(dāng)簡潔,使外圍擴展器件少,體積減小,也降低了成本。在進行程序設(shè)計時,需要注意的是必須滿足單總線協(xié)議工作的時序問題。該系統(tǒng)也可以進行硬件和軟件上的擴展,使其具有更完善的功能,以滿足不同的情況下的溫度采集需要。
[1]張希輝,張睿,張志利.基于MSP430單片機和DS18B20的小型測溫系統(tǒng)[J].裝備制造技術(shù),2011(04).
[2]秦龍.MPS430單片機C語言應(yīng)用程序設(shè)計實例精講[M].北京:電子工業(yè)出版社,2006.
[3]周秀明,曹雋,張春龍.基于DS18B20的單片機溫度檢測與調(diào)節(jié)系統(tǒng)設(shè)計[J].實驗室科學(xué),2011(01).
[4]李永茂.基于PIC16F877芯片的DS18B20測溫系統(tǒng)設(shè)計[J].信息化研究,2010(8).
[5]王明慧.數(shù)字溫度傳感器DS18B20在化學(xué)工業(yè)現(xiàn)場溫度檢測中的應(yīng)用[J].計算機與應(yīng)用化學(xué),2007(09).