SHT15測量數(shù)據(jù)的轉(zhuǎn)換
單片機從Sensibus上讀取的12位濕度或14位溫度測量數(shù)據(jù)并不是最終的 溫濕度數(shù)據(jù),必須進行相應的換算,才能進行后期的數(shù)據(jù)處理,同時還需要補 償傳感器測量中存在的非線性。
對于溫度的測量,SHT15傳感器對溫度模塊的研發(fā)釆用了能隙材料PTAT (與溫度成正比),因此具有良好的線性性。將單片機讀取的數(shù)字信號轉(zhuǎn)換 為溫度值用以下公式實現(xiàn):
Tz=dl+d2* SOj (4-1)
式中SQ代表從SHT15傳感器讀取的原始溫度測量數(shù)據(jù),4,烏為修正參 數(shù),取值分別如表4-2、4-3所示。
表4-2修正參數(shù)q取值
Tab.4-2 rectifying value of
dxVDD | d(C) |
5V | -40 |
4V | -39.75 |
3.5V | -39.66 |
3V | -39.60 |
2.5V | -39.55 |
表43修正參數(shù)%取值
Tab.4-3 rectifying value of
d2
對于相對濕度測量,為獲取準確的濕度檢測值,必須補償濕度傳感器的非 線性,修正讀數(shù)的公式如下:
^^linear =Cl+C2* S0m + C3 * SO^ (4-2)
式中SJ表示從SHT15傳感器讀回的原始濕度測量數(shù)據(jù),
Ci,C2, C3為修 正參數(shù),取值如表4V所示:
表44修正參數(shù)q, c
2,烏取值
Tab.4-4 rectifying value of q,
c2 and
c3so岡 | 4 | C2 | C3 |
8bit | -4 | 0.648 | -7.2*1。4 |
12bit | -4 | 0.0405 | -2.8* 10% |
由于實際溫度并不一定是測試參考溫度25C,所以必須考慮濕度傳感器的 溫度修正系數(shù),修正公式如下:
曲 邸f) (4-3)
式中L為最終溫度值,電《為修正后的最終濕度值,蔭如為線性補償后 的數(shù)據(jù),匕、弓均為濕度補償系數(shù)。
根據(jù)公式(4-1)、(4-2)、(4-3),實現(xiàn)的代碼如下:
void correct_sthl5(float *p_temperature, float *p_humidity) //溫濕度線性修正
及補償計算
(const float Cl =40;
const float C2=0.0405;
const float C3=-0.0000028;
const float Tl=0.01;
const float T2=0.00008;
float rh=*p_ humidity;
float t=*p_ temperature;
float rhlinear;
float rh_true;
float t_oC;
t_oC=t*0.01-40;
rhJin=C3*rh*rh+C2*rh+Cl;
rh_true=(t_oC-25)*(Tl+T2*rh)+rh_linear;
if(rh_true>100) rh_true=99;
if(rh_true<0.1) rh_true=0.1;
*p_temperature=t_oC;
*p_humidity=rh_true;
)