找回密码
 立即注册
查看: 1963|回复: 42

参考开天斧官方例程,就是套用公式,计算不出温度值,不知道哪里有问题,求大佬指点

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:126
  • 最近打卡:2025-04-28 09:32:22

3

主题

46

回帖

491

积分

等待验证会员

积分
491
发表于 2024-7-16 00:14:46 | 显示全部楼层 |阅读模式
参考开天斧官方例程,就是套用公式,计算不出温度值,不知道哪里有问题,求大佬指点

计算温度公式,就修改了基准电压和使用100k NTC,其余都没有变,AD值和电压值得出也是正确的,就是温度计算不出来. 截图202407160013324228.jpg
截图202407160008258717.jpg

截图202407160010269599.jpg

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4849

回帖

8382

积分

超级版主

DebugLab

积分
8382
发表于 2024-7-16 00:27:13 | 显示全部楼层

试试这里面的算法呢?
15-STC8H8K64U-P1.3测温P1.0加热-PID温控-USB-CDC返回.rar (852.99 KB, 下载次数: 112)
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4849

回帖

8382

积分

超级版主

DebugLab

积分
8382
发表于 2024-7-16 00:31:18 | 显示全部楼层
NTC 热敏电阻温度计算公式:Rt = Ro *EXP(B/T-B/To),温度单位为绝对温度K,开尔文。
(1) Rt 是热敏电阻在温度T下的阻值。T是绝对温度。
(2) Ro是热敏电阻在To(25度)时的阻值。10K的热敏电阻25℃的值为10K(即Ro=10K)。To = (273.15+25)。
(3) EXP(n) 是 e 的 n 次方。
(4) B值是热敏电阻的材料系数。
通过转换可以得到温度T与电阻Rt的关系:T=1/(1/To+ln(Rt/Ro)/B)
对应的摄氏温度t=T-273.15。


position = 1.0 / (1.0 / 298.15 + log((float)adc_12bit / (4096.0-(float)adc_12bit)) / 3950) - 273.15;        // 计算当前位置(温度)


DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:126
  • 最近打卡:2025-04-28 09:32:22

3

主题

46

回帖

491

积分

等待验证会员

积分
491
发表于 2024-7-16 17:44:11 | 显示全部楼层
Debu*** 发表于 2024-7-16 00:31
NTC 热敏电阻温度计算公式:Rt = Ro *EXP(B/T-B/To),温度单位为绝对温度K,开尔文。
(1) Rt 是热敏电阻在 ...

还是不行,adc_12bit,是读取的adc值吧?我打印出来的是-14.95。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:126
  • 最近打卡:2025-04-28 09:32:22

3

主题

46

回帖

491

积分

等待验证会员

积分
491
发表于 2024-7-16 17:44:36 | 显示全部楼层
打印出来的结果
截图202407161742111057.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2024-7-16 18:17:50 | 显示全部楼层
你NTC上拉电阻(参考电阻)用的多大?贴出你的电路图。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 2024-7-16 19:25:02 | 显示全部楼层
正好写过这个,几乎和你一模一样的,只是我用的纯库函数:串口发AD值,同时OLED显示AD和温度计算值。
(补充说明:全局和局部变量有区别,不会造成错误)

先来现象:
回答1.jpg

然后是程序:
1、先看ADC转换和温度计算
回答2.JPG

2、主程序中每1000ms读出并显示AD转换值和温度计算值
回答3.JPG



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 2024-7-16 19:33:04 | 显示全部楼层
float B = 3435.0;
Temperature = 1.0 / (1.0 / T2 + log(R2 / R1) / B) - K + 0.5;

这就是你的代码和官方参考代码的区别。
材料系数不同可以理解,因为你用的硬件不一样
但是公式是和参考公式不一样。如果材质、阻值都有区别,系数也有区别。还是重点看下你的公式。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:464
  • 最近打卡:2025-04-29 08:25:45

10

主题

130

回帖

564

积分

高级会员

积分
564
发表于 2024-7-16 22:33:44 | 显示全部楼层
本帖最后由 NTC 于 2024-7-23 22:39 编辑

float A = 2.23E-3,B = 2.38E-4,C = 3.36E-7;
        float temper;
        temper = 1/(A + B*log(R2) + C*pow(log(R2),3))-298.15;

试一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:126
  • 最近打卡:2025-04-28 09:32:22

3

主题

46

回帖

491

积分

等待验证会员

积分
491
发表于 2024-7-16 22:53:57 | 显示全部楼层
本帖最后由 a阿德 于 2024-7-16 22:56 编辑
梁*** 发表于 2024-7-16 18:17
你NTC上拉电阻(参考电阻)用的多大?贴出你的电路图。
截图202407162254089729.jpg 上拉电阻是10k,NTC使用的是B3950,100K-25℃

点评

你是100K的NTC,使用10K上拉电阻严重错误,结果肯定不对了。要改为100K上拉电阻。  详情 回复 发表于 2024-7-17 09:25
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 18:08 , Processed in 0.126943 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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