由NTC电阻值 计算温度 C语言,高精度NTC测温电路设计及电阻值计算

什么是NTC

NTC是热敏电阻,其电阻值对温度变化敏感,在不同的温度下,可以呈现不同的电阻值。

热敏电阻有两类,一类是负温度系数电阻(NTC),温度增加时,电阻值降低,另一类是正温度系数电阻(PTC),温度增加时,电阻值增加。

热敏电阻的电阻值计算

NTC的电阻值R与温度的关系可以近似表示为:

7496df2e0b16f4506a0dc9e7765c48ad.png

公式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的电阻与温度的关系为:

71b8fb42e1204866d518814729cb5931.png

公式2,电阻与温度的函数关系式

通过excel表格的公式,在excel工作薄的第一列输入温度,第二列输入公式可以得到不同温度下的电阻值,比如0℃为33.6 KΩ

29f9441ba1d9b74efd3eb3b8f42c2916.png

采用excel计算AD值

NTC测温电路的设计

NTC测温核心在于具有ADC功能的MCU,电路比较简单,只需要将固定的电压经过另一个高精度的电阻分压接到NTC电阻,然后将分压值连接到MCU的ADC输入口。

如下图:

0bbdd80e6e7e5a4cedf187423e3d4126.png

NTC测温电路

R1为1%精度的电阻,R2为NTC,

0.1uF的电容C1除了可以滤除从电源引入或者从电路板感应来的高频干扰信号,另外当ADC有多路AD输入在转换时,MCU的AD模块需要通过模拟开关切换不同的通道,再进行采样转换,电容C1可以在ADC切换通道之后,迅速向采样电容充电,从而可以提到转换速度,避免因采样时间太短而导致测量不准确。

R1上拉的电源应该和MCU的ADC的参考电源共用一个电源(在一般的设计中,MCU的供电电源和ADC的参考电源共用一个电源)。

这是因为:

输入ADC的AD值为(假设为12位的ADC):

a2305fbe58a2cfd846613e3cb87c83be.png

AD值计算公式

如果上拉的电源ADC的参考电源共用一个电源,可以得到和上位电源无关的一个公式:

661df9cd6246a8edaa5f2407c3600eb1.png

AD值计算公式

所以可以消除电源精度对测试的影响,同时减少了计算的复杂性;

NTC测温软件的设计

我看到在一个网友的程序设计中,他直接将公式1取对数,通过复杂的对数运算和倒数运算得到温度值,这是不合适的,

主要是:

普通的单片机不一定提供这样的数学函数库。

普通的单片机没有浮点数运算,浮点数都是转成整弄运算的,不可避免会有舍入误差。

单片机做对数,倒数的运算,只能是近似算法,而且会耗费大量的运算时间,可能会到几百ms级,影响了对其它功能处理的实时性。

公式1只是一个近似公式,B值也并不是一个常数,用这样具体的解析公式计算,没有办法根据实际测量值对计算值进行标定,从而提高测量精度。

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

a961996ec58417d5d9c5e84330143f14.png

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

将测温范围分若干个区间,比如在0-100度的范围内,分100个区间,每个区间范围为1℃

计算或者实测每一个区间下限和区间上限的温度值; 比如区间30℃-31℃,根据公式1计算或者实际测试出30℃以及31℃的AD值。

将这些区间表示为2维数组(这个2维数组也可以通过实际测试形成);

取出将AD转换并多次平均之后数值,编历分段的区间,与这些区间的AD上、下限进行比较,判断落在哪一个区间,

根据一次函数的公式进行区间内的插值修正:

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

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

fd3650cce8d479c938791abe7131b2f0.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

史上最被低估的两个学科!它们远比你想的更重要!

▲点击查看哈佛大学本杰明教授曾说:“越是到了高等教育的阶段,人们就越重视从历史中总结经验,尤其是精英阶层。很多人都想好好读读历史,但是一直以来,读历史都有一个问题:看着满满都是字的大部头&#xff0…

c#10:string内插处理

