NTC(Negative Temperature Coefficient)是一种随温度上升时,电阻值呈指数关系减小的热敏电阻。应用广泛,最近我们就采用了NTC来控制加热并测温,并达到了预期的效果。

1、硬件设计

我们使用三极管作为加热元件,通过NTC来控制通过三极管的电流,以起到控制温度的作用,至于温度控制到多少,可以通过调节电位器来控制。同时使用另一个NTC来测量当前的温度。电路图如下:

上图中我们通过一个电桥来采集NTC电阻的变化,因为电阻的变化会引起C17两端电压的变化。温度越高NTC电阻越小,C17两端电压差就越大,反之越小。我们采用了25摄氏度时,阻值为10K的NTC。不难推断出输出电压与NTC电阻值得关系。当输出电压为0V时,电阻约25K,查表可知唯独为5摄氏度左右。当输出电压为5V时,电阻值接近0,查表可知在100摄氏度以上。职业便是这个电路的理论测量范围。

2、软件设计

前面我们设计了测量电路,也分析了检测电压与NTC电阻制的关系。接下来我们主要讨论一下软件设计。软件的设计我们采用了公式法和查表法两种方式来获取温度值。

2.1、公式法

我们前面已经提到过,NTC是一种随温度上升时,电阻值呈指数关系减小的热敏电阻。而这种指数关系具体如下:

其中,B是NTC的常数,每种为固定值。Rt是NTC的电阻,R为标称25摄氏度时的电阻。T1是Rt对应的开氏温度,T2是标称的开氏温度。于是我们就可以推导出有电阻计算温度的公式:

根据以上公式我们可以实现:

/*公式法计算NTC温度值*/
static float FormulaNTCTemperature(float resistance)
{float temp;float result=0.0;result=resistance/NTC_NOMINAL_RESISTANCE;result=(log(result)/NTC_NOMINAL_CONSTANT)+(1/(NTC_NOMINAL_TEMPERATURE+KELVIN_CONSTANT));temp=1/result-KELVIN_CONSTANT;return temp;
}

2.2、查表法

查表法顾名思义就是通过电阻分度表来获取温度区间,再做拟合。首先我们需要建立相应的表我们定义为数组。有了分度表实现也就简单了,但需要注意两端极限位置的处理。具体实现如下:

/*查表法计算NTC温度值*/
static float LookupNTCTemperature(float resistance)
{float temp;uint16_t index=NTC_TABLE_LENGTH+10;index=FindTargetLocation(resistance);if(index<=0){temp=ntcValueTable[0][0];}else if(index>=NTC_TABLE_LENGTH){temp=ntcValueTable[0][NTC_TABLE_LENGTH-1];}else{float lowT=ntcValueTable[0][index-1];
//    float highT=ntcValueTable[0][index];float lowR=ntcValueTable[1][index-1];float highR=ntcValueTable[1][index];temp=((resistance-lowR)*0.5)/(highR-lowR)+lowT;}return temp;
}/*查找目标位置*/
static uint16_t FindTargetLocation(float resistance)
{uint16_t position=0;while(ntcValueTable[1][position]>resistance){if(position<NTC_TABLE_LENGTH-1){position++;}else{position++;break;}}return position;
}

3、小结

使用NTC作为测温和控温的元件所得到的结果基本与预期的一致。但在控温的精度和响应速度上略有不足,对于一般的应用是完全足够的。我们的应用对温度的稳定性要求比较高所以我们后续做了一些改进。

为了取得更好的控制效果,我们引入一个类似于专家PID的控制器对加热电源进行PWM调节,类似于与NTC的控制形成串级控制得到了良好的效果。在比较好的情况下,最终温度可以稳定在0.1度的范围内。

STM32一种基于NTC的控温电路及软件实现相关推荐

  1. 一种基于NTC热敏电阻测量的温度模块

    一种基于NTC热敏电阻测量的温度模块 设计初衷和经历: 设计这块温度采集模块时,最初的用途在冰箱的检测线,通过485总线的方式,采集每个工位的冰箱关键节点的温度.后因为工作变动,加以改进,增加了三相电 ...

  2. 基于铂电阻测温电路的设计

    基于铂电阻测温电路的设计## 标题 一.概述 铂电阻温度传感器是利用其电阻和温度成一定函数关系而制成的温度传感器,由于其测量准确度高.测量范围大.复现性和稳定性好等,被广泛用于中温(-200℃-650 ...

  3. 一种基于“spark lite”和“按键自动精灵”软件的不间断跑流量方法

    本文目录 1 问题背景 2 解决方法 3 软硬件需求 4 实现步骤 4.1 spark lite软件测试 4.2 按键自动精灵软件安装设置 4.2.1 开启软件权 4.2.2 新建任务 4.2.3 运 ...

  4. 一种基于AliOS Things的uData感知设备软件框架

    摘要:   uData框架设计之初的思想是基于传统sensorhub概念基础之上的,结合IoT的业务场景和AliOS Things物联网操作系统的特点设计而成的一个面对IoT的感知设备处理框架. 点此 ...

  5. dw01均衡电路_一种基于dw01的电池保护电路调试测试方法

    流保护等功能.本文以此为例,介绍单节锂电池保护 IC 的测试方法. 二. 工作原理简述 1. 过充保护及过充释放功能: 在电池电压高于过充保护电压( VOCP ) , 且电池电压高于过充保护电压( V ...

  6. Thinkpad 智能控温系统TPFanControl软件安装教程

    由于原来的 tpfancontrol.com 已经下线了,现在的TPFanControl可以到https://thinkwiki.de/TPFanControl 里面进行下载,这里面复制了之前TPFa ...

  7. 论文笔记-基于代码属性图和Bi-GRU的软件脆弱性检测方法

    一.摘要 ​提出了一种基于代码属性图和Bi-GRU的软件脆弱性检测方法.该方法通过从函数的代码属性图中提取出抽象语法树序列.控制流图序列作为函数表征的表征方式,减少代码表征过程中的信息的损失,并通过选 ...

  8. 基于stm32的MAX31865铂电阻PT100测温全套资料

    基于stm32的MAX31865铂电阻PT100测温全套资料(原理图+教程+程序+演示视频) 资料编号:009 本项目可以通过PT100测温,测温范围为:-200-420℃,采用1.8寸OLED显示 ...

  9. android 画布裁剪,一种基于Android系统对UI控件进行轮廓剪裁及美化的方法与流程...

    本发明涉及Android应用的技术领域,特别涉及一种基于Android系统对UI控件进行轮廓剪裁及美化的方法. 背景技术: 目前,随着智能电视的普及,Android应用层出不穷,而那些表现形式单一.传 ...

最新文章

  1. FD33里面的销售值不正确应该怎么办?
  2. jQuery Ajax 实例
  3. [数据结构-严蔚敏版]P71串的抽象数据类型的定义
  4. OSChina 周二乱弹 ——胸大的烦恼!
  5. DropDownList下拉绑定到GridView中实现功能
  6. 关于VMware无法输入许可证密钥的方法
  7. Windows客户端开发--URLDownloadToFile下载文件进度条
  8. Word基础(八)带圈字符
  9. 职场动物进化手册(转自天涯)
  10. 软件定义存储——软件掌控力的试金石
  11. HR问:“对我们公司你有什么问题要问的吗”,怎样回答才算完美!
  12. 最不起眼的基础知识,却成了你面试跨不过去的门槛
  13. 老电脑可以安装win11系统吗
  14. 百度网盘四种方法免费提速
  15. Testing Types - 读书笔记
  16. 私人定制——使用深度学习Keras和TensorFlow打造一款音乐推荐系统
  17. android 定制手机刷机,怎么定制安卓刷机包
  18. 打字 html,html - 在线打字测试(dazi.kukuw.com)
  19. 安防监控摄像头接入云端实现直播、录像和大屏展示
  20. 使用Business iQ进行实时业务监控

热门文章

  1. 08.MyBatis整合Log4j
  2. Centos6.5硬盘故障修复
  3. MongoDB limit 选取 skip跳过 sort排序 方法
  4. CentOS7完成mysql的安装和远程访问
  5. WOJ 18 动态无向图
  6. bzoj 1731: [Usaco2005 dec]Layout 排队布局【差分约束】
  7. svn 修改文件的可执行权限
  8. bootstrap table 的简单Demo
  9. LintCode 373: Partition Array
  10. 函数:MySQL中字符串匹配函数LOCATE和POSITION使用方法