国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SHT71的溫濕度計的設(shè)計與實現(xiàn)

2018-10-20 11:01:44周江
智能計算機(jī)與應(yīng)用 2018年5期
關(guān)鍵詞:字節(jié)時序命令

周江

Abstract: In view of the demand for measurement of temperature and humidity in industrial and agricultural production and daily life, a design scheme and realization method of digital hygrothermograph based on single chip microcomputer, SHT71 and eight-segment LED digital tube are proposed. The interface method between SHT71 and MCU is introduced in detail, and the calculation method of temperature and humidity data is also given.

引言

在現(xiàn)代工農(nóng)業(yè)生產(chǎn)中,溫度和濕度是環(huán)境的2個重要參數(shù)[1],通過對溫度、濕度數(shù)據(jù)的采集和分析,可以外界環(huán)境因素進(jìn)行實時監(jiān)控,保證工農(nóng)業(yè)生產(chǎn)順利、高效地實現(xiàn)可持續(xù)快速發(fā)展。因此,溫度、濕度的采集至關(guān)重要[2]。目前,僅溫度的測量方法已經(jīng)多達(dá)數(shù)十種,本文以51單片機(jī)和數(shù)字溫濕度傳感器SHT71為基礎(chǔ),研究數(shù)字顯示的溫濕度計的設(shè)計方法。

1SHT71簡介

SHT71是瑞士Sensirion(盛思銳)公司生產(chǎn)的溫度和濕度傳感器,其引腳圖和引腳說明則如圖1所示。SHT71是SHT7x系列的標(biāo)準(zhǔn)版本,其高端版本是SHT75。同樣的器件也有貼片封裝的SHT1x系列,其標(biāo)準(zhǔn)版本是SHT11,高端版本是SHT15。

電源與地之間已經(jīng)連接了100 nF的退耦電容,不需要外接。

SHT71采取互補金屬氧化物半導(dǎo)體材質(zhì)進(jìn)行電壓放大,通過電容體監(jiān)測環(huán)境濕度,利用能量間隙體監(jiān)測環(huán)境溫度[3]。由于在其內(nèi)部傳感器、放大器、A/D轉(zhuǎn)換器及串行接口電路都設(shè)計集成在同一芯片上,就使得SHT71的抗干擾能力更強(qiáng)、性能更加穩(wěn)定可靠[4]。

SHT71的主要技術(shù)指標(biāo)可參見表1[5]。

1.1SHT71的通信協(xié)議

SHT71上電后需要11 ms進(jìn)入休眠狀態(tài),在此之前不允許對傳感器發(fā)送任何命令。這里,將分為2部分給出闡釋分析,具體內(nèi)容如下。

(1)SHT71的通訊指令分析。休眠過后,啟用傳輸開始(Transmission Start)時序,來完成數(shù)據(jù)傳輸?shù)某跏蓟?。傳輸開始的時序圖見圖2。

后續(xù)命令包含3個地址位(目前只支持“000”)和5個命令位。SHT71會以下述方式表示已正確地接收到指令:在第8個SCK的下降沿之后,將DATA下拉為低電平(ACK位)作為回答,在第9個SCK的下降沿之后,釋放DATA(恢復(fù)高電平)。5個命令位的定義見表2。表2中,軟件復(fù)位意指通信接口和狀態(tài)寄存器復(fù)位,在發(fā)送下一個命令前,至少等待11 ms。并且,狀態(tài)寄存器復(fù)位后,其內(nèi)容恢復(fù)成初始狀態(tài)。狀態(tài)寄存器的定義可見表3。

(2)單片機(jī)與SHT71的通訊時序分析。以單片機(jī)給SHT71發(fā)送濕度測量命令為例,命令字為00000101,圖3給出了單片機(jī)與SHT71通信的時序圖,其中前半部分是發(fā)送傳輸開始時序,后半部分是輸出濕度測量命令00000101。圖3中,DATA線中加粗的部分是SHT71輸出的ACK信號,DATA線的其它部分是由單片機(jī)輸出的。

