stm32微控制器利用ntc熱敏電阻溫度轉換公式C語言版

不打魚光曬網發表於2022-01-09

首先

我們需要明確電路結構

熱敏電阻的原理就不再贅述,本文不湊字數,只講乾貨

必須要知道的就是串聯電阻R9程式中定義為resistanceInSeries ,精度越高越好

為了方便,先在程式中定義好你的熱敏型別和相關引數

float resistanceInSeries = 10000.0; //ntc的串聯電阻
float ntcBvalue = 3950.0;  //Bֵ值
float ntcR25 = 100000.0; //25度時電阻ֵ
float KelvinsZero = 273.15; //絕對零度
uint16_t systemPowerVoltage = 3300;
uint16_t adcValue;
float resolution = 0.805664;
float T25 = 298.15; //25 =KelvinsZero+25

 具體計算辦法  先通過NTC的電壓推算出串聯電阻的分壓

然後再計算出線路電流

再計通過歐姆定律從計算出熱敏電阻當前的阻值

最後計算出溫度

這些計算,需要引入math.h

務必注意

uint16_t ntcVoltage = adcValue * resolution;
        float ntcCurrent = (sysPowerVoltage- ntcVoltage)/ resistanceInSeries; //計算NTC的電流(A)
        float ntcResistance = ntcVoltage / ntcCurrent; //計算當前電阻值
        float temperature = (ntcBvalue * T25)
                / (T25 * (log(ntcResistance) - log(ntcR25)) + ntcBvalue);
        temperature -= KelvinsZero; //計算最終溫度

這個計算辦法,消耗記憶體少,消耗FLASH也少,即使小容量微控制器也可以用

先來看一下遮蔽這段程式碼後的程式佔用容量

 

在看一下執行這段程式碼後的程式佔用 消耗了大概120多個位元組的RAM和,flash佔用10kb左右

 

相關文章