a阿德 发表于 2024-7-16 00:14:46

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

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

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




DebugLab 发表于 2024-7-16 00:27:13


试试这里面的算法呢?

DebugLab 发表于 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;        // 计算当前位置(温度)


a阿德 发表于 2024-7-16 17:44:11

DebugLab 发表于 2024-7-16 00:31
NTC 热敏电阻温度计算公式:Rt = Ro *EXP(B/T-B/To),温度单位为绝对温度K,开尔文。
(1) Rt 是热敏电阻在 ...

还是不行,adc_12bit,是读取的adc值吧?我打印出来的是-14.95。

a阿德 发表于 2024-7-16 17:44:36

打印出来的结果

梁工 发表于 2024-7-16 18:17:50

你NTC上拉电阻(参考电阻)用的多大?贴出你的电路图。

Yim_Hom 发表于 2024-7-16 19:25:02

正好写过这个,几乎和你一模一样的,只是我用的纯库函数:串口发AD值,同时OLED显示AD和温度计算值。
(补充说明:全局和局部变量有区别,不会造成错误)

先来现象:


然后是程序:
1、先看ADC转换和温度计算


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




Yim_Hom 发表于 2024-7-16 19:33:04

float B = 3435.0;
Temperature = 1.0 / (1.0 / T2 + log(R2 / R1) / B) - K + 0.5;
这就是你的代码和官方参考代码的区别。
材料系数不同可以理解,因为你用的硬件不一样
但是公式是和参考公式不一样。如果材质、阻值都有区别,系数也有区别。还是重点看下你的公式。

NTC 发表于 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;

试一下

a阿德 发表于 2024-7-16 22:53:57

本帖最后由 a阿德 于 2024-7-16 22:56 编辑

梁工 发表于 2024-7-16 18:17
你NTC上拉电阻(参考电阻)用的多大?贴出你的电路图。上拉电阻是10k,NTC使用的是B3950,100K-25℃
页: [1] 2 3 4 5
查看完整版本: 参考开天斧官方例程,就是套用公式,计算不出温度值,不知道哪里有问题,求大佬指点