單片機(jī)發(fā)送測量命令后,需要等待測量結(jié)束,這個過程大約需要20 ms/80 ms/320 ms,分別對應(yīng)8 bit/12 bit/14 bit的測量數(shù)據(jù)分辨率。SHT71通過下拉DATA線至低電平(這實際上是SHT71輸出的測量數(shù)據(jù)的最高位)表示測量結(jié)束,單片機(jī)必須等待這個信號到來之后,才能讀取數(shù)據(jù)。在測量與通信結(jié)束后,SHT71自動轉(zhuǎn)入休眠模式,以降低自身能耗[6]。

單片機(jī)查詢到測量結(jié)束信號后,可以讀取2字節(jié)的測量數(shù)據(jù)和1字節(jié)的CRC校驗碼。數(shù)據(jù)是高位在前、右端對齊的(比如,對于14 bit的溫度數(shù)據(jù),2字節(jié)的測量數(shù)據(jù)中最高的2 bit是不用的,這2 bit的數(shù)據(jù)是2個0)。對于8 bit的濕度數(shù)據(jù),第一個字節(jié)是不用的,但SHT71仍然會發(fā)送2個字節(jié)數(shù)據(jù),只是第一個字節(jié)發(fā)送的是全0。

單片機(jī)收到1個字節(jié)的數(shù)據(jù)后,應(yīng)該通過下拉DATA線為低電平(ACK)以確認(rèn)收到數(shù)據(jù),在收到CRC校驗碼后,則無須拉低DATA線,而讓DATA線保持高電平(NACK),以表示結(jié)束本次通信。如果不需要CRC校驗碼,也可在收到第二個字節(jié)數(shù)據(jù)后,不拉低DATA線以結(jié)束通信。SHT71在SCK的下降沿輸出1 bit數(shù)據(jù),單片機(jī)在輸出SCK的上升沿后讀取數(shù)據(jù),以保證讀到穩(wěn)定的數(shù)據(jù)。

如果單片機(jī)與SHT71的通信中斷,可通過如圖4所示的時序復(fù)位通信接口。

在保持DATA線為高電平的情況下,輸出至少9個時鐘脈沖,接著發(fā)送一個傳輸開始時序。這個過程只復(fù)位通信接口,狀態(tài)寄存器內(nèi)容仍然保留。

1.2溫度信號轉(zhuǎn)換

可以根據(jù)下面的溫度計算公式和系數(shù)表,將單片機(jī)從SHT71讀取的2字節(jié)溫度數(shù)據(jù)SOT轉(zhuǎn)換為溫度值T。溫度計算公式可表述為:T= d1 + d2 × SOT(1)其中,當(dāng)SOT為14 bit時,d2取0.01 ℃、當(dāng)SOT為12 bit時,d2取0.04 ℃,關(guān)于d1運算系數(shù)的取值可參見表4。

1.3濕度信號轉(zhuǎn)換

將單片機(jī)從SHT71讀取的濕度數(shù)據(jù)SORH轉(zhuǎn)換為相對濕度可分為2個步驟,可概括描述為:

(1)進(jìn)行非線性補償,得到相對濕度的線性值RHlinear,相對濕度非線性補償?shù)倪\算系數(shù)可見表5。補償公式則如下所示:RHlinear = c1 + c2×SORH + c3×SORH2 (2)其中,RHlinear的單位為%RH。

2電路設(shè)計

設(shè)計要求運用SHT71制作一個數(shù)字溫濕度計,通過一個自鎖開關(guān),選擇在4位數(shù)碼管上顯示溫度或濕度,并用2只LED作為溫度或濕度顯示的指示燈。研究中,溫度的測量范圍是-40 ℃ ~ +123.8 ℃,濕度的測量范圍是0 ~ 100%RH,因此結(jié)果顯示可以精確到小數(shù)點后一位。當(dāng)溫度為負(fù)溫時,最高位顯示負(fù)號‘-。應(yīng)用電路的原理設(shè)計可如圖5所示。

圖5中,SHT71的時鐘線SCK和數(shù)據(jù)線DATA分別選接單片機(jī)的P1.0和P1.1;SW是溫度/濕度測量和顯示的切換開關(guān),選接單片機(jī)的P1.7;D1、D2分別是溫度和濕度顯示的指示燈,實接單片機(jī)的P1.2和P1.3;R1、R2是D1、D2的限流電阻。4位數(shù)碼管是共陰的,8位段選線實接單片機(jī)的P3口,從左至右的4位位選線分別連接至單片機(jī)的P0.4 ~ P0.7。

