【STM32-HAL库】MQ2烟雾传感器使用(STM32F407ZET6)

news2024/9/29 14:02:24

MQ2可燃气体传感器介绍


MQ2是一种广谱气体传感器,能够检测多种可燃气体和烟雾。它是一种低成本、高灵敏度的传感器,广泛应用于家庭和工业环境中的气体监测。

原理


MQ2传感器的工作原理基于金属氧化物半导体(MOX)技术。当传感器暴露于目标气体中时,这些气体会与传感器上的氧化物发生化学反应,导致传感器的电阻发生变化。

  1. 加热过程:传感器内置加热元件,用于加热氧化物。
  2. 吸附与反应:可燃气体被氧化物吸附,并与之发生化学反应。
  3. 电阻变化:反应导致传感器的电阻发生变化,变化的程度与气体浓度成正比。

特点

  • 广谱检测:能够检测多种可燃气体,如LPG、丙烷、丁烷、甲烷、酒精、烟雾等。
  • 高灵敏度:对低浓度的可燃气体有较好的响应。
  • 简单的驱动电路:只需要一个比较简单的电路即可驱动。
  • 长寿命:在正常条件下,传感器的使用寿命较长。
  • 低成本:相对于其他类型的气体传感器,MQ2的成本较低。

注意事项

  • 预热时间:使用前需要预热一段时间,通常为20分钟,以确保传感器稳定工作。
  • 环境因素:避免高湿度、高浓度的硫化氢和氯化氢环境,这些可能会影响传感器的性能和寿命。
  • 校准:为了获得准确的读数,需要定期校准传感器。
  • 使用寿命:传感器的灵敏度会随时间降低,需要定期更换。
  • 清洁:保持传感器的清洁,避免灰尘和污染物的积累。
  • 温度影响:避免将传感器暴露在极端温度下,这可能会损害传感器或影响其性能。

ADC介绍


STM32微控制器系列包含多种型号,大多数型号都配备了模拟数字转换器(Analog-to-Digital Converter,简称ADC)。ADC是微控制器中用于将模拟信号转换为数字信号的核心组件,这对于处理来自外部世界的模拟信号(如温度、压力、声音等)至关重要。

作用

  • 信号转换:将连续的模拟信号转换为离散的数字信号,以便微控制器可以处理。
  • 数据采集:用于读取模拟传感器的数据,如温度传感器、光敏电阻、电位计等。
  • 模拟输入:可以读取外部模拟信号或者内部信号,如微控制器的内部温度传感器。
  • 电压测量:测量电源电压或者电路中某点的电压。

注意事项

  1. 分辨率和精度:STM32的ADC分辨率通常为12位或更多,选择合适的ADC模式和配置对于获得所需的精度至关重要。
  2. 采样时间:设置合适的采样时间以保证ADC能够准确地读取模拟信号。采样时间太短可能导致精度下降,太长则会影响转换速度。
  3. 参考电压:ADC的转换结果是基于参考电压的,确保参考电压的稳定性和准确性对于获得准确的转换结果非常重要。
  4. 通道配置:正确配置ADC通道,确保所选通道与实际连接的模拟信号相对应。
  5. 触发源:可以选择软件触发或硬件触发(如定时器)来启动ADC转换,根据应用需求选择合适的触发方式。
  6. 中断和DMA:使用中断服务程序(ISR)或直接内存访问(DMA)来处理ADC转换完成后的数据,可以减少CPU的负担,提高系统效率。
  7. 电源和噪声:确保ADC的电源干净且稳定,避免噪声干扰,可能需要滤波电路来提高测量精度。
  8. 校准:STM32微控制器通常支持ADC校准功能,通过校准可以改善ADC的线性度和精度。
  9. 温度影响:温度变化可能会影响ADC的性能,特别是在高精度应用中,需要注意环境温度对ADC的影响。
  10. 连续转换与单次转换:根据应用需求选择连续转换模式或单次转换模式,连续转换模式适用于需要连续监测模拟信号的场景。

