BMS中常用的NTC温敏电阻及代码实现

news2024/9/27 21:19:21

1、什么是NTC?

NTC热敏电阻是一种负温度系数的热敏电阻,它的性性是阻值随温度的升高而降低,主要作用是对温度的测量及补偿,也用于NTC温度传感器的制作,常用的使用范围在-55℃至200℃之间。

图1 NTC温度阻值曲线

2、NTC的主要技术参数有哪些?

以 MF52 系列测温型 NTC 热敏电阻器规格书为例,来看一看NTC的一些主要参数

2.1、阻值:

热敏电阻标称阻值是关键参数之一,常见阻值范围从1KΩ至几百KΩ,具体看使用情况。通常使用25℃的温度,这可以表示为R25值。对于更专业的应用,可以使用其他温度。还要注意,有时温度可以用绝对温度引用,即°K。

此NTC 25℃情况下的阻值为10KΩ

2.2、阻值容差:

与任何电阻一样,标准电阻具有容差,被称为为R25值,或者给出电阻的温度值。通常可获得±2%,±3%和±5%的值


2.3、B值(材料常数):

B值是温度系数热敏电阻器的材料常数(热敏指数),单位是开尔文温度(K)。半导体陶瓷经过高温烧结后通过一系列的加工工序形成具有一定电阻率的NTC热敏芯片,每种配方和烧结温度下只有一个B值。NTC热敏电阻的B值与产品电阻温度系数正相关,也就是说B值越大,其电阻温度系数也就越大。

NTC热敏电阻B值公式为: B= T1*T2/(T2-T1)*Ln(RT1/RT2)

其中的B:NTC热敏电阻的B值,由厂家提供;

RT1、RT2:热敏电阻在温度分别为T1、T2时的电阻值;

T1、T2:绝对温标。

NTC热敏电阻的B值一般在2000K-6000K之间,根据不同的应用范围可以选择不同的B值。一般情况下,作为温度测量、温度补偿以及抑制浪涌用的产品,可选用较大的B值。因为随着温度的变化,B值大的产品其电阻值变化更大,也就是说NTC热敏电阻B值越大,使用时更灵敏,响应时间更快。

2.4、时间常数:

热敏电阻时间常数对于需要快速响应的任何应用都很重要 - 例如在防止过载等情况下。没有人能立即将温度从一个值升高到另一个值。它遵循渐近曲线。身体越大,温度升高所需的时间越长。因此,器件的时间常数对于某些应用来说是重要的热敏电阻规范。

2.5、热时间常数:

热时间常数参数用希腊字母τ来表示,它定义为热敏电阻变为初始温度(t1)和瞄准温度(t2)之差的63.2%(即1:1 / e)所需的时间当热敏电阻没有消耗功率时,温度差作为阶跃变化施加。
出于测量目的,τ测量所需的温度; 即达到63.2%温差的阻力时间为:

2.6、散热系数δ:

这是热敏电阻的一个重要特征,因为所有热敏电阻都需要通过一些电流来运行包含它们的电路,才能致热敏电阻的自发热。
该热敏电阻规范定义了所施加的功率和热敏电阻自加热之间的关系。如果过多的电流通过热敏电阻,那么它将抵消热敏电阻的操作。因此,该规范控制可以通过设备的电流。耗散因子δ以mW /℃表示。

其中
P =功耗以瓦特为单位
ΔT=以°C为单位的温度上升

δ的特定值将对应于将热敏电阻温度提高1°C所需的功率水平。耗散因数取决于许多因素,因此耗散因数δ的热敏电阻规格实际上仅作为指导而非精确数字。

2.7、工作温度范围:

这是热敏电阻设计运行的温度范围。材料,结构和其他类似因素限制了设备可以操作的范围。因此,为了可靠性和性能,热敏电阻不应在其指定的温度范围之外操作。

2.8、最大功耗:

对于传感应用,功耗保持较低以防止自发热,但在某些情况下可能有理由消耗更多功率。如果不导致损坏,则不应超过最大功耗规范。为了获得最大的可靠性,器件应在其最大功耗范围内运行良好 - 通常仅为规格的50-66%。

