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