stm32单片机利用ntc热敏电阻温度转换公式C语言版

首先

我们需要明确电路结构

热敏电阻的原理就不再赘述,本文不凑字数,只讲干货

必须要知道的就是串联电阻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左右