MQ-2烟雾传感器启动

article/2025/8/24 4:40:45

MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中

存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的

变化转换为与该气体浓度相对应的输出信号。

MQ-2气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。这种传

感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器

传感器电路板如图所示


电位计用于设置TTL电平输出端的阈值,当传感器感应到的烟雾浓度大于该阈值时,TTL输出低电平,平时为高电平,模块电路图如下所示


U1A是一个比较器,RP电阻越大,阈值越低,也就是说,顺时针调节电阻器,阈值降低,逆时针调节,阈值升高,AOUT输出的是模拟值,0-VCC

注意该传感器使用之前需要20s的预热时间

 

MQ12的驱动有两种,一是检测IO,二是检测AD口的电压,电平检测就不用说了,说下AD检测

//初始化ADC

//这里我们仅以规则通道为例

//我们默认将开启通道0~3   

void  Adc_Init(void)

{

    ADC_InitTypeDef ADC_InitStructure;

    GPIO_InitTypeDef GPIO_InitStructure;

   

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE );   //使能ADC1通道时钟

   

   

    RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M

   

    //PA1 作为模拟通道输入引脚                        

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚

    GPIO_Init(GPIOA, &GPIO_InitStructure);

   

    ADC_DeInit(ADC1);  //复位ADC1,将外设 ADC1 的全部寄存器重设为缺省值

   

    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC工作模式:ADC1ADC2工作在独立模式

    ADC_InitStructure.ADC_ScanConvMode = DISABLE; //模数转换工作在单通道模式

    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //模数转换工作在单次转换模式

    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //转换由软件而不是外部触发启动

    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC数据右对齐

    ADC_InitStructure.ADC_NbrOfChannel = 1; //顺序进行规则转换的ADC通道的数目

    ADC_Init(ADC1, &ADC_InitStructure); //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器  

   

   

    ADC_Cmd(ADC1, ENABLE);         //使能指定的ADC1

   

    ADC_ResetCalibration(ADC1); //使能复位校准 

   

    while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束

   

    ADC_StartCalibration(ADC1);  //开启AD校准

   

    while(ADC_GetCalibrationStatus(ADC1));  //等待校准结束

   

    // ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能

   

}  

//获得ADC

//ch:通道值 0~3

u16 Get_Adc(u8 ch)  

{

    //设置指定ADC的规则组通道,一个序列,采样时间

    ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADC通道,采样时间为239.5周期      

   

    ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能

   

    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

   

    return ADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果

}

 

u16 Get_Adc_Average(u8 ch,u8 times)

{

    u32 temp_val=0;

    u8 t;

    for(t=0;t<times;t++)

    {

        temp_val+=Get_Adc(ch);

        delayMs(5);

    }

    return temp_val/times;

}

void Mq2Init(void)

{

    Adc_Init();

}

//直接返回ADC的值

u16 GetMq2SingleValue(void)

{

    return Get_Adc(ADC_Channel_1);

}

 

//多次获取平均值

u16 GetMq2AverageValue(u8 times)

{

    return Get_Adc_Average(ADC_Channel_1,times);

}

 

 

 

#ifndef __MQ2_H

#define __MQ2_H

#include "stm32f10x.h"

#include "adc.h"

//初始化

void Mq2Init(void);

//获取MQ2的值

u16 GetMq2SingleValue(void);

//多次获取平均值

u16 GetMq2AverageValue(u8 times);

 

 

//使用PA1作为ADC通道转换,可以使用其他值

#endif

 

 

 

获取到ADC值之后通过与系统预设值进行比对就可以进行烟雾报警了


http://chatgpt.dhexx.cn/article/11TIYYKX.shtml

相关文章

烟雾传感器MQ-2实验

烟雾传感器MQ-2实验 实验现象 烟雾传感器把烟雾浓度值转换为模拟电压值输出&#xff0c;arduino通过A0引脚读取模拟电压值&#xff0c;通过串口发送给PC&#xff0c;当模拟电压值超过模块的比较器设定值&#xff0c;模块D0引脚输出低电平。arduino监控到D0引脚拉底信号时&…

MQ-2烟雾报警器

MQ-2烟雾报警器 原理&#xff1a;MQ-2型烟雾传感器属于二氧化锡半导体气敏材料&#xff0c;属于表面离子式N型半导体。处于200~300摄氏度时&#xff0c;二氧化锡吸附空气中的氧&#xff0c;形成氧的负离子吸附&#xff0c;使半导体中的电子密度减少&#xff0c;从而使其电阻值…

模拟烟雾传感器 (MQ2)

小板上的端口边上有一个大写的A&#xff0c;标明这是一个模拟的传感器。 该款气体传感器是基于气敏元件的MQ2气体传感器&#xff0c;可以很灵敏的检测到空气中的烟雾、液化气、丁烷、丙烷、甲烷、酒精、氢气等气体。 与单片机相结合使用&#xff0c;可以制作火灾烟雾报警、液化…

烟雾传感器MQ-2的应用

一、烟雾传感器MQ-2 二、烟雾模块结构图 三、烟雾模块原理图 四、烟雾模块的特点 1、具有信号输出指示。 2、双路信号输出&#xff08;模拟量输出及TTL电平输出&#xff09;。 3、TTL输出有效信号为低电平。&#xff08;当输出低电平时信号灯亮&#xff0c;可直接接单片机&…

MQ-2烟雾传感器资料总结

鉴于网上关于MQ-2烟雾传感器的技术资料少之甚少&#xff0c;本人正好现在在做关于《储备粮仓环境监测系统》的项目。因此自己总结关于MQ-2的技术文档&#xff0c;与大家共享&#xff0c;共同学习&#xff01; 一、MQ-2烟雾传感器的应用领域 可用于家庭和工厂的气体泄漏监测装…