本教程只使用简单的ADC读取MQ2烟雾传感器的模拟信号

一、新建工程

不会新建工程可以参考我的新建工程系列教程

stm32-HAL库+cubeMX新建工程教程(以F103C8T6为例)icon-default.png?t=O83Ahttps://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库+keil5icon-default.png?t=O83Ahttps://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)icon-default.png?t=O83Ahttps://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函数重定向icon-default.png?t=O83Ahttps://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
RXPA9
TXPA10

我所使用的是ADC1的通道1,且无引脚复用等问题,所以我的引脚接法如下

MQ2烟雾传感器模块STM32F407ZET6
A0PA1

六、效果演示

当我用打火机放气并靠近MQ2烟雾传感器时。会出现如下结果

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

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

相关文章

俄罗斯市场合格评定准入认证要求

前言 国内厂家想要把自己的产品顺利出口到俄罗斯市场,就需要基本了解俄罗斯的市场合格评定准入要求。俄罗斯主要实行的认证有EAC(TR-CU/CU-TR)认证、GOST R认证、计量认证和医疗产品国家注册。下面就分别简单介绍一下这几个产品认证。 一、EAC(TR-CU/CU-TR)认证介绍…

LVGL 笔记

在显示GUI的过程中需要对某些对象进行临时隐藏或临时显示,因此需要对该对象的FLAG进行配置就可以实现对象的显示和隐藏了. lv_obj_add_flag(user_obj, LV_OBJ_FLAG_HIDDEN);//隐藏对象 lv_obj_clear_flag(user_obj, LV_OBJ_FLAG_HIDDEN);//取消隐藏 GUI-Guider 中的选项卡 注意…

Linux驱动开发(速记版)--驱动基础

第一章 初识内核源码 Linux系统源码提供了操作系统的核心功能,如进程管理、内存管理、文件系统等。 BusyBox这类的文件系统构建工具,则提供了在这些核心功能之上运行的一系列实用工具和命令,使得用户能够执行常见的文件操作、文本处理、网络配…

MaxKB知识库问答系统入选Gitee最有价值开源项目

2024年9月19日,飞致云旗下开源项目MaxKB成功加入Gitee平台主导的GVP计划,入选2024年GVP——Gitee最有价值开源项目。MaxKB也是继MeterSphere、DataEase和1Panel之后,飞致云旗下第四个入选GVP的开源项目。 ▲图1 MaxKB入选2024年Gitee最有价值…

软机器人咋模仿生物?响应式水凝胶Aquabots有啥用?快来了解一下!

大家好,今天我们要来了解一项关于响应式水凝胶Aquabots的研究——《Responsive‐Hydrogel Aquabots》发表于《Advanced Science》。在当今科技发展中,制造能像生物体一样具有响应适应性的软机器人是个挑战。而Aquabots为解决这个问题带来了新的突破。它通…

vue3项目执行pnpm update后还原package.json文件后运行报错

项目场景: vue官方版本已更新到vue3.5,项目中还在使用vue3.4,因此想要更新项目vue版本。 问题描述 执行了 pnpm update 命令,一键更新了所有包,更新完成后项目不能正常运行。为了还原项目代码,先删除 nod…

“AI+Security”系列第3期(七):智能体车企落地实践

近日,由安全极客、Wisemodel 社区、InForSec 网络安全研究国际学术论坛和海升集团联合主办的 “AI Security” 系列第 3 期技术沙龙 ——“AI 安全智能体,重塑安全团队工作范式” 活动顺利举行。此次活动备受关注,吸引了线上线下超过千名观众…

DriveVLM 论文学习

论文链接:https://arxiv.org/abs/2402.12289 解决了什么问题? 自动驾驶对交通行业有着革命性的作用,实现 FSD 的一个主要障碍就是场景理解。场景理解涉及在复杂且不可预测的环境中进行导航,这些环境可能包括恶劣的天气条件、复杂…

