@请叫我常思聪

NTC 10K 温度传感器快速读取(C程序)区间线性回归

(升级版已经发布↓)

巧用Excel求解NTC 10K 温度传感器 (含程序)(区间线性回归)(升级版)

一、温度传感器

原本想选DS18B20,但是通过相关文件查到如下特性:测温精度高,单线通信节省端口资源;采样周期>500ms,且采样等待周期内不能有干扰。对比最终实现灵敏快速采样的目的,该传感器被pass。
然后调查了下NTC:

  1. 一种负温度系数热敏电阻,并且电阻值与温度呈一定的函数关系。由于热敏特性,遂经常用于做热敏探头;
  2. 阻值与温度函数关系为:RT =RT0×e^((Bn (1/T-1/T0)));
    其中Bn材料系数;
    Rt,Rt0为电阻在T温度下和在T0温度下的电阻值;

通常这种电阻在售卖时还会提供一个类似10K或者100K的说明,一般为NTC 10K,或者NTC100K,其中10K和100K是指在25摄氏度时材料本身的阻值

二、选型

我选择的是NTC10K,B值为3435。得出Rt0为10K,T0为(25+273.15)K。由于单片机可以采集到的是电阻值,因此函数关系反解出来为:1/T=1/3435×ln⁡(RT/10)+1/25,其中Rt单位为KΩ

由于选用的单片机为8位单片机不擅长处理对数函数因此准备将函数关系离散化由单片机通过查表处理得出温度值

待测温度区间为-20—100度,将函数关系式输入Excel表格输入公式,求得每个温度对应的电阻值
Excel公式为:

=10EXP(3435(1/(B2+273.15)-1/298.15))
(可直接复制到Excel单元格中)


由于单片机直接读出的是AD值,用10K的电阻与NTC串联单片机读取中间的分压AD。
经过计算之后AD值与温度的对应关系是:AD = 210 * RT(RT+10)。(单片机10位AD)

此时转化为AD值与温度的关系。由于温度值较多想到可以近似线性化处理。简化单片机查表流程,并且尽可能提高精确度。拟准备用Excel功能中的插入散点图—显示趋势线—显示函数函数找出近似线性关系:

可以看到曲线本身是非线性关系,由于函数如果直接做线性回归误差会很大遂考虑区间线性回归。

三、区间线性回归

取10度间隔为一个区间,采取区间内回归:(批量图表来自Excel宏程序录制修改)



其中虚线为拟合线。使用Excel可以很方便的看到回归散点的回归方程
单独来看区间内的拟合效果不错

四、读取函数(C语言)

变量定义:

float K[12] = {0.1561, 0.122,  0.1047, 0.0985, 0.1009, 0.1112, 0.1297, 0.1578, 0.1976, 0.252,  0.3245, 0.4193};
//斜率值索引
float b[12] = {121.73, 92.853, 79.576, 75.389, 76.699, 81.447, 88.418, 96.869, 106.33, 116.51, 127.21, 138.3};
//截距值索引
//       索引值:  0        1       2      3        4      5       6       7       8      9        10     11
//       温度值:-20,-10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90,100
int index[13] = {907,842,759,664,562,464,374,298,235,185,146,116,92};
//        索引值:  0   1   2   3   4   5   6   7   8   9   10  11  12

函数定义:

float AD_to_temp(int AD)
{float T0;if(AD > index[0]) {AD = index[0];}if(AD < index[12]){AD = index[12];}switch(AD/100){//  百位              索引值case 9:  K_Value = K[0];b_Value = b[0];break;case 8:  if(AD <index[1]){K_Value = K[0];b_Value = b[0];}else{K_Value = K[1];b_Value = b[1];}break;case 7:  if(AD <index[2]){K_Value = K[1];b_Value = b[1];}else{K_Value = K[2];b_Value = b[2];}break;case 6:  if(AD <index[3]){K_Value = K[2];b_Value = b[2];}else{K_Value = K[3];b_Value = b[3];}break;case 5:  if(AD <index[4]){K_Value = K[3];b_Value = b[3];}else{K_Value = K[4];b_Value = b[4];}break;case 4:  if(AD <index[5]){K_Value = K[4];b_Value = b[4];}else{K_Value = K[5];b_Value = b[5];}break;case 3:  if(AD <index[6]){K_Value = K[5];b_Value = b[5];}else{K_Value = K[6];b_Value = b[6];}break;case 2:  if(AD <index[7]){K_Value = K[6];b_Value = b[6];}else if(AD <index[8]){K_Value = K[7];b_Value = b[7];}else{K_Value = K[8];b_Value = b[8];}break;case 1:   if(AD > index[9]) {K_Value = K[8];b_Value = b[8];}else if(AD > index[10]){K_Value = K[9];b_Value = b[9];}else if(AD > index[11]){K_Value = K[10];b_Value = b[10];}else{K_Value = K[11];b_Value = b[11];} break;case 0: K_Value = K[11];b_Value = b[11];break;}T0 = b_Value - K_Value*AD;return T0;
}

五、效果(arduino输出)


喜欢记得点赞

巧用Excel求解NTC 10K 温度传感器 (含程序)(区间线性回归)相关推荐

  1. NTC温度传感器 (含arduino程序)(公式解算版)(终极)

    声明: 本文为在参考下文之后二次创作成果. 参考文章 Arduino中文社区:NTC热敏电阻测温库 本文资料下载:Arduino NTC库下载 终极版效果: 1.创建对象编程 2.添加B值参数 添加N ...

  2. 用计算机绘制颗粒级配曲线,巧用excel绘制颗粒级配曲线与自动计算粒组特征参数...

    巧用excel绘制颗粒级配曲线与自动计算粒组特征参数 摘要:颗粒分析试验为基础土工试验之一,其成果对土样定名及物理力学性质的判断都有着重要意义.由于试验原始数据繁多,处理步骤繁杂,而以往试验室对颗分数 ...

  3. 怎么用计算机软件绘制曲线,巧用Excel软件处理击实试验数据并绘制曲线效果图.pdf...

    巧用Excel软件处理击实试验数据并绘制曲线效果图 维普资讯 工 程 地 质 计 算 机 应 用 2004年 第 1期 总 33期 21 巧用 ExceI软件处理击实试验数据并绘制曲线效果图 陈永利 ...

  4. 巧用Excel 2010数据透视表制作销售报表

    小刘需要根据2010-2011两年间的订单记录创建季度报表,以便分析各类图书的销售情况.面对如此庞大的订单记录,该从何下手呢? 其实最快捷的办法是使用Excel 2010创建数据透视表,以快速合并和比 ...

  5. 巧用Excel 轻松转换人民币大小写

          巧用Excel 轻松转换人民币大小写 2010-02-08 11:22 要将人民币小写金额转换成大写格式,用Excel提供的格式,将自定义格式类型中的"[dbnum2]G/通用格 ...

  6. wps 模拟分析 规划求解_【网友来稿】利用Excel求解线性规划问题

    点击上方"运筹学小将",和小将一起学习运筹学把 提问 Qustions 解答 Answers 01 网友分享历年真题到公众号后台有现金收入吗? 没有. 02 分享历年真题到公众号后 ...

  7. 【故障检测问题】基于matlab免疫算法求解故障检测问题【含Matlab源码 196期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[故障检测问题]基于matlab免疫算法求解故障检测问题[含Matlab源码 196期] 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭 ...

  8. 办公技巧巧用Excel群发电子邮件(转)

    办公技巧巧用Excel群发电子邮件(转) 一年之计在于春,在这春风拂面的季节里,笔者总要通过E-mail为亲友送去一份祝福.以往笔者都是使用Excel自动给所有亲友发送电子邮件,这种方法不仅方便快捷, ...

  9. 【优化求解】基于matlab禁忌搜索算法求解函数极值问题【含Matlab源码 1204期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [优化求解]基于matlab禁忌搜索算法求解函数极值问题[含Matlab源码 1204期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...

最新文章

  1. 冰箱温度调到这个数值,就能节省超过35万吨食物
  2. 虽未达到科幻中的未来,人工智能革命仍已到来
  3. word中将半角标点符号(如双引号等)转换为全角
  4. linux 虚拟仪器,linux平台下编写虚拟仪器系统设计
  5. 小型云台用的是什么电机_盘一下目前国内主流的电动汽车都用什么电机
  6. 语音情感识别的优选方法与流程
  7. 模拟生产者-消费者问题和读者-写者问题
  8. java 骰子游戏_蓝桥杯-骰子游戏-java
  9. ECharts怎样显示中国地图
  10. C语言输出大写金额,人民币大写输出(C语言)
  11. 人工智能迅猛发展,如何应对避免失业?
  12. python中的MRO
  13. 微信小程序实战 wx.showNavigationBarLoading(),下拉动画配置无效
  14. php tipask yii 单点登录_Tipask问答系统 php版 v3.3.1 正式版
  15. 初米 php,什么字帖练字好初中米字格a4设置
  16. css圆角(border-radius)的深入理解
  17. 提交 Merge Request 申请进行code review
  18. 完整且详细的单链表代码
  19. macOS根目录上无法写入文件和创建目录的问题
  20. 人工智能时代,即将被人工智能替代的十大职业

热门文章

  1. cmd CD命令用法详解
  2. 什么是VR全景技术,VR全景技术应用有哪些?
  3. NC65 活期存款计息提供的查询接口
  4. GaussDB200与postgresql相关性
  5. ServletContextListener获取spring注入的bean,侦听器、过滤器等不归Spring容器托管,无法用注解注入!!!
  6. Python二级上机部分试题练习
  7. cesium 地图无法加载 报错401 缺少token
  8. Assets文件夹和RAW文件夹区别
  9. Unit 1: Computer Forensics Fundamentals 1.1 Computer Forensics Fundamentals Data Preservation
  10. 第37届ACM全球总决赛入围高校名单