arduino 读取模拟电压_MQ2气体/烟雾传感器如何工作及其与Arduino接口

arduino 读取模拟电压_MQ2气体/烟雾传感器如何工作及其与Arduino接口

使用MQ2气体传感器模块,为您的下一个Arduino项目带来一个人工鼻子。这是一个强大的气体传感器适用于感测LPG,烟雾,酒精,丙烷,氢气,甲烷和碳**一氧化碳**在空气中的浓度。

如果您打算创建一个室内空气质量监测系统;呼吸检查器或早期火灾探测系统,MQ2气体传感器模块是一个不错的选择。

 

 传感器提供的模拟输出电压与烟气浓度成正比。气体浓度越大,输出电压越高;而较低的气体浓度会导致低输出电压。以下动画说明了气体浓度和输出电压之间的关系。

 

来自MQ2气体传感器的模拟信号被进一步馈送到LM393高精度比较器(焊接在模块底部),当然是将信号数字化。与比较器一起使用的还有一个小电位器,您可以转动它来调整传感器的灵敏度。您可以使用它来调整传感器检测到的气体浓度。

该传感器对多种气体敏感-但无法确定是哪种气体!那很正常;大多数气体传感器就是这样。因此,最好是测量已知气体密度的变化,而不是检测正在变化的气体。

校准MQ2气体传感器模块

要校准气体传感器,可以将气体传感器保持在要检测的烟雾/气体附近,并继续旋转电位计,直到模块上的红色LED开始发光。

顺时针旋转螺丝以增加灵敏度,逆时针旋转螺丝以降低灵敏度。

模块上的比较器会不断检查模拟引脚(A0)是否已达到电位计设置的阈值。超过阈值时,数字引脚(D0)将变为高电平,并且信号LED点亮。当您需要在达到特定阈值时触发操作时,此设置非常有用。例如,当烟雾超过阈值时,您可以打开或关闭继电器,或指示机器人吹气/洒水。你有主意!

MQ2气体传感器模块的引脚排列
 

VCC 为模块供电。您可以将其连接到Arduino的5V输出。

GND 是接地引脚,需要连接到Arduino的GND引脚。

D0 (或 DIN)提供可燃气体存在的数字表示。

A0 (或 AIN)提供与烟气浓度成比例的模拟输出电压。

接线–将MQ2气体传感器模块连接到Arduino UNO

将VCC引脚连接到Arduino的5V引脚,并将GND引脚连接到Arduino的接地引脚(GND)。

将模块上的D0 输出引脚连接到Arduino上的数字引脚8,将模块上的A0 输出引脚连接到Arduino上的模拟引脚 A0。

Arduino代码

代码非常简单,基本上只读取A0引脚上的模拟电压。当检测到烟雾时,它还会在串行监视器上打印一条消息。

#define MQ2pin (0)
 ​
 float sensorValue;  //variable to store sensor value
 ​
 void setup()
 {
   Serial.begin(9600); // sets the serial port to 9600
   Serial.println("Gas sensor warming up! 气体传感器预热");
   delay(20000); // allow the MQ-6 to warm up
 }
 ​
 void loop()
 {
   sensorValue = analogRead(MQ2pin); // read analog input pin 0
   
   Serial.print("Sensor Value: ");
   Serial.print(sensorValue);
   
   if(sensorValue < 300) //阈值 根据实际情况判断 大于300 还是小于300 ,300也是变量
   {
     Serial.print(" | Smoke detected!  探测到烟雾 ");
   }
   
   Serial.println("");
   delay(2000); // wait 2s for next reading
 
}

串行监视器上的输出如下所示:

 

我的测试环境是 100多一点时 表示有烟雾  ,正常是700多。(检测的是 A0 的输出)

我是用 打火机 打着火后 再吹灭。 放出的甲烷 气体 。直接 放到 检测器 边上。检测出 100多一点的 输出

代码说明:

定义了一个名为sensorValue的变量来存储传感器值。

#define MQ2pin (0)
float sensorValue;  //定义变量

 在设置功能中:我们初始化与PC的串行通信,并等待20秒以允许传感器预热。

Serial.begin(9600); // sets the serial port to 9600
Serial.println("Gas sensor warming up!");
delay(20000); // allow the MQ-6 to warm up

循环功能:传感器值由analogRead()函数读取并显示在串行监视器上

 sensorValue = analogRead(MQ2pin); // read analog input pin 0  
 Serial.print("Sensor Value: ");
 Serial.print(sensorValue);

当气体浓度足够高时,传感器通常会输出大于300的值。我们可以使用if语句监控此值。当传感器值超过300时,我们将显示“检测到烟雾!”。信息。

if(sensorValue > 300)
{
     Serial.print(" | Smoke detected!");
}

注:

一、println 输出一行

Serial.println("输出的字符串 一行"); //println 输出一行

二、上传报错

 上传报错:avrdude: stk500_recv(): programmer is not responding

解决方案

每次上传代码时,都要拔下0,1引脚的线。上传完成后再接回去。因为 arduino上传进行数据交互时会用到这两个引脚

十分感谢这两位博主的分享:

焦秀文

https://blog.csdn.net/weixin_42533120/article/details/112499307

咖卜答

https://blog.csdn.net/weixin_40317528/article/details/88926989

  • 4
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ARDUINO mq-2烟雾传感器是一种基于MQ-2传感器的烟雾传感器模块。它具有高灵敏度,可以检测可燃气体和烟雾等气体。该传感器模块提供了两种输出方式。一种是数字量输出,通过设定浓度阈值,当检测到环境气体浓度超过阈值时,通过数字引脚输出低电平。另一种是模拟输出,浓度越高,模块的AO引脚输出电压值越高。需要注意的是,传感器通电后需要预热约20秒,测量的数据才会稳定。传感器工作时需要内部电热丝加热,所以发热是正常现象。传感器的模拟信号经过LM393高精度比较器进行数字化处理,同时配备一个小电位器,可以调整传感器的灵敏度和检测到的气体浓度。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Arduino提高篇11—烟雾传感器MQ-2](https://blog.csdn.net/TonyIOT/article/details/103380128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [arduino 读取模拟电压_MQ2气体/烟雾传感器如何工作及其与Arduino接口](https://blog.csdn.net/gaoxiang19820514/article/details/125972967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值