基本上这些事主要的参数,可能还有其他一些参数

3、温度阻值对照表

依然以 MF52 系列测温型 NTC 热敏电阻器规格书为例,可以看到此款NTC的主要参数R25、B值等

阻值是有一定误差的,电阻的精度温度精度以及温度对应的阻值都有体现,我们可以根据这个表格来编写代码,获取相应的温度

温度阻值对照表局部

温度阻值对照表局部

4、NTC硬件设计及代码实现

4.1 硬件设计及理论推导

硬件设计比较简单,如图所示:

如何由硬件电路设计得到我们想要的温度呢?

首先我们需要用到ADC采集相关电压,根据电压计算得出相应的阻值,进一步,根据温度、阻值对照表得出温度:

假设我们使用的是MCU内部ADC,12位分辨率

1、计算采集点电压

V_diodetem = Vref*Vtemp/(1<<12)

其中:V_diodetem为采集点电压
Vref为参考电压,此处为3.3V
Vtemp为ADC获取到的寄存器值
(1<<12)为12位分辨率,2^12=4096

2、根据电阻反推RTC有效阻值

根据分压计算:

Vdiodetem/Vref = Rntc/(Rntc+R)

化简之后可得:

Rntc = R*Vtemp/((1<<12)-Vtemp)

其中,Rntc为NTC的有效阻值
R为串联电阻阻值

根据以上公司就可以计算得出相应的阻值了,再根据温度-阻值对照表就可以反推出温度值了

4.2 代码实现

首先我们需要建立一个表格,用于存储我们的阻值,用于查表寻找温度,表格就设计为简单一维数组模式,-40-105度,如下表,我们就构建完成了阻值跟温度的对应,只需要通过ADC获取阻值,查表获取温度即可

#define NUMBER_NTC_TEMP  145

const uint16 NTC_MAP[NUMBER_NTC_TEMP] = 
{
     /*10R*/
      19572, 18459, 17422, 16455, 15551, 14707, 13917,13176, 12481, 11829, //-40 ~ -31
      11216, 10640,10098, 9588, 9107, 8654, 8227, 7823, 7442, 7082, //-30 ~ -21
      6742, 6420, 6116, 5828, 5556, 5298, 5053, 4821, 4601, 4393, //-20 ~ -11
      4195, 4010, 3830, 3660, 3500, 3347, 3201, 3064, 2933, 2808, //-10 ~ -1
      2696, 2576, 2468, 2366, 2268, 2175, 2086,2002, 1921, 1844, //0 ~ 9
      1773, 1700, 1633, 1570, 1509, 1450, 1395, 1341, 1290, 1241, //10-19
      1195, 1150, 1107, 1067, 1027, 990, 953, 918, 885, 852, //20-29
      821, 792, 764, 737, 710, 685, 661, 638, 616, 595, //30-39
      575, 555, 536,518, 500, 484, 468, 452, 438, 423, //40-49
      409, 396, 383, 371, 359, 348, 337, 326, 316, 306, //50-59
      297,288,279,270,262,254,247,239,232,225, //60-69
      219,212,206,200,194,189,183,178,173,170, //70-79
      163,159,154,150,146,141,138,134,130,127, //80-89
      123,120,117,114,111,108,102,105,102,100,98, //90-99
      95,93,90,88,86,84//100-105
}

ADC获取电阻值:

根据上面的计算公式,计算得出NTC电阻值R,用于下面的根据阻值获取温度

如下代码通过阻值获取温度,要注意我们是从-40度开始的,但是index是从0开始的,所以要记得 -40,获取到真正的温度

//通过阻值获取温度
uint8 Get_Temp_By_Res(uint16 R)
{
  uint8 i = 0;

  for (i = 0; i < 145; i++)
  {
    if (R >= NTC_MAP[i])
      break;
  }
  return i;
}

经验交流

欢迎关注小飞哥玩嵌入式,一起解锁更多嵌入式相关的开发知识

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

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

