软件环境: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电阻的使用(教程 + 代码)的更多相关文章

  1. 调试备忘录-nRF24L01P的使用(教程 + 源码)

    目录--点击可快速直达 MCU:KEAZ64A MDK:CodeWarrior 11.0 目录 写在前面 什么是nRF24L01P? nRF24L01P模块的简单介绍 nRF24L01P的工作模式 n ...

  2. OD提示 "为了执行系统不支持的动作, OllyICE 在这个被调试的程序中注入了一点代码, 但是经过5秒仍未收到响应..." 解决办法

    别的OD就可以,我自己整合过的一个很顺手的OD就是不行,最后找到了解决办法: 转自:http://bbs.pediy.com/showthread.PHP?t=97629 -------------- ...

  3. Android Studio 动态调试 apk 反编译出的 smali 代码

    在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...

  4. NTC电阻Rt与温度T关系

    NTC电阻Rt与温度T公式如下: Rt=10000*exp(3950*(1/(273.15+T)-1/(273.15+25))). 例:0摄氏度时,电阻为33620.6037214357 欧姆 Rt= ...

  5. 调试备忘录-J-Link RTT的使用(原理 + 教程 + 应用 + 代码)

    MCU:STM32F407VE MDK:5.29 IAR:8.32 目录--点击可快速直达 目录 写在前面 什么是RTT? RTT的工作原理 RTT的性能 快速使用教程 高级使用教程 附上测试代码 2 ...

  6. android:如何通过chrome远程调试APP中的webView的h5代码

    今天出现一个问题,在老板的Mate9 Pro上,我们APP的所有H5页面都是一片空白,但是在其他手机上都是好的,那么我们就怀疑是h5报错了,但是到底是什么错,无法得知,所以就想要可以像在pc的chro ...

  7. 【Unity】工具类系列教程—— 代码自动化生成!

    转载自:https://zhuanlan.zhihu.com/p/30716595?utm_medium=social&utm_source=qq [为什么要做自动化工具] 工具类的创建是为了 ...

  8. VS Code断点调试PHP超详细萌新教程

    AppServ安装 1. 下载 2. 安装,一路默认设置顺便设置sql密码即可.这里建议不要修改端口,后续教程默认80端口. 3.点我测试,有下图则恭喜你AppServ安装完成. Xdebug配置 1 ...

  9. 比官方教程代码更简短的SignalR Server Broadcast示例

    SignalR是微软ASP.NET技术体系中的新成员. 在www.asp.net网站上的SignalR专区有一篇SignalR的入门级教程<Tutorial: Server Broadcast  ...

随机推荐

  1. jmeter 及测试(转载)

    负载测试:在一定的工作负荷下,给系统造成的负荷及系统响应的时间. 压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响.   1.性能测试(Performance Test):通常收集 ...

  2. Shell基本语法---处理海量数据的awk命令

    awk命令 其实是一门编程语言,支持条件判断,数组,循环等功能,与grep,sed被称为linux三剑客 之所以叫AWK是因为取其三位创始人 Alfred Aho,Peter Weinberger, ...

  3. python下载及安装方法

    打开 http://www.python.org   找到Downlodas 点击windows   下载安装

  4. 解决android studio Gradle无法同步问题

    打开根目录build.gradle buildscript { repositories { // 添加阿里云 maven 地址 maven { url 'http://maven.aliyun.co ...

  5. java HashMap、HashTable、ConcurrentHashMap区别

    HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相 ...

  6. 细说JavaScript 导出 上万条Excel数据

    首先这是个鸡肋的方法 合理的做法是 后端直接生成 前端给个链接就行了 (先说原因与过程最后上代码) 1. 先说说为什么会出现这个需求吧. : 在写运维网站时 自己粗略的看了一下bootstarp-ta ...

  7. Android个人中心UI

    参考:https://blog.csdn.net/gjm15881133824/article/details/73742219

  8. PHP curl_share_init函数

    (PHP 5 >= 5.5.0) curl_share_init — 初始化一个 cURL 共享句柄 说明 resource curl_share_init ( void ) 允许两个 cURL ...

  9. C/C++编程笔记:C语言NULL值和数字 0 值区别及NULL详解

    在学习C语言的时候,我们常常会碰到C语言NULL值和数字 0 ,很多小伙伴搞不清楚他们之间的一个区别,今天我们就了解一下他们之间的区别,一起来看看吧! 先看下面一段代码输出什么: 输出<null ...

  10. EACCES: permission denied,mkdir … npm install 安装依赖问题解决

    强哥最近在用hugeGraph图库做二次开发的时候,在打包的时遇到前端项目打包失败的问题: cwebp-bin@4.0.0 postinstall /home/hugegraph/my-hugegra ...