Skip to main content

Grove - 气体传感器(MQ9)

pir

Grove - 气体传感器(MQ9)模块适用于气体泄漏检测(家庭和工业)。它适合检测液化石油气、一氧化碳、甲烷。由于其高灵敏度和快速响应时间,可以尽快进行测量。传感器的灵敏度可以通过电位器进行调节。

注意

传感器值仅反映在允许误差范围内气体浓度的近似趋势,它不代表确切的气体浓度。检测空气中的某些成分通常需要更精确和昂贵的仪器,这不能用单个气体传感器来完成。如果您的项目旨在获得非常精确水平的气体浓度,那么我们不推荐这款气体传感器。

传感器

气体类型

立即购买

MQ2可燃气体、烟雾
MQ3酒精蒸汽
MQ5液化石油气、天然气、城市煤气
MQ9一氧化碳、煤气、液化气
tip

我们已经发布了Seeed气体传感器选择指南,它将帮助您选择最适合您需求的气体传感器。

特性

  • 检测范围广
  • 稳定且使用寿命长
  • 响应快速且灵敏度高
tip

有关Grove模块的更多详细信息,请参考Grove系统

规格参数

项目参数最小值典型值最大值单位
VCC工作电压4.955.1V
PH加热功耗0.5-340mW
RL负载电阻可调
RH加热器电阻-33Ω±5%-Ω
Rs传感电阻2-20000Ω
CO/CH4/LPG范围检测浓度200-1000/10000/10000ppm

应用创意

  • 气体泄漏检测。
  • 玩具。

硬件概述

这是一个模拟输出传感器。需要连接到Grove底板的任意一个模拟接口。本教程中使用的示例使用A0模拟引脚。将此模块连接到底板的A0端口。

也可以使用跳线直接将Grove模块连接到Arduino,连接方式如下表所示:

Arduino气体传感器
5VVCC
GNDGND
NCNC
Analog A0SIG

当气体浓度增加时,气体传感器的输出电压也会增加。可以通过调节电位器来调整灵敏度。请注意,传感器的最佳预热时间为24小时以上。有关MQ-9传感器的详细信息,请参考资源部分提供的数据手册。

支持的平台

ArduinoRaspberry Pi

pir

pir

caution

上面提到的支持平台表示该模块的软件或理论兼容性。在大多数情况下,我们只为Arduino平台提供软件库或代码示例。无法为所有可能的MCU平台提供软件库/演示代码。因此,用户必须编写自己的软件库。

开始使用

与 Arduino 一起使用

Seeeduino V4.2Base ShieldGrove - 气体传感器(MQ9)

pir

pir

pir

立即购买立即购买立即购买

pir

如上图所示,将 Grove - 气体传感器(MQ9) 连接到 A0 端口。

气体检测:基础示例

在这个示例中,传感器连接到 A0 引脚。显示从传感器读取的电压值。这个值可以用作阈值来检测气体浓度的任何增加/减少。

void setup() {
Serial.begin(9600);
}

void loop() {
float sensor_volt;
float sensorValue;

sensorValue = analogRead(A0);
sensor_volt = sensorValue/1024*5.0;

Serial.print("sensor_volt = ");
Serial.print(sensor_volt);
Serial.println("V");
delay(1000);
}

测量:近似值

这个示例演示了一种了解气体近似浓度的方法。根据 MQ9 传感器的数据手册,这些方程式是在标准条件下测试的,并未经过校准。它可能会因温度或湿度的变化而有所不同。

  1. 将气体传感器置于清洁空气环境中。上传以下程序。
void setup() {
Serial.begin(9600);
}

void loop() {
float sensor_volt;
float RS_air; // 在清洁空气中获取 RS 的值
float R0; // 在 LPG 中获取 R0 的值
float sensorValue;

/*--- 通过测试 100 次获取平均数据 ---*/
for(int x = 0 ; x < 100 ; x++)
{
sensorValue = sensorValue + analogRead(A0);
}
sensorValue = sensorValue/100.0;
/*-----------------------------------------------*/

sensor_volt = sensorValue/1024*5.0;
RS_air = (5.0-sensor_volt)/sensor_volt; // 省略 *RL
R0 = RS_air/9.9; // 从图表中得出 LPG 气体中 RS/R0 的比值为 9.9(使用 WebPlotDigitizer 找到)

Serial.print("sensor_volt = ");
Serial.print(sensor_volt);
Serial.println("V");

Serial.print("R0 = ");
Serial.println(R0);
delay(1000);

}
  1. 然后,打开 Arduino IDE 的串行监视器。记下 R0 的值,这需要在下一个程序中使用。请在读数稳定后记下 R0。

将下面的 R0 替换为上面测试的 R0 值。将传感器暴露于上面列出的任何一种气体中。

void setup() {
Serial.begin(9600);
}

