溫濕度傳感器SHT11的感測系統(tǒng)設(shè)計(jì)的解決方案
1 SHTll簡介
SHTll是瑞士Sensirion公司推出的一款數(shù)字溫濕度傳感器芯片。該芯片廣泛應(yīng)用于暖通空調(diào)、汽車、消費(fèi)電子、自動(dòng)控制等領(lǐng)域。共主要特點(diǎn)如下:
◆高度集成,將溫度感測、濕度感測、信號(hào)變換、A/D轉(zhuǎn)換和加熱器等功能集成到一個(gè)芯片上;
◆提供二線數(shù)字串行接口SCK和DATA,接口簡單,支持CRC傳輸校驗(yàn).傳輸可靠性高;
◆測量精度可編程調(diào)節(jié),內(nèi)置A/D轉(zhuǎn)換器(分辨率為8~12位,可以通過對(duì)芯片內(nèi)部寄存器編程來選擇);
◆測量精確度高,由于同時(shí)集成溫濕度傳感器,可以提供溫度補(bǔ)償?shù)臐穸葴y量值和高質(zhì)量的露點(diǎn)計(jì)算功能;
◆封裝尺寸超小(7.62 mm×5.08 mm×2.5 mm),測量和通信結(jié)束后,自動(dòng)轉(zhuǎn)入低功耗模式;
◆高可靠性,采用CMOSens工藝,測量時(shí)可將感測頭完全浸于水中。
2 SHTll的引腳功能
SHTll溫濕度傳感器采用SMD(LCC)表面貼片封裝形式,接口非常簡單,引腳名稱及排列順序如圖l所示。
各引腳的功能如下:
◇腳1和4——信號(hào)地和電源,其工作電壓范圍是2.4~5.5 V;
◇腳2和腳3——二線串行數(shù)字接口,其中DA-TA為數(shù)據(jù)線,SCK為時(shí)鐘線;
◇腳5~8——未連接。
3 SHTll的內(nèi)部結(jié)構(gòu)和工作原理
溫濕度傳感器SHTl1將溫度感測、濕度感測、信號(hào)變換、A/D轉(zhuǎn)換和加熱器等功能集成到一個(gè)芯片上,其內(nèi)部結(jié)構(gòu)如圖2所示。該芯片包括一個(gè)電容性聚合體濕度敏感元件和一個(gè)用能隙材料制成的溫度敏感元件。這兩個(gè)敏感元件分別將濕度和溫度轉(zhuǎn)換成電信號(hào),該電信號(hào)首先進(jìn)入微弱信號(hào)放大器進(jìn)行放大;然后進(jìn)入一個(gè)14位的A/D轉(zhuǎn)換器;最后經(jīng)過二線串行數(shù)字接口輸出數(shù)字信號(hào)。SHT11在出廠前,都會(huì)在恒濕或恒溫環(huán)境中進(jìn)行校準(zhǔn),校準(zhǔn)系數(shù)存儲(chǔ)在校準(zhǔn)寄存器中;在測量過程中,校準(zhǔn)系數(shù)會(huì)自動(dòng)校準(zhǔn)來自傳感器的信號(hào),此外,SHT11內(nèi)部還集成了一個(gè)加熱元件,加熱元件接通后可以將SHTll的溫度升高5℃左右,同時(shí)功耗也會(huì)有所增加。此功能主要為了比較加熱前后的溫度和濕度值,可以綜合驗(yàn)證兩個(gè)傳感器元件的性能。在高濕(>95%RH)環(huán)境中,加熱傳感器可預(yù)防傳感器結(jié)露,同時(shí)縮短響應(yīng)時(shí)間,提高精度。加熱后SHTll溫度升高、相對(duì)濕度降低,較加熱前,測量值會(huì)略有差異。
微處理器是通過二線串行數(shù)字接口與SHTl1進(jìn)行通信的。通信協(xié)議與通用的I2C總線協(xié)議是不兼容的,因此需要用通用微處理器I/O口模擬該通信時(shí)序。微處理器對(duì)SHTll的控制是通過5個(gè)5位命令代碼來實(shí)現(xiàn)的,命令代碼的含義如表1所列。
4 SHTll應(yīng)用設(shè)計(jì)
微處理器采用二線串行數(shù)字接口和溫濕度傳感器芯片SHTll進(jìn)行通信,所以硬件接口設(shè)計(jì)非常簡單;然而,通信協(xié)議是芯片廠家自己定義的,所以在軟件設(shè)計(jì)中,需要用微處理器通用I/O口模擬通信協(xié)議。
4.1 硬件設(shè)計(jì)
SHTl1通過二線數(shù)字串行接口來訪問,所以硬件接口電路非常簡單。需要注意的地方是:DATA數(shù)據(jù)線需要外接上拉電阻,時(shí)鐘線SCK用于微處理器和SHTll之間通信同步,由于接口包含了完全靜態(tài)邏輯,所以對(duì)SCK最低頻率沒有要求;當(dāng)工作電壓高于4.5V時(shí),SCK頻率最高為10 MHz,而當(dāng)工作電壓低于4.5 V時(shí),SCK最高頻率則為1 MHz。硬件連接如圖3所示。
4.2 軟件設(shè)計(jì)
微處理器和溫濕度傳感器通信采用串行二線接口SCK和DATA,其中SCK為時(shí)鐘線,DATA為數(shù)據(jù)線。該二線串行通信協(xié)議和I2C協(xié)議是不兼容的。在程序開始,微處理器需要用一組“啟動(dòng)傳輸”時(shí)序表示數(shù)據(jù)傳輸?shù)膯?dòng),如圖4所示。當(dāng)SCK時(shí)鐘為高電平時(shí),DATA翻轉(zhuǎn)為低電平;緊接著SCK變?yōu)榈碗娖?,隨后又變?yōu)楦唠娖?;在SCK時(shí)鐘為高電平時(shí),DATA再次翻轉(zhuǎn)為高電平。
HTll濕度測試時(shí)序如圖5所示。其中,陰影部分為SHTll控制總線。主機(jī)發(fā)出啟動(dòng)命令,隨后發(fā)出一個(gè)后續(xù)8位命令碼。該命令碼包含3個(gè)地址位(芯片設(shè)定地址為000)和5個(gè)命令位;發(fā)送完該命令碼,將DATA總線設(shè)為輸入狀態(tài)等待SHTll的響應(yīng);SHTll接收到上述地址和命令碼后,在第8個(gè)時(shí)鐘下降沿,將DATA下拉為低電平作為從機(jī)的ACK;在第9個(gè)時(shí)鐘下降沿之后,從機(jī)釋放DATA(恢復(fù)高電平)總線;釋放總線后,從機(jī)開始測量當(dāng)前濕度,測量結(jié)束后,再次將DATA總線拉為低電平;主機(jī)檢測到DATA總線被拉低后,得知濕度測量已經(jīng)結(jié)束,給出SCK時(shí)鐘信號(hào);從機(jī)在第8個(gè)時(shí)鐘下降沿,先輸出高字節(jié)數(shù)據(jù);在第9個(gè)時(shí)鐘下降沿,主機(jī)將DATA總線拉低作為ACK信號(hào),然后釋放總線DATA;在隨后8個(gè)SCK周期下降沿,從機(jī)發(fā)出低字節(jié)數(shù)據(jù);接下來的SCK下降沿,主機(jī)再次將DATA總線拉低作為接收數(shù)據(jù)的ACK信號(hào);最后8個(gè)SCK下降沿從機(jī)發(fā)出CRC校驗(yàn)數(shù)據(jù),主機(jī)不予應(yīng)答(NACK)則表示測量結(jié)束。
由于微處理器通過二線串行數(shù)字接口訪問濕度傳感器SHTll,而訪問協(xié)議是芯片生產(chǎn)商自定義的,所以需要用通用I/O口模擬該通信協(xié)議。我們選用Atmel公司的微處理器ATmegal28。通過對(duì)I/O口寄存器的編程,該處理器的I/O口可以根據(jù)需要設(shè)置成輸入、輸出、高阻等狀態(tài),這為模擬該通信協(xié)議提供了條件。在軟件實(shí)現(xiàn)過程中,通過宏定義來實(shí)現(xiàn)I/O口狀態(tài)的改變。
通過以上宏定義,可以實(shí)現(xiàn)SCK和DATA總線的各種輸入和輸出狀態(tài)。為了模擬該二線串行數(shù)字協(xié)議,還需要一個(gè)延時(shí)函數(shù)。WINAVR庫函數(shù)提供了一個(gè)延時(shí)函數(shù)_delay_loop_2(unslgned char s),該延時(shí)函數(shù)運(yùn)行用4個(gè)時(shí)鐘周期,所以白定義延時(shí)1μs函數(shù)可以定義如下:#deftne CPU_CRYSTAL 7.3728
基于以上宏定義和延時(shí)函數(shù),可以方便地使SCK和DATA總線輸出持續(xù)一定時(shí)間的高電平或低電平,從而可以模擬圖5所示的溫濕度傳感器SHTll的讀寫協(xié)議。
4.3 溫度和濕度值的計(jì)算
4.3.1 濕度線性補(bǔ)償和溫度補(bǔ)償
SHTll可通過DATA數(shù)據(jù)總線直接輸出數(shù)字量濕度值。該濕度值稱為“相對(duì)濕度”,需要進(jìn)行線性補(bǔ)償和溫度補(bǔ)償后才能得到較為準(zhǔn)確的濕度值。由于相對(duì)濕度數(shù)字輸出特性呈一定的非線性,因此為了補(bǔ)償濕度傳感器的非線性,可按下式修正濕度值:
式中:RHincar為經(jīng)過線性補(bǔ)償后的濕度值,SORH為相對(duì)濕度測量值,C1、C2、C3為線性補(bǔ)償系數(shù),取值如表2所列。
由于溫度對(duì)濕度的影響十分明顯,而實(shí)際溫度和測試參考溫度25℃有所不同,所以對(duì)線件補(bǔ)償后的濕度值進(jìn)行溫度補(bǔ)償很有必要。補(bǔ)償公式如下:
式中:RHtrue為經(jīng)過線性補(bǔ)償和溫度補(bǔ)償后的濕度值,T為測試濕度值時(shí)的溫度(℃),t1和t2為溫度補(bǔ)償系數(shù),取值如表3所列。
4.3.2 溫度值輸出
由于SHTll是采用PTAT能隙材料制成的溫度敏感元件,因而具有很好的線性輸出。實(shí)際溫度值可由下式算得:
Temperture=dl+d2×SOT
式中:d1和d2為特定系數(shù),d1的取值與SHTll工作電壓有關(guān),d2的取值則與SHTll內(nèi)部A/D轉(zhuǎn)換器采用的分辨率有關(guān),其對(duì)應(yīng)關(guān)系分別如表4和表5所列。
4.3.3 露點(diǎn)計(jì)算
露點(diǎn)是一個(gè)特殊的溫度值,是空氣保持某一定濕度必須達(dá)到的最低溫度。當(dāng)空氣的溫度低于露點(diǎn)時(shí),空氣容納不了過多的水分,這些水分會(huì)變成霧、露水或霜。露點(diǎn)可以根據(jù)當(dāng)前相對(duì)濕度值和溫度值計(jì)算得出,具體的計(jì)算公式如下:
式中:T為當(dāng)前溫度值,SORH為相對(duì)濕度值,DP為露點(diǎn)。
5 結(jié)論
溫濕度傳感器SHTll集溫度傳感器和濕度傳感器于一體,因此采用SHTll進(jìn)行溫濕度實(shí)時(shí)監(jiān)測的系統(tǒng)具有精度高、成本低、體積小、接口簡單等優(yōu)點(diǎn);另外SHTll芯片內(nèi)部集成了14位A/D轉(zhuǎn)換器,且采用數(shù)字信號(hào)輸出,因此抗干擾能力也比同類芯片高。該芯片在溫濕度監(jiān)測、自動(dòng)控制等領(lǐng)域均已得到廣泛應(yīng)用。
評(píng)論