新型數(shù)字溫度傳感器ADT75的原理及應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
ADT75是ADI公司生產(chǎn)的集溫度傳感器、12位A/D轉(zhuǎn)換器、可編程的溫度過限報(bào)警器和SMBus/I2C總線接口于一體的新型數(shù)字溫度傳感器。其額定工作溫度范圍為-55~+125℃,能準(zhǔn)確、靈敏地檢測(cè)數(shù)字化溫度,溫度誤差最大為±1℃,測(cè)溫分辨率可達(dá)0.062 5℃;工作電壓范圍為3~5.5 V,3.3 V時(shí)典型的功耗為79μW,在關(guān)斷模式下其典型工作電流值僅為3μA。
1 ADT75的引腳及結(jié)構(gòu)原理
ADT75的引腳排列如圖1所示,引腳說明如表1所列。
ADT75采用8引腳的MOSP和SOIC封裝,其內(nèi)部結(jié)構(gòu)如圖2所示。
ADT75的工作過程為:片上的溫度傳感器采集溫度后,產(chǎn)生一個(gè)與絕對(duì)溫度成比例的精確電壓,并與內(nèi)部參考電壓進(jìn)行比較;然后輸入到精確的數(shù)字式調(diào)節(jié)器中,轉(zhuǎn)換為有效精度為12位的數(shù)據(jù)。將該數(shù)據(jù)與限定值比較,如果測(cè)量值超限,則OS/ALERT引腳輸出超限信息。
在正常模式下,溫度轉(zhuǎn)換需要60 ms,然后模擬轉(zhuǎn)換電路自動(dòng)關(guān)閉,40 ms后模擬電路上電,開始下一個(gè)溫度值的轉(zhuǎn)換。所以一次溫度轉(zhuǎn)換周期為100 ms。
2 ADT75的寄存器結(jié)構(gòu)
ADT75包含6個(gè)寄存器:1個(gè)地址指針寄存器,4個(gè)數(shù)據(jù)寄存器和1個(gè)單步模式寄存器。數(shù)據(jù)寄存器中,配置寄存器是唯一的8位寄存器,其他3個(gè)都是16位;溫度值寄存器是唯一的只讀寄存器,其他3個(gè)都是可讀寫的。單步模式寄存器也是可讀寫的。上電后,地址指針寄存器的初始值為0x00,指針指向溫度值寄存器。ADT75的寄存器描述如表2所列。
(1)地址指針寄存器
該8位只讀寄存器存放指向某個(gè)數(shù)據(jù)寄存器的地址,可以選擇單步模式。P0位和P1位選擇要讀/寫數(shù)據(jù)的數(shù)據(jù)寄存器,向P0、P1和P2位中寫入0x04來選擇單步模式。地址指針寄存器的其余位都為0。寄存器的地址選擇如表3所列。
(2)溫度值寄存器
該16位只讀寄存器存儲(chǔ)由芯片內(nèi)部溫度傳感器測(cè)得的溫度值。溫度以二進(jìn)制補(bǔ)碼形式存儲(chǔ),最高位為符號(hào)位。讀該寄存器時(shí),先讀高8位,后讀低8位。
(3)配置寄存器
該8位可讀寫寄存器為ADT75提供了多種配置模式:關(guān)斷、過溫中斷、單步、SMBus報(bào)警使能、OS/ALERT引腳極性和過溫錯(cuò)誤隊(duì)列。
(4)THYST定值寄存器
該16位可讀寫寄存器為2個(gè)中斷模式存放溫度滯后限定值。這個(gè)限定值以二進(jìn)制補(bǔ)碼形式存儲(chǔ),最高位是溫度值符號(hào)位。讀該寄存器時(shí),先讀高8位,后讀低8位。限定值THYST的默認(rèn)值為+75℃。
(5)TOS定值寄存器
該16位可讀寫寄存器為2個(gè)中斷模式存放過溫限定值。這個(gè)溫度限定值以二進(jìn)制補(bǔ)碼形式存儲(chǔ),最高位是溫度值符號(hào)位。讀該寄存器時(shí),先讀高8位,后讀低8位。限定值TOS的默認(rèn)值為+80℃。
3 ADT75的應(yīng)用實(shí)例
3.1 硬件設(shè)計(jì)
在外界溫度場(chǎng)作用下,光纖延遲線系統(tǒng)中光纖長度、橫截面結(jié)構(gòu)、光纖纖芯和包層的折射率分布特性會(huì)發(fā)生變化,因此在光纖中傳播的光載波信號(hào)的相位和模式雙折射特性就會(huì)隨溫度的改變而變化,從而影響最終解調(diào)出的微波信號(hào)的延時(shí)。為減小溫度變化對(duì)微波信號(hào)延時(shí)的影響,需要設(shè)計(jì)一個(gè)溫度控制系統(tǒng),用來控制系統(tǒng)的溫度。
硬件設(shè)計(jì)電路主要包括2部分:數(shù)字信號(hào)處理器TMS320F2812和數(shù)字溫度傳感器ADT75。
采用TI公司推出的TMS320F2812作為核心控制芯片。其外部晶振頻率為30 MHz,通過片內(nèi)的PLL進(jìn)行倍頻,最高主頻可達(dá)150 MHz;運(yùn)行速度快,可以對(duì)采集的溫度信號(hào)進(jìn)行實(shí)時(shí)處理。
TMS320F2812沒有設(shè)計(jì)I2C總線,但是有56個(gè)GPIO口,所以采用GPIO口模擬I2C總線時(shí)序來控制ADT75。這種硬件電路結(jié)構(gòu)簡單,功耗較低,實(shí)用性強(qiáng)。ADT75與TMS320F2812的接口電路如圖3所示。
TMS320F2812的GPIOB0引腳用作I2C總線的時(shí)鐘信號(hào)線,GPIOB1引腳用作I2C總線的串行數(shù)據(jù)線。供電電壓為5 V,10 kΩ電阻為開漏極的上拉電阻,0.1μF電容起去耦作用。本設(shè)計(jì)僅實(shí)時(shí)采集光纖延遲線系統(tǒng)的溫度,不需要過溫報(bào)警,所以O(shè)S/ALERT引腳保留。ADT75的地址為7位,高4位為1001,低3位由地址引腳A0~A2決定。由于只有一片ADT75,故可將其3個(gè)地址引腳全部接地,則芯片地址可確定為1001000。溫控系統(tǒng)根據(jù)測(cè)得的溫度在TMS320F2812內(nèi)部進(jìn)行PID運(yùn)算,然后通過外部的溫度控制裝置對(duì)光纖延遲線內(nèi)部溫度進(jìn)行調(diào)節(jié),使其穩(wěn)定在某個(gè)設(shè)定的范圍內(nèi)。
3.2 軟件設(shè)計(jì)
利用死循環(huán)等待函數(shù)while(1)中的ReadDevice()函數(shù)從ADT75中讀取溫度值。每隔250 ms讀取一次溫度值,從而實(shí)現(xiàn)對(duì)系統(tǒng)溫度的實(shí)時(shí)監(jiān)控。
ReadDevice()函數(shù)包括以下函數(shù):Start(),Stop(),SendAddress(),ReadAck(),ReceiveData(),Mack(),MNack()。讀取溫度的流程如圖4所示,讀取溫度的時(shí)序如圖5所示。
(1)啟動(dòng)數(shù)據(jù)傳輸
在頭文件中對(duì)TMS320F2812的GPIOB口進(jìn)行配置。定義GPIOB0為SCL,輸出;GPIOB1為SDA,輸出。Start()函數(shù)模擬I2C總線的起始條件:
至此,完成了I2C總線的啟動(dòng)。
(2)傳送ADT75地址
在讀取溫度值之前必須向從器件發(fā)送地址。ADT75的7位地址為0x48。由于是讀數(shù)據(jù)(讀/寫位為1),所以傳送的8位地址命令為0x91。在傳送數(shù)據(jù)時(shí),當(dāng)SCL為0時(shí),才允許SDA上的數(shù)據(jù)變化;為1時(shí),SDA上的數(shù)據(jù)保持不變。8位地址傳送結(jié)束后,主機(jī)釋放SDA(令SDA=1),等待從機(jī)的應(yīng)答信號(hào)。
(3)檢測(cè)ADT75的應(yīng)答位
I2C總線傳輸完8位數(shù)據(jù)后由從機(jī)給主機(jī)一個(gè)低電平的應(yīng)答信號(hào),表示從機(jī)正常工作并可以接收下一個(gè)字節(jié)的數(shù)據(jù)。檢測(cè)ADT75的應(yīng)答位時(shí),應(yīng)注意把GPIOB1口設(shè)置為輸入。
EALLOW:
GpioMuxRegs.GPBDIR.bit.GPIOB1=0;
EDIS;
如果SDA=0,則TMSS20F2812開始從ADT75中讀取數(shù)據(jù)的高字節(jié);SDA=1,表示ADT75忙或者損壞,結(jié)束數(shù)據(jù)讀取。
(4)讀取數(shù)據(jù)
當(dāng)檢測(cè)到ADT75的應(yīng)答信號(hào)為0時(shí),開始讀取溫度值。I2C總線的數(shù)據(jù)傳輸是以字節(jié)為單位的,首先讀取溫度值的高字節(jié)(溫度值的整數(shù)部分,最高位為符號(hào)位),讀取的數(shù)據(jù)存放在retc中。每接收1位數(shù)據(jù),retc左移1位。若SDA=1,retc加1;SDA=0,retc不變。
高8位數(shù)據(jù)傳輸完后,TMS320F2812傳給ADT75一個(gè)低電平的應(yīng)答信號(hào),由Mack()函數(shù)完成。此時(shí),需要將GPIOB1端口的數(shù)據(jù)傳輸方向改為輸出:
EALLOW:
GpioMuxRegs.GPBDIR.bit.GPIOB1=1;
EDIS:
然后開始接收溫度值的低字節(jié)(溫度值的小數(shù)部分),讀取成功后由TMS320F2812發(fā)送一個(gè)非應(yīng)答位,表示本次溫度值的讀取結(jié)束,進(jìn)入停止?fàn)顟B(tài)。
(5)結(jié)束數(shù)據(jù)傳輸
結(jié)束數(shù)據(jù)傳輸由Stop()函數(shù)完成,結(jié)束條件如下:
Delay(50);
至此,讀取一個(gè)溫度值的全過程結(jié)束。在程序調(diào)試過程中發(fā)現(xiàn),當(dāng)設(shè)置斷點(diǎn)單步運(yùn)行時(shí),無法檢測(cè)到ADT75發(fā)出的低電平應(yīng)答信號(hào),應(yīng)答信號(hào)始終為1;若不設(shè)斷點(diǎn)連續(xù)執(zhí)行時(shí),則可以檢測(cè)到低電平應(yīng)答信號(hào)。這點(diǎn)是ADT75和其他I2C總線器件(如E2PROM芯片AT24C256)的不同之處,在調(diào)試程序的過程中要注意該細(xì)節(jié)。
ADT75的溫度轉(zhuǎn)換周期為100 ms。在本設(shè)計(jì)中,每隔大約250 ms讀取一次溫度值,可以實(shí)現(xiàn)監(jiān)測(cè)光纖延遲線系統(tǒng)溫度的變化。
結(jié) 語
在光纖延遲線系統(tǒng)的硬件設(shè)計(jì)中,ADT75完全能夠滿足實(shí)時(shí)溫度采集的要求,而且測(cè)溫準(zhǔn)確,靈敏度高。由于使用了I2C總線接口,所以溫度檢測(cè)電路結(jié)構(gòu)簡單,占用空間小,串行接口占用TMS320F2812的資源少,可靠性高,功耗低,不易受環(huán)境干擾。實(shí)驗(yàn)證明,設(shè)計(jì)和運(yùn)行都達(dá)到了令人滿意的效果。