标题: ADC采集NTC温度 [打印本页]

作者: 1314love    时间: 2024-8-28 16:06
标题: ADC采集NTC温度
我看到很多什么查表法,不太理解,就是我现在下面这个程序,里面算出了NTC电阻值和温度,那比如我有个模式只要加热到150°就算完成,那是不是我只要算出温度和这个150°去比较就可以得出是否加热完成了,而查表法是不是也只是为了方便不用总是去查看手册而做到程序里面呢?
#include <math.h>
float T_c=0.0;   //温度值
// 定义常量
#define R_FIXED 10000.0 // 固定电阻值10kΩ
#define B_CONST 3950.0 // NTC的B常数
#define T0 298.15 // 25℃转换为开尔文
#define R0 10000.0 // NTC在25℃时的电阻值10kΩ

float calculate_temperature(float voltage) {
    float R_ntc, T;
    float V_supply = 3.3; // 电源电压3.3V

    // 计算NTC电阻值
    R_ntc = R_FIXED * (V_supply / voltage - 1);

    // 计算温度(开尔文)
    T = 1 / (1 / T0 + log(R_ntc / R0) / B_CONST);

    // 转换为摄氏度
    T = T - 273.15;

    return T;
}


作者: coody_sz    时间: 2024-8-30 09:59
NTC测温一般两种方法计算温度:查表法和公式计算法,都可以。
你只要一个点的温度,就不用计算了,查出这个点的ADC值直接判断即可。上述方式是能计算出所有温度的。
作者: 乐于助人    时间: 2024-8-30 10:24
查表法就是先把结果算出来,芯片不参与计算结果;最终就是只要知道阻值(ADC分压算出来),就可以通过查表对应查到温度。

很多高性价比8位MCU运算速度不快且没有乘法器,要运算"浮点型数据+乘除法+对数",这样算都要算老半天了,用查表很快就可以知道结果。
作者: xiaobendan001    时间: 2024-8-30 12:48
感觉查表比较快吧
作者: GlenXu    时间: 2024-9-6 12:07
当然查表快。
但表的点数影响将来的精度。要求不高或CPU资源有限的情况下,查表是优选!
作者: spirit01    时间: 2024-9-6 20:08
若是温度不需要显示,那就不用去计算了,ADC读出数据之后直接做判断岂不是更好
作者: tpf20166    时间: 2024-9-10 19:28
其实你还可以进行曲线拟合,采用多项式或者线性进行计算,这种方式会有误差,如果对温度精度没有太高要求可以采用这种方式




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1