3軟件設(shè)計

軟件設(shè)計中,主要包括復(fù)位SHT71通信接口、發(fā)送溫度/濕度測量命令、計算溫度/濕度值和4位數(shù)碼管的顯示等。除顯示在中斷程序中啟用運行外,其它功能均在主程序中設(shè)計實現(xiàn)。4位數(shù)碼管的動態(tài)顯示尤為常見,請參照文獻(xiàn)[7],限于篇幅本文不再贅述。

主程序的設(shè)計流程如圖6所示。

由圖6可知,首先進(jìn)行定時器的初始化和開中斷,延時20 ms后(SHT71手冊要求,上電11 ms后才能對其發(fā)送命令),復(fù)位SHT71的通信接口。此后根據(jù)溫度/濕度切換開關(guān)SW的狀態(tài),選擇發(fā)送溫度測量命令或濕度測量命令。命令發(fā)送后,在等待中進(jìn)行測量超時判斷,如果超時,則延時500 ms后再次復(fù)位SHT71的通信接口;否則,將讀取測量數(shù)據(jù),并根據(jù)SW的狀態(tài),選擇計算溫度或濕度值,同時改變溫度或濕度的指示燈狀態(tài)。其中涉及的關(guān)鍵功能為:復(fù)位SHT71的通信接口、發(fā)送測量命令、讀取測量數(shù)據(jù)和計算溫度或濕度值等。這里,針對其功能設(shè)計將逐一展開研究分述如下。

3.1復(fù)位SHT71通信接口

如前文圖4所示的復(fù)位SHT71通信接口時序圖,已經(jīng)清晰展示了整個復(fù)位過程。依據(jù)該圖,即可歸納寫出實現(xiàn)該功能的函數(shù)。程序中,將先行輸出9個時鐘脈沖,接著發(fā)送傳輸開始時序。

3.2發(fā)送溫度/濕度測量命令

參考圖3的濕度測量命令時序圖,其中的前半部分是發(fā)送傳輸開始時序,該時序在復(fù)位SHT71通信接口中已經(jīng)發(fā)送,這里就不再發(fā)送了。發(fā)送溫度或濕度測量的命令實際上是向SHT71寫一個字節(jié),在程序設(shè)計中將其整合為一個函數(shù),該函數(shù)不僅只是適用于發(fā)送溫度/濕度測量命令,也可用于讀/寫狀態(tài)寄存器、軟件復(fù)位等,只要函數(shù)設(shè)定不同的入口參數(shù),就可以轉(zhuǎn)換為不同的命令。SHT71的命令表可詳見表2。

3.3讀取測量數(shù)據(jù)

在SCK的下降沿后,SHT71更新從DATA輸出的數(shù)據(jù),在SCK的上升沿后,數(shù)據(jù)有效。測量完成后,SHT71自動從DATA線輸出第一位數(shù)據(jù),所以讀取第一個字節(jié)的第一位數(shù)據(jù)時,SCK不需要輸出下降沿。在第8個SCK的下降沿后,單片機(jī)輸出應(yīng)答信號ACK(低電平);在第9個SCK的下降沿后,SHT71輸出第二個字節(jié)的第一位數(shù)據(jù)。也就是說,單片機(jī)在讀取任何一個字節(jié)的第一位數(shù)據(jù)時,均不(下轉(zhuǎn)封三)需要從SCK輸出下降沿,這點與很多芯片的通信協(xié)議有所不同,因而需要特別的關(guān)注和重視。

本設(shè)計中并未使用CRC校驗碼,所以程序在讀取第二個字節(jié)后,輸出應(yīng)答信號NACK(高電平)以結(jié)束通信。如果需要校驗碼,則應(yīng)在讀取第二個字節(jié)后,輸出ACK,讀取校驗碼后,再輸出NACK結(jié)束通信。

3.4溫度的計算

根據(jù)表4中的運算系數(shù)、以及公式(1)可知,當(dāng)電源電壓為+5 V、溫度數(shù)據(jù)選擇14 bit時,溫度的計算公式是:T=-40.1+0.01×SOT(4)其中,T的單位是℃。

