什么是 NTC
NTC 是熱敏電阻,其電阻值對溫度變化敏感,在不同的溫度下,可以呈現不同的電阻值。
熱敏電阻有兩類,一類是負溫度系數電阻(NTC),溫度增加時,電阻值降低,另一類是正溫度系數電阻(PTC),溫度增加時,電阻值增加。
熱敏電阻的電阻值計算
NTC 的電阻值 R 與溫度的關系可以近似表示為:
公式 1,電阻與溫度函數關系式。其中 T 是絕對溫度,數值為攝氏溫度+273.15,單位為 K(開爾文)。R0 一般取溫度 25℃即 298.15K 時的電阻值,對應的 T0 取 25℃,即 298.15K。B 為材料常數.不同的村料或者生產工藝都能導致 B 的數值發(fā)生變化,甚至在熱敏電阻的工作范圍內,B 的數值都可能發(fā)生變化,而不是嚴格的常數;
因為 NTC 的電阻與溫度呈非線性的關系,而且存著溫度的增加,溫度隨著溫度變化的變化率越小。
所以隨著溫度的增加,NTC 測溫的精度變化;所以比較適合于溫度變化范圍小的使用場景,比如環(huán)境溫度(約為 -20℃-50℃)或者是水溫的檢測(0℃-100℃)。
搜索到的一款 NTC,按照溫度為 25℃的電阻取值,可有 5KΩ,10 KΩ等不同的規(guī)格,而材料系數 B 值固定為 3950。
我們選擇 10K 的規(guī)格,根據公式 1,可以得到這款 NTC 的電阻與溫度的關系為:
公式 2,電阻與溫度的函數關系式
通過 excel 表格的公式,在 excel 工作薄的第一列輸入溫度,第二列輸入公式可以得到不同溫度下的電阻值,比如 0℃為 33.6 KΩ
采用 excel 計算 AD 值
NTC 測溫電路的設計
NTC 測溫核心在于具有 ADC 功能的 MCU,電路比較簡單,只需要將固定的電壓經過另一個高精度的電阻分壓接到 NTC 電阻,然后將分壓值連接到 MCU 的 ADC 輸入口。
NTC 測溫電路
R1 為 1%精度的電阻,R2 為 NTC,0.1uF 的電容 C1 除了可以濾除從電源引入或者從電路板感應來的高頻干擾信號,另外當 ADC 有多路 AD 輸入在轉換時,MCU 的 AD 模塊需要通過模擬開關切換不同的通道,再進行采樣轉換,電容 C1 可以在 ADC 切換通道之后,迅速向采樣電容充電,從而可以提到轉換速度,避免因采樣時間太短而導致測量不準確。
R1 上拉的電源應該和 MCU 的 ADC 的參考電源共用一個電源(在一般的設計中,MCU 的供電電源和 ADC 的參考電源共用一個電源)。
這是因為:
輸入 ADC 的 AD 值為(假設為 12 位的 ADC):
AD 值計算公式
如果上拉的電源 ADC 的參考電源共用一個電源,可以得到和上位電源無關的一個公式:
AD 值計算公式
所以可以消除電源精度對測試的影響,同時減少了計算的復雜性;
NTC 測溫軟件的設計
我看到在一個網友的程序設計中,他直接將公式 1 取對數,通過復雜的對數運算和倒數運算得到溫度值,這是不合適的,
主要是:
普通的單片機不一定提供這樣的數學函數庫。
普通的單片機沒有浮點數運算,浮點數都是轉成整弄運算的,不可避免會有舍入誤差。
單片機做對數,倒數的運算,只能是近似算法,而且會耗費大量的運算時間,可能會到幾百 ms 級,影響了對其它功能處理的實時性。
公式 1 只是一個近似公式,B 值也并不是一個常數,用這樣具體的解析公式計算,沒有辦法根據實際測量值對計算值進行標定,從而提高測量精度。
我在實際的項目中,采用的是分段線性化的方法,步驟如下:
采用 excel 表格自動生成 C 語言中包含 AD 與溫度的二維數組
將測溫范圍分若干個區(qū)間,比如在 0-100 度的范圍內,分 100 個區(qū)間,每個區(qū)間范圍為 1℃
計算或者實測每一個區(qū)間下限和區(qū)間上限的溫度值; 比如區(qū)間 30℃-31℃,根據公式 1 計算或者實際測試出 30℃以及 31℃的 AD 值。
將這些區(qū)間表示為 2 維數組(這個 2 維數組也可以通過實際測試形成);
取出將 AD 轉換并多次平均之后數值,編歷分段的區(qū)間,與這些區(qū)間的 AD 上、下限進行比較,判斷落在哪一個區(qū)間,
根據一次函數的公式進行區(qū)間內的插值修正:
測試溫度值=區(qū)間溫度下限+(區(qū)間溫度上限 - 區(qū)間溫度下限)/(區(qū)間 AD 上限 - 區(qū)間 AD 下限)*(AD 測量值 - 區(qū)間 AD 下限)
審核編輯 黃昊宇
-
NTC
+關注
關注
7文章
424瀏覽量
52045 -
測溫電路
+關注
關注
4文章
46瀏覽量
23385 -
電阻值
+關注
關注
0文章
89瀏覽量
11343
發(fā)布評論請先 登錄
相關推薦
評論