上式中,
RHlinear 為經(jīng)過線性補償后的濕度值,
SORH 為相對濕度測量值,
C1、
C2、
C3 為線性補償系數(shù),取值如表 4.1 所示。
表 4.1 濕度值線性補償系數(shù)
Table. 4.1 Humidity coefficient of linear compensation
SORH | C1 | C2 | C3 |
12 位 | -4 | 0.0405 | -2.8 × 10-6 |
8 位 | -4 | 0.648 | -7.2 × 10-4 |
由于溫度對濕度的影響十分明顯,而實際溫度和測試參考溫度 25
oC 有所不同,所以對線性補償后的濕度進行溫度補償很有必要
[25]。補償?shù)墓饺缦拢?/div>
RHtrue = (T - 25) ´(t1 + t2 ´ SORH ) + RHlinear
(4.2)
其中,
RHtru e 為經(jīng)過線性補償和溫度補償后的濕度值,
T 為測試濕度值時的溫度
(
oC),
t1 和
t2 為溫度補償系數(shù),取值如表 4.2 所列。
表 4.2 濕度值溫度補償系數(shù)
Table. 4.2 Temperature compensation coefficient of humidity
SORH | t1 | t2 |
12 位 | 0.01 | 0.00008 |
8 位 | 0.01 | 0.00128 |
濕度值線性補償和溫度補償實現(xiàn)的子程序如下:
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;
}
4.2.2 溫度值輸出
由于 SHT11 是采用 PTAY 能隙材料制成的溫度敏感元件,因為具有很好的線性輸出[19]。實際溫度值可由下式算得[17]:T = d1 + d2 ´ SOT
(4.3)
式中:
d1 和
d2 為特定系數(shù),
d1 的取值與SHT11 的工作電壓有關(guān),
d2 的取值則與SHT11
內(nèi)部 A/D 轉(zhuǎn)換器采用的分辨率有關(guān),其對應關(guān)系分別如表 4.3 和表 4.4 所列。
表 4.3
d1 與工作電壓的對應關(guān)系
Table. 4.3 Correspondence between d1 and Vdd Vdd/V | d1/oC | d1/ oF |
5 | -40.00 | -40.00 |
4 | -39.75 | -39.55 |
3.5 | -39.66 | -39.39 |
3 | -39.60 | -39.28 |
2.5 | -39.55 | -39.19 |
| | 表 4.4 d2 與分辨率的對應關(guān)系 Table. 4.4 Correspondence between d2 and resolution | |
SOT | d2/oC | d2/oF |
14 位 | 0.01 | 0.018 |
| 12 位 | 0.04 | 0.072 |
4.2.3 露點計算
露點是一個特殊的溫度值,是空氣保持某一濕度必須要達到的溫度。當空氣的溫度低于露點時,空氣容納不了過多的水分,這些水分會變成霧、露水或者霜
[18]。露點可以根據(jù)當前相對濕度值和溫度值計算得出,具體的計算公式如下
[19]:
LogEW = 0.66077 + 7.5T /(237.3 + T ) +[lg( RH ) - 2]
DP = [(0.66077 - LogEW ) ´ 237.3]/(LogEW - 8.16077)
4.2.4 命令與接口時序
(4.4)
(4.5)SHT11 傳感器共有 5 條用戶命令,具體命令格式如表 4.5 所示。以下部分具體闡述命令順序以及命令時序。
表 4.5 SHT11 傳感器命令列表
Table. 4.5 Command list of the SHT11 sensor 命令 | 編碼 | 說明 |
測量溫度 | 00011 | 溫度測量 |
測量濕度 | 00101 | 濕度測量 |
讀寄存器狀態(tài) | 00111 | 讀狀態(tài)寄存器 |
寫寄存器狀態(tài) | 00110 | 寫狀態(tài)寄存器 |
軟啟動 | 11110 | 重啟芯片,清楚狀態(tài)寄存器的錯誤記錄 11 ms 后進入下一個命令 |
①傳輸開始[24,25]
用一組“啟動傳輸”時序,來表示數(shù)據(jù)傳輸?shù)某跏蓟?。它包括:?nbsp;SCK 時鐘高電平時,DATA 翻轉(zhuǎn)為低電平,緊接著 SCK 變?yōu)榈碗娖?,隨后是在 SCK 時鐘高電平時 DATA 翻轉(zhuǎn)為高電平。
圖 4.3 啟動傳輸時序
Fig. 4.3 Transmission start sequence
接下來的命令順序包含 3 個地址位和 5 個命令位,當 DATA 腳的 ack 位處于低電平時,表示 SHT11 正確收到命令。
②通訊復位時序
圖 4.4 通訊復位時序
Fig. 4.4 Connection reset sequence
如果與 SHT11 通訊中斷,下列信號時序可以復位串口:當 DATA 保持高電平時,觸發(fā) SCK 時鐘 9 次或者更多,在下一個指令前,發(fā)送一個“傳輸啟動”
(transmission start)時序。這些時序只復位串口,狀態(tài)寄存器的內(nèi)容仍然保存。
③測量時序[19,20,24]
發(fā)布一組測量命令后(“”表示相對濕度 RH,“”表示溫度 T) 后,控制器要等待測量結(jié)束。這個過程需要大約 20/80 ms,分別對應 8/12 位測量。準確的時間還取決于內(nèi)部晶振速度,的變化范圍為±15% 。SHT11 通過下拉DATA 至低電平并進入空閑模式,表示測量的結(jié)束??刂破髟谠俅斡|發(fā) SCK 時鐘前,必須等待這個“數(shù)據(jù)準備完成”(data ready)信號來讀出數(shù)據(jù)。檢測數(shù)據(jù)可以先被存儲,這樣控制器可以繼續(xù)執(zhí)行其他任務,在需要的時候再讀出數(shù)據(jù)。
接著傳輸 2 個字節(jié)的測量數(shù)據(jù)和 1 個字節(jié)的 CRC 奇偶校驗。微控制器需要通過下拉 DATA 為低電平,以確認每個字節(jié)。所以的數(shù)據(jù)從 MSB 開始,右值有效(例如:對于 12 位數(shù)據(jù),從第 5 個 SCK 時鐘起算作 MSB;而對于 8 位數(shù)據(jù),首字節(jié)則無意義)。
用 CRC 數(shù)據(jù)的確認位,表明通訊結(jié)束。如果不使用 CRC-8 校驗,控制器可以
在測量 LSB 值后,通過保持確認位 ack 高電平來終止通訊。在測量和通訊結(jié)束后,
SHT11 自動轉(zhuǎn)入休眠狀態(tài)。
為使 SHT11 的溫升低于 0.1
oC,此時的工作頻率不能大于標定值的 15%。12 位精度值時每秒最多進行 3 次測量。測量溫度和濕度命令所對應的時序如圖 4.5 所示。
圖 4.5 測量時序(TS 表示啟動傳輸)
Fig. 4.5 Overview of the measurement sequence (TS = Transmission Start)
4.2.5 寄存器配置
SHT11 傳感器中的一些功能是通過狀態(tài)寄存器來實現(xiàn)的。寄存器各位的類型及說明見表 4.6 所列。以下內(nèi)容對寄存器相關(guān)位的功能作一下說明:
表 4.6 SHT11 狀態(tài)寄存器類型及說明
Table. 4.6 Type and description of the status register of SHT11 位 | 類型 | 說明 | | 默認值 |
7 | | 保留 | 0 | |
6 | 讀 | 工作極限(低電壓檢測) | X | |
5 | | 保留 | 0 | |
4 | | 保留 | 0 | |
3 | | 僅供測試,不使用 | 0 | |
2 | 讀/寫 | 加熱 | 0 | 關(guān) |
1 | 讀/寫 | 不從 OTP 加載 | 0 | 加載 |
0 | 讀/寫 | ‘1’ = 8 位相對濕度,12 位溫度分辨率;‘0’ = 12 位相對濕度,14 位溫度分辨率 | 0 | 12 位相對濕度, 14 位溫度 |
①加熱。芯片中的加熱元件導通后,SHT11 傳感器溫度大約升高 5
oC,對應的功耗會增加約 40 mW。加熱應用于以下兩種情況:將啟動加熱器前后的溫、濕度進行比較,能正確地區(qū)別傳感器的功能;在高濕度環(huán)境下,傳感器可避免結(jié)露。
②低電壓檢測。SHT11 工作時可以自行檢測 VDD 電壓是否低于 2.45 V,準確度為
±0.1 V。
③加載校準系數(shù)。為了節(jié)省能量并提高速度,TOP 在每次測量前都要重新加載校準系數(shù),從而使每一次測量節(jié)省 8.2 ms 的時間。
④測量分辨率設定。把測量分辨率從 12 位(相對濕度)和 14 位(溫度)分別降
為 8 位和 12 位,可應用于高速場合或低功耗場合。
4.2.6 溫濕度的測量子程序
圖 4.6 所示為溫濕度測量程序流程圖。在該部分中,使用 Timer0 作為計數(shù)器, 技術(shù)周期為 50 ms,溫濕度測量采樣周期取 1 s。中斷服務程序包括寫測量命令、讀測量數(shù)據(jù)、溫濕度值計算以及顯示數(shù)據(jù)等子程序。
設置入口參數(shù),測量溫度為 03H,測量濕度為 05H。延時等待測量結(jié)束,完成溫濕度的測量后,調(diào)用讀時序取得測量結(jié)果,通過溫濕度的計算,存儲實際溫度值和相對濕度值。存儲溫濕度值時,溫度值和相對濕度值分別存儲在 2 個固定
單元,兩者各占 1 個單元
[18]。
圖 4.6 溫濕度測量程序框圖
Fig. 4.6 Flowchart of temperature and humidity measurement