【# 软件stm32cubeIDE下使用STM32F103的ADC+DMA测量-基础样例+进阶+实例应用>>热敏电阻温度测量】

本文主要是介绍【# 软件stm32cubeIDE下使用STM32F103的ADC+DMA测量-基础样例+进阶+实例应用>>热敏电阻温度测量】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【# 软件stm32cubeIDE下使用STM32F103的ADC+DMA测量-基础样例+进阶+实例应用>>温度测量】

  • 前言
  • 实验环境
  • 先行文章
  • 了解热敏电阻
      • 相关知识
          • (1)什么是NTC电阻
          • (2)基本参数与电路图
          • (3)电阻的温度与电阻值对照表
      • 参考资料
          • (1)了解转换公式 :The Steinhart-Hart 方程
          • (2)了解派生和代替公式:B参数方程
  • 结合电路-确定各个参数
      • 数据手册
  • 代码实现部分
  • 代码链接
  • 对比测试
  • 调试细节
  • 总结

前言

前两天,调试一个ADC转换,今天,调试了一个热敏电阻的实验,和以往不太一样的是,没调试以前,一直以为,要自己根据数据拟合啥的,调试的时候,才知道,原理温度曲线表,人家都给你做好了,并且有成熟的公式,你只要明白电路图分压和套用公式,就能使用了。

实验环境

本次实验,使用了项目上的板块,所有无法展示,但是基础原理图非常简单,会给出热敏电阻部分电路。再配合以往硬件,就可以使用了。
如下图,出自本人灵魂画手。
在这里插入图片描述

先行文章

如果不了解ADC,或者没有相关ADC调试经验,非常建议先看看之前文章。
# 软件stm32cubeIDE下使用STM32F103的ADC+DMA测量-基础样例+进阶+增加通道

了解热敏电阻

相关知识

(1)什么是NTC电阻
  1. 一句话解释热敏电阻:电阻值随着温度变化的电阻。

  2. 随温度升高而电阻增加的热敏电阻称为“ 正温度系数热敏电阻(PTC
    thermistor,即 Positive Temperature Coefficient thermistor)”

  3. 随温度升高而电阻减少的热敏电阻成为“负温度系数热敏电阻(NTC thermistor,即 Negative Temperature
    Coefficient thermistor)”

如果搜索热敏电阻,网上实在太多了,说的也非常明白了。
参考资料:https://baike.baidu.com/item/%E7%83%AD%E6%95%8F%E7%94%B5%E9%98%BB/5155280

另外在维基百科上,有如下说明。
在这里插入图片描述
参考链接:https://zh.wikipedia.org/zh-my/%E7%83%AD%E6%95%8F%E7%94%B5%E9%98%BB

(2)基本参数与电路图

知道了热敏电阻有什么东西后,我们实际应用时,需要知道一些参数,用来调试,参数主要是电阻的参数,你购买的热敏电阻一般有数据手册,可以在手册里获取到。

另一部分就是电路图,一般实际应用来说,都是“实验环境”里手绘的电路图,都是近似的,可能上下电阻值,电压等具体值不同而已。

(3)电阻的温度与电阻值对照表

了解一个电阻特性,比较直观的办法,看下电阻对照表,这里直接截取一部分,作为展示。
在这里插入图片描述

参考资料

这部分只是作为了解部分,从我目找到资料来看,NTC电阻有个教授发现了一个数学公式,后来派生出来的公式,就是我们现在使用的公式,不理解没关系,可以跳过这段,只要知道往里套公式就行。

(1)了解转换公式 :The Steinhart-Hart 方程

在维基百科上搜索,得到有关解释如下。
在这里插入图片描述
派生公式
在这里插入图片描述

参考链接:https://wikizhzh.top/wiki/steinhart%E2%80%93hart_equation

(2)了解派生和代替公式:B参数方程

从上边可以知道,我们用的就是这个派生公式。但是这个公式我们如果数学不好的话,其实也看不懂。
那么参考如下资料,里面讲述还是挺好的。
在这里插入图片描述
参考链接:http://www.wawooo.com/186.html

结合电路-确定各个参数

通过上述说明吗,我们得到一个公式,我们实际写代码,其实就是确定好,各个参数后,套用这个公式。

派生公式:
Rt = R * EXP( B * ( 1/T1 - 1/T2 ) )

套用公式:
T1 = 1 /( ln(Rt/R)/ B + 1/T2 )

  • T1和T2 是指的K度,开尔文温度。

  • Rt 就是热敏电阻 在T1温度下的电阻值

  • R 是热敏电阻在常温T2下的标称值,一般手册里有25°C为10K

  • EXP是e的n次方

  • B值是热敏电阻的参数,手册里有。

  • In是代码里的log函数,直接看代码就明白了。
    在这里插入图片描述

  • 本次实验的ADC是12位, 2的12次幂是4096.

  • 上拉电压为3.3V

数据手册

手册链接:https://download.csdn.net/download/qq_22146161/86609054

代码实现部分

如下为核心代码,本次实验比较简单,就是在上章实验代码中,加入了一段。

(1)加入数学的头文件。
在这里插入图片描述

(2)加入暂时输出的变量
在这里插入图片描述

(3)加入核心的转换代码函数。

//第二步 加入转换函数
//转换ADC,直接转换完成。
float fnCalculation_temperature(uint16_t ADC_values)
{uint16_t adc_temp=0;float m_wTemperature=0.0; //温度值 初始化为0float m_wR2=10000.0;//附带分压阻值电阻float m_wR1=0.0; //热敏电阻 初始化为0float T2=298.15;// 273.15 + 25float B=3950.0;  //数据手册上找float K=273.15; //开尔文float R2V=0.0;  //分压值 初始化为0//一般转换需要时间,普通转换,这里加放转换函数。adc_temp=ADC_values;//需要的时间HAL_Delay(10);//自己单片机>>>>是12位ADC//(1)2^12=4096//(2)上拉3.3VR2V=(adc_temp*(3.3/4096));//电阻公式m_wR1=((3.3-R2V)*m_wR2)/R2V;//R2=(R2V*R1)/(3.3-R2V);//套公式使用 //注意下面公式中m_wR2在25度是正好是10K,和电路图正好重合m_wTemperature=1.0/(1.0/T2+log(m_wR1/m_wR2)/B)-K+0.5;return m_wTemperature;}

(4)打印输出
在这里插入图片描述

代码链接

代码链接:https://download.csdn.net/download/qq_22146161/86609061

对比测试

实际应用的时候,我们需要一个相对标准的测温仪器,让我们知道,我们写的代码,测试显示出来的温度是正确的。
如下图,将一个测温设备与电阻碰触,让它们温度近似。
在这里插入图片描述
对比仪器上显示温度26.5左右

在这里插入图片描述

串口输出显示温度26.6左右
在这里插入图片描述

调试细节

(1)电阻值,如下图,使用的这个热敏电阻25°时正好时10K,与电路中用的正好也是10K,实际使用还是需要注意下。
在这里插入图片描述
(2)文章书写也是一种能力吧,能难避免错别字,和一些数值错误,再参考一些资料时,发现里面一些数组错了,所有在看的时候一定自己算下。

如下参考资料,里面电阻值说是使用的4.7K,但是算完后,发现用的1K,当然这不妨碍理解,另外这个文档里,提供一种查表输出温度的方式,可以看下。
在这里插入图片描述

参考资料:https://zhuanlan.zhihu.com/p/179181715

总结

保持初学者之心

这篇关于【# 软件stm32cubeIDE下使用STM32F103的ADC+DMA测量-基础样例+进阶+实例应用>>热敏电阻温度测量】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/280837

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图