一種基於熱敏電阻的溫度檢測方法及電路與流程
2024-03-21 01:38:05
本發明屬於溫度檢測技術領域,尤其涉及一種基於熱敏電阻的溫度檢測方法及電路。
背景技術:
隨著社會進步和經濟發展,特別是在當前的數位化、網絡化、信息化蓬勃發展的時代,各類型的溫度檢測裝置和各式各樣的溫度智能監測產品,已廣泛應用於工業生產和人們的日常生活中。
人們越來越關注和重視溫度對自己、對生產,及對產品的影響,例如:使用電子溫度計測量體溫、使用溫度監控裝置檢測生產的環境溫度,使用溫度傳感器監測電動汽車電機和電池的溫度等;伴隨人們物質文化生活的提高,也對各類溫度檢測產品的精度、範圍,及價格要求越來越嚴苛,這就對各類溫度傳感器及其檢測方法提出了新的要求。
當前應用最為廣泛的溫度傳感器主要有熱敏電阻和熱電偶,熱敏電阻本身是電阻,由單一的金屬材料構成,電阻的阻值隨溫度的變化而變化,包括正溫度係數熱敏電阻(ptc)和負溫度係數熱敏電阻(ntc),熱敏電阻常用於中低溫度的檢測;而熱電偶是由兩種金屬材料構成,兩種金屬兩端的感應電壓隨溫度的變化而變化,熱電偶常用於中高溫度的檢測;一般地,貼近人們日常生活的,常用的溫度傳感器還是熱敏電阻。
熱敏電阻的阻值會隨溫度的變化而變化,常見的變化關係主要有線性變化和非線性變化兩種,即通過這種變化對應關係,可實現對溫度的檢測。
現有技術方案:
對於阻值隨溫度線性變化的熱敏電阻,一般依照擬合的線性公式進行直接計算;而對於阻值隨溫度非線性變化的熱敏電阻,則一般依照分區擬合的線性公式和單一擬合的曲線公式進行直接計算,或依據溫度與阻值一對一映射,並使用多點查表的方式進行檢測。
對溫度的智能檢測和精準計算,離不開單片機等數字處理晶片。採用擬合的線性和曲線公式進行的溫度檢測,需依據公式進行代碼編程,由處理晶片計算得出;而對於採用溫度與阻值一對一映射並結合多點查表方式進行的溫度檢測,則需要依據映射關係,在處理晶片中建立溫度與採樣電壓的二維數組,採用查表的方式得出。
不難發現,現有的基於熱敏電阻的溫度檢測方法存在以下弊端:
(1)採用擬合線性和曲線公式直接計算的溫度檢測,公式中都含有加法、減法、乘法和除法運算,甚至開方和指數運算等,計算量大;對於溫度的實時檢測,增加了對晶片運算性能的要求。
(2)採用溫度與阻值一對一映射並結合多點查表方式進行的溫度檢測,是以數據空間換取溫度檢測精度,即數據越多,檢測精度則越高;對於溫度的實時檢測,增加了對晶片運算性能和內部存儲空間的要求。
(3)對於運算性能較差或不帶硬體浮點運算單元的處理晶片來說,溫度檢測的精度和實時效率會受到影響,尤其對於時間常數較小、溫度急劇變化,又需要及時保護和處理的應用場景,更會放大影響倍數。
技術實現要素:
本發明的目的在於克服現有技術的不足,提供一種可廣泛用於工業、汽車等行業的一種既簡單快速、精度又高的基於熱敏電阻的溫度檢測方法。
本發明的目的是通過以下技術方案來實現的:
一種基於熱敏電阻的溫度檢測方法,它包括如下步驟:
第一步:確定溫度檢測精度與檢測範圍;
第二步:確定溫度與電阻阻值、溫度與採樣電壓的關係;
第三步:確定溫度的一維數組大小;
第四步:確定溫度的一維數組數據;
第五步:依據採樣電壓求解數組索引;
第六步:依據數組索引求解實時溫度。
作為優選方式,基於熱敏電阻的溫度檢測方法適用於非線性負溫度係數熱敏電阻檢測、線性正溫度係數熱敏電阻檢測、非線性正溫度係數熱敏電阻檢測和線性負溫度係數熱敏電阻檢測。
作為優選方式,在非線性負溫度係數熱敏電阻檢測中:
第一步:確定溫度檢測精度與檢測範圍,設定非線性負溫度係數熱敏電阻的溫度檢測範圍為a℃至b℃,檢測精度為x℃;
第二步:確定溫度與電阻阻值、溫度與採樣電壓的關係,依據非線性負溫度係數熱敏電阻廠家給定的數據手冊,查詢到溫度與電阻阻值的對應關係;
採樣用到的數字處理晶片a/d採樣埠為k位採樣精度,輸入電壓為0v至yv,採樣電壓數字輸出為0至2k-1;設定溫度[a,b]對應採樣電壓[y,0],並對應a/d採樣埠數字量[2k-1,0];
第三步:確定溫度的一維數組大小,為建立從a℃至b℃溫度範圍的一維數組,並滿足x℃的溫度採樣精度,需將x℃作為非線性度的最小誤差求解溫度區間個數z;
第四步:確定溫度的一維數組數據,依據(2k-1-0)÷z=m,可計算得出非線性負溫度係數熱敏電阻等電壓區間的間隔為-m,即得到數組大小為z+1的電壓一維數組[2k-1,2k-1-m,2k-1-2m,…,0];根據非線性負溫度係數熱敏電阻的映射關係或計算公式,可以很方便地得到對應數組大小為z+1的溫度一維數組[a,…,b],為簡化運算量,這裡將溫度的一維數組數據用iq7格式表示,即將原溫度數據左移7位,得到一維數組[a,…,b];
第五步:依據採樣電壓求解數組索引,當數字處理晶片檢測到電壓a/d採樣數據時,輸出[0,2k-1]的數字量,其值為左移k位後的值,真實值的範圍實為[0,1];為了簡化運算量,需將輸入的數字量減去溫度點採樣的最大值2k-1,即將[0,2k-1]對應到[-2k-1,0];
為了實現對浮點數的運算,將a/d採樣得到的數字量再左移「24-k」位;並將該數字量與左移24位的溫度區間個數相乘,得到iq24格式的數組索引值,記為「index」;
第六步:依據數組索引求解實時溫度,對數組索引值「index」進行「取整操作」,可得到一個整數,記為「n」,並作為此時溫度一維數組的索引,依據該索引查表得到的溫度值作為檢測溫度的第一部份,記為「t1」,即:t1=temprature[n];
依據一小段非線性曲線可由一段直線近似等效的原理,可得到索引值「index」小數部份的溫度值;下一個索引「n+1」對應的溫度與索引「n」對應溫度的差值,記為「△」,即:△=temprature[n+1]-temprature[n];而對「index」進行「取小數操作」,記為「f」;最後將「temprature[n+1]-temprature[n]」乘以「f」,即可得到檢測溫度的第二部份,記為「t2」,即:t2=(temprature[n+1]-temprature[n])×f;
最終檢測的溫度,其值應等於上述溫度的第一部份與第二部份之和,記為「t」,即:t=t1+t2=temprature[n]+(temprature[n+1]-temprature[n])×f」;最後,將t右移7位,即可計算出最終檢測的實際溫度。
作為優選方式,在線性正溫度係數熱敏電阻檢測中:
第一步:確定溫度檢測精度與檢測範圍,首先設定線性正溫度係數熱敏電阻的溫度檢測範圍為u℃至v℃,檢測精度為t℃;
第二步:確定溫度與電阻阻值、溫度與採樣電壓的關係,依據正溫度係數熱敏電阻廠家給定的數據手冊,可以查詢到溫度與電阻阻值的對應關係,
採樣用到的數字處理晶片a/d採樣埠為h位採樣精度,輸入電壓為0v至rv,採樣電壓數字輸出為0至2h-1;設定溫度[u,v]對應採樣電壓[0,r],並對應a/d採樣埠數字量[0,2h-1];
第三步:確定溫度的一維數組大小,為建立從u℃至v℃溫度範圍的一維數組,並滿足t℃的溫度採樣精度,需將t℃作為線性度的最小誤差求解溫度區間個數s;
第四步:確定溫度的一維數組數據,依據(2h-1-0)÷s=p,可計算得出正溫度係數熱敏電阻等電壓區間的間隔為p,即得到數組大小為s+1的電壓一維數組[0,p,2p,…,2h-1];根據正溫度係數熱敏電阻的映射關係或計算公式,可以很方便地得到對應數組大小為s+1的溫度一維數組[u,…,v],為簡化運算量,這裡將溫度的一維數組數據用iq7格式表示,即將原溫度數據左移7位,得到一維數組[u,…,v];
第五步:依據採樣電壓求解數組索引,當數字處理晶片檢測到電壓a/d採樣數據時,輸出[0,2h-1]的數字量,其值為左移h位後的值,真實值的範圍實為[0,1];
為了實現對浮點數的運算,將a/d採樣得到的數字量再左移「24-h」位;並將該數字量與左移24位的溫度區間個數相乘,得到iq24格式的數組索引值,記為「refer」;
第六步:依據數組索引求解實際溫度,對數組索引值「refer」進行「取整操作」,可得到一個整數,記為「q」,並作為此時溫度一維數組的索引,依據該索引查表得到的溫度值作為檢測溫度的第一部份,記為「t1」,即:t1=temprature[q];
依據一小段非線性曲線可由一段直線近似等效的原理,可得到索引值「refer」小數部份的溫度值;下一個索引「q+1」對應的溫度與索引「q」對應溫度的差值,記為「i」,即:i=temprature[q+1]-temprature[q];而對「refer」進行「取小數操作」,記為「j」;最後將「temprature[q+1]-temprature[q]」乘以「j」,即可得到檢測溫度的第二部份,記為「t2」,即:t2=(temprature[q+1]-temprature[q])×j;
最終檢測的溫度,其值應等於上述溫度的第一部份與第二部份之和,記為「t」,即:t=t1+t2=temprature[q]+(temprature[q+1]-temprature[q])×j」;最後,將t右移7位,即可計算出最終檢測的實際溫度。
作為優選方式,所述溫度與電阻阻值的對應關係包括:擬合的非線性溫度計算公式或溫度與電阻阻值的一對一映射列表。
作為優選方式,a=-50,b=180,x=0.5,y=3,k=12,z=60,m=68.25;
所述數字處理晶片為ti公司的f2808數字處理晶片,其a/d採樣埠為12位採樣精度,輸入電壓為0v至3v,採樣電壓數字輸出為0至4095;通過適配相應的電阻阻值,可以設定溫度[-50,180]對應採樣電壓[3,0],並對應a/d採樣埠數字量[4095,0];
劃分60個溫度區間,需以61個溫度點進行劃分,即:得到溫度數組大小為61;
依據(4095-0)÷60=68.25,可計算得出非線性負溫度係數熱敏電阻等電壓區間的間隔為-68.25,即得到數組大小為61的電壓一維數組[4095,4026.75,3958.47,…,0];根據非線性負溫度係數熱敏電阻的映射關係或計算公式,可以很方便地得到對應數組大小為61的溫度一維數組[-50,-30.12790003,-21.25507732,…,180];
由於f2808為不帶硬體浮點運算單元支持的數字處理晶片,但為了實現對浮點數的運算,需將溫度的一維數組數據用iq7格式表示,即將溫度數據左移7位,轉換為程序編程需要的溫度一維數組[-6400,-3856,-2721,…,23040];當查表和計算得到對應的溫度後,再右移7位,即可得到實際的溫度;當f2808檢測到電壓a/d採樣數據時,輸出[0,4095]的數字量,其值為左移12位後的值,真實值的範圍實為[0,1];為了簡化運算量,需將輸入的數字量減去溫度點採樣的最大值4095,即將[0,4095]對應到[-4095,0];
同樣地,為了對實現浮點數的運算,將a/d採樣得到的數字量再左移12位,得到iq24格式的數字量;並將該數字量與左移24位的溫度區間個數相乘,得到iq24格式的數組索引值,記為「index」;
對數組索引值「index」進行「取整操作」,可得到一個整數,記為「n」,並作為此時溫度一維數組的索引,依據該索引查表得到的溫度值作為檢測溫度的第一部份,記為「t1」,即:t1=temprature[n];
依據一小段非線性曲線可由一段直線近似等效的原理,可得到索引值「index」小數部份的溫度值;下一個索引「n+1」對應的溫度與索引「n」對應溫度的差值,記為「△」,即:△=temprature[n+1]-temprature[n];而對「index」進行「取小數操作」,記為「f」;最後將「temprature[n+1]-temprature[n]」乘以「f」,即可得到檢測溫度的第二部份,記為「t2」,即:t2=(temprature[n+1]-temprature[n])×f;
最終檢測的溫度,其值應等於上述溫度的第一部份與第二部份之和,記為「t」,即:t=t1+t2=temprature[n]+(temprature[n+1]-temprature[n])×f」;最後,將t右移7位,即可計算出最終檢測的實際溫度。
作為優選方式,溫度與電阻阻值的對應關係包括:擬合的線性溫度計算公式或溫度與電阻阻值的一對一映射列表。
作為優選方式,u=-50,v=200,t=0.5,r=3,h=12,s=40,p=102.375;
根據f2808數字處理晶片數據手冊可知,其a/d採樣埠為12位採樣精度,輸入電壓為0v至3v,採樣電壓數字輸出為0至4095;通過適配相應的電阻阻值,可以設定溫度[-50,200]對應採樣電壓[0,3],並對應a/d採樣埠數字量[0,4095];
劃分40個溫度區間,需以41個溫度點進行劃分,即:得到溫度數組大小為41;依據(4095-0)÷40=102.375,可計算得出正溫度係數熱敏電阻等電壓區間的間隔為102.375,即得到數組大小為41的電壓一維數組[0,102.375,204.75,…,4095];根據正溫度係數熱敏電阻的映射關係或計算公式,可以很方便地得到對應數組大小為41的溫度一維數組[-50,-43.75,-37.5,…,200];
由於f2808為不帶硬體浮點運算單元支持的數字處理晶片,但為了實現對浮點數的運算,需將溫度的一維數組數據用iq7格式表示,即將溫度數據左移7位,轉換為程序編程需要的溫度一維數組[-6400,-5600,-4800,…,25600];當查表和計算得到對應的溫度後,再右移7位,即可得到實際的溫度;
當f2808檢測到電壓a/d採樣數據時,輸出[0,4095]的數字量,其值為左移12位後的值,真實值的範圍實為[0,1];同樣地,為了實現對浮點數的運算,將a/d採樣得到的數字量再左移12位,得到iq24格式的數字量;並將該數字量與左移24位的溫度區間個數相乘,得到iq24格式的數組索引值,記為「refer」;
對數組索引值「refer」進行「取整操作」,可得到一個整數,記為「q」,並作為此時溫度一維數組的索引,依據該索引查表得到的溫度值作為檢測溫度的第一部份,記為「t1」,即:t1=temprature[q];
依據一小段非線性曲線可由一段直線近似等效的原理,可得到索引值「refer」小數部份的溫度值;下一個索引「q+1」對應的溫度與索引「q」對應溫度的差值,記為「i」,即:i=temprature[q+1]-temprature[q];而對「refer」進行「取小數操作」,記為「j」;最後將「temprature[q+1]-temprature[q]」乘以「j」,即可得到檢測溫度的第二部份,記為「t2」,即:t2=(temprature[q+1]-temprature[q])×j;
最終檢測的溫度,其值應等於上述溫度的第一部份與第二部份之和,記為「t」,即:t=t1+t2=temprature[q]+(temprature[q+1]-temprature[q])×j」;最後,將t右移7位,即可計算出最終檢測的實際溫度。
一種基於熱敏電阻的溫度檢測電路,它包括非線性熱敏電阻的溫度檢測電路和線性熱敏電阻的溫度檢測電路;
所述的非線性熱敏電阻的溫度檢測電路包括:第一電阻r1、第二電阻r2、第一電容c1和第二電容c2,電源vcc連接第一電阻r1的第一端,第一電阻r1的第二端分別連接第二電阻r2和第一電容c1的第一端,第一電容c1的第二端接地,第二電阻r2還分別與第二電容c2的第一端和數字處理晶片的第一採樣輸入端連接,第二電容c2的第二端接地,數字處理晶片的第二採樣輸入端接地,非線性熱敏電阻的一端連接到第一電阻r1、第二電阻r2和第一電容c1的公共節點上,非線性熱敏電阻的另一端接地;
所述的線性熱敏電阻的溫度檢測電路包括:第三電阻r3、第四電阻r4、第五電阻r5、第六電阻r6、第七電阻r7、反饋電阻rf、第三電容c3、第四電容c4、運算發大器u1和穩壓二極體z1;
電源vcc分別連接第六電阻r6的第一端和第七電阻r7的第一端,第六電阻r6的第二端分別連接線性熱敏電阻的第一端、第三電容c3的第一端、第四電阻的第一端和運算放大器u1的正相輸入端,第七電阻r7的第二端分別連接第三電阻的第一端、反饋電阻rf的第一端和運算放大器u1的反相輸入端,運算放大器u1的輸出端連接第五電阻r5的第一端,第五電阻r5的第二端分別連接反饋電阻rf的第二端、穩壓二極體z1的負極、第四電容c4的第一端以及數字處理晶片的第一採樣輸入端,線性熱敏電阻的第二端、第三電容c3的第二端、第三電阻r3的第二端、第四電阻r4的第二端、穩壓二極體z1的正極以及數字處理晶片的第二採樣輸入端接地。
本發明的有益效果是:本溫度檢測方法及電路沒有使用除法、開方和指數等運算操作,沒有採用二維數組查表,也沒有使用反覆、循環查找溫度值的遞歸操作,計算量小,且簡單高效,這對於溫度的實時檢測,不僅減小了對晶片運算性能的要求,實用性也得到大大提高。
附圖說明
圖1為非線性熱敏電阻的溫度檢測電路示意圖;
圖2為線性熱敏電阻的溫度檢測電路示意圖。
具體實施方式
下面結合附圖進一步詳細描述本發明的技術方案,但本發明的保護範圍不局限於以下所述。
如圖1所示為非線性熱敏電阻的溫度檢測電路,它包括:第一電阻r1、第二電阻r2、第一電容c1和第二電容c2,電源vcc連接第一電阻r1的第一端,第一電阻r1的第二端分別連接第二電阻r2和第一電容c1的第一端,第一電容c1的第二端接地,第二電阻r2還分別與第二電容c2的第一端和數字處理晶片的第一採樣輸入端連接,第二電容c2的第二端接地,數字處理晶片的第二採樣輸入端接地,非線性熱敏電阻的一端連接到第一電阻r1、第二電阻r2和第一電容c1的公共節點上,非線性熱敏電阻的另一端接地;
如圖2所示為線性熱敏電阻的溫度檢測電路,它包括:第三電阻r3、第四電阻r4、第五電阻r5、第六電阻r6、第七電阻r7、反饋電阻rf、第三電容c3、第四電容c4、運算發大器和穩壓二極體;
電源vcc分別連接第六電阻r6的第一端和第七電阻r7的第一端,第六電阻r6的第二端分別連接線性熱敏電阻的第一端、第三電容c3的第一端、第四電阻r4的第一端和運算放大器u1的正相輸入端,第七電阻r7的第二端分別連接第三電阻的第一端、反饋電阻rf的第一端和運算放大器u1的反相輸入端,運算放大器u1的輸出端連接第五電阻r5的第一端,第五電阻r5的第二端分別連接反饋電阻rf的第二端、穩壓二極體z1的負極、第四電容c4的第一端以及數字處理晶片的第一採樣輸入端,線性熱敏電阻的第二端、第三電容c3的第二端、第三電阻r3的第二端、第四電阻r4的第二端、穩壓二極體z1的正極以及數字處理晶片的第二採樣輸入端接地。
下面以非線性負溫度係數(ntc)和線性正溫度係數(pt100)的熱敏電阻,及ti公司的tms320f2808數字處理晶片為例,詳細闡述溫度檢測的方法。
1)非線性負溫度係數檢測
第一步:確定溫度檢測精度與檢測範圍
設定非線性負溫度係數熱敏電阻(ntc)的溫度檢測範圍為-50℃至180℃,檢測精度為0.5℃,溫度檢測電路如圖1所示。
第二步:確定溫度與電阻阻值、溫度與採樣電壓的關係
一般地,依據ntc廠家給定的數據手冊,可以查詢到溫度與電阻阻值的對應關係,例如:擬合的非線性溫度計算公式,或溫度與電阻阻值的一對一映射列表。
根據f2808數字處理晶片數據手冊可知,其a/d採樣埠為12位採樣精度,輸入電壓為0v至3v,採樣電壓數字輸出為0至4095;圖1中,通過適配相應的電阻阻值,可以設定溫度[-50,180]對應採樣電壓[3,0],並對應a/d採樣埠數字量[4095,0]。
第三步:確定溫度的一維數組大小
為建立從-50℃至180℃溫度範圍的一維數組,並滿足0.5℃的溫度採樣精度,需將0.5℃作為非線性度的最小誤差求解溫度區間個數;設定本例中需劃分60個溫度區間,需以61個溫度點進行劃分,即:得到溫度數組大小為61。
第四步:確定溫度的一維數組數據
依據(4095-0)÷60=68.25,可計算得出ntc等電壓區間的間隔為-68.25,即得到數組大小為61的電壓一維數組[4095,4026.75,3958.47,…,0];根據ntc的映射關係或計算公式,可以很方便地得到對應數組大小為61的溫度一維數組[-50,-30.12790003,-21.25507732,…,180]。
由於f2808為不帶硬體浮點運算單元支持的數字處理晶片,但為了實現對浮點數的運算,需將溫度的一維數組通過iq7格式轉換(左移7位),轉換為程序編程需要的溫度一維數組[-6400,-3856,-2721,…,23040];當查表和計算得到對應的溫度後,再通過iq7格式轉換(右移7位)得到實際的溫度即可。
第五步:依據採樣電壓求解數組索引
當f2808檢測到電壓a/d採樣數據時,輸出[0,4095]的數字量,其值實為iq12格式(左移12位),真實值的範圍實為[0,1];為了簡化運算量,需將輸入的數字量減去溫度點採樣的最大值4095,即將[0,4095]對應到[-4095,0]。
同樣地,為了實現對浮點數的運算,將a/d採樣得到的數字量再進行iq12格式轉換(iq12左移12位後得到iq24格式);再將該iq24格式的數字量與左移24位的溫度區間個數iq24(-60)相乘,得到iq24格式的數組索引值,記為「index」。
第六步:依據數組索引求解實時溫度
對數組索引值「index」進行「取整操作」,可得到一個整數,記為「n」,並作為此時溫度一維數組的索引,依據該索引查表得到的溫度值作為檢測溫度的第一部份,記為「t1」,即:t1=temprature[n]。
依據一小段非線性曲線可由一段直線近似等效的原理,可得到索引值「index」小數部份的溫度值。下一個索引「n+1」對應的溫度與索引「n」對應溫度的差值,記為「△」,即:△=temprature[n+1]-temprature[n];而對「index」進行「取小數操作」,記為「f」;最後將「temprature[n+1]-temprature[n]」乘以「f」,即可得到檢測溫度的第二部份,記為「t2」,即:t2=(temprature[n+1]-temprature[n])×f。
最終檢測的溫度,其值應等於上述溫度的第一部份與第二部份之和,記為「t」,即:t=t1+t2=temprature[n]+(temprature[n+1]-temprature[n])×f」;最後,將t進行iq7格式轉換(右移7位),即可計算出最終檢測的實際溫度。
2)線性正溫度係數檢測
第一步:確定溫度檢測精度與檢測範圍
設定線性正溫度係數熱敏電阻(pt100)的溫度檢測範圍為-50℃至200℃,檢測精度為0.5℃,溫度檢測電路如圖2所示。
第二步:確定溫度與電阻阻值、溫度與採樣電壓的關係
一般地,依據pt100廠家給定的數據手冊,可以查詢到溫度與電阻阻值的對應關係,例如:擬合的線性溫度計算公式,或溫度與電阻阻值的一對一映射列表。
根據f2808數字處理晶片數據手冊可知,其a/d採樣埠為12位採樣精度,輸入電壓為0v至3v,採樣電壓數字輸出為0至4095;圖2中,通過適配相應的電阻阻值,可以設定溫度[-50,200]對應採樣電壓[0,3],並對應a/d採樣埠數字量[0,4095]。
第三步:確定溫度的一維數組大小
為建立從-50℃至200℃溫度範圍的一維數組,並滿足0.5℃的溫度採樣精度,需將0.5℃作為線性度的最小誤差求解溫度區間個數;設定本例中需劃分40個溫度區間,需以41個溫度點進行劃分,即:得到溫度數組大小為41。
第四步:確定溫度的一維數組數據
依據(4095-0)÷40=102.375,可計算得出pt100等電壓區間的間隔為102.375,即得到數組大小為41的電壓一維數組[0,102.375,204.75,…,4095];根據pt100的映射關係或計算公式,可以很方便地得到對應數組大小為41的溫度一維數組[-50,-43.75,-37.5,…,200]。
由於f2808為不帶硬體浮點運算單元支持的數字處理晶片,但為了實現對浮點數的運算,需將溫度的一維數組通過iq7格式轉換(左移7位),轉換為程序編程需要的溫度一維數組[-6400,-5600,-4800,…,25600];當查表和計算得到對應的溫度後,再通過iq7格式轉換(右移7位)得到實際的溫度即可。
第五步:依據採樣電壓求解數組索引
當f2808檢測到電壓a/d採樣數據時,輸出[0,4095]的數字量,其值實為iq12格式(左移12位),真實值的範圍實為[0,1]。
同樣地,為了對實現浮點數的運算,將a/d採樣得到的數字量再進行iq12格式轉換(iq12左移12位後得到iq24格式);再將該iq24格式的數字量與左移24位的溫度區間個數iq24(40)相乘,得到iq24格式的數組索引值,記為「refer」。
第六步:依據數組索引求解實際溫度
對數組索引值「refer」進行「取整操作」,可得到一個整數,記為「q」,並作為此時溫度一維數組的索引,依據該索引查表得到的溫度值作為檢測溫度的第一部份,記為「t1」,即:t1=temprature[q]。
依據一小段非線性曲線可由一段直線近似等效的原理,可得到索引值「refer」小數部份的溫度值。下一個索引「q+1」對應的溫度與索引「q」對應溫度的差值,記為「i」,即:i=temprature[q+1]-temprature[q];而對「refer」進行「取小數操作」,記為「j」;最後將「temprature[q+1]-temprature[q]」乘以「j」,即可得到檢測溫度的第二部份,記為「t2」,即:t2=(temprature[q+1]-temprature[q])×j。
最終檢測的溫度,其值應等於上述溫度的第一部份與第二部份之和,記為「t」,即:t=t1+t2=temprature[q]+(temprature[q+1]-temprature[q])×j」;最後,將t進行iq7格式轉換(右移7位),即可計算出最終檢測的實際溫度。
根據以上所述不難看出,該溫度檢測方法沒有使用除法、開方和指數等運算操作,沒有採用二維數組查表,也沒有使用反覆、循環查找溫度值的遞歸操作,計算量小,且簡單高效,這對於溫度的實時檢測,不僅減小了對晶片運算性能的要求,實用性也得到大大提高。
以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,應當指出的是,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。