void loop() {

float sensor_volt;
float RS_gas; // 在气体中获取 RS 的值
float ratio; // 获取比值 RS_GAS/RS_air
int sensorValue = analogRead(A0);
sensor_volt=(float)sensorValue/1024*5.0;
RS_gas = (5.0-sensor_volt)/sensor_volt; // 省略 *RL

/*-将名称"R0"替换为第一次测试演示中的 R0 值-*/
ratio = RS_gas/R0; // ratio = RS/R0
/*-----------------------------------------------------------------------*/

Serial.print("sensor_volt = ");
Serial.println(sensor_volt);
Serial.print("RS_ratio = ");
Serial.println(RS_gas);
Serial.print("Rs/R0 = ");
Serial.println(ratio);

Serial.print("\n\n");

delay(1000);

}

现在,我们可以从下图中获取气体的浓度。

pir

根据图表,我们可以看到我们能测试的最小浓度是 200ppm,最大是 10000ppm,换句话说,我们可以获得 0.02% 到 1% 之间的气体浓度。但是,我们无法提供公式,因为比值和浓度之间的关系是非线性的。

与 Raspberry Pi 一起使用(配合 Grove Base Hat for Raspberry Pi)

硬件

  • 步骤 1. 本项目中使用的物品:
Raspberry piGrove Base Hat for RasPiGrove - 气体传感器(MQ9)

pir

pir

pir

立即购买立即购买立即购买
  • 步骤 2. 将 Grove Base Hat 插入 Raspberry。
  • 步骤 3. 将 Grove - 气体传感器(MQ9) 连接到 Base Hat 的 A0 端口。
  • 步骤 4. 通过 USB 线缆将 Raspberry Pi 连接到 PC。

pir

note

对于步骤 3,您可以将 Grove - 气体传感器(MQ9) 连接到任何模拟端口,但请确保您使用相应的端口号更改命令。

软件

  • 步骤 1. 按照设置软件配置开发环境。
  • 步骤 2. 通过克隆 grove.py 库下载源文件。
cd ~
git clone https://github.com/Seeed-Studio/grove.py

  • 步骤 3. 执行以下命令编写代码。
cd grove.py/grove
nano grove_gas_sensor_mq9.py

然后您应该在此文件中复制以下代码,并按 ++ctrl+x++ 退出并保存。


import math
import sys
import time
from grove.adc import ADC


class GroveGasSensorMQ9:

def __init__(self, channel):
self.channel = channel
self.adc = ADC()

@property
def MQ9(self):
value = self.adc.read(self.channel)
return value

Grove = GroveGasSensorMQ9


def main():
if len(sys.argv) < 2:
print('Usage: {} adc_channel'.format(sys.argv[0]))
sys.exit(1)

sensor = GroveGasSensorMQ9(int(sys.argv[1]))

print('Detecting...')
while True:
print('Gas value: {0}'.format(sensor.MQ9))
time.sleep(.3)

if __name__ == '__main__':
main()

  • 步骤 4. 执行以下命令运行代码。

python grove_gas_sensor_mq9.py 0

success

如果一切顺利,您将能够看到以下结果


pi@raspberrypi:~/grove.py/grove $ python grove_gas_sensor_mq9.py 0
Detecting...
Gas value: 345
Gas value: 348
Gas value: 351
Gas value: 354
Gas value: 357
Gas value: 360
Gas value: 363
Gas value: 365
Gas value: 368
Gas value: 370
^CTraceback (most recent call last):
File "grove_gas_sensor_mq9.py", line 69, in <module>
main()
File "grove_gas_sensor_mq9.py", line 66, in main
time.sleep(.3)
KeyboardInterrupt


您可以通过简单地按 ++ctrl+c++ 退出此程序。

note

您可能已经注意到,对于模拟端口,丝印引脚编号类似于 A0, A1,但在命令中我们使用参数 01,就像数字端口一样。因此请确保您将模块插入正确的端口,否则可能会出现引脚冲突。

资源

建议阅读/参考资料

原理图

数据手册

技术支持与产品讨论

可升级为工业传感器

通过 SenseCAP S2110 控制器S2100 数据记录器,您可以轻松将 Grove 转换为 LoRaWAN® 传感器。Seeed 不仅帮助您进行原型设计,还为您提供了使用 SenseCAP 系列坚固的工业传感器扩展项目的可能性。

IP66 外壳、蓝牙配置、与全球 LoRaWAN® 网络的兼容性、内置 19 Ah 电池以及来自 APP 的强大支持,使 SenseCAP S210x 成为工业应用的最佳选择。该系列包括土壤湿度、空气温湿度、光照强度、CO2、EC 传感器以及 8 合 1 气象站。为您下一个成功的工业项目尝试最新的 SenseCAP S210x。

Loading Comments...