溫度傳感器MAX6662的應用研究
?
1 溫度傳感器MAX6662
MAX6662是一款12位+符號位溫度傳感器.在單片封裝中還集成了可編程過溫報警和三線(SPI兼容)串行接口。它使用內部A/D轉換器將其管芯溫度轉換為數字量。溫度數據以13位字的形式存儲在溫度寄存器中,分辨率為O.062 5℃,溫度數據可在任意時刻通過串口讀取。工作電壓范圍為+3~+5.5 V,溫度范圍為一55~+150℃。
1.1 MA×6662的引腳定義
如圖l所示,MAX6662采用8引腳SO封裝。其接口信號描述如下:SCLK為串行時鐘輸入;CS為片選信號,低電平時使能串行數據的輸入、輸出;SIO為串行數據輸入輸出,雙向口;ALERT為過溫報警,溫度過高或過低時默認輸出低電平,可編程設置為高;OT為高溫報警,溫度過高時默認輸出低電平,可編程設置為高。其中,ALERT和OT均為漏極開路,使用時需要加上拉電阻。
1.2 MAX6662工作寄存器
MAX6662有6個工作寄存器:溫度寄存器、配置寄存器、THYST寄存器、TMAX寄存器、TL0W寄存器和THIGH寄存器。
(1)溫度寄存器
溫度寄存器為只讀寄存器,MSB位為符號位(bitl5);接下來的12位是溫度數據位,最新轉換的溫度數據以℃為單位存儲于溫度寄存器,其中高8位表示溫度整數位,低4位為小數位;3位最低有效位為溫度標志位,顯示報警信息,分別為Tover標志、Thigh標志、Tlow標志。
(2)配置寄存器
配置寄存器只使用了第8~12位,用于配置MAX6662的工作模式,如表1所列。
(3)溫度界限寄存器
TLOW寄存器、THIGH寄存器和THYST寄存器用于設置溫度界限來觸發ALERT;TMAX寄存器、THYST寄存器用于設置0T的溫度極限。這些溫度界限寄存器使用9位高位(符號位和8位數據位),雙精度格式,1位最小單位,剩余7位保留。
1.3 MAX6662命令字
命令字第l位為高電平,代表傳輸開始;第2位是讀/寫位,高電平時讀。總共有11個有效命令,溫度轉換持續進行并且可通過串行口異步讀取。一旦讀取溫度寄存器,正在進行的轉換失敗并且把之前的轉換結果輸出。命令字定義如表2所列。
1.4 MAX6662的工作模式
(1)比較模式
此模式下,對于ALERT,當溫度超過TMAX寄存器的值或低于TLOW寄存器的值時,ALERT輸出低電平;溫度低于THIGH—THYST,或高于TLOW+THYST時,ALERT輸出高電平。
對于OT,當溫度超過TMAX的值時建立OT(即變低);溫度低于TMAX--THYST時,OT輸出高電平。讀操作均不能復位OT、ALERT,默認條件下,OT、ALERT均為低有效的輸出信號,但可以在配置寄存器中配置為高。
(2)關斷模式
MAX6662的一個特色是可編程的關斷模式。將配置寄存器的關斷位置1,即可進入關斷模式。關斷模式下,除了POR電源復位和串口外,其他工作均被禁止;所有寄存器的值都被保留,溫度寄存器保留最后的溫度轉換值。
1.5 MAX6662的通信協議與數據格式
串行接口包括3條信號線:片選CS(低有效)、雙向數據線SIO和串行時鐘SCLK。其中,CS和SCLK只受主機控制,主機和MAX6662共同控制SIO。當主機發送數據時,數據在上升沿被送入MAX6662。讀數據時,數據在下降沿被讀出。命令字節和數據字的MSB位首先寫入或讀出。前8個時鐘周期用于傳送命令字,命令字由SIO輸入MAX6662。該命令字決定接下來16個周期的數據由主機還是MAX6662來控制。如果由MAX6662來控制SIO,則開始于第8個時鐘周期的下降沿。通信時序如圖2所示。
溫度寄存器存儲12位的轉換數據和1位溫度符號位,能確定的溫度范圍為一55~+155℃,數據傳送格式如表3所列。
2 應用電路設計
2.1 硬件電路設計
MAX6662傳感器與MCS一51系列單片機AT89S52的硬件接口電路如圖3所示。
MAX6662的S10、SCLK、CS腳分別與AT89S52的P1.0、P1.1、P1.2腳連接,用于模擬三線SPI總線,以實現傳感器串行數據的傳輸。報警端口OT和ALERT均為漏極開路端,使用時需要接上拉電阻,因此均經過10 kΩ的電阻接地;同時分別連接AT89S52的P3.3和P3.2腳,用于觸發外部中斷,實現報警操作。MAX6662的VCC腳經0.1μF的電容接地,用于濾除干擾。
2.2 傳感器數據的讀取
每次有效的數據傳輸只能使用24個時鐘周期,數據的讀取分為2步(讀取前應首先置CS為低):
①前8個周期,單片機向傳感器發送讀取寄存器命令,可以讀取傳感器所有寄存器的值。此時為單片機向傳感器串行發送數據,數據在時鐘的上升沿送入傳感器。
②后16個周期,傳感器將寄存器的值串行送入數據線SIO,由單片機接收。此時為單片機接收傳感器的串行數據,數據在時鐘的下降沿送入單片機。即由MAX6662來控制SIO,數據的傳輸開始于第8個時鐘周期的下降沿。
數據讀取程序如下:
程序運行結束后,傳感器送到單片機中的值就會存入變量dat中,以便后面的數據處理使用。
2.3 傳感器數據的寫入
向MAX6662傳感器中寫數據的功能主要是用于配置傳感器或是規定報警溫度值,每次寫入也必須是24個時鐘周期。數據的寫入也分為2步:
①前8個周期完成的操作與數據的讀取相同,命令字各位在時鐘的上升沿送入傳感器。
②后16個周期,主機控制SIO數據線將要寫入的數據一位一位地送入數據線SIO。與讀取數據不同的是,數據的寫入開始于第9個時鐘周期的上升沿,因為主機發送數據時,數據在上升沿時送入傳感器。
寫命令的函數與數據讀取相同,數據寫入程序如下:
初始化時,應首先把數據賦值給wdata,再調用此函數。
結 語
本文提出了用單片機3根I/O口線模擬溫度傳感器MAX6662的SPI總線的方法。經實驗驗證,完全可行,并且由于MAX6662用于溫度測量時具有高精度和附加報警功能,因而在需要精確溫度控制和溫度測量等方面也會有廣泛的應用。
?
?