SHT3x-DIS是Sensirion新一代的溫濕度傳感器,精度為±2%RH和±0.3℃,輸入電壓范圍從2.4V到5.5V,采用IIC總線接口,速率可達(dá)1MHz。測量溫濕度范圍分別為是-40℃ ~ 125℃和0 ~ 100%。
一、電路組成
從下圖可以看到SHT3x內(nèi)部集成了濕度傳感器和溫度傳感器,通過ADC采樣輸入到數(shù)據(jù)處理和線性化單元,同時帶有校正儲存器,處理環(huán)境對器件測量的影響。通過數(shù)字接口IIC讀取數(shù)據(jù)。帶警報引腳,可通過修改寄存器的值設(shè)定閾值,當(dāng)測量的溫濕度超過閾值時它會被置位。
引腳分布如下,1和4號腳是IIC總線接口;2號腳是決定地址的引腳,當(dāng)ADDR接VSS時芯片地址為0x44,接VCC時芯片地址為0x45;3號腳警報引腳(當(dāng)不使用時浮空),當(dāng)溫濕度超過設(shè)定的閾值則該腳會被置位;5號和8號腳是電源引腳;6號引腳是復(fù)位引腳(當(dāng)不使用時接VDD),低電平有效;7號腳是為了封裝而保留的引腳。
下圖是設(shè)備地址分配情況。
典型電路如下,由于SCL和SDA為開漏輸出,驅(qū)動能力不足,需要接上拉電阻。VDD和VSS之間接一個小電容濾除高頻雜波,另外nRESET和ALERT根據(jù)情況進(jìn)行選擇,若不需要使用,nRESET接高電平,ALERT浮空。Die Pad接地即可。
二、通訊指令說明
寫好IIC驅(qū)動程序后,便可以開始和SHT3x進(jìn)行通訊了,下面是SHT3x的所有指令說明。
(一)、單次獲取數(shù)據(jù)指令
單次獲取數(shù)據(jù)指令的詳細(xì)數(shù)據(jù)格式如下圖。首先從表格最上面開始,Repeatability指的是重復(fù)性,Clock Stretching指的是時鐘延伸,它們的作用下面再講述。數(shù)據(jù)流動過程如下:
1,發(fā)送起始信號以及由高7位的器件地址和最低位的寫信號(WR=0) 組成的一字節(jié)地址,等待應(yīng)答信號。(注意地址位于高7位,所以傳址的時候需要將地址左移一位并加上讀1/寫0信號,如ADDR<<1 | WR)2,發(fā)送指令的高字節(jié)并等待應(yīng)答信號。3,發(fā)送指令的低字節(jié)并等待應(yīng)答信號,之后發(fā)送停止信號。4,等待一段時間(測量正在進(jìn)行)。5,發(fā)送起始信號以及由高7位的器件地址和最低位的讀信號(RD=1) 組成的一字節(jié)地址,然后根據(jù)選擇的Clock Stretching從兩個方向選擇。假如失能了時鐘延長功能,則等待非應(yīng)答信號,發(fā)送停止信號,延遲一段時間(這步很重要!!延遲時間大約為50ms左右)等待轉(zhuǎn)換結(jié)束,然后發(fā)送八位的應(yīng)答信號并等待應(yīng)答信號,之后便是逐字節(jié)分別讀取溫度和濕度的高字節(jié)、低字節(jié)以及CRC校驗字節(jié),每字節(jié)接收完都要發(fā)送應(yīng)答信號,最后發(fā)送停止信號即可。而如果使能了是時鐘延長功能,則總線的SCL由SHT3x控制,我們只需要通過while(SCL==0)阻塞程序,等待其釋放總線然后MCU讀取數(shù)據(jù)即可。
(二)、周期獲取數(shù)據(jù)指令
周期獲取數(shù)據(jù)指令的詳細(xì)數(shù)據(jù)格式如下圖。周期獲取數(shù)據(jù)需要先配置讀取模式然后再進(jìn)行讀取。
1、配置模式
周期讀取數(shù)據(jù)的配置主要是配置重復(fù)性和每秒測量次數(shù)。數(shù)據(jù)發(fā)送的方式同上。
2、讀取數(shù)據(jù)
讀取的步驟和上述單次讀取數(shù)據(jù)指令的流程類似,下面大概說一下。
發(fā)送起始信號,發(fā)送寫地址,等待應(yīng)答信號,注意如果傳感器沒有測量完,它只會返回非應(yīng)答信號。發(fā)送16位命令0xE000。讀取初始數(shù)據(jù)。
(三)、加快響應(yīng)時間指令
加快響應(yīng)時間指令,用于周期讀取數(shù)據(jù)指令,開啟后傳感器開始采集頻率為4Hz的數(shù)據(jù)。它的使用方法跟上述配置模式相同,在讀取之前配置好就可以了。
發(fā)送起始信號,發(fā)送寫地址,等待應(yīng)答信號。發(fā)送16位命令0x2B32,等待應(yīng)答信號。接著繼續(xù)配置或者讀取數(shù)據(jù)。
(四)、停止周期讀取數(shù)據(jù)指令
停止周期讀取數(shù)據(jù)指令,有時為了實現(xiàn)低功耗或暫時不需要傳感器測量數(shù)據(jù),可以通過該指令進(jìn)行關(guān)閉。
發(fā)送起始信號,發(fā)送寫地址,等待應(yīng)答信號。發(fā)送16位命令0x3093,等待應(yīng)答信號,發(fā)送停止信號。
(五)、復(fù)位
復(fù)位(RESET)的方式有很多種。
1、IIC接口復(fù)位
當(dāng)通訊設(shè)備丟失時,在接下來的信號序列將會復(fù)位串口接口,此序列僅重置接口。狀態(tài)寄存器保留其內(nèi)容。SDA線置位,翻轉(zhuǎn)SCL線的電平9次以上。接下來必須在下一個命令之前執(zhí)行傳輸開始序列。
2、軟復(fù)位/重新初始化
軟復(fù)位/重新初始化的指令格式如下。
發(fā)送起始信號,發(fā)送寫地址,等待應(yīng)答信號。發(fā)送16位命令0x30A2,等待應(yīng)答信號,發(fā)送停止信號。
3、一般呼叫復(fù)位指令
發(fā)送起始信號,發(fā)送通用呼叫地址0x00,等待應(yīng)答信號。發(fā)送第二個字節(jié)0x06,等待應(yīng)答信號。
4、通過nRESET引腳復(fù)位
拉低nRESET引腳的電平(至少350ns)將會產(chǎn)生硬復(fù)位信號重置傳感器。
5、硬復(fù)位
重新上電。
(六)、加熱器開啟/關(guān)閉指令
該指令的用法同上,至于該加熱器的作用是什么我也不清楚,明明是測溫用的還要加熱?!大概是想在溫度很低的環(huán)境但想要它還能正常工作所以才設(shè)置這功能吧。
(七)、讀取狀態(tài)寄存器
狀態(tài)寄存器包含有關(guān)加熱器運(yùn)行狀態(tài)、警報模式以及最后一個命令的執(zhí)行狀態(tài)和最后一個寫序列的信息。
發(fā)送起始信號,發(fā)送寫地址,發(fā)送16位命令。發(fā)送起始信號,發(fā)送讀地址,依次接收狀態(tài)寄存器的高字節(jié)、低字節(jié)和CRC校驗,每次接收都需要發(fā)送應(yīng)答信號,直到接收的最后一個字節(jié)發(fā)送非應(yīng)答信號,發(fā)送停止信號。狀態(tài)寄存器每一位代表的含義如下所示。
我們試一下讀取狀態(tài)寄存器看返回什么。可以發(fā)現(xiàn)二進(jìn)制數(shù)1000 0000 0001 0000 1110 0001都為上面表格的默認(rèn)值,至于CRC校驗要根據(jù)給定公式對前兩字節(jié)進(jìn)行計算和比較。下面來講CRC校驗。
(八)、CRC校驗
循環(huán)冗余校驗(CRC)其實就是一種異或計算(模2運(yùn)算)。獲取的CRC校驗碼就是模2運(yùn)算后的余數(shù)。
(九)、轉(zhuǎn)換溫濕度數(shù)據(jù)
由于從傳感器獲取到的數(shù)據(jù)不是最終的溫濕度,所以我們需要根據(jù)公式進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換公式如下,在計算之前我們要對溫濕度數(shù)據(jù)進(jìn)行整合。
-
傳感器
+關(guān)注
關(guān)注
2551文章
51207瀏覽量
754535 -
驅(qū)動
+關(guān)注
關(guān)注
12文章
1844瀏覽量
85351 -
DIS
+關(guān)注
關(guān)注
0文章
17瀏覽量
16470
發(fā)布評論請先 登錄
相關(guān)推薦
評論