打印
[STM8]

NTC10K测温度

[复制链接]
2504|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用的NTC10K测温度,用查表法可以实现,但是现在芯片的空间不够用了,想换成直接公式计算的方法,网上看的一些公式,我在算的时候好像都得不到准确值,有没有做过的呢?求教
沙发
宇容创行| | 2017-5-31 18:36 | 只看该作者
浮点库的大小,远超温度表格

使用特权

评论回复
板凳
wm20031015| | 2017-5-31 22:10 | 只看该作者
做表格,用插值,精度再高点分段曲线拟合

使用特权

评论回复
地板
mintspring| | 2017-5-31 23:30 | 只看该作者
精度应该是够的。

使用特权

评论回复
5
MOn51| | 2017-6-2 13:10 | 只看该作者
我们用NTC测温全是用计算方法,查表并不好。

使用特权

评论回复
6
MOn51| | 2017-6-2 13:12 | 只看该作者
有2种解法:上拉NTC,和下拉NTC。自己根据实际情况决定。然后就是AD计算NTC的电阻值。再带入公式计算。
#include        "use.h"
#include        "Ver.H"
#include        <math.h>

#define                K_TEMP                (273.15)
#define         NTC_R1                (10)                //25°C时的电阻值(10K)
#define                NTC_T1                (25+K_TEMP)        //温度值
#define                NTC_B                        (3900)                //B值
#define                Rm                                (10)                //标准电阻值(单位k)
//*************************************************************************
extern float CountAD(unsigned char ch);
extern void UpPower (unsigned int flag);
extern void DownPower(unsigned int flag);
extern void Get_U_AD(void);

/*************************************************************************
B=(ln(r1)-ln(r2))/(1/t1-1/t2) t1=25c-->[273.15+25c]

1/t2=1/t1-(ln(r1)-ln(r2))/B
**************************************************************************/
float Count_NTC(float NTC_R2){

        float i,j,r1,r2;

        r1=log(NTC_R1);
        r2=log(NTC_R2);
        j=(r1-r2)/NTC_B;
        i=1/NTC_T1-j;
        j=1/i-K_TEMP;
        return (j);
}
//****************************************************************************
//计算温度值         //得到电压值//单位mv
//****************************************************************************
float NTC_GetTemp_Do(float u1){
        float i1,r2;

        if(u1 !=0){
                Err.T_r=0;
                i1=((float)MAX_U_REF-u1)/Rm;                                                //得到电流
                r2=u1/i1;                                        //计算电阻
                u1=Mp1.Cb+Count_NTC(r2)+CBK;;
                if(fabs(u1-LedMenu.C) >0.25) LedMenu.C=u1;
                if(LedMenu.C > MAX_TH){ LedMenu.B=0;  Err.T_r=1; }
                if(LedMenu.C < MIN_TL){ LedMenu.B=0;  Err.T_r=2; }
        }else{
                Err.T_r=3;
        }
        return LedMenu.C;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

70

帖子

1

粉丝