调试备忘录-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 ...
随机推荐
- ciscn_2019_c_1
0x01 检查文件,64位 检查开启的保护情况 开启了NX保护 0x02 IDA静态分析 在主函数这里并没有常见的gets栈溢出,尝试再这里面的子函数找找,发现了encrypt函数,进去查看 发现这个 ...
- C++语法小记---异常处理
异常处理(C语言) 异常是对代码中可以预知的问题进行处理:代码中不可以预知的问题叫Bug: if () { ... } else { ... } setjmp和longjmp #include < ...
- abp vnext 开发快速入门 2 实现基本增删改查
上篇说了abp vnext 的大体框架结构,本篇说下如何实现基础的增删改查.实现增删改查有以下几个步骤: 1.配置数据库连接 2.领域层(Domain)创建实体,Ef core 层配置Dbset( 用 ...
- abp vnext 开发快速入门 1 认识框架
最近在做一个项目,用的框架是Abp vnext ,不是Abp, 我自己也是刚开始用这个框架来做项目,难免要查资料,这个框架官方有中文文档,可以到官网www.abp.io 去查看,国内也有一些写了相关的 ...
- 火狐浏览器如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?
一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 火狐浏览器如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载 ...
- jsp课堂笔记5 Java servlet
servlet的创建 servlet类就是一个包含javax.servlet.http包中的HttpServlet类 部署web.xml文件 在<sevlet>标签中创建 <serv ...
- eclipse IDE usage of my own and tutorials link list
设置 字符集 Eclipse 修改字符集 默认情况下 Eclipse 字符集为 GBK,但现在很多项目采用的是 UTF-8,这是我们就需要设置我们的 Eclipse 开发环境字符集为 UTF-8, 设 ...
- python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)
python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...
- IO流——转换流、缓冲流
一.转换流 1. OutputStreamWriter类 属于字符输出流,OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节. 它的作 ...
- Springboot 多数据源配置,结合tk-mybatis
一.前言 作为一个资深的CRUD工程师,我们在实际使用springboot开发项目的时候,难免会遇到同时使用多个数据库的情况,比如前脚刚查询mysql,后脚就要查询sqlserver. 这时,我们很直 ...