• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2018-10-20 11:01:44周江
      智能計算機與應用 2018年5期
      關鍵詞:字節(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)境因素進行實時監(jiān)控,保證工農(nóng)業(yè)生產(chǎn)順利、高效地實現(xiàn)可持續(xù)快速發(fā)展。因此,溫度、濕度的采集至關重要[2]。目前,僅溫度的測量方法已經(jīng)多達數(shù)十種,本文以51單片機和數(shù)字溫濕度傳感器SHT71為基礎,研究數(shù)字顯示的溫濕度計的設計方法。

      1SHT71簡介

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

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

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

      SHT71的主要技術指標可參見表1[5]。

      1.1SHT71的通信協(xié)議

      SHT71上電后需要11 ms進入休眠狀態(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(恢復高電平)。5個命令位的定義見表2。表2中,軟件復位意指通信接口和狀態(tài)寄存器復位,在發(fā)送下一個命令前,至少等待11 ms。并且,狀態(tài)寄存器復位后,其內(nèi)容恢復成初始狀態(tài)。狀態(tài)寄存器的定義可見表3。

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

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

      單片機查詢到測量結束信號后,可以讀取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。

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

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

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

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

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

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

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

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

      2電路設計

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

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

      3軟件設計

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

      主程序的設計流程如圖6所示。

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

      3.1復位SHT71通信接口

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

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

      參考圖3的濕度測量命令時序圖,其中的前半部分是發(fā)送傳輸開始時序,該時序在復位SHT71通信接口中已經(jīng)發(fā)送,這里就不再發(fā)送了。發(fā)送溫度或濕度測量的命令實際上是向SHT71寫一個字節(jié),在程序設計中將其整合為一個函數(shù),該函數(shù)不僅只是適用于發(fā)送溫度/濕度測量命令,也可用于讀/寫狀態(tài)寄存器、軟件復位等,只要函數(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的下降沿后,單片機輸出應答信號ACK(低電平);在第9個SCK的下降沿后,SHT71輸出第二個字節(jié)的第一位數(shù)據(jù)。也就是說,單片機在讀取任何一個字節(jié)的第一位數(shù)據(jù)時,均不(下轉(zhuǎn)封三)需要從SCK輸出下降沿,這點與很多芯片的通信協(xié)議有所不同,因而需要特別的關注和重視。

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

      3.4溫度的計算

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

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

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

      3.5濕度的計算

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

      4結束語

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

      參考文獻

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

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

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

      [4] 曹會國,姜文育. 基于SHT-11的單片機的智能花卉澆灌器的設計[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)設計與實現(xiàn)[J]. 電子科技,2014,27(12): 37-40

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

      猜你喜歡
      字節(jié)時序命令
      時序坐標
      只聽主人的命令
      基于Sentinel-2時序NDVI的麥冬識別研究
      No.8 字節(jié)跳動將推出獨立出口電商APP
      No.10 “字節(jié)跳動手機”要來了?
      移防命令下達后
      簡談MC7字節(jié)碼
      一種毫米波放大器時序直流電源的設計
      電子制作(2016年15期)2017-01-15 13:39:08
      這是人民的命令
      DPBUS時序及其設定方法
      河南科技(2014年15期)2014-02-27 14:12:36
      土默特左旗| 慈溪市| 嘉义市| 浠水县| 廊坊市| 浪卡子县| 安溪县| 宣城市| 杭锦旗| 肥东县| 大城县| 班玛县| 临汾市| 南部县| 黄山市| 大埔区| 黎川县| 元阳县| 平顺县| 莎车县| 钟山县| 武义县| 泸州市| 上栗县| 郑州市| 咸丰县| 无棣县| 望奎县| 静海县| 措勤县| 珠海市| 绥棱县| 琼海市| 福鼎市| 科技| 侯马市| 津南区| 金溪县| 长武县| 周宁县| 临沧市|