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