string内插是指用$"日期:{DateTime.Now.ToString("yyyy年MM月dd日")}。",这种使用方式,在c#10.0时,引进了这种string内插的处理,可以写自定义的处理程序,来提升使用体验。具体用法见下…

Application Fundamentals

Application Fundamentals 署名:译言biAji 链接:http://developer.android.com/guide/topics/fundamentals.html 应用程序基础(Application Fundamentals) Android应用程序使用Java做为开发语言。aapt工具把编译后的Java代码连同其它应用程序需要的数据…

Android之玩转选项卡(TabHost、TabWidget、FrameLayout)

选项卡(TabHost、TabWidget、FrameLayout) 选项卡由TabHost、TabWidget、FrameLayout 这3个组件构成,用于实现一个多标签页的用户界面,不费话了,先爆图,就知道是什么鬼了,怎么用了。 第一步 配置activity_main.xml <TabHost xmlns:android="http://schemas.andro…

c语言扑克牌随机发三张牌,扑克牌发三张概率组合一副扑克牌52张(不含大、小王),发三张牌,一共多少种组合.另外:1)三张中含一对的组合有多少张?(...

共回答了20个问题采纳率&#xff1a;95%这个题目我喜欢所有组合为&#xff1a;C(52,5)1、A组为三张不关联明牌,组合&#xff1a;52*48*44,与B组二张暗牌组成一个对子.B的组合为&#xff1a;(12-3)*(52-12).概率&#xff1a;(12-3)*(52-12)*2/C(49,2)30.6%组成两个对子的概率3*3…

iOS使用NSURLConnection发送同步和异步HTTP Request

1. 同步发送- (NSString *)sendRequestSync{// 初始化请求, 这里是变长的, 方便扩展NSMutableURLRequest *request [[NSMutableURLRequest alloc] init];// 设置[request setURL:[NSURL URLWithString:urlStr]];[request setHTTPMethod:"POST"];[request setValue:h…

请设计各种管理系统、业务系统的大哥大姐们,设计新系统时,拜托您,请允许我修改用户名、密码...

大概在2-3年前&#xff0c;我在宁波最大的一家IT公司工作&#xff0c;我们公司日常开发人员经常会使用的系统有很多&#xff0c;夸张的 说接近10个吧&#xff0c;有些是自己公司开发的&#xff0c;有些是成熟的商品化软件&#xff0c;这些系统又由不同的维护人员维护&#xff0…

这是你想象中的泳池美女吗?爱了吗?

1 小手一插&#xff0c;谁都不爱▼2 玩滑板讲究顺其自然哪里摔倒&#xff0c;就在哪里跪下▼3 陪老婆待产的企鹅们▼4 这就是米其林三星级的地摊吗&#xff1f;▼5 年度最好的送男友礼物▼6 张雨绮表演内心戏全程▼7 说&#xff01;这种极品西瓜哪里有卖&#xff1f;▼你…

如何快速学习使用mybatis以及总结

第一步 让我来介绍下初学者怎么快速更好的使用mybatis这个框架 使用mybatis的话&#xff0c;每个Dao就对于一个相应的xml文件&#xff0c;我来给个例子个大家看&#xff0c;先要配置好环境。在application.xml里面<!-- c3p0 connection pool configuration 数据库的配置 --…

Abp Vnext Vue3 的版本实现

Abp Vnext Pro 的 Vue3 实现版本 开箱即用的中后台前端/设计解决方案开始Github地址文档地址演示地址系统功能[x] 用户管理[x] 角色管理[x] 审计日志[x] 后台任务[x] 集成事件[x] IdentityServer4[x] 客户端管理[x] Api 资源管理[x] ApiScope 管理[x] Identity 资源管理[x] Sin…

递归函数就兔子数C语言,【C语言】求斐波那契(Fibonacci)数列通项(递归法、非递归法)...

意大利的数学家列昂那多斐波那契在1202年研究兔子产崽问题时发现了此数列&#xff0e;设一对大兔子每月生一对小兔子&#xff0c;每对新生兔在出生一个月后又下崽&#xff0c;假若兔子都不死亡&#xff0e;问&#xff1a;一对兔子&#xff0c;一年能繁殖成多少对兔子&#xff1…

struts2配置中Action的name 和package的name和namespace作用

2019独角兽企业重金招聘Python工程师标准>>> struts2配置中Action的name 和package的name和namespace是什么作用 在struts2 struts.xml 配置中 <package name"ajax" extends"json-default" namespace"/json"> <action na…

【译】Tablix指南----通向报表服务的阶梯系列(四)

“Ah ha,发现你了&#xff01;”你的经理突然从桌子后面的假花旁冒出来&#xff0c;发出胜利的叫声。你沮丧地转过头看着经理。 “我已经创建了一个基本报表&#xff0c;并抓取了一些数据&#xff0c;我正打算-”你在他打断你之前快速的解释着。 “赶紧做完就好&#xff0c;大B…

workaround for %33 texture memory bug

原帖链接&#xff1a;http://www.cocos2d-iphone.org/forum/topic/29121 PS: 为什么要关心 NPOT 呢&#xff1f; 因为苹果的OpenGL驱动有一个bug&#xff0c;导致如果使用 POT 的纹理&#xff0c;则会产生额外33%的内存消耗。 So, If you didnt know, when you create a textur…

熊吃人该不该杀?这头3米高的大熊吃了7个人,还在洞里藏了很多女人用的东西.........

全世界只有3.14 % 的人关注了爆炸吧知识10月18日&#xff0c;有网友爆料称“上海野生动物园猛兽区一饲养员遭群熊撕扯”。随后&#xff0c;上海野生动物园证实&#xff0c;该饲养员目前已身亡。据悉&#xff0c;他才27岁&#xff0c;还没成家。从网上发布的现场视频来看&#x…

如何快速学习freemarker以及使用经验

freemarker freemarker是静态模板&#xff0c;和html 、jsp类似&#xff0c;我第一次看见后缀是 .ftl文件&#xff0c;我嚓&#xff0c;这是什么鬼&#xff0c;原来是freemarker&#xff0c;使用它的时候你就可以理解前端页面和jsp什么没什么区别&#xff0c;怎样学习它&#x…

还在纠结Dapper或者EF Core?不妨试试“混合ORM”--RepoDb

在.NET世界中&#xff0c;提到ORM&#xff0c;最常用的是下面2个&#xff1a;Dapper&#xff0c;通过提供IDbConnection的扩展方法来查询数据库。它的优点在于可以轻松地执行参数化查询&#xff0c;将结果转化为对象&#xff1b;非常高效&#xff0c;在速度方面拥有micro-ORM之…

android chart坐标轴互换,android - MPAndroidChart:在BarChart中将X轴的标签旋转90度 - SO中文参考 - www.soinside.com...

只需覆盖XAxisRenderer和renderAxisLabels(c: Canvas)方法。并将其设置为barChart itemView.barChart.setXAxisRenderer(CustomBarChartRenderer(itemView.barChart.viewPortHandler, itemView.barChart.xAxis, itemView.barChart.rendererXAxis.transformer))import android.g…

Rails IDE 有很多选择,但是具体到ubuntu 64bit 选择的余地就不多了,这里选择Aptana Studio 3 Beta...

1 下载 http://www.aptana.com/downloads/start 2 根据 要求安装sun JDK 1.6.* 安装步骤参考&#xff1a; 1. 编辑 /etc/apt/sources.list&#xff0c;去掉注释&#xff1a; ## Uncomment the following two lines to add software from Canonicals## partner repository.## Th…

使用 PHP 7 给 Web 应用加速

PHP 20周年了&#xff01;&#xff1f;&#xff1f; PHP 首发通告&#xff0c;1995年6月8日 发布于 COMP.INFOSYSTEMS.WWW.AUTHORING.CGI 主题&#xff1a;正式宣布&#xff1a;个人主页工具&#xff08;Personal Home Page Tools&#xff09;正式宣布个人主页工具&#xff08;…