為盡量采用整數(shù)運算,上式將可寫作如下形式:T=-4010+SOT(5)其中,T的單位是0.01 ℃

在此基礎(chǔ)上,判斷溫度的符號。如果是正數(shù),符號位將置0;如果是負(fù)數(shù),符號位將置1,再將補碼變成原碼(相當(dāng)于取絕對值)。此后,將計算結(jié)果除以10(因為顯示的精度是0.1 ℃),并做四舍五入運算即可得到結(jié)果。

3.5濕度的計算

綜上可知,這種系數(shù)無法采用整數(shù)計算,程序設(shè)計中應(yīng)采用浮點數(shù)的運算。將式(6)右邊乘以10,將濕度的單位變換成0.1%(因為顯示的精度是0.1%),并做四舍五入的運算即可得到結(jié)果。

4結(jié)束語

本文設(shè)計提出的數(shù)字顯示的溫濕度計在單片機(jī)和傳感器類的項目教學(xué)課程中作為實際的教學(xué)項目使用,取得了比較好的教學(xué)效果。只是,在本次研發(fā)設(shè)計中并未考慮當(dāng)溫度數(shù)據(jù)選擇12 bit和濕度數(shù)據(jù)選擇8 bit時的計算方法,也沒有深度探討濕度的溫度補償研究,后續(xù)工作中可對此提供進(jìn)一步的實踐應(yīng)用討論與分析。

參考文獻(xiàn)

[1] 陳潔,王恩亮. 糧食科技物流中心溫濕度監(jiān)控系統(tǒng)的設(shè)計[J]. 微型機(jī)與應(yīng)用,2014,33(14): 88-90, 94.

[2] 明廷日,鄧鵬,馬雪芬. 基于MSP430單片機(jī)的溫度采集系統(tǒng)設(shè)計[J]. 儀器儀表用戶,2018,25(3): 5-7, 76.

[3] 李麗芬,云彩霞,陳曉芳. 基于嵌入式系統(tǒng)的環(huán)境監(jiān)測與控制系統(tǒng)[J]. 現(xiàn)代電子技術(shù),2017,40(19): 126-128.

[4] 曹會國,姜文育. 基于SHT-11的單片機(jī)的智能花卉澆灌器的設(shè)計[J]. 電子世界,2016(12): 57.

[5] Sensirion Inc. Datasheet SHT7x humidity and temperature sensor IC[EB/OL]. [2018-02-19]. https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/0_Datasheets/Humidity/Sensirion_Humidity_Sensors_SHT7x_Datasheet.pdf.

[6] 李樹丹,張從松,覃章健,等. 基于ZigBee協(xié)議的溫濕度監(jiān)測系統(tǒng)設(shè)計與實現(xiàn)[J]. 電子科技,2014,27(12): 37-40

[7] 崔承毅,王開宇,高慶華,等. 數(shù)碼管顯示虛擬仿真實驗設(shè)計[J]. 工業(yè)和信息化教育,2018(1): 38-41.

猜你喜歡
字節(jié)時序命令
時序坐標(biāo)
只聽主人的命令
基于Sentinel-2時序NDVI的麥冬識別研究
No.8 字節(jié)跳動將推出獨立出口電商APP
No.10 “字節(jié)跳動手機(jī)”要來了?
移防命令下達(dá)后
簡談MC7字節(jié)碼
一種毫米波放大器時序直流電源的設(shè)計
電子制作(2016年15期)2017-01-15 13:39:08
這是人民的命令
DPBUS時序及其設(shè)定方法
河南科技(2014年15期)2014-02-27 14:12:36
天长市| 钟祥市| 澄城县| 石楼县| 松桃| 雅江县| 江油市| 南阳市| 图木舒克市| 两当县| 诸暨市| 临沧市| 长治县| 嘉鱼县| 永寿县| 积石山| 奉化市| 武鸣县| 独山县| 来凤县| 壶关县| 开江县| 获嘉县| 浦县| 嵊泗县| 南安市| 睢宁县| 施甸县| 吉安市| 措勤县| 桐城市| 邯郸市| 嵩明县| 桓台县| 保亭| 黑龙江省| 镇江市| 增城市| 林周县| 岗巴县| 黔西县|