一、SHT40 簡介
SHT40 是由 Sensirion 推出的一款高精度數(shù)字溫濕度傳感器,采用緊湊型封裝和低功耗設(shè)計,能夠同時測量環(huán)境溫度與相對濕度,并通過I2C接口輸出校準(zhǔn)后的數(shù)字信號;其具有響應(yīng)速度快、長期穩(wěn)定性好、抗污染能力強等特點,廣泛應(yīng)用于智能家居、物聯(lián)網(wǎng)設(shè)備以及工業(yè)環(huán)境監(jiān)測等場景。

二、引腳功能
| 引腳 | 功能 |
|---|---|
| GND | 電源地 |
| VIN | 電源正 |
| SCL | IIC時鐘線 |
| SDA | IIC數(shù)據(jù)線 |
三、指令介紹

測量指令
| 命令 | 精度 | 特點 |
|---|---|---|
| 0xFD | 高精度 | 最準(zhǔn)確,耗時最長 |
| 0xF6 | 中精度 | 平衡性能 |
| 0xE0 | 低精度 | 最快、最低功耗 |
加熱器指令
| 功率 | 1 s | 0.1 s |
|---|---|---|
| 200 mW | 0x39 | 0x32 |
| 110 mW | 0x2F | 0x24 |
| 20 mW | 0x1E | 0x15 |
SHT40 的指令體系非常簡潔:通過單字節(jié)指令選擇測量精度、讀取信息、執(zhí)行復(fù)位或啟用加熱功能,正常環(huán)境下加熱功能不用啟動,當(dāng)環(huán)境濕度較大、傳感器有水霧時合理啟用。
四、IIC時序與數(shù)據(jù)說明
時序說明

起始信號-->寫地址-->接收應(yīng)答-->發(fā)送指令-->接收應(yīng)答-->停止信號
起始信號-->讀地址-->接收應(yīng)答-->接收溫度數(shù)據(jù)高位-->發(fā)送應(yīng)答-->接收溫度數(shù)據(jù)低位-->發(fā)送應(yīng)答-->接收CRC-->發(fā)送應(yīng)答-->接收濕度數(shù)據(jù)高位-->發(fā)送應(yīng)答-->接收濕度數(shù)據(jù)低位-->發(fā)送應(yīng)答-->接收CRC-->發(fā)送非應(yīng)答-->停止信號
SHT40不像大部分IIC設(shè)備需要讀寫寄存器,直接發(fā)送測量指令,然后讀取數(shù)據(jù)既可。
數(shù)據(jù)說明
I2C 通信以 8 位(1字節(jié))為單位,每 2 個數(shù)據(jù)字節(jié)后跟 1 個 CRC 校驗字節(jié),傳感器每次測量返回 6 字節(jié)數(shù)據(jù),順序是固定的,即:
溫度 MSB ,溫度 LSB,溫度 CRC,濕度 MSB,濕度 LSB,濕度 CRC
轉(zhuǎn)換公式
SHT40輸出的溫度 (2字節(jié)) 與濕度 (2字節(jié)) 數(shù)據(jù),可通過上圖公式轉(zhuǎn)化
CRC 校驗機制

