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

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > 一種基于SOC的高精度紅外測溫系統(tǒng)的設計

          一種基于SOC的高精度紅外測溫系統(tǒng)的設計

          作者: 時間:2009-12-22 來源:網(wǎng)絡 收藏

            3.系統(tǒng)軟件設計

            紅外線溫度檢測系統(tǒng)的軟件設計主要有如下幾個主要模塊:初始化模塊﹑I/O口查詢模塊﹑AD轉(zhuǎn)化模塊﹑數(shù)據(jù)處理模塊﹑數(shù)據(jù)糾正模塊﹑顯示驅(qū)動模塊等。另外還一個中斷程序處理模塊:0外部中斷,主要用于參數(shù)設定。

            軟件設計流程如圖 3所示。

          軟件設計流程

            整個程序采用 c51編寫,初始化模塊主要是初始化各路報警信號,將發(fā)射率等參數(shù)設定成默認的值并顯示。主程序不斷通過 I/O口查詢模塊掃描 AD轉(zhuǎn)換模塊送過來的 12位數(shù)字信號,本程序中采用的是 SPI總線的通信方式,串行的接口方式節(jié)約了大量 IO口。接受過來的數(shù)字信號通過數(shù)據(jù)處理模塊處理之后按查表的方式得出溫度值,把該溫度值經(jīng)過數(shù)據(jù)糾正模塊糾正后送顯示模塊顯示,并將數(shù)據(jù)傳給上位機界面進行顯示,從而完成了一路溫度測量。在程序的運行過程中,隨時可以對發(fā)射率,報警值等參數(shù)進行設定。當功能鍵按下的時候觸發(fā)單片機的 0外部中斷,在中斷程序中對參數(shù)設定按鍵進行掃描,并將結(jié)果存儲起來。每路測溫結(jié)束后系統(tǒng)通過 RS485將溫度值傳送給上位機,在 VB界面上顯示。

            1 實驗數(shù)據(jù)處理及發(fā)射率整定

            2 實驗數(shù)據(jù)的最小二乘法擬合

            對于一個測量系統(tǒng),其精度和準確度是非常重要的。雖然本設計選用 12位AD,給本設計的高精度奠定了基礎,但是由于傳感器,AD等電子器件自身不可避免的誤差和外界的干擾,測量結(jié)果難免會有些偏差。因此和研究其他儀器儀表一樣,在本設計中,也進行了大量實驗,通過對實驗數(shù)據(jù)的處理,進一步提高了準確度。采用的主要方法是曲線擬合的最小二乘法?,F(xiàn)將其原理介紹如下:

            在函數(shù)的最佳平方逼近中,函數(shù) f(x)∈C[a,b],如果 f(x)只在一組離散點集{xi,i=0,1,…,m}上給定,那么我們就需要對實驗數(shù)據(jù){(xi,yi),i=0,1,…,m}進行曲線擬合,其中,yi= f(xi)。若要求函數(shù) y="S" ((*)x)與所給數(shù)據(jù){(xi,yi),i=0,1,…,m}擬合,則誤差δi= S *(x)-yi。設Φ 1(x),Φ2(x),…, Φn(x)是C[a,b]上線性無關函數(shù)族,在Φ =span{Φ1(x),Φ2(x),…, Φ n(x)}中找一函數(shù)S ((*)x),使其誤差平方和最小即可。因為實驗數(shù)據(jù)量很大,故在實際運算中,可以借助MATLAB等數(shù)學工具,通過調(diào)用或者編寫相關函數(shù)來完成曲線擬合,最后選擇適當?shù)慕Y(jié)果輸出。



          評論


          相關推薦

          技術專區(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); })();