相关文章

重发布-路由策略实验1(1.8)

目标&#xff1a; 1、首先为每个路由器配置环回和每个接口的ip r1&#xff1a; [r1]interface lo0 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-LoopBack0]int gi 0/0/0 [r1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 [r1-GigabitEthernet0/0/0]int gi 0/0/1 [r1-GigabitEthernet0/…

Linux--多线程(2)

目录1. 条件变量2. 生产者消费者模型2.1 概念3. 基于BlockingQueue的生产者消费者模型3.1 概念3.2 等待函数3.3 等待函数的功能3.4 唤醒函数4. 模型复盘5. 总代码1. 条件变量 当一个线程互斥地访问某个变量或者临界资源时&#xff0c;它可能发现在其它线程改变状态之前&#x…

物以类聚人以群分,通过GensimLda文本聚类构建人工智能个性化推荐系统(Python3.10)

众所周知&#xff0c;个性化推荐系统能够根据用户的兴趣、偏好等信息向用户推荐相关内容&#xff0c;使得用户更感兴趣&#xff0c;从而提升用户体验&#xff0c;提高用户粘度&#xff0c;之前我们曾经使用协同过滤算法构建过个性化推荐系统&#xff0c;但基于显式反馈的算法就…

【Java寒假打卡】Java基础-集合Map

【Java寒假打卡】Java基础-集合Map基本使用Map集合的基本功能Map集合的第一种遍历方式Map集合的第二种遍历方式案例&#xff1a;HashMap集合存储ArrayList元素并遍历案例&#xff1a;统计字符串中每一个字符出现的次数Collections操纵集合基本使用 创建Map集合的对象&#xff1…

金融历史数据导入之股票 level2 逐笔篇

在部署完 DolphinDB 后&#xff0c;将历史数据导入数据库是后续进行数据查询、计算和分析的基础。为协助用户快速导入数据&#xff0c;本文档基于 DolphinDB 已有的教程与大量用户的实践经验&#xff0c;从操作者角度出发&#xff0c;以 CSV 格式的文件为例&#xff0c;详细介绍…

通讯电平转换电路中的经典设计

今天给大家分享几个通讯电平转换电路。 有初学者问&#xff1a;什么是电平转换&#xff1f;举个例子&#xff0c;比如下面这个电路&#xff1a; 单片机的工作电压是5V&#xff0c;蓝牙模块的工作电压是3.3V&#xff0c;两者之间要进行通讯&#xff0c;TXD和RXD引脚就要进行连接…

Revit里轴网隐藏尺寸标注跟着消失?快速轴网距离标注

一、Revit中链接项目文件轴网的巧妙处理 问题&#xff1a;在单元式住宅体系中&#xff0c;轴网的使用主要是对尺寸标注的影响&#xff0c;如果要将子文件链接到父文件中&#xff0c;需要隐藏轴网&#xff0c;这样与轴网关联的尺寸标注就会消失。 关于尺寸标注与轴网隐藏方式的关…

Java IO流(基础详解,快速上手!)

文章目录概述什么是IO流&#xff1f;常用的文件操作获取文件操作目录操作IO流的原理和分类概述 在Java的学习中&#xff0c;文件和IO流是一个十分重要的板块。在Java中&#xff0c;File是文件和目录路径名的抽象表示。文件和目录可以通过File封装成对象。对File而言&#xff0…

前端 base64与图片相互转换

base64转图片 如下图&#xff1a;&#xff08;后端返回的数据&#xff09; <img :src"baseImg" >let baseImg "" this.baseImg "data:image/png;base64," data?.flowCharbase64转换图片文件 base64ImgtoFile (dataurl, filename …

QT 学习笔记(十六)

文章目录一、TCP 传文件流程图1. 服务器端流程2. 客户端流程二、TCP 传文件操作实现1. 服务器端2. 客户端3. TCP 传文件实现现象三、服务器端和客户端实现代码1. 主函数 main.c2. 服务器端头文件 serverwidget.h3. 服务器端源文件 serverwidget.cpp4. 客户端头文件 clientwidge…

