-
1 # 電子產品設計方案
-
2 # 玩轉嵌入式
NTC是負溫度係數的熱敏電阻,隨著溫度的升高電阻值變小,電阻值和溫度值呈現一定的關係曲線,透過計算當前的電阻值便可以得出環境溫度。NTC在家電行業應用非常廣發,如熱水器、咖啡機、消毒櫃中等對測溫精度要求不高的的產品上有較多應用。
1NTC測溫硬體電路設計NTC的硬體設計非常簡單,只需要和定值電阻串聯分壓,在溫度變化時採集實時的電壓值即可。其硬體設計如下所示:
以初始值為100K的NTC熱敏電阻為例,將NTC和等值的精密電阻串聯,在室溫狀態下,兩電阻值相等,公共點的電壓為1/2VCC,隨著溫度的升高,NTC的電阻值下降,公共點的電壓變小。微控制器採集該電壓值,即可計算出當前的電阻值,並進一步計算出所對應的溫度值,從而實現測溫功能。
2NTC測溫的程式設計上面已經介紹了硬體原理以及電壓值的變化方法,下面就需要透過設計程式來計算電阻值和所對應的溫度值。這裡有兩種方法,第一種是查表法,第二種是根據公式計算。介紹第二種。
下圖就是我在專案中所使用的兩條比較關鍵的語句。一條用來結算電阻值,一條根據電阻值結算當前的溫度值。
由於NTC的電阻值與B值以及開爾文溫度都相關,計算公式為:
Rt = R *EXP(B*(1/T1-1/T2))
其中R為初始值,即室溫下的溫度值,本例為100K,T2=(273.15+25),T1為所要求的值,B為NTC的B值,這裡為3950,透過以上公式變形後就可以得出程式中的第二個語句。這裡所得到的關係就是一條線性曲線,但是該線性曲線會有誤差,需要後邊的程式來修正,修正程式這裡不提供。
透過以上就可以透過NTC的電阻值計算出當前的環境溫度。
-
3 # IT自動化交流
什麼是NTC
NTC是熱敏電阻,其電阻值對溫度變化敏感,在不同的溫度下,可以呈現不同的電阻值。
熱敏電阻有兩類,一類是負溫度係數電阻(NTC),溫度增加時,電阻值降低,另一類是正溫度係數電阻(PTC),溫度增加時,電阻值增加。
熱敏電阻的電阻值計算NTC的電阻值R與溫度的關係可以近似表示為:
公式1,電阻與溫度函式關係式
其中T是絕對溫度,數值為攝氏溫度+273.15,單位為K(開爾文)。
R0一般取溫度25℃即298.15K時的電阻值,對應的T0取25℃,即298.15K。
B為材料常數.不同的村料或者生產工藝都能導致B的數值發生變化,甚至在熱敏電阻的工作範圍內,B的數值都可能發生變化,而不是嚴格的常數;
因為NTC的電阻與溫度呈非線性的關係,而且存著溫度的增加,溫度隨著溫度變化的變化率越小。
所以隨著溫度的增加,NTC測溫的精度變化;
所以比較適合於溫度變化範圍小的使用場景,比如環境溫度(約為-20℃-50℃)或者是水溫的檢測(0℃-100℃)。
下圖是在淘寶上搜索到的一款NTC,按照溫度為25℃的電阻取值,可有5KΩ,10 KΩ等不同的規格,而材料系數B值固定為3950。
從淘寶搜尋到的一款NTC
我們選擇10K的規格,根據公式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與溫度的二維陣列
將測溫範圍分若干個區間,比如在0-100度的範圍內,分100個區間,每個區間範圍為1℃
計算或者實測每一個區間下限和區間上限的溫度值; 比如區間30℃-31℃,根據公式1計算或者實際測試出30℃以及31℃的AD值。
將這些區間表示為2維陣列(這個2維陣列也可以透過實際測試形成);
取出將AD轉換並多次平均之後數值,編歷分段的區間,與這些區間的AD上、下限進行比較,判斷落在哪一個區間,
根據一次函式的公式進行區間內的插值修正:
測試溫度值=區間溫度下限+(區間溫度上限-區間溫度下限)/(區間AD上限-區間AD下限)*(AD測量值-區間AD下限)
最後奉上本人使用的分段線性化的程式:
分段線性化程式
回覆列表
NTC是負溫度係數的熱敏電阻,電阻值與溫度有著對應的關係
因為NTC的阻值與溫度有著對應的關係,所以只要我們知道它當前的電阻值就可以得到對應的溫度,將溫度與電阻值的資料做成一張線性化圖表就可以了。
NTC測溫方法使用NTC測溫我們需要用到帶ADC功能的MCU,當然我們是沒有辦法直接測量到電阻值大小的。但可以透過電阻分壓,測出當前電壓值,然後計算得到電阻值參考電壓值必須是準確的,與NTC串聯的固定電阻與需要精確的,當NTC的阻值發生變化時,ADC就會測出不同的電壓,Vacd=5x(Rntc/(Rntc+R2)),R2是固定的,得到Vacd就可以算出Rntc的阻值