<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于單片機的溫濕度感測系統(tǒng)的實現(xiàn)

          基于單片機的溫濕度感測系統(tǒng)的實現(xiàn)

          作者: 時間:2012-02-20 來源:網(wǎng)絡 收藏

          以測量相對濕度,測量值N=0000100100110001為例,整個測量過程時序如圖5(a)、(b)、(c)所示。DATA為雙向數(shù)據(jù)口,圖5中粗線段表示由SHTll來控制數(shù)據(jù)線,常態(tài)下由控制數(shù)據(jù)線。

          本文引用地址:http://www.ex-cimer.com/article/172042.htm

          d.JPG


          下面給出與上述硬件電路配套的PIC16的溫度傳感器讀取程序。
          e.JPG f.JPG
          RETURN
          2.2 溫度和濕度值的計算
          2.2.1 濕度線性補償和溫度補償
          SHTll可通過DATA數(shù)據(jù)總線直接輸出數(shù)字量濕度值。該濕度值稱為“相對濕度”,需要進行線性補償和溫度補償后才能得到較為準確的濕度值。由于相對濕度數(shù)字輸出特性呈一定的非線性,因此為了補償濕度傳感器的非線性,可按下式修正濕度值:
          g.JPG
          式中,RHlineer為經(jīng)過線性補償后的濕度值,SORH為相對濕度測量值,C1、C2、C3為線性補償系數(shù)。
          由于溫度對濕度的影響十分明顯,而實際溫度和測試參考溫度25℃有所不同,所以對線性補償后的濕度值進行溫度補償很有必要。補償公式如下:
          h.JPG
          式中:RHtrue為經(jīng)過線性補償和溫度補償后的濕度值,T為測試濕度值時的溫度(℃),t1和t2為溫度補償系數(shù)。
          2.2.2 溫度值輸出
          由于SHTll是采用PTAT能隙材料制成的溫度敏感元件,因而具有很好的線性輸出。實際溫度值可由下式算得:
          i.JPG
          式中,d1和d2為特定系數(shù),d1的取值與SHTll工作電壓有關,d2的取值則與SHTll內(nèi)部A/D轉(zhuǎn)換器采用的分辨率有關。
          2.3 顯示
          計算出溫度、濕度值后,在162字符型液晶顯示模塊上顯示出來,屏幕第一行顯示溫度值:“TEM:……”第二行顯示濕度值:“HUM:……”。程序設定每5 min更新一次。顯示流程圖如圖6所示。

          j.JPG



          3 結(jié)論
          由PIC數(shù)字傳感器SHTll以及162液晶顯示模塊組成的溫濕度感測,充分利用了SHTll的特點,又對溫濕度測量功能進行了擴充,使其具有顯示直觀、運行可靠、擴充方便等優(yōu)點。利用可控的加熱制冷設備對該性能進行了測試,實際結(jié)果表明:測溫范圍為-40~+100℃,誤差不超過0.5℃,濕度測量范圍是2~98%RH,誤差不超過4%RH(室溫25℃時測量),達到了預期性能指標,滿足實際應用要求。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術(shù)專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();