由NTC电阻值 计算温度 C语言,高精度NTC测温电路设计及电阻值计算
什么是NTC
NTC是热敏电阻,其电阻值对温度变化敏感,在不同的温度下,可以呈现不同的电阻值。
热敏电阻有两类,一类是负温度系数电阻(NTC),温度增加时,电阻值降低,另一类是正温度系数电阻(PTC),温度增加时,电阻值增加。
热敏电阻的电阻值计算
NTC的电阻值R与温度的关系可以近似表示为:
公式1,电阻与温度函数关系式
其中T是绝对温度,数值为摄氏温度+273.15,单位为K(开尔文)。
R0一般取温度25℃即298.15K时的电阻值,对应的T0取25℃,即298.15K。
B为材料常数.不同的村料或者生产工艺都能导致B的数值发生变化,甚至在热敏电阻的工作范围内,B的数值都可能发生变化,而不是严格的常数;
因为NTC的电阻与温度呈非线性的关系,而且存着温度的增加,温度随着温度变化的变化率越小。
所以随着温度的增加,NTC测温的精度变化;
所以比较适合于温度变化范围小的使用场景,比如环境温度(约为-20℃-50℃)或者是水温的检测(0℃-100℃)。
搜索到的一款NTC,按照温度为25℃的电阻取值,可有5KΩ,10 KΩ等不同的规格,而材料系数B值固定为3950。
我们选择10K的规格,根据公式1,可以得到这款NTC的电阻与温度的关系为:
公式2,电阻与温度的函数关系式
通过excel表格的公式,在excel工作薄的第一列输入温度,第二列输入公式可以得到不同温度下的电阻值,比如0℃为33.6 KΩ
采用excel计算AD值
NTC测温电路的设计
NTC测温核心在于具有ADC功能的MCU,电路比较简单,只需要将固定的电压经过另一个高精度的电阻分压接到NTC电阻,然后将分压值连接到MCU的ADC输入口。
如下图:
NTC测温电路
R1为1%精度的电阻,R2为NTC,
0.1uF的电容C1除了可以滤除从电源引入或者从电路板感应来的高频干扰信号,另外当ADC有多路AD输入在转换时,MCU的AD模块需要通过模拟开关切换不同的通道,再进行采样转换,电容C1可以在ADC切换通道之后,迅速向采样电容充电,从而可以提到转换速度,避免因采样时间太短而导致测量不准确。
R1上拉的电源应该和MCU的ADC的参考电源共用一个电源(在一般的设计中,MCU的供电电源和ADC的参考电源共用一个电源)。
这是因为:
输入ADC的AD值为(假设为12位的ADC):
AD值计算公式
如果上拉的电源ADC的参考电源共用一个电源,可以得到和上位电源无关的一个公式:
AD值计算公式
所以可以消除电源精度对测试的影响,同时减少了计算的复杂性;
NTC测温软件的设计
我看到在一个网友的程序设计中,他直接将公式1取对数,通过复杂的对数运算和倒数运算得到温度值,这是不合适的,
主要是:
普通的单片机不一定提供这样的数学函数库。
普通的单片机没有浮点数运算,浮点数都是转成整弄运算的,不可避免会有舍入误差。
单片机做对数,倒数的运算,只能是近似算法,而且会耗费大量的运算时间,可能会到几百ms级,影响了对其它功能处理的实时性。
公式1只是一个近似公式,B值也并不是一个常数,用这样具体的解析公式计算,没有办法根据实际测量值对计算值进行标定,从而提高测量精度。
我在实际的项目中,采用的是分段线性化的方法,步骤如下:
采用excel表格自动生成C语言中包含AD与温度的二维数组
将测温范围分若干个区间,比如在0-100度的范围内,分100个区间,每个区间范围为1℃
计算或者实测每一个区间下限和区间上限的温度值; 比如区间30℃-31℃,根据公式1计算或者实际测试出30℃以及31℃的AD值。
将这些区间表示为2维数组(这个2维数组也可以通过实际测试形成);
取出将AD转换并多次平均之后数值,编历分段的区间,与这些区间的AD上、下限进行比较,判断落在哪一个区间,
根据一次函数的公式进行区间内的插值修正:
测试温度值=区间温度下限+(区间温度上限-区间温度下限)/(区间AD上限-区间AD下限)*(AD测量值-区间AD下限)
最后奉上本人使用的分段线性化的程序:
由NTC电阻值 计算温度 C语言,高精度NTC测温电路设计及电阻值计算相关推荐
- 热敏电阻如何查表计算温度_简单说说NTC热敏电阻
NTC热敏电阻是一个很简单的温度传感器,在消费类电子产品中非常常见. NTC又被称为负温度系数热敏电阻,是一类电阻值随温度增大而减小的一种传感器电阻. 负温度系数热敏电阻与之对应的还有正温度系数热敏电 ...
- _ISD-SMG518L2CT-F 海康威视测温人脸安检门 温度精度±0.5℃ 人脸抓拍金属探测
ISD-SMG518L2CT-F 海康威视测温人脸安检门 无感测温:可对通过安检门的人员进行脸部温度测试并进行人员准确匹配, 温度精度:±℃, 搭配黑体精度可达 ±℃ 人脸抓拍: 可对通过安检门的人员 ...
- 论文分享-《基于数据驱动多输出 ARMAX 建模的高炉十字测温中心温度》
1.简介 最近在学习研究NARMAX,故也分享下自己看的一篇论文. 2018 年 3 月 的<基于数据驱动多输出 ARMAX 建模的高炉十字测温中心温度>.主要是采用NARMAX模型进行预 ...
- 4路LORA无线测温PT100传感器工业设备实验室老化温度监控记录仪
博客园首页新随笔联系管理随笔 - 434 文章 - 0 评论 - 28 阅读 - 56万 4路LORA无线测温PT100传感器工业设备实验室老化温度监控记录仪 1.系统功能介绍 本项目lora无线测温 ...
- c语言ntc程序,NTC热敏电阻温度计算以及C语言实现
一:硬件设计 这里使用的是MF52-103热敏电阻,其中B为3950,它与10K电阻串联,由于热敏电阻随着温度的升高,电阻值降低,所以10K电阻两端的电压将上升. 二:NTC热敏电阻的计算 NTC 热 ...
- ntc温度控制程序 c语言,NTC热敏电阻温度计算以及C语言实现
一:硬件设计 这里使用的是MF52-103热敏电阻,其中B为3950,它与10K电阻串联,由于热敏电阻随着温度的升高,电阻值降低,所以10K电阻两端的电压将上升. 二:NTC热敏电阻的计算 NTC 热 ...
- C语言--NTC阻值转温度算法
1.常见的NTC类型 (1)3435: (2)3950: 2.温度转换的常用方式 (1)查表法: (2)表达式直接转换: 3.NTC阻值转温度算法 因为NTC的温度与阻值并不是线性的关系,所以需要算法 ...
- NTC热敏电阻计算温度之C代码
NTC热敏电阻计算温度之C代码 代码已经验证 温度误差可以接受 验证 代码已经验证 温度误差可以接受 下面展示部分 代码. ///< ADC 单次采集 Ntc uint32_t Adc_Read ...
- 我的C语言学习之路1——求串联电阻值
我不是科班的计算机专业的学生,但是因为自己的专业也学点编程语言(不过是用来应付考试的),在我阅读了<黑客与画家>,对计算机产生了浓厚的兴趣,正如书中所言通过学习计算机去了解新时代,这个时代 ...
- 【Arduino+ESP32专题】案例:简单的实现NTC热敏电阻检测板卡温度
在文章[分立元件]NTC热敏电阻的B值中我们了讲解了负温度系数 (NTC) 热敏电阻的B值,提到了B常数显示的是热敏电阻的电阻值变化倾向,是负温度系数(NTC) 热敏电阻的基本特性参数之一.如下图所示 ...
最新文章
- Using Regular Expression to validate a Guid
- 新书《活用UML-需求分析高手》 序
- Scala中心基金会成立
- win10优化开机进程
- 使用分析函数进行行列转换
- VSftp常规服务配置
- 企业实战(Jenkins+GitLab+SonarQube)_04_Jenkins安装推荐插件
- 写给中学生的算法入门:学代码之前看这篇就够了
- 米斯特白帽培训讲义 漏洞篇 CSRF
- nacos-demo feign调用
- 线搜索中有最速下降法、牛顿法、拟牛顿法、共轭梯度法汇总
- 仿宋GB_2312字体在wps,office中的安装下载使用
- CAN为什么会发送失败
- mq消息队列到底是什么
- Kalman Filter— Priori/Posteriori Error Covariance Matrix
- C#winform 控件鼠标落下变色,鼠标挪开恢复原色
- Consider defining a bean of type问题
- 【原创】关于Golang和Rust对比及语言的选择思考
- HDU1431 素数回文(打表)[C,C++,Java]
- Redis应用项目---抢红包功能(二)