每 2 字節(jié)數(shù)據(jù)(16-bit)對應(yīng) 1 個 CRC,主機收到數(shù)據(jù)后,可以對前兩個字節(jié)根據(jù)公式計算 CRC,與傳感器返回的 CRC 對比校驗,用于判斷數(shù)據(jù)是否正確
五、程序
SHT40.C
#include "stm32f10x.h"
#include "MyI2C.h"
#include "Delay.h"
#define SHT40_W 0x88
#define SHT40_R 0x89
uint16_t temp=0;
uint16_t humi=0;
//Command:0xFD(高精度測量) 0xF6(中精度測量) 0xE0(低精度測量)
void SHT40_Read(uint8_t Command)
{
MyI2C_Start(); //起始信號
MyI2C_SendByte(SHT40_W); //發(fā)送寫地址
MyI2C_ReceiveAck(); //接收應(yīng)答 未作處理
MyI2C_SendByte(Command); //發(fā)送命令
MyI2C_ReceiveAck(); //接收應(yīng)答 未作處理
MyI2C_Stop(); //停止信號
Delay_ms(100);
MyI2C_Start(); //起始信號
MyI2C_SendByte(SHT40_R); //發(fā)送讀地址
MyI2C_ReceiveAck(); //接收應(yīng)答 未作處理
temp = MyI2C_ReceiveByte(); //接收溫度數(shù)據(jù)
MyI2C_SendAck(0); //發(fā)送應(yīng)答
temp = (temp < < 8) | (MyI2C_ReceiveByte()); //接收溫度數(shù)據(jù)
MyI2C_SendAck(0); //發(fā)送應(yīng)答
MyI2C_ReceiveByte(); //接收CRC 未作處理
MyI2C_SendAck(0); //發(fā)送應(yīng)答
humi = MyI2C_ReceiveByte(); //接收濕度數(shù)據(jù)
MyI2C_SendAck(0); //發(fā)送應(yīng)答
humi = (humi < < 8) | (MyI2C_ReceiveByte()); //接收溫度數(shù)據(jù)
MyI2C_SendAck(0); //發(fā)送應(yīng)答
MyI2C_ReceiveByte(); //接收CRC 未作處理
MyI2C_SendAck(1); //發(fā)送非應(yīng)答
MyI2C_Stop(); //停止信號
}
float SHT40_Convert_Temp(void)
{
return (-45 + 175 * ((float)temp / 65535.0));
}
float SHT40_Convert_Humi(void)
{
return (-6 + 125 * ((float)humi / 65535.0));
}
main.C
#include "stm32f10x.h"
#include "Delay.h"
#include "OLED.h"
#include "SHT40.h"
#include "MyI2C.h"
float Temp=0;
float Humi=0;
int main(void)
{
Delay_ms(1000);//上電延時
MyI2C_Init();
OLED_Init();
while(1)
{
SHT40_Read(0xFD);//0xFD(高精度測量) 0xF6(中精度測量) 0xE0(低精度測量)
Temp = SHT40_Convert_Temp();
Humi = SHT40_Convert_Humi();
OLED_ShowSignedNum(1,2,Temp,2);OLED_ShowChar(1,5,'.');OLED_ShowNum(1,6,(Temp-(int)Temp)*100,2);OLED_ShowChar(1,8,0x43);
OLED_ShowSignedNum(2,2,Humi,2);OLED_ShowChar(2,5,'.');OLED_ShowNum(2,6,(Humi-(int)Humi)*100,2);OLED_ShowChar(2,8,0x25);
Delay_ms(700);
}
}
六、實驗現(xiàn)象
----------------------------------------------------OLED接線------------------------------------------------------
SCL-----PB8
SDA-----PB9
----------------------------------------------------SHT40接線--------------------------------------------------
SCL-----PB10
SDA-----PB11
室內(nèi)溫濕度數(shù)據(jù)
手捂住傳感器溫濕度

模塊濕度變化速度較快,溫度變化速度較慢,需等待一定的緩沖時間
以上內(nèi)容個人理解,如有不正歡迎指正,需要資料及工程可留言郵箱
審核編輯 黃宇
-
STM32
+關(guān)注
關(guān)注
2313文章
11195瀏覽量
374749 -
溫濕度測量
+關(guān)注
關(guān)注
0文章
6瀏覽量
7454
發(fā)布評論請先 登錄
昉·星光開發(fā)板溫濕度傳感器使用
LES20-SHT40-S2-RS485 溫濕度變送器 花卉溫室智能管控系統(tǒng)應(yīng)用方案
冷庫溫濕度監(jiān)控系統(tǒng)物聯(lián)網(wǎng)解決方案
基于芯源CW32F030 MCU低功耗溫濕度監(jiān)測系統(tǒng)設(shè)計
溫濕度傳感器HTU31D在溫濕度控器中的應(yīng)用優(yōu)勢
如何對電能質(zhì)量在線監(jiān)測裝置進行溫濕度環(huán)境適應(yīng)性測試?
工業(yè)烘干機中使用SHT30溫濕度傳感器的注意事項
基于LORA無線通訊的祥控多點式煙葉溫濕度監(jiān)測系統(tǒng)
零知開源——STM32F407VET6驅(qū)動SHT41溫濕度傳感器完整教程
零知開源——STM32F407VET6驅(qū)動SHT41溫濕度傳感器完整教程
Sensirion 推出帶保護蓋的新型數(shù)字溫濕度傳感器
常見的溫濕度傳感器類型?
Fluke 972溫濕度測量儀的使用體驗
溫濕度變送器功能有哪些?一文詳細(xì)解析
智能倉儲:溫濕度監(jiān)控方案應(yīng)用
STM32 驅(qū)動 SHT40 溫濕度測量
評論