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