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