烟雾传感器模块资料(MQ-2)

实物项目案例 1、产品概述 MQ-2 气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时&#xff0c;传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号…

程序员需知的9个编程学习官网,建议收藏

毫无疑问&#xff0c;一项技术&#xff0c;最权威的文档一定是它的官方文档&#xff0c;所有的教程、书籍都是直接或者间接在官方相关文档的基础上完成。所以&#xff0c;编程学习&#xff0c;后面最好还是要看官网的。当然&#xff0c;官网大部分都是英文——其实配合一些翻译…

什么样的人适合学编程?

前言 怎么样的人才适合学习编程&#xff0c;无论是对家长还是刚开始接触编程的人来说&#xff0c;相信还是不少人对这个问题感兴趣。对于这个问题谈谈本人一点浅薄的理解&#xff0c;可能观点比较片面、主观&#xff0c;欢迎留言讨论。 个人认为对于学习编程的人大概可以划分为…

PLC编程入门基础知识

PLC即为可编程逻辑控制器&#xff0c;实质是一种专用于工业控制的计算机&#xff0c;其硬件结构基本上与微型计算机相同。工业生产和科技的发展都离不开PLC的自动化控制&#xff0c;作为一名电工电气行业从业者&#xff0c;想要不被时代所抛弃&#xff0c;就要不断充实自己、投…

编程入门先学什么

编程入门先学什么&#xff0c;这恐怕是很多编程小白最关心的问题&#xff0c;毕竟好的开始是成功的一半。不过关于编程入门&#xff0c;不同的人有不同的看法&#xff0c;那么编程入门究竟先学什么比较好呢&#xff1f;小编这就来为你讲解。 1、掌握编程思想 很多人学习编程的…

儿童学计算机编程好处,十个理由告诉你孩子为什么要学习编程?

1. 高就业需求 2018年的全新数据,美国有240万涉及STEM的职业缺口,STEM包括科学、科技、工程、数学。STEM行业中71%的工作是与计算机相关的,但是STEM专业的学生只有8%是计算机科学专业的。也就是说,就业市场急需CS专业的毕业生。 小朋友学习编程,长大以后就有可能进入高收入…

千万不要学编程!

今天我在CSDN博文中&#xff0c;不讲技术&#xff0c;不讲技术&#xff0c;不讲技术&#xff01;重要的事情说三遍&#xff01;我要说的是&#xff0c;千万别学编程&#xff0c;为什么说“千万不要学编程”呢&#xff1f;我们可以先反过来讨论“我们为什么要学编程&#xff1f;…

学编程之前需要哪些掌握的基础知识

随着大数据、物联网、人工智能等技术的逐渐普及&#xff0c;程序设计语言正在成为一个重要的工具&#xff0c;掌握编程将成为现代职场人的基本要求之一。 学习编程需要一个系统的过程&#xff0c;在学习编程之前最好了解以下几个方面的知识&#xff1a;第一&#xff1a;操作系统…

想学plc但是没有计算机基础,没有电工基础可以学plc编程吗?能学懂PLC编程吗?...

没有电工基础&#xff0c;想直接学习plc也不是不能&#xff0c;但前提是你的物理、数学以及计算机水平能说得过去&#xff0c;否则&#xff0c;从电工基础开始学起&#xff0c;是最省时省力的捷径。 口说无凭&#xff0c;我们来分析一下&#xff0c;学习PLC&#xff0c;除了PLC…

零基础编程入门先学什么

零基础编程入门先学什么&#xff1f;编程语言有几百种&#xff0c;我们应该怎么选择。想学习编程&#xff0c;加入互联网行业&#xff0c;哪一个更有前途&#xff1f;在小白学习编程会有各种各样的问题&#xff0c;今天小编我就来为你解答。 一、怎么选择编程语言 编程语言有很…

学编程需要什么基础?

程序员薪酬高、工作环境好,是很多同学向往的职业,让很多非计算机专业的同学羡慕不已。非计算机专业难道就不能成为程序员了吗? 一、学编程需要什么基础? 1、数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数…

计算机编程需要学哪些基础知识,学编程需要掌握哪些基础知识

随着互联网的不断发展&#xff0c;越来越多的人都在学习计算机编程开发技术&#xff0c;而今天我们就一起来了解一下&#xff0c;学编程需要掌握哪些基础知识。 1、CPU架构 你需要了解CPU架构&#xff0c;理解运算单元、记忆单元、控制单元是如何既各司其职又相互配合完成工作的…

图像处理-空间域平滑滤波

个人博客&#xff1a;http://www.chenjianqu.com/ 原文链接&#xff1a;http://www.chenjianqu.com/show-12.html 目录&#xff1a; 1. 空间域和频域的概念 2. 图像滤波 3. 图像卷积 4. 常用空间域滤波器 5. 线性点运算 6. 均值滤…

数字图像处理学习笔记(六)平滑滤波:均值滤波、中值滤波

实验截图&#xff1a; 均值滤波和中值滤波处理后的结果 实验代码&#xff1a; 代码&#xff08;1&#xff09;&#xff1a; imgimread(microchip.png); imgrgb2gray(img); subplot(1,3,1); imshow(img); title(原图);img_avefspecial(average,[3 3]); img_ffilter2(img_av…

五点三次平滑滤波

算法简介 五点三次平滑滤波能够有效去除信号中的高频随机噪声&#xff0c;在数字信号处理中有着广泛应用&#xff0c;且滤波效果和灵活性优于滑动平均滤波。五点三次平滑滤波效果如下图所示&#xff1a; 完整代码&#xff08;java&#xff09; //函数参数说明&#xff1a;a…