摘要:sht11是瑞士sensirion公司生產(chǎn)的具有i2c總線接口的單片全校準(zhǔn)數(shù)字式相對濕度和溫度傳感器。該傳感器采用獨特的cmosens tm技術(shù),具有數(shù)字式輸出、免調(diào)試、免標(biāo)定、免外圍電路及全互換的特點。文中對傳感器的性能特點、接口時序與命令進(jìn)行了詳細(xì)的闡述,給出了sht11與單片機的接口電路及相應(yīng)程序。
關(guān)鍵詞:數(shù)字式;溫濕度傳感器;i2c總線;單片機
1 概述
溫濕度的測量在倉儲管理、生產(chǎn)制造、氣象觀測、科學(xué)研究以及日常生活中被廣泛應(yīng)用,傳統(tǒng)的模擬式濕度傳感器一般都要設(shè)計信號調(diào)理電路并需要經(jīng)過復(fù)雜的校準(zhǔn)和標(biāo)定過程,因此測量精度難以保證,且在線性度、重復(fù)性、互換性、一致性等方面往往不盡人意。sht11是瑞士sensirion公司推出的基于cmosenstm技術(shù)的新型溫濕度傳感器。該傳感器將cmos芯片技術(shù)與傳感器技術(shù)結(jié)合起來,從而發(fā)揮出它們強大的優(yōu)勢互補作用。
2 性能特點
sht11溫濕度傳感器的主要特性如下:
●將溫濕度傳感器、信號放大調(diào)理、a/d轉(zhuǎn)換、i2c總線接口全部集成于一芯片(cmosenstm技術(shù));
●可給出全校準(zhǔn)相對濕度及溫度值輸出;
●帶有工業(yè)標(biāo)準(zhǔn)的i2c總線數(shù)字輸出接口;
●具有露點值計算輸出功能;
●具有卓越的長期穩(wěn)定性;
●濕度值輸出分辨率為14位,溫度值輸出分辨率為12位,并可編程為12位和8位;
●小體積(7.65×5.08×23.5mm),可表面貼裝;
●具有可靠的crc數(shù)據(jù)傳輸校驗功能;
●片內(nèi)裝載的校準(zhǔn)系數(shù)可保證100%互換性;
●電源電壓范圍為2.4~5.5v;
●電流消耗,測量時為550μa,平均為28μa,休眠時為3μa。
sht11溫濕度傳感器采用smd(lcc)表面貼片封裝形式,管腳排列如圖1所示,其引腳說明如下:
(1)gnd:接地端;
(2)data:雙向串行數(shù)據(jù)線;
(3)sck:串行時鐘輸入;
(4)vdd電源端:0.4~5.5v電源端;
(5~8)nc:空管腳。
3 工作原理
sht11的濕度檢測運用電容式結(jié)構(gòu),并采用具有不同保護(hù)的“微型結(jié)構(gòu)”檢測電極系統(tǒng)與聚合物覆蓋層來組成傳感器芯片的電容,除保持電容式濕敏器件的原有特性外,還可抵御來自外界的影響。由于它將溫度傳感器與濕度傳感器結(jié)合在一起而構(gòu)成了一個單一的個體,因而測量精度較高且可精確得出露點,同時不會產(chǎn)生由于溫度與濕度傳感器之間隨溫度梯度變化引起的誤差。cmosenstm技術(shù)不僅將溫濕度傳感器結(jié)合在一起,而且還將信號放大器、模/數(shù)轉(zhuǎn)換器、校準(zhǔn)數(shù)據(jù)存儲器、標(biāo)準(zhǔn)i2c總線等電路全部集成在一個芯片內(nèi)。sht11傳感器的內(nèi)部結(jié)構(gòu)框圖如圖2所示。
sht11的每一個傳感器都是在極為精確的濕度室中校準(zhǔn)的。sht11傳感器的校準(zhǔn)系數(shù)預(yù)先存在otp內(nèi)存中。經(jīng)校準(zhǔn)的相對濕度和溫度傳感器與一個14位的a/d轉(zhuǎn)換器相連,可將轉(zhuǎn)換后的數(shù)字溫濕度值送給二線i2c總線器件,從而將數(shù)字信號轉(zhuǎn)換為符合i2c總線協(xié)議的串行數(shù)字信號。
由于將傳感器與電路部分結(jié)合在一起,因此,該傳感器具有比其它類型的濕度傳感器優(yōu)越得多的性能。首先是傳感器信號強度的增加增強了傳感器的抗干擾性能,保證了傳感器的長期穩(wěn)定性,而a/d轉(zhuǎn)換的同時完成,則降低了傳感器對干擾噪聲的敏感程度。其次在傳感器芯片內(nèi)裝載的校準(zhǔn)數(shù)據(jù)保證了每一只濕度傳感器都具有相同的功能,即具有100%的互換性。最后,傳感器可直接通過i2c總線與任何類型的微處理器、微控制器系統(tǒng)連接,從而減少了接口電路的硬件成本,簡化了接口方式。
3.1 輸出特性
(1)濕度值輸出
sht11可通過i2c總線直接輸出數(shù)字量濕度值,其相對濕度數(shù)字輸出特性曲線如圖3所示。由圖3可看出,sht11的輸出特性呈一定的非線性,為了補償濕度傳感器的非線性,可按如下公式修正濕度值:
rhlinear=c1+c2sorh+c3sorh2
式中,sorh為傳感器相對濕度測量值,系數(shù)取值如下:
12位:sorh:c1=-4,c2=0.0405,c3=-2.8×10-6
8位:sorh:c1=-4,c2=0.648,c3=-7.2×10-4
(2)溫度值輸出
由于sht11溫度傳感器的線性非常好,故可用下列公式將溫度數(shù)字輸出轉(zhuǎn)換成實際溫度值:
t=d1+d2sot
當(dāng)電源電壓為5v,且溫度傳感器的分辨率為14位時,d1=-40d2=0.01,當(dāng)溫度傳感器的分辨率為12位時,d1=-40d2=0.04。
(3)露點計算
空氣的露點值可根據(jù)相對濕度和溫度值來得出,具體的計算公式如下:
logew=(0.66077+7.5t/(237.3+t)+[log10(rh)-2]
dp=[(0.66077-logew)×237.3]/(logew-8.16077)
3.2 命令與接口時序
sht11傳感器共有5條用戶命令,具體命令格式見表1所列。下面介紹一下具體的命令順序及命令時序。
表1 sht11傳感器命令列表
說 明
測量溫度00011溫度測量測量濕度00101濕度測量讀寄存器狀態(tài)00111“讀”狀態(tài)寄存器寫寄存器狀態(tài)00110“寫”狀態(tài)寄存器軟啟動11110重啟芯片,清除狀態(tài)記錄器的錯誤記錄11毫秒后進(jìn)入下一個命令(1)傳輸開始
初始化傳輸時,應(yīng)首先發(fā)出“傳輸開始”命令,該命令可在sck為高時使data由高電平變?yōu)榈碗娖�,并在下一個sck為高時將data升高。
接下來的命令順序包含三個地址位(目前只支持“000”)和5個命令位,當(dāng)data腳的ack位處于低電位時,表示sht11正確收到命令。
(2)連接復(fù)位順序
如果與sht11傳感器的通訊中斷,下列信號順序會使串口復(fù)位:即當(dāng)data線處于高電平時,觸發(fā)sck 9次以上(含9次),此后應(yīng)接著發(fā)一個“傳輸開始”命令。
表2 sht11狀態(tài)寄存器類型及說明
(3)溫濕度測量時序
當(dāng)發(fā)出了溫(濕)度測量命令后,控制器就要等到測量完成。使用8/12/14位的分辨率測量分別需要大約11/55/210ms的時間。為表明測量完成,sht11會使數(shù)據(jù)線為低,此時控制器必須重新啟動sck,然后傳送兩字節(jié)的測量數(shù)據(jù)與1字節(jié)crc校驗和�?刂破鞅仨毻ㄟ^使data為低來確認(rèn)每一個字節(jié),所有的量均從右算,msb列于第一位。通訊在確認(rèn)crc數(shù)據(jù)位后停止。如果沒有用crc-8校驗和,則控制器就會在測量數(shù)據(jù)lsb后保持ack為高來停止通訊,sht11在測量和通訊完成后會自動返回睡眠模式。需要注意的是:為使sht11的溫升低于0.1℃此時的工作頻率不能大于標(biāo)定值的15%(如:12位精確度時,每秒最多進(jìn)行3次測量)。測量溫度和濕度命令所對應(yīng)的時序如圖4所示。
圖4
3.3 寄存器配置
sht11傳感器中的一些高級功能是通過狀態(tài)寄存器來實現(xiàn)的,寄存器各位的類型及說明見表2所列。下面對寄存器相關(guān)位的功能說明:
(1)加熱
使芯片中的加熱開關(guān)接通后,傳感器溫度大約增加5℃,從而使功耗增加至8ma@5v。加熱用途如下:
●通過對啟動加熱器前后的溫、濕度進(jìn)行比較,可以正確地區(qū)別傳感器的功能;
●在相對濕度較高的環(huán)境下,傳感器可通過加熱來避免冷凝。
(2)低電壓檢測
sht11工作時可以自行檢測vdd電壓是否低于2.45v,準(zhǔn)確度為±0.1v。
(3)下載校準(zhǔn)系數(shù)
為了節(jié)省能量并提高速度,otp在每次測量前都要重新下載校準(zhǔn)系數(shù),從而使每一次測量節(jié)�。福玻恚蟮臅r間。
(4)測量分辨率設(shè)定
將測量分辨率從14位(溫度)和12位(濕度)分別減到12位和8位可應(yīng)用于高速或低功耗場合。
4 應(yīng)用說明
4.1 運行條件
測量量程以外的溫度會使?jié)穸刃盘枙簳r地偏移+3%。然后傳感器會慢慢返回到校準(zhǔn)條件。若將芯片在濕度小于5%環(huán)境下加熱24小時到90℃,芯片就會迅速恢復(fù)高相對濕度、高溫度環(huán)境的影響,但是,延長強度條件會加速芯片的老化。
4.2 安裝注意事項
由于大氣的相對濕度與溫度的關(guān)系比較密切,因此,測量大氣溫度時的要點是將傳感器與大氣保持同一溫度,如果傳感器線路板上有發(fā)熱元件,sht11應(yīng)與熱源保持良好的通風(fēng),為減少sht11和pcb之間的熱傳導(dǎo),應(yīng)使銅導(dǎo)線最細(xì)并在其中加上窄縫,同時應(yīng)避免使傳感器在強光或uv下曝曬。
傳感器在布線時,sck和data信號平行且相互接近,或信號線長于10cm時,均會產(chǎn)生干擾信息,此時應(yīng)在兩組信號之間放置vdd或gnd。
5 具體應(yīng)用
圖5是at89c2051單片機與sht11的接口電路。由于at89c2051不具備i2c總線接口,故使用單片機通用i/o口線來虛擬i2c總線,并利用p1.0來虛擬數(shù)據(jù)線data,利用p1.1口線來虛擬時鐘線,并在data端接入一只4.7kω的上拉電阻,同時,在vdd及gnd端接入一只0.1μf的去耦電容。下面給出與上述硬件電路配套的c51應(yīng)用程序。
#define data p1_1
#define sck p1_0
#define ack 1
#define noack 0
#define measure_temp 0x03 //測量溫度命令
#define measure_humi 0x05 //測量濕度命令
//讀溫濕度數(shù)據(jù)
char s-measure(unsigned char *p- value, un-signed char *p_checksum, unsigned char mode)
{
unsigned char error=0;
unsigned int i;
s_transstart(); //傳輸開始
switch(mode){
case
temp:error+=s_write_byte(measure_temp);
break;
case
humi:error+=s_write_byte(measure_humi);break;
default:break;
}
for(i=0;i<65535;i++) if(data==0) break;
if (data) reeor+=1;
*(p_value)=s_read_byte(ack);
*(p_value+1)=s_read_byte(ack);
*p_checksum=s_read_byte(noack);
return error;
}
//溫濕度值標(biāo)度變換及溫度補償
void calc_sth15(float *p_humidity,float *p_tempera-ture)
{
const float c1=-4.0;
const float c2=0.0405;
const float c3=-0.0000028;
const float t1=-0.01;
const float t2=0.00008;
float rh=×p_humidity;
float t=×p_temperature;
float rh_lin;
float th_ture;
float t_c;
t_c=t×0.01-40;
rh_lin=c3×rh×rh+c2×rh+c1;
trh_ture=(t_c-25)×(t1+t2×rh)+rh_lin;
×p_temperature=t-c;
×p_humidity=rh_ture;
}
//從相對溫度和濕度計算露點
char calc_dewpoint(float h,float t)
{float logex,dew_point;
logex=0.66077+7.5×t/(237.3+t)+[log10(h)-2];
dew_point=(logex-0.66077)×237.3/(0.66077+7.5-logex);
return dew_point;
}
限于篇幅,上述程序中未給出傳輸開始、寫字節(jié)數(shù)據(jù)、讀字節(jié)數(shù)據(jù)函數(shù)。
6 結(jié)束語
sht11數(shù)字式溫濕度傳感器由于將溫度傳感器、濕度傳感器、信號調(diào)理、模/數(shù)轉(zhuǎn)換器、標(biāo)定參數(shù)及i2c總線接口全部集成到傳感器內(nèi)部,因此,既提高了傳感器的性能,又降低了成本、減少了體積,同時也非常便于和微控制器接口,由此可見,該傳感器是嵌入式系統(tǒng)溫濕度測試的理想選擇。