调试备忘录-NTC电阻的使用(教程 + 代码)
软件环境:CodeWarrior 11.1
硬件环境:NXP S9KEAZ64A
传感器参数:NTC热敏电阻(R25 = 50k,B25-50 3950)
写在前面
最近做小项目需要用到NTC电阻,因此写一个调试备忘录记录下。
什么是NTC电阻?
NTC热敏电阻就是负温度系数的电阻,当温度升高时,电阻降低(反之则为PTC电阻)。NTC电阻灵敏度高,温度分辨率高,但
是测量温度范围较窄,通常低于100摄氏度。
NTC电阻与温度之间的关系
NTC热敏电阻温度和电阻关系最常见的公式就是如下图基于参数“β”的指数公式,公式比较简单,也是非常常用的公式。(其中的
β,有些资料也称为B)

其中,

因此,如果知道了RT2 、T2和B的值,就可以计算出任意温度下NTC热敏电阻的阻值,或者计算出任意NTC热敏电阻阻值对应的温
度值。常规应用中,厂家一般会给出T=298.15k下的阻值和B值,不同型号的NTC热敏电阻其参数也是不同。
NTC电阻的实际应用
在购买使用NTC电阻之前,我们需要先确认NTC电阻在25℃的阻值,然后设计温度采样电路。可以先和商家确认热敏电阻的阻值表。
例如:下表部分阻值表的截图,其中的R25=15KΩ就是热敏电阻在25℃时候的阻值,B25/50就是25℃-50℃时候的B值。

因此如果我想检测温度的话,直接将检测到的电阻值带入上面的公式,就可以得到当前的温度了。
当然,如果你检测区间不在25℃-50℃,你也可以自己将阻值表里面的数据,带入公式中,得出你目标区间的B值,进而在一定区间内比较精准的检测温度。
对于NTC热敏电阻的检测电路,直接使用最简单的分压电路就可以了。如下图:

