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

          新聞中心

          EEPW首頁 > 元件/連接器 > 設(shè)計應(yīng)用 > 用最小二乘法解熱電偶近似誤差

          用最小二乘法解熱電偶近似誤差

          作者: 時間:2024-08-08 來源:EEPW編譯 收藏

          了解k型熱電偶的線性近似誤差,以及如何使用和Matlab來找到最小化近似誤差的最佳擬合線。

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

          之前,我們研究了熱電偶冷端補(bǔ)償(CJC)的硬件實現(xiàn)。CJC電路需要感測冷端(Tc)的溫度,并在Tc的溫度下產(chǎn)生與熱電偶產(chǎn)生的電壓相等的補(bǔ)償電壓。

          總的來說,熱電偶是非線性的,由簡單的模擬電路產(chǎn)生的補(bǔ)償電壓只能近似實際響應(yīng)。因此,使用線性方程來近似熱電偶響應(yīng)會給我們的測量帶來誤差。

          考慮到所有這些,本文將研究這個誤差,并看看我們?nèi)绾问褂?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/最小二乘法">最小二乘法來找到最小化近似誤差的最佳擬合線。

          K型熱電偶線性近似誤差的評定

          下圖1顯示了K型熱電偶的輸出和我們在上一篇文章中使用的線性近似值。

          K型熱電偶的輸出和線性近似。

           1.png

          圖1。K型熱電偶的輸出和線性近似。

          在這種情況下,我們假設(shè)熱電偶響應(yīng)的斜率是恒定的,等于其在室溫下的值(25°C時為41μV/°C)。如圖所示,所采用的直線穿過原點。通過減去這兩條曲線,我們得到了圖2所示的μV近似誤差。

          以μV為單位的近似誤差圖。

           2.png

          圖2:以μV為單位的近似誤差圖。

          接下來,通過將差分曲線除以直線的斜率(41μV/°C),我們得到了以°C為單位的誤差,如圖3所示。

          顯示誤差與冷端溫度的關(guān)系圖。

           3.png

          圖3。顯示誤差與冷端溫度的關(guān)系圖。

          上圖顯示,即使使用理想的電路元件,當(dāng)Tc從0變化到70°C時,我們也會有大約0.7°C的誤差。這個誤差僅源于我們的線性近似。我們可以使用最小二乘回歸線方法[視頻]來找到最適合我們數(shù)據(jù)點的線性方程。

          尋找最佳擬合線

          我們將通過一個例子解釋最小二乘擬合過程。假設(shè)我們有以下數(shù)據(jù)點:

           4.png

          表1。示例數(shù)據(jù)點。

          我們想找到最能代表這些數(shù)據(jù)點的直線。圖4顯示了這些點以及通過目視檢查選擇的直線,該直線試圖遵循數(shù)據(jù)中的趨勢。

          顯示示例數(shù)據(jù)點和線性近似值的圖。

           5.png

          圖4。顯示示例數(shù)據(jù)點和線性近似值的圖。

          正如你所看到的,一條直線不能穿過所有這些點。因此,我們的線性近似可能會給出與數(shù)據(jù)點實際值不同的值。例如,在圖4中,直線在x=7處給出y=14,而在該x值處實際值為16。因此,實際值與我們的線性模型產(chǎn)生的值之間存在2個單位的差異。

          在最小二乘法的背景下,實際曲線值和線性模型值之間的差異稱為殘差(本文中用r表示)。在這個例子中,x=7處的殘差等于r=+2。殘差的平方和可以被視為我們的線性模型與數(shù)據(jù)擬合程度的指標(biāo)。根據(jù)圖4所示的模型,我們有:

           6.png

          其中,總和指數(shù)(i)是指我們數(shù)據(jù)中的第i個點。最小二乘法試圖通過調(diào)整線性模型的斜率(m)和y軸截距(b)來最小化所有數(shù)據(jù)點的殘差平方和。使用下面的方程式1和2可以找到“最適合”數(shù)據(jù)的線性模型的斜率和y軸截距:

           7.png

          方程式1。

           8.png

          方程式2。

          解釋:

          xi和yi是第i個數(shù)據(jù)點的x和y值

          x和y是所有xi和易的平均值

          n是數(shù)據(jù)點的總數(shù)

          根據(jù)表1中給出的數(shù)據(jù),我們得到x=4.2和y=7.2。表2顯示了將方程1和2應(yīng)用于我們的數(shù)據(jù)點時的一些計算。

           9.png

          表2。根據(jù)方程式1和2計算數(shù)據(jù)點。

          使用上述值,我們得到:

           10.png

          以及

          11.png

          從那里,下圖5提供了我們獲得的線圖。

           12.png

          圖5。使用表2計算的繪圖線。

          讓我們找到這個新模型的殘差平方和:

           13.png

          這給了我們:

           14.png

          這個方程比上面獲得的先前的和值小得多。最小二乘法中涉及的計算是乏味的,通常使用電子表格或計算機(jī)程序來進(jìn)行這些計算。

          使用Matlab尋找最佳擬合線

          在Matlab中繪制曲線后,我們可以從“工具”菜單(圖6(a))中選擇“基本擬合”選項,打開“基本擬合(Basic Fitting)”窗口,如圖6(b)所示。

           15.png

          圖6。Matlab屏幕截圖顯示了“工具”菜單中的“最佳擬合”選項(A)和“最佳擬合“窗口(b)。

          如果我們在“基本擬合”窗口中選擇“線性”和“顯示方程”,Matlab將生成并顯示“最適合”我們數(shù)據(jù)點的線性方程。

          K型熱電偶的線性模型

          繼續(xù)使用Matlab,我們發(fā)現(xiàn)K型熱電偶在0至70°C的溫度范圍內(nèi)具有以下線性模型:

           16.png

          在這種情況下,模型的斜率和y軸截距分別為40.778μV/°C和13.695μV。四舍五入到兩位有效數(shù)字,我們得到:

           17.png

          該模型和K型熱電偶產(chǎn)生的值之間的差異如圖7所示。這給了我們μV的近似誤差。

           18.png

          圖7。顯示模型和K型熱電偶產(chǎn)生的值之間差異的圖。

          將這些值除以41μV/°C線的斜率,我們得到了下面繪制的以°C為單位的誤差。

           19.png

          圖8。顯示分割前一個圖的值時的變化的圖。

          根據(jù)最佳擬合線,當(dāng)Tc從0變化到70°C時,近似誤差約為0.35°C。這幾乎是之前模型誤差的一半。最后,請記住,如果冷端溫度在設(shè)計中的變化范圍更有限,則可以獲得更準(zhǔn)確的模型。例如,如果Tc從20°C變化到50°C,則最佳擬合線可以更準(zhǔn)確地模擬熱電偶響應(yīng)。

          對于限制Tc如何提高精度的已解決示例,TI的這篇應(yīng)用說明可能很有用。




          評論


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

          關(guān)閉
          看屁屁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); })();