当前位置: 首页 > article >正文

【STM32F042】使用NTC热敏电阻实现温度测量

1.NTC介绍

NTC是负温度系数的简写,全称是Negative temperature coefficient.意思是随着温度的升高,电阻值呈现下降趋势。常用作温度传感器。这里有一个式子表示负温度系数的电阻值:

                                                                        RT=R0*exp(B (1/T-1/T0))

RT为周围温度为T (K) 时的电阻值,R0是周围温度为T0 (K) 时的电阻值,注意这里的温度是开尔文温度B为B常数. 请记住这个B常数,它也是材料常数,一般在25摄氏度下测得。B值和电阻的温度系数正相关,也就是B值越大,电阻的温度系数越高。而温度系数是指每增加1℃,电阻值的变化率。也就是说,B值越大,电阻值的变化随着温度的增加越多,灵敏度越高.

阻温度特性
标题

 


2.温度测量常用电路

 如下图所示,温度测量常用电阻串联分压,ADC采集的方式进行。根据热敏电阻的特性,理想情况下,设VCC=3.3V,在25℃时,Rt = 10KΩ,此时ADC采集到的电压值为3.3V/2 = 1.65V.

3.温度转换

关于ADC的采集,我这里就不多讲了,我这里主要讲得到ADC转换值以后,如何得到温度值。

第一步是找到自己的热敏电阻的数据手册,查找B值和查看 它的温度-阻值曲线图,我使用的一款热敏电阻是SDNT1608,阻值10KΩ,精度±1%,B值为3450K(25°C~50°C).数据手册中的温度-阻值特性曲线如下图所示:

下面介绍两种温度转换的方法:计算法查表法


计算法

首先看计算法 ,回到我们的公式  RT=R0*exp(B*(1/T-1/T0)),这里R=10K,开氏度 = 摄氏度+273.15,所以T0 = 273.15+25 ,这里的exp()指的是e^(),所以我们可以反求出当前温度:

                                                                         T = 1 / [ln (RT/R0) / B + 1/T0]

那么我们唯一需要知道的就是Rt的值,回到上面的测电路,由电阻分压,设热敏电阻两端电压为VRt,固定10K电阻两端电压为VR,可以知道VR/VRt = R/Rt,从而:

                                                                              Rt = R*(3.3-VR)/VR

而我们实际得到的VR是转换后的ADC值,即VR = 3.3*ADC_Value/4096,把上面的式子整理一下,代码如下,需要注意的是计算出来的温度是开尔文温度,因此需要减去K值。最后的0.5是修正值。有条件的情况下,与标准仪器相比,来得到这个值。 

//温度转换
//参数:ADC转换值
float temp_trans(u16 ADC_value)
{//数据进入前,可先做滤波处理float Rt=0;   //NTC电阻float R=10000; //10K固定阻值电阻float T0=273.15+25;//转换为开尔文温度float B=3450; //B值float Ka=273.15; //K值float VR=0;//电压值VR=(float) (ADC_value/4096*3.3); //转换成电压值Rt=(3.3-VR)*10000/VR;//计算Rttemp=1/(1/T0+log(Rt/R)/B)-Ka+0.5; //计算温度return temp;
}

查表法 

一般而言,厂家会提供NTC电阻的温度与电阻表,如下图所示,基于这个表,我们只需要计算出当前热敏电阻的阻值Rt,然后查照此表,得到最接近的温度值即可。实际使用中,我们根据使用环境,摘出一部分表,比如我这里需要监控MOS的温度,所以我只需要25℃-100℃附近的值。。

例子:厂家给出的温度阻值表

我们定义一个数组来存放这些值,为了方便,我们直接存放ADC转换的值,可以做一个表格,计算出温度对应的ADC的值。请注意我这里只做了整数倍的表格,如果需要用到小数点后面的温度,正确的方法是使用公式RT=R0*exp(B (1/T-1/T0))在excel中计算得到步进值为0.1℃的温度表。我这里就不举例了。

已知等式关系:

                                                                        Rt = R*(3.3-VR)/VR          (1)

                                                                VR = 3.3*ADC_Value/4096      (2)

整理两式:                     

                                         ADC_Value = VR*4096/3.3 =3.3*R/(Rt+R)*4096/3.3 = R/(Rt+R)*4096

                                                                                                           

http://www.lryc.cn/news/2418514.html

相关文章:

  • 360手机官方刷机教程(N5系列通用)
  • linux 命令:top 详解
  • 比特率(码率) = 采样率 (Sampling rate ) * 位深 (Bit depth)* 声道数目/Opus/AAC/mp3
  • 人工智能常用的优化算法(梯度下降、牛顿法、拟牛顿法、共轭梯度法、)
  • 奇迹按键精灵挂机脚本_按键精灵做连击脚本(奇迹MU战士用)
  • 计算机专业术语e-mail是什么意思,E-mail是什么意思?
  • msvcrtd.dll下载安装方法是什么?快速修复msvcrtd.dll的手段
  • Windows RC版、RTM版、OEM版、RTL版、VOL版的区别
  • 未能加载文件或程序集“System.Data.SQLite, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或它
  • Julia的安装与配置详解(包含在Ubuntu 18
  • [android开发必备]Android开发者社区汇总
  • sql获取每一个类别中值最大的一条数据
  • 优秀网站源码、编程源码下载网站大集中(转载-自己用)
  • Asp.Net期末课程设计——个人财务管理系统(C#)(mysql或sqlserver)
  • 设定行车路线实验matlab,基于遗传算法的无时限多配送中心车辆调度问题研究
  • 爬虫小白看过来!详细的Python爬虫分析和案例展示
  • 最好用的WiFi密码共享APP推荐(能查看已连接WiFi密码)
  • Visifire WPF 图表控件 破解
  • MySQL里有2000万条数据,但是Redis中只存20万的数据,如何保证redis中的数据都是热点数据?
  • 思科模拟器--02.静态路由和默认路由配置24.5.15(24.5.20补)
  • ubuntu下安装杀毒软件Antivir
  • 2024年最全OpenGL学习脚印 使用索引绘图(index drawing),2024年最新玩转MySQL
  • 【网络奇缘】- 如何自己动手做一个五类 以太网 RJ45 网络电缆(1)
  • 数据库入口和密码:维普、万方和cnki(转)
  • codeblocks 汉化教程
  • Gtalk基本功能完成
  • Win7系统提示找不到audiosrv.dll文件的解决办法
  • NOD32离线升级更新包使用方法
  • C# ASP.NET校园外卖网站管理系统源码 前台+后台
  • iebook超级精灵2008 专业版破解