【Git】克隆主项目,并同时克隆所有子模块

子模块 带有箭头的文件夹(relaxed_ik_core)通常表示这是一个 Git 子模块(submodule)。Git 子模块是一种嵌入式的 Git 仓库,它允许你在一个仓库中引用其他的 Git 仓库。换句话说,relaxed_ik_core 不是这个项…

uniapp实战教程:如何封装一个可复用的表单组件

在uniapp开发过程中,表单组件的使用场景非常广泛。为了提高开发效率,我们可以将常用的表单组件进行封装。本文将带你了解如何在uniapp中封装一个表单组件,让你只需要通过属性配置轻松实现各种表单,效果图如下: 一、准备…

《北方牧业》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问:《中国动物检疫》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《中国动物检疫》级别? 答:省级。主管单位:河北省畜牧局 主办单…

【win11】关闭windows11系统的讲述人

如何关闭windows11系统的讲述人,经常误触启动 讲述人(Narrator) 设置里找到讲述人(Narrator) 开关讲述人及快捷键

物联网行业中天线定制的激光直接成型 (LDS)技术

01 什么是lds技术? 普通的手机天线都被安装在手机的主板上: 在当今的智能手机中,我们常见的手机天线通常都被巧妙地安装在手机的主板上。这些天线承担着接收和发送信号的重要任务,是实现通信功能的关键组件之一。 而 LDS 天线…

运放信号失真原因分析——增益带宽积,压摆率

运放失真原因分析——增益带宽积,压摆率 运放失真原因分析 运放失真原因分析——增益带宽积,压摆率一、压摆率二、仿真模拟电路1.OPAx333的增益带宽积以及压摆率参数2.将输入信号的频率设置为10kHz3.将输入信号的频率设置为25kHz4.失真原因分析 总结 一、…

【MySQL实战45讲4-5】索引

文章目录 索引的定义索引的常见模型哈希表有序数组二叉搜索树 InnoDB的索引模型索引维护页分裂页合并页分裂和页合并的影响避免页分裂 覆盖索引最左前缀原则索引下推 索引的定义 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本500页的书&#x…

全开源/彩虹晴天多功能系统源码/知识付费系统/虚拟商城系统/完美可用+修复改良版

源码简介: 2024年最新全开源的彩虹晴天多功能系统源码,它可以作为知识付费系统、虚拟商城系统,完美可用,并且是修复改良版。 最让人兴奋的是,搭建这个系统完全不需要授权,不管是在国内还是国外的服务器&am…

Mybatis-Mapper接口方式

目录 配置方式和接口方式的区别 示例:Mapper接口方式实现数据库的CRUD 配置方式和接口方式的区别 Mybatis框架在配置方式的情况下,对数据库的CRUD操作直接通过SqlSession对象来操作,常用的方法有select、insert、update、delete等方法&…

企业内训|提示词工程师高阶技术内训-某运营商研发团队

近日,TsingtaoAI为某运营商技术团队交付提示词工程师高级技术培训,本课程为期2天,深入探讨深度学习与大模型技术在提示词生成与优化、客服大模型产品设计等业务场景中的应用。内容涵盖了深度学习前沿理论、大模型技术架构设计与优化、以及如何…

MySQL高阶1988-找出没所学校的最低分数要求

目录 题目 准备数据 分析数据 总结 题目 每年,学校会公布学生申请所需的最低分数要求。学校根据所有学生的考试成绩来决定其最低分数要求。 学校希望确保即使 每 一个满足分数要求的学生都申请该学校,学校也有足够的能力接纳每一个学生。学校也希望…

undeclared identifier ‘UNITY_PREV_MATRIX_M‘ - Unity Shader自己写URP,引用内部 hlsl

碰到这样的问题,居然非常淡定 这个链接里说了问题: 一个哥们A问,为什么include urp common.hlsl 提示莫名其妙 另一个哥们B说,这个issue 说了,可能是这个原因(也没正面答) 从issue我们知道&a…