在嵌入式產品中,溫度檢測非常常見。在成本比較敏感而精度要求較低時,NTC電阻是個不錯的選擇。在這一篇中,我們將討論如何和設計并實現一個通用的NTC驅動,以便在后續的項目中更方便的復用。
1、功能概述
??NTC是指隨溫度上升電阻呈指數關系減小、具有負溫度系數的熱敏電阻現象和材料。NTC熱敏電阻是以錳、銅、硅、鈷、鐵、鎳、鋅等金屬氧化物為主要材料,采用陶瓷工藝制造而成的,其電阻率和材料常數隨材料成分比例、燒結氣氛,燒結溫度和結構狀態不同而變化。現在還出現了以碳化硅、硒化錫、氮化鉭等為代表的非氧化物系NTC熱敏電阻材料。因此,在實現小型化的同時,還具有電阻值、溫度特性波動小、對各種溫度變化響應快的特點,可進行高靈敏度、高精度的檢測。
??NTC 熱敏電阻是一種典型具有溫度敏感性的半導體電阻。根據標準IEC 60539-1的規定,NTC的電阻與溫度存在如下關系曲線:
??對于NTC的這種電阻與溫度的關系也可以使用近似的舒徐公式來表示:
??其中,R是在絕對溫度T時,NTC的零功率電阻。Ra是在絕對溫度Ta時,NTC的零功率電阻。
??B值是負溫度系數熱敏電阻器的熱敏常數,每種既定的材料都只有一個B值。B值可以通過測量在25攝氏度和50攝氏度(或85攝氏度)時的電阻值后進行計算。B值與產品電阻溫度系數正相關,也就是說B值越大,其電阻溫度系數也就越大。
2、驅動設計與實現
??NTC作為測溫元件的原理我們已經明白了,在此基礎上我們就可以來實現其測溫的驅動程序。
2.1、對象定義
??我們依然是將NTC當作一個對象,首先定義其對象類型。對于不同的NTC有三個參數是與其自身緊密相關的,或者說一旦制造就不會更改的。那就是B值、標稱溫度與標稱電阻。B值與材質有關,標稱溫度通常定為25攝氏度,標稱電阻則為標稱溫度下的電阻。所以我們定義NTC對象類型為:
/* 定義NTC電阻測溫對象 */
typedef struct NTCObject{
float BValue; //NTC的B常數
float nominalT; //NTC標稱溫度(攝氏度)
float nominalR; //NTC標稱電阻
}NTCObjectType;
??在一個對象使用之前必須對其實現初始化配置。主要是對指針進行檢查及對屬性變量和操作指針進行賦值。
/* NTC對象初始化函數 */
void NTCInitialization(NTCObjectType *ntc,float bValue,float nt,float nr)
{
if(ntc==NULL)
{
return;
}
ntc->BValue=bValue;
ntc->nominalT=nt;
ntc->nominalR=nr;
}
2.2、對象操作
??在我們實現了對象的定義和初始化之后,我們就可以操作對象來得到溫度值。那么如何操作對象得到溫度值呢?我們前面已經提到過,NTC是一種隨溫度上升時,電阻值呈指數關系減小的熱敏電阻。而這種指數關系就是我們前面提到的電阻與溫度的關系表達式。于是我們就可以根據這一表達式推導出有電阻計算溫度的公式:
??根據以上公式我們可以通過檢測電阻來計算溫度:
/*公式法計算NTC溫度值*/
float NTCTemperature(NTCObjectType *ntc,float resistance)
{
float temp;
float result=0.0;
result=resistance/ntc->nominalR;
result=(log(result)/ntc->nominalR)+(1/(ntc->nominalT+KELVIN_CONSTANT));
temp=1/result-KELVIN_CONSTANT;
return temp;
}
3、驅動的使用
??接下來使用我們前面開發的驅動來實現NTC檢測溫度。首先需要使用NTCObjectType對象類型聲明NTC對象變量。
??NTCObjectType ntc;
??這個對象變量必須初始化才能使用。所以我們采用初始化函數對這個變量進行初始化:
??NTCInitialization(&ntc,bValue,nt,nr);
??如果是有多個NTC對象可以使用數組等方式來處理。初始化完成后我們就可以操作該對象了。我們通常會采用一個電橋電路來檢測NTC電阻,以測量當前的溫度。電路圖如下:
??上圖中我們通過一個電橋來采集NTC電阻的變化,因為電阻的變化會引起C17兩端電壓的變化。溫度越高NTC電阻越小,C17兩端電壓差就越大,反之越小。我們采用了25攝氏度時,阻值為10K的NTC。不難推斷出輸出電壓與NTC電阻值的關系。當輸出電壓為0V時,電阻約25K,查表可知溫度為5攝氏度左右。當輸出電壓為5V時,電阻值接近0,查表可知在100攝氏度以上。這也便是這個電路的理論測量范圍。
??我們檢測到當前的電阻后,調用NTCTemperature(NTCObjectType *ntc,float resistance);函數來計算對應的溫度值。
4、應用總結
??使用NTC作為測溫和控溫的元件所得到的結果基本與預期的一致。但在控溫的精度和響應速度上略有不足,對于一般的應用是完全足夠的。在要求較高的場合我們也可以通過軟件提高控溫精度。
??使用NTC作為測溫元件需要注意,由于阻值與溫度的非線性,而我們解非線性方程可能會造成較大誤差,所以測溫有時候會有較大的誤差。而且NTC的測溫范圍很有限,所以使用是需要考慮這個問題。同時NTC存在較大的個體差異。當然作為一般的應用這些都不是問題。
-
熱敏電阻
+關注
關注
14文章
1163瀏覽量
101514 -
NTC
+關注
關注
7文章
424瀏覽量
52046 -
驅動設計
+關注
關注
1文章
111瀏覽量
15285 -
測溫元件
+關注
關注
0文章
8瀏覽量
2672
發布評論請先 登錄
相關推薦
評論