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 9600Serial.println("Gas sensor warming up! 气体传感器预热");delay(20000); // allow the MQ-6 to warm up}​void loop(){sensorValue = analogRead(MQ2pin); // read analog input pin 0Serial.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

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

  1. arduino 读取模拟电压_Arduino内置教程-基本原理-读取模拟电压

    读取模拟电压 这个例子展示怎样读取一个在模拟引脚PIN 0上的模拟输入,把analogRead()的值转换成电压,然后打印到Arduino IDE的串口监视器里. 硬件要求 Arduino or Ge ...

  2. arduino 读取模拟电压_基础部分-读取模拟电压

    这个示例展示了如何用模拟引脚0来读取模拟输入,用analogRead()来转换电压数值,之后把这个值输出在编译器的串口监视器上. 硬件需求 -Arduino控制板 -10K电位器 电路 上面的接线图是 ...

  3. arduino 读取当前时间_Arm难以撼动,暴露下的Arduino与RISCV联合体就是个笑话

    嵌入式系统开发人员一直在想方设法进一步缩短开发时间,特别是针对概念验证和快速原型开发.虽然开发套件已成为捷径之选,但设计人员需要找到一个平衡点,既兼顾外形尺寸和广受支持的生态系统,又要考虑性能要求. ...

  4. jetson连接PCF8591读取模拟电压值

    文章目录 一.PCF8591介绍 PCF8591引脚说明 PCF8591设置地址 二.PCF8591模块 功能描述: 主要性能指标: 三.PCF8591模块接口说明 三.PCF8591连接jetson ...

  5. 【正点原子FPGA连载】第十一章PL SYSMON测量输入模拟电压 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  6. (2)arduino读取电压相对值(模拟读取传感器数值)

    arduino读取电压相对值 准备工作 接线图 读取电压值代码 准备工作 需要准备的材料有:电位器一个.arduino uno单片机.杜邦线.面包板 接线图 电位器与滑动变阻器相似,若将其两端连接5V ...

  7. LabVIEW控制Arduino采集电位器电压(基础篇—4)

    目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用LIAT函数库中模拟IO的功能,通过Arduino Uno控制板上模拟输入端口实现对电压的测量,并显示在LabVIEW前 ...

  8. arduino读取水位传感器的数据显示在基于i2c的1602a上_构建Arduino的LoRa远程智能空气质量监测系统...

    背景知识视频教程 Arduino分步指南:完整指南 - 国外课栈​viadean.com Arduino微控制器:学习Arduino制作项目 - 国外课栈​viadean.com 通过构建实际应用程序 ...

  9. AD转换实验 编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值。(如:AD转换后的数字量为128,则

    编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值.(如:AD转换后的数字量为128,则数码管应该显示2 ...

最新文章

  1. 更改Tomcat虚拟内存大小
  2. 思科、华为交换机的一些命令
  3. git push被拒绝_规范git项目提交并自动生成项目commit log
  4. 天池 在线编程 捡胡萝卜(模拟)
  5. 树莓派安装python3.5_树莓派 | 04 安装基于python3.5的tensorflow,解决python版本不匹配问题...
  6. 湖北大学计算机科学与技术怎么样,湖北大学(专业学位)计算机技术考研难吗
  7. mie散射理论方程_Mie氏散射理论的实验研究
  8. python的基础集合(八)
  9. Dota2团战AI击败人类最全解析:能团又能gank,AI一日人间180年
  10. 【Linux】TOP命令
  11. HDU1560 DNA sequence IDA* + 强力剪枝 [kuangbin带你飞]专题二
  12. hdu4501——小明系列故事——买年货(多维背包)
  13. 马哥linux视频笔记,马哥linux视频的学习笔记
  14. java动态生成pdf含表格table和 合并两个pdf文件功能
  15. 自定义devexprsss分页控件
  16. leetcode报错reached end of file while parsing
  17. 车载诊断系统-OBD
  18. 笔记本电脑外接显示器以后,分辨率不正常的问题
  19. MySQL表的增删改查--你都知道吗?
  20. w7计算机管理哪个是显卡,win7怎么看显卡配置以及win7怎么看电脑完整配置

热门文章

  1. vue中引用tinymce图标不显示解决方法
  2. 优雅炫酷的WordPress 导航主题 适合做小众化导航站 源码下载
  3. linux 查看tdagent进程,Fluentd (td-agent) 日志收集系統
  4. 微博上流传的BAT对应级别和工资
  5. 深度优先搜索(DFS)和广度优先搜索(BFS)两种算法c++
  6. MATLAB r2020b完整工具箱列表和中文翻译
  7. html里name的含义
  8. 微信开放标签--H5唤醒手机app/跳转微信小程序
  9. 计算机考研408-I/O方式大题答题流程
  10. Windows API Hooking with MS Detours