找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1142|回复: 6
打印 上一主题 下一主题
收起左侧

ADC采集NTC温度

[复制链接]
跳转到指定楼层
楼主
ID:1041297 发表于 2024-8-28 16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我看到很多什么查表法,不太理解,就是我现在下面这个程序,里面算出了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;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1034262 发表于 2024-8-30 09:59 | 只看该作者
NTC测温一般两种方法计算温度:查表法和公式计算法,都可以。
你只要一个点的温度,就不用计算了,查出这个点的ADC值直接判断即可。上述方式是能计算出所有温度的。
回复

使用道具 举报

板凳
ID:1131074 发表于 2024-8-30 10:24 | 只看该作者
查表法就是先把结果算出来,芯片不参与计算结果;最终就是只要知道阻值(ADC分压算出来),就可以通过查表对应查到温度。

很多高性价比8位MCU运算速度不快且没有乘法器,要运算"浮点型数据+乘除法+对数",这样算都要算老半天了,用查表很快就可以知道结果。
回复

使用道具 举报

地板
ID:1109793 发表于 2024-8-30 12:48 | 只看该作者
感觉查表比较快吧
回复

使用道具 举报

5#
ID:469589 发表于 2024-9-6 12:07 | 只看该作者
当然查表快。
但表的点数影响将来的精度。要求不高或CPU资源有限的情况下,查表是优选!
回复

使用道具 举报

6#
ID:1052053 发表于 2024-9-6 20:08 | 只看该作者
若是温度不需要显示,那就不用去计算了,ADC读出数据之后直接做判断岂不是更好
回复

使用道具 举报

7#
ID:647145 发表于 2024-9-10 19:28 | 只看该作者
其实你还可以进行曲线拟合,采用多项式或者线性进行计算,这种方式会有误差,如果对温度精度没有太高要求可以采用这种方式
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表