熱敏電阻如何測溫度
熱敏電阻的主要應用之一就是測量溫度的,下面和大家聊聊,如何使用一顆熱敏電阻來測試溫度并顯示出來呢?
首先是根據你要測量的溫度范圍來購買相應的熱敏電阻。
原廠提供熱敏電阻樣品,并提供熱敏電阻溫度和阻值的對應關系。
繪制電路原理圖,一般使用AD單片機來讀取電壓值,然后進過計算算出電阻值。
根據電阻值來查表,由于溫度和阻值不是一個線性關系,所以需要把溫度和阻值放在一個數組里面。
顯示部分一般使用數碼管或者是液晶,這個可以根據自己的應用來選擇顯示屏。
最后就是需要對溫度進行去除抖動,由于熱敏電阻對溫度很敏感,如果對檢測的結果不進行任何處理,會出現溫度忽高忽低的顯示,一般對電阻值多次檢測然后取平均值。
熱敏電阻溫度校準問題的測試和解決
一、問題描述
首先對1.0版本溫度貼硬件做一個簡單描述:該方案的測溫方式是使用熱敏電阻NTC,采集其模擬電壓并轉換為相應的溫度值,原理圖如圖1所示,使用單運放TLV521搭建一個橋,起初,對多片焊接完整的溫度貼線路板進行溫度準確度測試,發現測得溫度與實際水溫偏差較大且不一致,正偏和負偏均存在,無規律可尋,由于本產品對測溫精度的要求為-0.1~+0.1°,所以該結果未能滿足要求,一開始想過對不同偏差的板子通過一條擬合曲線對溫度進行校準,但采集了多組數據后找到一條擬合曲線加進去后仍無法全部滿足要求且耗時較長,放棄了此方式校準,故進行了以下分析測試;
圖1
二、該問題造成的影響
正如問題描述中提到的,本產品對測溫精度的要求是-0.1~+0.1°,然而對30+片的溫度測試發現,有相當多的一部分未能滿足要求,這里說明一下,當時的具體測試數據未能保留下來,是個疏忽。
三、對該問題的分析過程
發現這個問題后,由于當時我經驗不足,請教了一些人,尋求到一些建議,從以下方面對該問題逐一分析:1、熱敏電阻精度一致性;2、CPU的ADC采集誤差;3、外圍電路元器件精度;
1、熱敏電阻精度一致性:因熱敏電阻本身存在一定的差異,所以率先驗證該因素是否為影響測溫準確度的主要因素,具體步驟為,在上述30+片溫度貼里取三片(附帶原熱敏電阻),①號溫度偏低,②號溫度接近水溫,③號溫度偏高,重新在一相對恒定水浴溫度內測得三片裸板的對應溫度并記錄下來,然后將三片裸板上的熱敏電阻一一取下,分別對應a、b、c,然后彼此之間兩兩交換,并測量后記錄結果,發現相比之下①號總是偏低,②號接近水溫,③號溫度偏高,三輪測試之后可以基本確定,同一批次的熱敏電阻導致該溫度誤差的可能性已經可以被排除;
2、CPU的ADC采集誤差:將三片裸板的TLV521取下,斷開其與CPU的連接,將ADIN接GND,讀取采集到的值轉化成電壓值,三片一致性較好,幾乎為0,故ADC的影響可以忽略;
3、外圍電路元器件精度:首先驗證橋上各個電阻阻值大小及精度對溫度準確度的影響,選取上述圖1中的一組1%精度電阻值后,先后換了兩組,測試數據發現溫度并無大的改善,也沒變得更差,基本排除電阻值對溫度準確度的影響;其次就是對TLV521的測試,可以從圖2中觀察到TLV521的電氣特性第一項Vos較大,當前硬件設計中模擬電壓約5mV對應0.1°,所以極有可能是因為這個特性指標造成溫度誤差較大,接下來的測試就是針對TLV521進行,第一步,我先把當前狀態下的三片裸板(①號溫度偏低,②號溫度接近水溫,③號溫度偏高)溫度貼再次測試一下恒溫水浴下的溫度并一一記錄數據,然后將三片板子上的TLV521兩兩互換,保證其他量不變,發現①號的TLV521無論換到哪塊板子上,測試出的溫度始終是低的,且與其在①號上時近似,然后將②號板子上的TLV521取下放在另外兩塊板子上,發現測得溫度與②號板子之前的數據近似,如此操作,對下一個驗證,結論仍是如此,到此基本可以確定,TLV521的影響是造成溫度準確度不夠的主要因素。
圖2
四、解決該問題的修改方案
針對以上分析的結果,已經基本確定是TLV521的Vos電壓導致,所以,綜合部門總管和嵌入式軟件工程師的討論,有兩種解決辦法:a、換一個性能更好的運放,如TLV333;b、可以用ADC采集熱敏電阻阻值在30K(對應37°)時的電壓值與標準電壓值作比較,并自動補償該差值寫入flash,之后的計算調用該值以達到校準的目的;顯然,從成本和當前情況來看,a方案是不可行的,所以采取了b方案,具體可行性分析還要經過驗證;接下來嵌入式軟件工程師針對當前現象以及討論的解決方案進行了固件改進,搭載硬件燒寫工具進行了再一次測試,前期選取的樣本仍是之前測試的三片板子,燒寫過最新修改的固件版本以后,可以讀取寫入的偏移量,初步計算后發現不同板子的偏移量值均處于-15.00~+15.00mV區間范圍內,然后放入恒溫水浴測試,結果發現,三片板子測得的數據一致性較之前有很大提高,且均處在37°±0.1°范圍內,該結果已初步驗證了上述解決方案的可行性,為了確保萬無一失,我又進行了多片抽樣驗證,最終的測試結果與前三片一致,故說明定位的問題及解決方案均正確,該問題算是基本解決,但為了產品升級的需要,且后來發現一個問題,熱敏電阻的一致性僅限于每一批次,即同一批次生產出來的熱敏電阻我們認為它的曲線一致性較好,但下一次批次就會有所偏差,或偏大或偏小,所以為了更好地校準熱敏電阻,嵌入式軟件APP端計算好的擬合曲線沒辦法對每一批次修改升級,后期嵌入式軟件又加入了對不同批次的熱敏電阻進行抽檢預測試,即通過抽檢確定該批次的一個誤差范圍,然后將該誤差通過嵌入式軟件中分配一塊區域存儲并后期計算時調用,這樣就解決了升級卻不會修改測溫精度的問題,希望這種工程案例能對你們有所啟發和幫助。
五、最終結果
以上描述是解決溫度貼1.0版本溫度不準確的一些重要步驟,當然還有一些中間進行的操作沒有具體說明,或者說是因個人能力不夠做了一些無用功,沒能夠快速準確地定位到是TLV521導致的,慶幸的是,在部門總管和眾人的幫助下,終于找到問題所在并成功解決,這算是我工作中的一個學習和進步。
附:
當然,上述陳述中是前期溫度貼1.0版本存在的一個較大的問題,后期我們有發現了一些額外的問題:a、不同溫度狀態下,測得溫度與實際水溫存在偏差,如25~35°時偏高超出0.1°,36~39°時偏低在0.1°內,39~45°高出實際水溫0.2~0.4°;b、正確使用方式下測得的溫度偏低于人體溫度,我們欲使其偏高于準確溫度0.1°,故后面又經過了一輪新的測試;c、人體測溫時升溫速度慢;
針對上述問題a、b的現象,后面增加了一些測試及驗證,因懷疑不同批次的熱敏電阻存在R-T曲線誤差,所以為了解決a、b問題,我們對R-T曲線做了取舍,將原來的擬合范圍由25~45°縮小至30~40°,能夠保證在30~40°范圍內準確度在±0.1°內,然后為了使其正偏,即高于實際水溫(0,0.1)°,而且能夠適應不同批次的熱敏電阻,嵌入式軟件工程師在flash中預留一定字節的空間來存儲校準系數,且經過首輪驗證和再次驗證,成功證實了該方案的可行性,只是有些繁瑣且必要的前期測試要做,如針對每一批次的熱敏電阻抽取一定的樣本,經過測試和驗證,確定出一條適用于該批次的溫度擬合曲線,將其系數寫入flash以得到符合既定要求的溫度數據。
責任編輯:YYX