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

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

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

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

每 2 字節(jié)數(shù)據(jù)(16-bit)對(duì)應(yīng) 1 個(gè) CRC,主機(jī)收到數(shù)據(jù)后,可以對(duì)前兩個(gè)字節(jié)根據(jù)公式計(jì)算 CRC,與傳感器返回的 CRC 對(duì)比校驗(yàn),用于判斷數(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(高精度測(cè)量) 0xF6(中精度測(cè)量) 0xE0(低精度測(cè)量)
void SHT40_Read(uint8_t Command)
{
MyI2C_Start(); //起始信號(hào)
MyI2C_SendByte(SHT40_W); //發(fā)送寫地址
MyI2C_ReceiveAck(); //接收應(yīng)答 未作處理
MyI2C_SendByte(Command); //發(fā)送命令
MyI2C_ReceiveAck(); //接收應(yīng)答 未作處理
MyI2C_Stop(); //停止信號(hào)
Delay_ms(100);
MyI2C_Start(); //起始信號(hào)
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(); //停止信號(hào)
}
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);//上電延時(shí)
MyI2C_Init();
OLED_Init();
while(1)
{
SHT40_Read(0xFD);//0xFD(高精度測(cè)量) 0xF6(中精度測(cè)量) 0xE0(低精度測(cè)量)
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);
}
}
六、實(shí)驗(yàn)現(xiàn)象
----------------------------------------------------OLED接線------------------------------------------------------
SCL-----PB8
SDA-----PB9
----------------------------------------------------SHT40接線--------------------------------------------------
SCL-----PB10
SDA-----PB11
室內(nèi)溫濕度數(shù)據(jù)
手捂住傳感器溫濕度

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