溫度傳感器DS75LX與PIC單片機的接口設(shè)計
1 概述
DS75LX是一款高精度的串行數(shù)字輸出型溫度傳感器,測量的溫度數(shù)據(jù)可通過兩線串行總線(與I2C總線兼容)輸出。DS75LX工作電壓為1.7 V到3.7 V。除了基本的測溫功能外,DS75LX還具有溫度報警功能,允許用戶通過軟件設(shè)置報警溫度的門限值。DS75LX測溫范圍為-55℃~+125℃,當(dāng)測溫范圍為-25℃~+100℃時,測量精度為±2℃。DS75LX同時具有可編程的9至12位的溫度數(shù)據(jù)輸出格式。輸出的溫度數(shù)據(jù)為12位時,其分辨率可達0.0625℃。該傳感器具有三個地址引腳,可設(shè)置為三種狀態(tài)中的任意一種:接GND、VDD,或懸空,可設(shè)置27種地址組合。例如A2、A1和A0分別為接電源、接地和懸空時,DS75LX的器件地址為0101110。圖1是DS75LX的引腳排列,各功能描述如表1所示。
DS75LX通過一個能隙帶溫度感知體系結(jié)構(gòu)來實現(xiàn)溫度測量。片上△-∑模數(shù)轉(zhuǎn)換器將所測的環(huán)境溫度直接轉(zhuǎn)換成數(shù)字量并存儲在溫度寄存器中。DS75LX一上電就開始測量溫度,用戶可通過軟件設(shè)置配置寄存器的內(nèi)容以滿足自身的測量要求。DS75LX除了基本的溫度測量外還具有溫度報警模塊。與溫度報警模塊相關(guān)的兩個寄存器分別為報警門限寄存器Tos和溫度遲滯寄存器Thyst。該模塊可配置為兩種工作模式:比較器模式和中斷模式。在比較器模式時只要被測溫度在連續(xù)1、2、4或6次測量的結(jié)果均高于Tos中的值,O.S.引腳觸發(fā)并按照配置寄存器中的POL位的值輸出特定電平,此時與Thyst中的設(shè)定值無關(guān);而在中斷模式時只要被測的溫度在連續(xù)1、2、4或6次溫度測量的結(jié)果均高于Tos中的值或低于Thyst中的值時觸發(fā)O.S.引腳,輸出特定電平。 DS75LX的內(nèi)部結(jié)構(gòu)主要是由地址、I/O口控制單元、精確參考源、采樣調(diào)節(jié)器和可訪問寄存器等組成。對于用戶來說,只需了解DS75LX的地址、I/O口控制單元和可訪問寄存器即可,因為DS75LX的所有操作均是通過串行I/O口讀寫可訪問寄存器來實現(xiàn)的。 3.1 DS75LX的配置寄存器 DS75LX的配置寄存器如表2所示,該寄存器可讀/寫,允許用戶選擇不同功能。這些功能包括報警輸出類型、溫度測量分辨率等。 3.2 DS75LX的可訪問寄存器 DS75LX有4個用戶可訪問寄存器,分別為溫度寄存器、配置寄存器、溫度遲滯寄存器和報警門限寄存器。其中溫度寄存器為只讀寄存器,用于存取測量的環(huán)境溫度數(shù)據(jù),報警門限寄存器和溫度遲滯寄存器均為可瀆/寫寄存器,用于提供用戶可編程的報警溫度值。如果環(huán)境溫度漂移超出編程設(shè)定值則溫度報警引腳輸出報警信號。 3.3 寄存器指針 寄存器指針是向用戶提供所要訪問寄存器地址,寄存器指針的內(nèi)容即為可訪問寄存器地址。由于DS75LX內(nèi)部只含有4個可訪問寄存器,因此寄存器指針的內(nèi)容只有低兩位(P1、P0)有效,當(dāng)訪問某個寄存器時,必須確保寄存器指針已指向該寄存器。P1和P0的值與可訪問寄存器對應(yīng)關(guān)系如表3所示。 DS75LX將測量的溫度轉(zhuǎn)換為16位二進制補碼形式并存儲在兩個字節(jié)的溫度寄存器中。最高位是符號位,為0時表示測量的溫度在0℃以上,反之,所測的溫度在0℃以下。而低字節(jié)的低4位無用,其值為0。當(dāng)DS75LX輸出的溫度數(shù)據(jù)為12位即DS75LX具有12位分辨率時,溫度寄存器的位15至位4為有效的溫度數(shù)據(jù)。同理,當(dāng)分辨率分別為11、10、和9位時,對應(yīng)的有效溫度數(shù)據(jù)分別是溫度寄存器的位15至位5、位15至位6和位15至位7。 3.5 兩線串行總線 DX75LX的讀寫操作是通過兩線串行總線接口實現(xiàn)的,該串行總線與I2C總線兼容。圖2所示為讀溫度及溫度門限寄存器的時序圖。此時假定寄存器指針已指向溫度寄存器,否則需要對指針進行設(shè)置。設(shè)置方法如下:主器件產(chǎn)生起始位、發(fā)送包含DS75LX地址的寫命令、收到應(yīng)答、發(fā)送寄存器指針字節(jié)。注意只有指針字節(jié)的低兩位(P1、P0位)有效。 DS75LX與PIC單片機的硬件接口電路很簡單,如圖3所示。由于PIC16F737具有I2C總線接口,只需將兩者的時鐘和數(shù)據(jù)引腳對應(yīng)相連,無論時鐘還是數(shù)據(jù)線都必須通過上拉電阻與電源相連。本文假定DS75LX的三個地址輸入引腳都接地,此時DS75LX的地址為1001000。 軟件設(shè)計部分包括DS75LX與PIC單片機的初始化程序,讀溫度數(shù)據(jù)子程序等,限于篇幅以下給出PIC單片機讀取DS75LX輸出的溫度數(shù)據(jù)的子程序。該子程序?qū)?yīng)的時序見圖2。采用C語言編程,編譯器為PICC編程環(huán)境MPLAB IDE。該程序既可用查詢方式也可用中斷方式實現(xiàn),本文利用查詢中斷標(biāo)志SSPIF實現(xiàn),具體程序代碼如下: 6 結(jié)束語 本文主要介紹數(shù)字溫度傳感器DS75LX的工作原理以及與單片機的接口設(shè)計。DS75LX具有測量精度高、分辨率可調(diào)等特點。DS75LX的片選引腳具有三態(tài)輸入,在同樣數(shù)量的地址引腳情況下,與其他同類器件相比,DS75LX具有更多的地址組合可用,因此非常適用于多點溫度測量系統(tǒng)。同時DS75LX的兩線串行接口簡化了與單片機的硬件接口設(shè)計。DS75LX體積小巧,可廣泛應(yīng)用在小型基站、路由器、服務(wù)器及便攜式溫度計。
2 DS75LX的工作原理
3 DS75LX的內(nèi)部結(jié)構(gòu)
該寄存器各位的含義說明:最高位為保留位,該位讀出值為0;R1和R0位的取值決定了DS75LX輸出的溫度數(shù)據(jù)的位數(shù)。當(dāng)R1和R0分別為00、01、10、或11時,DS75LX輸出溫度有效數(shù)據(jù)分別為9、10、11或12位;F1和F0位的值決定了觸發(fā)O.S.引腳所需要進行的連續(xù)溫度測量次數(shù)。當(dāng)F1和F0分別為00、01、10、11時對應(yīng)的連續(xù)溫度測量次數(shù)為1、2、4和6次;POL位的值決定了O.S.引腳觸發(fā)時為高電平還是低電平。當(dāng)POL=0時O.S.引腳觸發(fā)時輸出低電平,POL值為1時0.S.引腳觸發(fā)時輸出高電平;TM=0時溫度報警模塊工作在比較器模式,TM=1時溫度報警模塊工作在中斷模式;SD=1時DS75LX處于關(guān)斷模式,此時DS75LX不進行溫度采集,SD=0時,DS75LX處于正常工作狀態(tài)。該配置寄存器的各位上電時均為0。
3.4 輸出的溫度數(shù)據(jù)格式
4 DS75LX與PIC單片機接口電路
5 軟件設(shè)計