1、什么是NTC?
NTC熱敏電阻是一種負溫度系數的熱敏電阻,它的性性是阻值隨溫度的升高而降低,主要作用是對溫度的測量及補償,也用于NTC溫度傳感器的制作,常用的使用范圍在-55℃至200℃之間。
圖1 NTC溫度阻值曲線
2、NTC的主要技術參數有哪些?
以 MF52 系列測溫型 NTC 熱敏電阻器規格書為例,來看一看NTC的一些主要參數
2.1、阻值:
熱敏電阻標稱阻值是關鍵參數之一,常見阻值范圍從1KΩ至幾百KΩ,具體看使用情況。通常使用25℃的溫度,這可以表示為R25值。對于更專業的應用,可以使用其他溫度。還要注意,有時溫度可以用絕對溫度引用,即°K。
此NTC 25℃情況下的阻值為10KΩ
2.2、阻值容差:
與任何電阻一樣,標準電阻具有容差,被稱為為R25值,或者給出電阻的溫度值。通常可獲得±2%,±3%和±5%的值
2.3、B值(材料常數):
B值是溫度系數熱敏電阻器的材料常數(熱敏指數),單位是開爾文溫度(K)。半導體陶瓷經過高溫燒結后通過一系列的加工工序形成具有一定電阻率的NTC熱敏芯片,每種配方和燒結溫度下只有一個B值。NTC熱敏電阻的B值與產品電阻溫度系數正相關,也就是說B值越大,其電阻溫度系數也就越大。
NTC熱敏電阻B值公式為:?B=?T1*T2/(T2-T1)*Ln(RT1/RT2)
其中的B:NTC熱敏電阻的B值,由廠家提供;
RT1、RT2:熱敏電阻在溫度分別為T1、T2時的電阻值;
T1、T2:絕對溫標。
NTC熱敏電阻的B值一般在2000K-6000K之間,根據不同的應用范圍可以選擇不同的B值。一般情況下,作為溫度測量、溫度補償以及抑制浪涌用的產品,可選用較大的B值。因為隨著溫度的變化,B值大的產品其電阻值變化更大,也就是說NTC熱敏電阻B值越大,使用時更靈敏,響應時間更快。
2.4、時間常數:
熱敏電阻時間常數對于需要快速響應的任何應用都很重要 - 例如在防止過載等情況下。沒有人能立即將溫度從一個值升高到另一個值。它遵循漸近曲線。身體越大,溫度升高所需的時間越長。因此,器件的時間常數對于某些應用來說是重要的熱敏電阻規范。
2.5、熱時間常數:
熱時間常數參數用希臘字母τ來表示,它定義為熱敏電阻變為初始溫度(t1)和瞄準溫度(t2)之差的63.2%(即1:1 / e)所需的時間當熱敏電阻沒有消耗功率時,溫度差作為階躍變化施加。出于測量目的,τ測量所需的溫度; 即達到63.2%溫差的阻力時間為:
2.6、散熱系數δ:
這是熱敏電阻的一個重要特征,因為所有熱敏電阻都需要通過一些電流來運行包含它們的電路,才能致熱敏電阻的自發熱。該熱敏電阻規范定義了所施加的功率和熱敏電阻自加熱之間的關系。如果過多的電流通過熱敏電阻,那么它將抵消熱敏電阻的操作。因此,該規范控制可以通過設備的電流。耗散因子δ以mW /℃表示。
其中P =功耗以瓦特為單位ΔT=以°C為單位的溫度上升
δ的特定值將對應于將熱敏電阻溫度提高1°C所需的功率水平。耗散因數取決于許多因素,因此耗散因數δ的熱敏電阻規格實際上僅作為指導而非精確數字。
2.7、工作溫度范圍:
這是熱敏電阻設計運行的溫度范圍。材料,結構和其他類似因素限制了設備可以操作的范圍。因此,為了可靠性和性能,熱敏電阻不應在其指定的溫度范圍之外操作。
2.8、最大功耗:
對于傳感應用,功耗保持較低以防止自發熱,但在某些情況下可能有理由消耗更多功率。如果不導致損壞,則不應超過最大功耗規范。為了獲得最大的可靠性,器件應在其最大功耗范圍內運行良好 - 通常僅為規格的50-66%。
基本上這些事主要的參數,可能還有其他一些參數
3、溫度阻值對照表
依然以 MF52 系列測溫型 NTC 熱敏電阻器規格書為例,可以看到此款NTC的主要參數R25、B值等
阻值是有一定誤差的,電阻的精度溫度精度以及溫度對應的阻值都有體現,我們可以根據這個表格來編寫代碼,獲取相應的溫度
溫度阻值對照表局部 溫度阻值對照表局部
4、NTC硬件設計及代碼實現
4.1 硬件設計及理論推導
硬件設計比較簡單,如圖所示:
如何由硬件電路設計得到我們想要的溫度呢?
首先我們需要用到ADC采集相關電壓,根據電壓計算得出相應的阻值,進一步,根據溫度、阻值對照表得出溫度:
1、計算采集點電壓
V_diodetem = Vref*Vtemp/(1<<12)
其中:V_diodetem為采集點電壓Vref為參考電壓,此處為3.3VVtemp為ADC獲取到的寄存器值(1<<12)為12位分辨率,2^12=4096
2、根據電阻反推RTC有效阻值
根據分壓計算:
Vdiodetem/Vref = Rntc/(Rntc+R)
化簡之后可得:
Rntc = R*Vtemp/((1<<12)-Vtemp)
其中,Rntc為NTC的有效阻值R為串聯電阻阻值
根據以上公司就可以計算得出相應的阻值了,再根據溫度-阻值對照表就可以反推出溫度值了
4.2 代碼實現
首先我們需要建立一個表格,用于存儲我們的阻值,用于查表尋找溫度,表格就設計為簡單一維數組模式,-40-105度,如下表,我們就構建完成了阻值跟溫度的對應,只需要通過ADC獲取阻值,查表獲取溫度即可
#defineNUMBER_NTC_TEMP145 constuint16NTC_MAP[NUMBER_NTC_TEMP]= { /*10R*/ 19572,18459,17422,16455,15551,14707,13917,13176,12481,11829,//-40~-31 11216,10640,10098,9588,9107,8654,8227,7823,7442,7082,//-30~-21 6742,6420,6116,5828,5556,5298,5053,4821,4601,4393,//-20~-11 4195,4010,3830,3660,3500,3347,3201,3064,2933,2808,//-10~-1 2696,2576,2468,2366,2268,2175,2086,2002,1921,1844,//0~9 1773,1700,1633,1570,1509,1450,1395,1341,1290,1241,//10-19 1195,1150,1107,1067,1027,990,953,918,885,852,//20-29 821,792,764,737,710,685,661,638,616,595,//30-39 575,555,536,518,500,484,468,452,438,423,//40-49 409,396,383,371,359,348,337,326,316,306,//50-59 297,288,279,270,262,254,247,239,232,225,//60-69 219,212,206,200,194,189,183,178,173,170,//70-79 163,159,154,150,146,141,138,134,130,127,//80-89 123,120,117,114,111,108,102,105,102,100,98,//90-99 95,93,90,88,86,84//100-105 }
ADC獲取電阻值:
根據上面的計算公式,計算得出NTC電阻值R,用于下面的根據阻值獲取溫度
如下代碼通過阻值獲取溫度,要注意我們是從-40度開始的,但是index是從0開始的,所以要記得 -40,獲取到真正的溫度
//通過阻值獲取溫度 uint8Get_Temp_By_Res(uint16R) { uint8i=0; for(i=0;i145;?i++) ??{ ????if?(R?>=NTC_MAP[i]) break; } returni; }
經驗交流
歡迎關注小飛哥玩嵌入式,一起解鎖更多嵌入式相關的開發知識
審核編輯:湯梓紅
-
電阻器
+關注
關注
21文章
3781瀏覽量
62115 -
熱敏電阻
+關注
關注
14文章
1163瀏覽量
101504 -
NTC
+關注
關注
7文章
424瀏覽量
52045 -
bms
+關注
關注
107文章
996瀏覽量
65951 -
溫敏電阻
+關注
關注
0文章
2瀏覽量
2172
原文標題:BMS中常用的NTC溫敏電阻及代碼實現
文章出處:【微信號:小飛哥玩嵌入式,微信公眾號:小飛哥玩嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論