NTC温度检测程序

NTC公式:RT = RN *EXP(B*(1/T-1/TN))

对上面的公式解释如下:

1.       RT 是热敏电阻的当前阻值

2.       R是热敏电阻在TN常温下的标称阻值

3.       B值是热敏电阻的温度系数

4.       EXP是e的n次方;

5.       这里T和TN指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度;

6.       T为当前温度;TN为常温25℃;

比如 NTC热敏电阻 10K (型号:NTC_10k_3950) 5%精度 B值:3950 1%

10K就是25℃时的阻值,3950为温度系数;

 

下面是对单片机ADC采集到的数值的计算:

 

ADC采集到的值为NTC的电压值.

R16的值最好和RN一样,方便计算.

#include "math.h"

#define B 3950.0//温度系数

#define TN 298.15//额定温度(绝对温度加常温:273.15+25)

#define RN 10// 额定阻值(绝对温度时的电阻值10k)

#define BaseVol 5.04 //ADC基准电压
float Get_Tempture(u16 adc)
{
        float RV,RT,Tmp;
        RV=BaseVol/1024.0*(float)adc;//ADC为10位ADC,求出NTC电压:RV=ADCValu/1024*BaseVoltag
        RT=RV*10/(BaseVol-RV);//求出当前温度阻值 (BaseVoltage-RV)/R16=RV/RT;
        Tmp=1/(1/TN+(log(RT/RN)/B))-273.15;//%RT = RN exp*B(1/T-1/TN)%
         return Tmp;
}

RV=BaseVol/1024.0*(float)adc;这里用到的是1024是指ADC是10位的ADC,如果用的是12位的ADC就要用4096去计算了,如果是N位的,就要用2的N次方去算。

Arduino上面测结果

 实测电路板的NTC电阻为8.27

通过查表可知,

温度是29度时,NTC3950 @10K 的阻值在8.5078~8.3104之间

温度是30度时,NTC3950 @10K 的阻值在8.1556~8.0574之间

因此可以推测出,此时的温度应该在29~30之间,并偏向于30度,而程序计算出来的温度是29.66

下面是10K NTC3950的温度对照表

 

  • 19
    点赞
  • 185
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
### 回答1: STM32 HAL库是STM32开发过程中常用的一个开发库,它为我们提供了很多方便的API,能够简化开发的流程,提高开发效率。其中,NTC热敏电阻是一种常用的温度传感器,其阻值随温度的变化而变化。本文将介绍如何使用STM32 HAL库来检测NTC温度。 首先,需要将NTC连接到STM32的ADC采样引脚上,通常采用电压分压的方式将NTC输出的电压信号转换为0~3.3V的输入电压信号。接着,使用STM32 HAL库的ADC驱动程序进行ADC通道的配置和采样,采样完成后通过换算公式将ADC输出值转换为对应的温度值。 以下是详细步骤: 1. 配置ADC通道 在HAL库中,需要使用ADC_InitTypeDef结构体对ADC进行配置。首先,需要配置输入通道(即连接NTC的引脚),以及ADC分辨率、采样时间等参数。在配置完成后,使用HAL_ADC_Init函数将配置好的结构体作为参数传入,初始化ADC。 2. 启动ADC采样 调用HAL_ADC_Start函数,开始进行ADC采样。 3. 等待ADC采样结束 使用HAL_ADC_PollForConversion函数等待ADC采样完成。在函数返回后,通过HAL_ADC_GetValue函数获取ADC输出值。 4. 换算温度值 利用NTC的公式将ADC输出值转化为温度值。具体公式需要结合NTC的实际参数进行计算,这里不再赘述。 以上就是如何使用STM32 HAL库进行NTC温度检测的详细步骤。需要注意的是,在实际应用中,还需考虑到温度采样的精度、噪声等问题。但是,使用STM32 HAL库可以省去一部分驱动程序开发的工作量,同时也提高了代码的可读性和可维护性。 ### 回答2: STM32 HAL库是为STM32系列微控制器编写的一个高级API,该库提供了许多有用的函数和接口来简化硬件驱动程序的编写。在使用STM32 HAL库时,常常需要与温度检测器这样的传感器进行交互。其中一种常见的温度检测器是NTC(Negative Temperature Coefficient)热敏电阻。NTC的电阻随温度的变化而变化,这使得NTC常被用来测量温度。 首先,在HAL库中,需要使用ADC(Analog-to-Digital Converter)模块来读取NTC的阻值。可以使用HAL_ADC_XXX()函数来控制ADC模块,并与NTC电路相连接的引脚。 其次,在NTC检测温度时,需要根据NTC温度特性曲线求解。可以使用HAL库提供的数学函数库,例如sqrt()和pow(),来处理温度特性曲线,以产生正确的温度读数。 最后,在使用NTC时,需要考虑到NTC的电路失真和误差。可以采用校准技术和电路优化来降低误差和提高NTC检测温度的精确度。 总之,在使用STM32 HAL库检测NTC温度时,需要了解和掌握ADC模块的相关函数,以及数学函数库的应用,同时需要重视NTC电路的失真和误差的影响,并采取有效措施来提高温度检测的准确性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值