NTC作為一種負氣溫系數熱敏內阻,其電阻隨氣溫下降而減少。借助熱敏內阻的特點可以做氣溫傳感測量體溫應用在單片機中。下邊簡單介紹下,在單片機中AD檢查熱敏內阻電流值,之后轉換成內阻值電阻的測量如何引入,求出當前的實際氣溫。
一、熱敏內阻公式
NTC熱敏內阻氣溫估算公式:Rt=R*EXP(B*(1/T1-1/T2))
其中,T1和T2指的是K度,即開爾文體溫。
Rt是熱敏內阻在T1氣溫下的電阻。
R是熱敏內阻在T2常溫下的標稱電阻。100K的熱敏內阻25℃的值為100K(即R=100K)。T2=(273.15+25)
EXP是e的n次方
B值是熱敏內阻的重要參數
通過轉換可以得到體溫T1與內阻Rt的關系T1=1/(ln(Rt/R)/B+1/T2)(所以對應只有一個Rt未知數即可求出T1實時體溫)
對應的攝氏氣溫t=T1-273.15,同時+0.5的偏差矯治。
二、硬件聯接形式
單片機通過ADC檢查熱敏內阻電流值,或則相關分壓值。通常在熱敏內阻上串聯與Rt電阻相同的分壓內阻。由于估算T1公式中須要曉得Rt/R的比值關系,所以在這樣的串聯分壓電路時內阻比值即等于電流比值,不須要將測得電流值再換算成內阻值。具體電路圖如下:
圖中的測量電流是測分壓內阻R3的,通常來說直接測RTC更為直觀。R2因為單片機IO的高阻態等設置,R2上相當于開路,所以測得電流可以當作為R3上的電流。
三、程序實現
ADC獲取過程就不再贅言了,相關程序可以在前一篇博客中查看,我那邊直接將獲取了相應體溫后怎樣處理程序展示下:
(float)
float=0;
float=(-)/;
//內阻比值相當于電流比值,依照電路圖估算,
=1.0/((log())/3950.0+1.0/(273.15+25.0))-273.15;
//("tempis%.2frn,",);
();
}//為內部電流值,為對應AD測量的電流值(在那邊是電路圖中的R3電流)
補充下知識點:
物理中的公式和c語言中有小小的區別。
1、數學中
log是對數符號,右側寫真數和底數(前面是真數,下邊是底數)
lg是以10為底數(例lg100=2)(lg為常用對數)
ln是以e為底數(lne2=2)(ln為自然對數e=2....)
2、c語言中
c語言上面只有兩個函數log和log10
其中
函數log(x)表示是以e為底的自然對數,即ln(x)
函數log10(x)以10為底的對數電阻的測量如何引入,即lg(x)
以其它數為底的對數用換底公式來表示
函數如下:
(,)
(b)/log(a);