【STM32-HAL库】MQ2烟雾传感器使用(STM32F407ZET6)
MQ2可燃气体传感器介绍
MQ2是一种广谱气体传感器,能够检测多种可燃气体和烟雾。它是一种低成本、高灵敏度的传感器,广泛应用于家庭和工业环境中的气体监测。
原理
MQ2传感器的工作原理基于金属氧化物半导体(MOX)技术。当传感器暴露于目标气体中时,这些气体会与传感器上的氧化物发生化学反应,导致传感器的电阻发生变化。
- 加热过程:传感器内置加热元件,用于加热氧化物。
- 吸附与反应:可燃气体被氧化物吸附,并与之发生化学反应。
- 电阻变化:反应导致传感器的电阻发生变化,变化的程度与气体浓度成正比。
特点
- 广谱检测:能够检测多种可燃气体,如LPG、丙烷、丁烷、甲烷、酒精、烟雾等。
- 高灵敏度:对低浓度的可燃气体有较好的响应。
- 简单的驱动电路:只需要一个比较简单的电路即可驱动。
- 长寿命:在正常条件下,传感器的使用寿命较长。
- 低成本:相对于其他类型的气体传感器,MQ2的成本较低。
注意事项
- 预热时间:使用前需要预热一段时间,通常为20分钟,以确保传感器稳定工作。
- 环境因素:避免高湿度、高浓度的硫化氢和氯化氢环境,这些可能会影响传感器的性能和寿命。
- 校准:为了获得准确的读数,需要定期校准传感器。
- 使用寿命:传感器的灵敏度会随时间降低,需要定期更换。
- 清洁:保持传感器的清洁,避免灰尘和污染物的积累。
- 温度影响:避免将传感器暴露在极端温度下,这可能会损害传感器或影响其性能。
ADC介绍
STM32微控制器系列包含多种型号,大多数型号都配备了模拟数字转换器(Analog-to-Digital Converter,简称ADC)。ADC是微控制器中用于将模拟信号转换为数字信号的核心组件,这对于处理来自外部世界的模拟信号(如温度、压力、声音等)至关重要。
作用
- 信号转换:将连续的模拟信号转换为离散的数字信号,以便微控制器可以处理。
- 数据采集:用于读取模拟传感器的数据,如温度传感器、光敏电阻、电位计等。
- 模拟输入:可以读取外部模拟信号或者内部信号,如微控制器的内部温度传感器。
- 电压测量:测量电源电压或者电路中某点的电压。
注意事项
- 分辨率和精度:STM32的ADC分辨率通常为12位或更多,选择合适的ADC模式和配置对于获得所需的精度至关重要。
- 采样时间:设置合适的采样时间以保证ADC能够准确地读取模拟信号。采样时间太短可能导致精度下降,太长则会影响转换速度。
- 参考电压:ADC的转换结果是基于参考电压的,确保参考电压的稳定性和准确性对于获得准确的转换结果非常重要。
- 通道配置:正确配置ADC通道,确保所选通道与实际连接的模拟信号相对应。
- 触发源:可以选择软件触发或硬件触发(如定时器)来启动ADC转换,根据应用需求选择合适的触发方式。
- 中断和DMA:使用中断服务程序(ISR)或直接内存访问(DMA)来处理ADC转换完成后的数据,可以减少CPU的负担,提高系统效率。
- 电源和噪声:确保ADC的电源干净且稳定,避免噪声干扰,可能需要滤波电路来提高测量精度。
- 校准:STM32微控制器通常支持ADC校准功能,通过校准可以改善ADC的线性度和精度。
- 温度影响:温度变化可能会影响ADC的性能,特别是在高精度应用中,需要注意环境温度对ADC的影响。
- 连续转换与单次转换:根据应用需求选择连续转换模式或单次转换模式,连续转换模式适用于需要连续监测模拟信号的场景。
本教程只使用简单的ADC读取MQ2烟雾传感器的模拟信号
一、新建工程
不会新建工程可以参考我的新建工程系列教程
stm32-HAL库+cubeMX新建工程教程(以F103C8T6为例)https://blog.csdn.net/qq_39150957/article/details/136637881?fromshare=blogdetail&sharetype=blogdetail&sharerId=136637881&sharerefer=PC&sharesource=qq_39150957&sharefrom=from_link【STM32-HAL库】立创梁山派新建工程并点灯(GD32F470ZGT6)cubeMX+HAL库+keil5https://blog.csdn.net/qq_39150957/article/details/136637881?fromshare=blogdetail&sharetype=blogdetail&sharerId=136637881&sharerefer=PC&sharesource=qq_39150957&sharefrom=from_link【STM32-HAL库】立创梁山派天空星版新建工程并点灯(GD32F407VET6)https://blog.csdn.net/qq_39150957/article/details/137161558?fromshare=blogdetail&sharetype=blogdetail&sharerId=137161558&sharerefer=PC&sharesource=qq_39150957&sharefrom=from_link
二、ADC配置
如图配置ADC,本教程所使用的是ADC1的通道1,可以根据自己需求配置
查看引脚,由此可知,ADC1的通道1所使用的是PA1引脚,请记住这个引脚
三、开启串口
可以参考我的文章,配置串口教程以及如何重定向串口。重定向串口之后即可直接使用【printf】函数直接向串口发送数据
【STM32-HAL库】串口配置、printf函数重定向https://blog.csdn.net/qq_39150957/article/details/136638229?fromshare=blogdetail&sharetype=blogdetail&sharerId=136638229&sharerefer=PC&sharesource=qq_39150957&sharefrom=from_link
四、编写代码
在main函数中声明一个局部变量,用于存放读取的传感器数值
/* USER CODE BEGIN 1 *///声明变量uint32_t ADC_Value;/* USER CODE END 1 */
在主循环中放入以下代码
while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1,1);ADC_Value = HAL_ADC_GetValue(&hadc1);printf("value = %1.3f%% \r\n",ADC_Value*100.0f/4096);}
五、硬件连接
我所使用的是usart1,且无引脚复用等问题,所以我的引脚接法如下
CH340串口 | STM32F407ZET6 |
RX | PA9 |
TX | PA10 |
我所使用的是ADC1的通道1,且无引脚复用等问题,所以我的引脚接法如下
MQ2烟雾传感器模块 | STM32F407ZET6 |
A0 | PA1 |
六、效果演示
当我用打火机放气并靠近MQ2烟雾传感器时。会出现如下结果
相关文章:
【STM32-HAL库】MQ2烟雾传感器使用(STM32F407ZET6)
MQ2可燃气体传感器介绍 MQ2是一种广谱气体传感器,能够检测多种可燃气体和烟雾。它是一种低成本、高灵敏度的传感器,广泛应用于家庭和工业环境中的气体监测。 原理 MQ2传感器的工作原理基于金属氧化物半导体(MOX)技术。当传感器暴露…...
玩转指针(3)
一、字符指针变量 字符指针变量(如char* p)的两种赋值方式 ①将字符类型地址赋值给字符指针变量 int main() {char a w;char* p &a;*p m;return 0; }②将常量字符串赋值给字符指针变量 常量字符串的介绍:用" "引起来的就…...
【CSS in Depth 2 精译_040】6.3 CSS 定位技术之:相对定位(下)—— 用纯 CSS 绘制一个三角形
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结)第二章 相对单位(已完结)第三章 文档流与盒模型(已完结)第四章 Flexbox 布局(已…...
HTML流光爱心
文章目录 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心(简易版)7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心(双心版)1…...
java技能
日志实际使用 log.error(“111”,e);和 System.out.println(ExceptionUtils.getStackTrace(error)); 日志查询 tail -f root.log 前端页面命名: mounted(){ document.title‘设备可视页面’ } 查看ips所属mac nbtstat -a 10.87.236.60 获取容器名称 hostName In…...
本省第一所!新大学,揭牌!
9月26日,海南艺术职业学院举行揭牌仪式,标志着海南省第一所公办艺术类高等职业院校正式揭牌成立。海南省旅文厅党组成员、副厅长刘成出席揭牌仪式,省教育厅党组成员、副厅长邢孔政在揭牌仪式上宣读省人民政府同意设立海南艺术职业学院的批复。…...
企业微信(企微)审批与影刀RPA结合
企业微信审批与影刀RPA结合 效果先看视频: 影刀与企业微信审批结合 具体步骤: 1、登录企微管理后台,新建一个审批流。 添加模板→自定义模板,根据需求添加审批节点。 添加完之后,回到审批界面,可以看…...
新手教学系列——用 VSCode 实现高效远程开发
随着软件开发环境日益复杂,远程开发已成为许多开发者的日常工作方式。尤其当项目需要直接在服务器上运行或本地计算资源有限时,能够使用一款便捷、强大的工具至关重要。在众多 IDE 中,VSCode 因其轻量、灵活且支持丰富插件,成为远程开发的理想选择。本文将详细介绍如何通过…...
[uni-app]小兔鲜-04推荐+分类+详情
热门推荐 新建热门推荐组件, 动态设置组件的标题 <template><!-- 推荐专区 --><view class"panel hot"><view class"item" v-for"item in list" :key"item.id">... ...<navigator hover-class"none&…...
PHP人才机遇桥梁招聘求职全能系统小程序源码
人才机遇桥梁 —— 招聘求职全能系统全解析 💼🚀 🌉 搭建人才与机遇的桥梁 在这个竞争激烈的职场环境中,找到一份心仪的工作或招募到合适的人才,往往不是一件容易的事。但幸运的是,我们有了“人才机遇桥梁…...
计算机毕业设计Hadoop+Spark抖音可视化 抖音舆情监测 预测算法 抖音爬虫 抖音大数据 情感分析 NLP 自然语言处理 Hive 机器学习 深度学习
Python抖音可视化开题报告 一、研究背景与意义 随着移动互联网的迅猛发展,短视频平台如抖音已成为人们日常生活中不可或缺的一部分。抖音以其独特的算法和内容推荐机制,吸引了数以亿计的用户。然而,随着用户规模的不断扩大,如何…...
Linux 学习 awk 和sed 命令使用
awk 命令 awk 是一种处理文本文件的语言,是一个强大的文本分析工具。 awk 通过提供编程语言的功能,如变量、数学运算、字符串处理等,使得对文本文件的分析和操作变得非常灵活和高效。 之所以叫 awk 是因为其取了三位创始人 Alfred Aho&#x…...
双端搭建个人博客
1. 准备工作 确保你的两个虚拟机都安装了以下软件: 虚拟机1(Web服务器): Apache2, PHP虚拟机2(数据库服务器): MariaDB2. 安装步骤 虚拟机1(Web服务器) 安装Apache2和PHP 更新系统包列表: sudo apt update安装Apache2: sudo apt install apache2 -y安装PHP及其Apac…...
PHP 面向对象编程
PHP 面向对象编程 PHP 是一种流行的服务器端脚本语言,广泛用于 web 开发。它支持多种编程范式,包括面向对象编程(OOP)。面向对象编程是一种编程风格,它使用“对象”来设计软件,其中对象是数据和行为的集合…...
应急响应(1)-同事电脑
一、现象 重要时间节点,同事反馈桌面有鼠标移动、随机断网;发现登录账户多了一个,由于电脑长时间没有更改过密码,导致忘记密码无法登录。随机联系进行应急处理。 二、排查 2.1、密码重置/删除 由于同事忘记密码导致无法进行登录…...
class 023 随机快速排序
这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. https://space.bilibili.com/8888480?spm_id_f…...
如何理解矩阵的复数特征值和特征向量?
实数特征值的直观含义非常好理解,它就是在对应的特征向量方向上的纯拉伸/压缩。 而复数特征值,我们可以把它放在复数域中理解。但是这里给出一个不那么简洁、但是更加直观的理解方式:把它放在实空间中。那么复数特征值表现的就是旋转等比放大…...
怎么查看网站是否被谷歌收录,查看网站是否被搜索引擎收录5个方法与步骤
要查看网站是否被谷歌(Google)或其他搜索引擎收录,是网站管理和SEO(搜索引擎优化)中的一个重要环节。以下是查看网站是否被搜索引擎收录5个方法与步骤,帮助您确认网站是否被搜索引擎成功索引: …...
Java工具--stream流
Java工具--stream流 过滤(filter)统计求最大最小和均值求和(sum)过滤后,对数据进行统计 遍历(map)规约(reduce)排序(sorted)去重(dist…...
什么是 JWT?它是如何工作的?
松哥最近辅导了几个小伙伴秋招,有小伙伴在面小红书时遇到这个问题,这个问题想回答全面还是有些挑战,松哥结合之前的一篇旧文和大伙一起来聊聊。 一 无状态登录 1.1 什么是有状态 有状态服务,即服务端需要记录每次会话的客户端信…...
微信小程序使用picker,数组怎么设置默认值
默认先显示请选择XXX。然后点击弹出选择列表。如果默认value是0的话,他就直接默认显示数组的第一个了。<picker mode"selector" :value"planIndex" :range"planStatus" range-key"label" change"bindPlanChange&qu…...
Springboot生成树工具类,可通过 id/code 编码生成 2.0版本
优化工具类中,查询父级时便利多次的问题 import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.mutable.MutableLong; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.spri…...
17、CPU缓存架构详解高性能内存队列Disruptor实战
1.CPU缓存架构详解 1.1 CPU高速缓存概念 CPU缓存即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。CPU高速缓存可以分为一级缓存,二级缓存,部分高端CPU还具有三级缓存,每一级缓存中所储存的全部数据都是…...
算法训练营打卡Day18
目录 二叉搜索树的最小绝对差二叉搜索树中的众数二叉树的最近公共祖先额外练手题目 题目1、二叉搜索树的最小绝对差 力扣题目链接(opens new window) 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例: 思…...
【leetcode】169.多数元素
boyer-moore算法最简单理解方法: 假设你在投票选人 如果你和候选人(利益)相同,你就会给他投一票(count1),如果不同,你就会踩他一下(count-1)当候选人票数为0&…...
MyBatis<foreach>标签的用法与实践
foreach标签简介 实践 demo1 简单的一个批量更新,这里传入了一个List类型的集合作为参数,拼接到 in 的后面 ,来实现一个简单的批量更新 <update id"updateVislxble" parameterType"java.util.List">update model…...
R语言Shiny包新手教程
R语言Shiny包新手教程 1. 简介 Shiny 是一个 R 包,用于创建交互式网页应用。它非常适合展示数据分析结果和可视化效果。 2. 环境准备 安装R和RStudio 确保你的计算机上安装了 R 和 RStudio。你可以从 CRAN 下载 R,或从 RStudio 官网 下载 RStudio。…...
[大象快讯]:PostgreSQL 17 重磅发布!
家人们,数据库界的大新闻来了!📣 PostgreSQL 17 正式发布,全球开发者社区的心血结晶,带来了一系列令人兴奋的新特性和性能提升。 发版通告全文如下 PostgreSQL 全球开发小组今天(2024-09-26)宣布…...
CHI trans--Home节点发起的操作
总目录: CHI协议简读汇总-CSDN博客https://blog.csdn.net/zhangshangjie1/article/details/131877216 Home节点能够发起的操作,包含如下几类: Home to Subordinate Read transactionsHome to Subordinate Write transactionsHome to Subor…...
Rust和Go谁会更胜一筹
在国内,我认为Go语言会成为未来的主流,因为国内程序员号称码农,比较适合搬砖,而Rust对心智要求太高了,不适合搬砖。 就个人经验来看,Go语言简单,下限低,没有什么心智成本,…...
高新区免费网站建设/培训机构招生方案模板
本篇文章讲解了计算机的原码、反码和补码,并且进行了深入探求了为何要使用反码和补码,以及更进一步的论证了为何可以用反码、补码的加法去计算原码的减法。论证部分如有不对的地方请各位牛人帮忙指正!希望本文对大家学习计算机基础有所帮助&a…...
找外包公司做网站的好处和坏处/手机百度app
信息技术期末教学质量分析报告纵观这次的考试总得都考得不错,对这次考试总结如下:一、情况分析:本次质量检测,考查了三、四年级的教学情况,三年级成绩分析年级人数测试人数合格率优秀率平均分172172100%80%91分四年级成…...
新疆乌鲁木齐哪家做网站好/重庆可靠的关键词优化研发
从单个计算机到互联网 在中国大陆,计算机有一个更为形象的名字,电脑。从字面可以看出,它是一件帮助人类进行思考的机器。但决定计算机思考什么,如何进行思考的,就是程序。 把人类脑袋中的可重复的、机械性的脑力劳动&a…...
怎么用vs做网站开发/深圳网络营销外包公司推荐
VirtualAlloc 分配的内存是以 4K 为最小单位、连续的内存地址(但映射到真实的内存时它不一定是连续的), 前面说了, 它不适合分配小内存(譬如只有几个字节的变量); 局部的变量在 "栈" 中有程序自动管理, 那么那些全局的小变量怎么办呢? 这就要用到 "堆".这…...
深圳建立网站的公司/今天的病毒感染情况
part组员 工作 工作耗时/h明日计划工作耗时/h UI冯晓云 完善页面切换,尝试子页面设计 4 完善页面切换和子页面,修补弹窗bug 4foxit PDF Reader朱玉影 尝试添加pdf页面预览功能 4 尝试添加pdf页面预览功能 4login周以舟 …...
2023年长春疫情最新规定公告/seo视频教程
geocat是ncl语言的计算库,python可调用。用于处理气象文件(.nc)、可视化等 官网和下载指南 1. 使用conda安装到已有环境中 conda activate py37 # 进入环境 conda config --add channels conda-forge # 添加channel conda install -c cond…...