什么是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。

从淘宝搜索到的一款NTC

我们选择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取对数,通过复杂的对数运算和倒数运算得到温度值,这是不合适的,

主要是:

  1. 普通的单片机不一定提供这样的数学函数库。
  2. 普通的单片机没有浮点数运算,浮点数都是转成整弄运算的,不可避免会有舍入误差。
  3. 单片机做对数,倒数的运算,只能是近似算法,而且会耗费大量的运算时间,可能会到几百ms级,影响了对其它功能处理的实时性。
  4. 公式1只是一个近似公式,B值也并不是一个常数,用这样具体的解析公式计算,没有办法根据实际测量值对计算值进行标定,从而提高测量精度。

我在实际的项目中,采用的是分段线性化的方法,步骤如下:

采用excel表格自动生成C语言中包含AD与温度的二维数组

  1. 将测温范围分若干个区间,比如在0-100度的范围内,分100个区间,每个区间范围为1℃
  2. 计算或者实测每一个区间下限和区间上限的温度值; 比如区间30℃-31℃,根据公式1计算或者实际测试出30℃以及31℃的AD值。
  3. 将这些区间表示为2维数组(这个2维数组也可以通过实际测试形成);
  4. 取出将AD转换并多次平均之后数值,编历分段的区间,与这些区间的AD上、下限进行比较,判断落在哪一个区间,
  5. 根据一次函数的公式进行区间内的插值修正:

测试温度值=区间温度下限+(区间温度上限-区间温度下限)/(区间AD上限-区间AD下限)*(AD测量值-区间AD下限)

最后奉上本人使用的分段线性化的程序:

分段线性化程序

高精度NTC测温的硬件电路以及软件设计的更多相关文章

  1. PT100高精度测温电路 AD623+REF3030(转)

    源: PT100高精度测温电路 AD623+REF3030(很稳定)

  2. 一种基于NTC的控温电路及软件实现

    NTC(Negative Temperature Coefficient)是一种随温度上升时,电阻值呈指数关系减小的热敏电阻.应用广泛,最近我们就采用了NTC来控制加热并测温,并达到了预期的效果. 1 ...

  3. uTenux\AT91SAM3S4C开发套件———硬件电路介绍

    无论写什么嵌入式软件,我们都应该首先对硬件有所了解,这样更有助于我们写出高效精简的程序代码.本次活动我们使用的硬件平台是有悠龙公司提供的uTenux\AT91SAM3S4C开发套件,在悠龙公司的主页可 ...

  4. DS18B20测温

    项目需要实现分布式大规模测温,需要52个测温点,采样DS18B20进行设计. 30cm一个点,一共8个点串联.采用国标单芯单股纯铜硬线BV0.5做导线,测试一会儿正常,一会儿不正常.后面换线了,测试正 ...

  5. AI测温落地趋势:已成日常刚需 产品形态呈细分化发展

    现如今不管走到哪儿,机场.车站.医院.商场.超市等公共场所都已经将体温检测作为常态化防疫手段.自全球疫情发生以来,不管欧洲.亚洲,还是中东.东南亚等国家都已经意识到,疫情防控的第一道关口便是测温. 而 ...

  6. 数字逻辑实践4->面向硬件电路的设计思维--FPGA设计总述

    本文是对实验课上讲解的"面向硬件电路的设计思维"的总结,结合数字逻辑课本,进行提炼和整理. 主要来源是课件与本人整理,部分参考了网络大佬的博客. 本文主要介绍不同于之前软件设计思维 ...

  7. MLX90640 红外热成像仪测温模块简要介绍说明

    MLX90640 红外热成像仪测温模块简要介绍说明 (1) A 型和 B 型的区别 区别主要有以下几点 视场角不同: A 型为 110*75° , B 型为 55*35° ,通俗一点讲就是 A 型是广 ...

  8. 践行初心|方正璞华爱心捐赠人脸识别测温系统WelComID

    近日,方正璞华向金鸡湖社区卫生服务中心捐赠了人脸识别测温系统.该设备集人员识别.体温检测等功能于一体,在人员进出的时候完成体温的检测,从而判断是否有异常人员等问题,有效节省人力成本.减少人员接触风险, ...

  9. 【转】基于APD的光电探测器电路研究与设计

    光电探测器电路用于对光电转换器件输出的微弱电压或电流信号进行放大.处理和整形输出.对于不同探测用途而采用的光电转换器件不同,与之配合使用的光电探测器电路性能也因此而不同.如果用来进行光电转换,则重点考 ...

随机推荐

  1. SQL中merge into用法

    从备份表中更新字段到正式表中,使用 UPDATE 批量更新大量的数据,会出现效率低下,有时候甚至卡死的情况,后面通过使用 MERGE INTO 代替 UPDATE 执行批量更新,会提升执行效率. ME ...

  2. Chaikin Curves in Processing

    转自:https://sighack.com/post/chaikin-curves In this post, we’ll look at what Chaikin curves are, how ...

  3. 局域网-断网&劫持(kali)

    1.查看局域网中的主机 fping –asg 192.168.1.0/24 2.断网 arpspoof -i wlan0 -t 192.168.100 192.168.1.1 (arpspoof  - ...

  4. 五、Spring中的@Import注解

    一.使用@Import注解导入组件 @Import注解的作用是给容器中导入组件,回顾下我们给容器中导入组件的方式,可以通过Spring的xm配置方式,可以通过注解,如@Component等,也可以通过 ...

  5. Cannot get a STRING value from a NUMERIC cell问题的解决办法

    遇到以下错误的解决办法: 在cell加个setCellType()方法就可以了 cell.setCellType(CellType.STRING);

  6. JS系列:编程语言

    1.编程语言 html+css标记语言 js:轻量级的交互语言->全栈编程语言 - 面向对象: + C++ + JAVA + PHP + C# (.net doc) + JS - 面向过程 + ...

  7. 构建C1000K的服务器(2) – 实现百万连接的comet服务器

    转自:http://www.ideawu.net/blog/archives/742.html 这是关于 C1000K 序列文章的第二篇, 在前一篇文章 构建C1000K的服务器(1) – 基础 中, ...

  8. css3响应式布局教程—css3响应式

    响应式布局 一个网站能够兼容多个终端,并且在各个终端都可以很好展示体验. 媒体类型 在何种设备或者软件上将页面打开 123456789 all:所有媒体braille:盲文触觉设备embossed:盲 ...

  9. day47——css介绍、语法结构、选择器、css权重

    day47 今日内容 css介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素,给HTML设置样式,让它更加美观. 语法结构 div{ color:gree ...

  10. golang微服务框架go-micro 入门笔记1.搭建 go-micro环境

    微服务的本质是让专业的人做专业的事情,做出更好的东西. golang具备高并发,静态编译等特性,在性能.安全等方面具备非常大的优势.go-micro是基于golang的微服务编程框架,go-micro ...