某医院的实战渗透测试(组合拳)

实战渗透一、前言二、Spring信息泄露三、Redis写公钥四、文章来源一、前言 项目是内网环境下进行&#xff0c;所以通过vpn接入内网之后进行目标系统的测试。&#xff08;信息泄露redis写公钥&#xff09; 二、Spring信息泄露 访问客户给的目标地址通过代理把流量转给了BurpS…

零基础学软件测试有前途吗?

随着软件工程活动的不断演化&#xff0c;测试工作某种程度上是可以很大幅度提高软件的产品质量以及提升用户的使用满意度&#xff0c;因此软件测试工程师的地位在企业中也越来越受到重视。不少零基础学IT的朋友也开始把软件测试作为一个绝佳的选择对象&#xff0c;那么零基础学…

leetcode.1806 还原排列的最少操作步数 - 模拟 + lcm

​​​​​​1806. 还原排列的最少操作步数 本题是数论题 共介绍4种解题方法 目录 1、所有置换环长度的最小公倍数 2、最小操作数是最大环长度 3、1或n-2所在环长度即为最大置换环长度 4、暴力模拟 思路&#xff1a; 因为数据范围很小 所以可以直接模拟 也可以优化一下—…

Python 模型训练:LSTM 时间序列销售额预测(训练、保存、调用)

LSTM (long short-term memory) 长短期记忆网络&#xff0c;具体理论的就不一一叙述&#xff0c;直接开始 流程一、数据导入二、数据归一化三、划分训练集、测试集四、划分标签和属性五、转换成 LSTM 输入格式六、设计 LSTM 模型6.1 直接建模6.2 找最好七、测试与图形化展示八、…

JavaSE-07

字节流输入输出数据&#xff1a; InputStream和OutputStream作为字节流输入输出流的超类。 字节流写数据时千万记得close关闭资源&#xff0c;可设置追加写为true 字节流读数据时&#xff0c;FileInputStream a new FileInputStream (“”); int by a.read(); char b (char…

隐蔽信道学习

隐蔽信道作为一种能够在不被系统感知的情况下稳定窃取秘密信息的通信手段&#xff0c;尽管其带宽通常较低&#xff0c;但其设计上的复杂性和多样性&#xff0c;使得常规的流量审计系统难以对抗或检测。同时&#xff0c;隐蔽信道也是密钥、身份认证、商业机密等秘密信息传输的重…

基于JAVA SSM框架的新闻管理系统源码+数据库,实现 登录 、 注册、 新闻内容、类别、评论、个人信息、系统管理等功能

[基于SSM框架的新闻管理系统] 前言 下载地址&#xff1a;基于JAVA SSM框架的新闻管理系统源码数据库 基于SSM框架的新闻管理系统&#xff1b; 实现 登录 、 注册 、 新闻内容、类别、评论、个人信息、系统管理等功能 &#xff1b; 可继续完善增加前端、等其他功能等&#x…

federated引擎实现mysql跨服务器表连接

&#x1f4e2;作者&#xff1a; 小小明-代码实体 &#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/as604049322 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 欢迎讨论&#xff01; &#x1f4e2;本文链接&#xff1a;https://xxmdmst.blog.csdn.n…

IU5066 高耐压带OVP保护1.2A单节锂电池线性充电IC

概要 IU5066E是面向空间受限便携应用的&#xff0c;高度集成锤离子和锤聚合物线性充电器器件。该器件由USB端口或交流适配器供电。带输入过压保护的高输入电压范围支持低成本、非稳压适配器。 电池充电经历以下三个阶段&#xff1a; 涓流、电流、恒压。在所有充电阶段&#x…

JSON对象(javascript)

本文内容主要包括了对于JS中JSON对象的一些内容。我们知道JSON格式是前后端进行信息交换的中介信息格式。适用于取代XML格式的一种格式&#xff0c;在多数编程语言中都有关于JSON的处理方法。那么javascript也提供了JSON对象用于处理相应的数据。 1. 什么是JSON格式&#xff1…