调试备忘录-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 ...
随机推荐
- 如何将 Bitbucket 的 pull request 签出到本地 review
将 pull request 签出到本地进行 review, 最大的好处是可以通过 IDE 来查找各种变量和方法的上下文引用,以便充分发挥我们杠精的本领,将 pull request 中的各种合理和不 ...
- Selenium自动化:有代码测试与无代码测试。这些你都懂了吗?
大多数测试人员认为 Selenium是满足其测试自动化需求的自动化框架.作为全球测试人员使用的开放源框架, Selenium 无疑是测试人员适应日趋敏捷的公司的一种好方法.实际上, Selenium仍 ...
- apache 添加多个站点
虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术.可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口,也可让多个网站拥有不同的域 ...
- Android Studio采坑记录
折腾了几个月的Android Studio,终于在今天被我搞定了 ( ̄▽ ̄)~* 开贴记录下,免得下次再次采坑 先说下我之前电脑的环境配置吧,sdk是几年前在网上下载别人整理出来的包,一直没有更新过 ...
- DJANGO-天天生鲜项目从0到1-005-FastDFS与Nginx打造自定义文件存储系统
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
- npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
版本的问题 重新输入 npm install 再输入 npm run serve重启,如果还是不可以的话,在把之前装的都清空 依次输入以下命令 rm -rf node_modulesrm packag ...
- Cobbler 部署
环境介绍 Cobbler 操作系统: Centos-7.2-x86_64 Cobbler服务器地址: 10.90.0.10 部署 Cobbler 安装 Centos epel 原 [root@node ...
- 一切皆组件的Flutter,安能辨我是雄雌
从一开始接触Flutter,相信读者都会铭记一句话,那就是--一切皆组件.今天我们就来体会一下这句话的神奇魔力,我们先从实际的产品需求说起. 我们先来看一个简化的运行图: 我们要实现如上图所示的日期选 ...
- CPU监控 线段树裸题
LINK:bzoj3064 此题甚好码了20min停下来思考的时候才发现不对的地方有点坑... 还真不好写来着 可这的确是线段树的裸题...我觉得我写应该没有什么大问题 不过思路非常的紊乱 如果是自己 ...
- Spring 参数注入
一个(类)Bean可能包含多种属性,这些属性怎么配置??? 见下: 用People Dog Cat Tiger Panda五个类来学习一些常用的=_= 重点在XML <!--基本类型注入- ...