RT1阻值的计算方法为:R = (adc_value * 20 * 1.0 / (adc_all - adc_value)) ;
其中,adc_all 为你的ADC采样精度,例如8位精度就是0xFF,adc_value为你的ADC实际采样值,20为电路中的分压电阻,20K。1.0是为了确保有小数结果。
所以最终的温度为:
ADC_Channel_Vlaue = ADC_Read(ch); //Read ADC value from channel n
R = (20 * ADC_Channel_Vlaue * 1.0 /(255 - ADC_Channel_Vlaue)); //8位精度
Temperature1_Value = 1/ (log( R / R25 ) / B + 1 / (273.15 + 25));
Temperature1_Value = Temperature1_Value - 273.15;
Temperature1_Value 为最终的温度。
附上函数的全部代码
float Temperature_Measurement(UINT8 ch)
{
UINT8 Temperature_Counter = 0;
UINT8 ADC_Channel_Vlaue = 0;
float Temperature1_Value;
float Temperature1_Sum_Value = 0;
float Temperature1_Average_Value = 0;
float R25 = 50;
float R = 0;
float B = 3950; while(Temperature_Counter<100)
{
Temperature_Counter++;
ADC_Channel_Vlaue = ADC_Read(ch); //Read ADC value from channel n
R = (20 * ADC_Channel_Vlaue * 1.0 /(255 - ADC_Channel_Vlaue)); //
Temperature1_Value = 1/ (log( R / R25 ) / B + 1 / (273.15 + 25));
Temperature1_Value = Temperature1_Value - 273.15;
Temperature1_Sum_Value = Temperature1_Sum_Value + Temperature1_Value;
ADC_SC1 = 0 ;
} Temperature1_Average_Value = Temperature1_Sum_Value / Temperature_Counter; return (Temperature1_Average_Value);
}
调试备忘录-NTC电阻的使用(教程 + 代码)的更多相关文章
- 调试备忘录-nRF24L01P的使用(教程 + 源码)
目录--点击可快速直达 MCU:KEAZ64A MDK:CodeWarrior 11.0 目录 写在前面 什么是nRF24L01P? nRF24L01P模块的简单介绍 nRF24L01P的工作模式 n ...
- OD提示 "为了执行系统不支持的动作, OllyICE 在这个被调试的程序中注入了一点代码, 但是经过5秒仍未收到响应..." 解决办法
别的OD就可以,我自己整合过的一个很顺手的OD就是不行,最后找到了解决办法: 转自:http://bbs.pediy.com/showthread.PHP?t=97629 -------------- ...
- Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
- NTC电阻Rt与温度T关系
NTC电阻Rt与温度T公式如下: Rt=10000*exp(3950*(1/(273.15+T)-1/(273.15+25))). 例:0摄氏度时,电阻为33620.6037214357 欧姆 Rt= ...
- 调试备忘录-J-Link RTT的使用(原理 + 教程 + 应用 + 代码)
MCU:STM32F407VE MDK:5.29 IAR:8.32 目录--点击可快速直达 目录 写在前面 什么是RTT? RTT的工作原理 RTT的性能 快速使用教程 高级使用教程 附上测试代码 2 ...
- android:如何通过chrome远程调试APP中的webView的h5代码
今天出现一个问题,在老板的Mate9 Pro上,我们APP的所有H5页面都是一片空白,但是在其他手机上都是好的,那么我们就怀疑是h5报错了,但是到底是什么错,无法得知,所以就想要可以像在pc的chro ...
- 【Unity】工具类系列教程—— 代码自动化生成!
转载自:https://zhuanlan.zhihu.com/p/30716595?utm_medium=social&utm_source=qq [为什么要做自动化工具] 工具类的创建是为了 ...
- VS Code断点调试PHP超详细萌新教程
AppServ安装 1. 下载 2. 安装,一路默认设置顺便设置sql密码即可.这里建议不要修改端口,后续教程默认80端口. 3.点我测试,有下图则恭喜你AppServ安装完成. Xdebug配置 1 ...
- 比官方教程代码更简短的SignalR Server Broadcast示例
SignalR是微软ASP.NET技术体系中的新成员. 在www.asp.net网站上的SignalR专区有一篇SignalR的入门级教程<Tutorial: Server Broadcast ...
随机推荐
- python监控服务器应用日志,推送钉钉机器人,实时关注日志异常
生产环境多台服务器上部署了多个应用,日志出现报错时,无法及时反馈到开发人员.部署一个大型的运维监控应用,不但耗资源,而且配置也不简单. 简简单单写个python脚本来监控服务器日志就简单多了,废话不多 ...
- 2020JAVA最新应对各种OOM代码样例及解决办法
引言 作者:黄青石 链接:https://www.cnblogs.com/huangqingshi/p/13336648.html?utm_source=tuicool&utm_medium= ...
- 深入探究JVM之对象创建及分配策略
@ 目录 前言 正文 一.对象的创建方式 二.对象的创建过程 对象在哪里创建 分配内存 对象的内存布局 三.对象的访问定位 四.判断对象的存活 对象生死 回收方法区 引用 对象的自我拯救 五.对象的分 ...
- asp.net core 动态更新 appsetting.json方法
如何将值更新到appsetting.json? 我正在使用官方文档中IOptions描述的模式. 当我从中读取值时appsetting.json,这可以正常工作,但是如何更新值并将更改保存回来apps ...
- Dcoker docker: Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE).
https://stackoverflow.com/questions/46533482/error-starting-userland-proxy-bind-for-0-0-0-080-unexpe ...
- web自动化 -- 消息提示框处理 (alert、confirm、prompt)
一.前提知识 1.警告消息框(alert) 警告消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说用户必须先关闭该消息框然后才能继续进行操作. 2. ...
- Redis网络模型的源码分析
Redis的网络模型是基于I/O多路复用程序来实现的.源码中包含四种多路复用函数库epoll.select.evport.kqueue.在程序编译时会根据系统自动选择这四种库其中之一.下面以epoll ...
- python的__get__方法看这一篇就足够了
get类型函数 直接上代码: class TestMain: def __init__(self): print('TestMain:__init__') self.a = 1 if __name__ ...
- 宿主机连接docker中的mysql
宿主机连接docker中的mysql dokcer安装mysql docker run \ --name mysql \ -v $PWD/mysql:/var/lib/mysql \ -p 330 ...
- 《Python Web开发实战》|百度网盘免费下载|Python Web开发
<Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...