Grove - 气体传感器(MQ5)
Grove - 气体传感器(MQ5)模块适用于气体泄漏检测(家庭和工业)。它适合检测H2、LPG、CH4、CO、酒精。由于其高灵敏度和快速响应时间,可以尽快进行测量。传感器的灵敏度可以通过电位器进行调节。
注意
传感器值仅反映在允许误差范围内气体浓度的近似趋势,它不代表确切的气体浓度。检测空气中的某些成分通常需要更精确和昂贵的仪器,这不能用单个气体传感器来完成。如果您的项目旨在获得非常精确水平的气体浓度,那么我们不推荐这个气体传感器。传感器 | 气体类型 | 立即购买 |
MQ2 | 可燃气体、烟雾 | |
MQ3 | 酒精蒸汽 | |
MQ5 | LPG、天然气、城市煤气 | |
MQ9 | 一氧化碳、煤气、液化气 |
我们已经发布了Seeed气体传感器选择指南,它将帮助您选择最适合您需求的气体传感器。
特性
- 检测范围广
- 稳定且使用寿命长
- 响应快速且灵敏度高
规格参数
项目 | 参数 | 最小值 | 典型值 | 最大值 | 单位 |
---|---|---|---|---|---|
VCC | 工作电压 | 4.9 | 5 | 5.1 | V |
PH | 加热功耗 | 0.5 | - | 800 | mW |
RL | 负载电阻 | 可调 | |||
RH | 加热器电阻 | - | 31±10% | - | Ω |
Rs | 传感电阻 | 10 | - | 60 | kΩ |
Scope | 检测浓度范围 | 200 | - | 10000 | ppm |
应用
- 气体泄漏检测
- 玩具
硬件概述
这是一个模拟输出传感器。需要连接到 Grove Base Shield 的任意一个模拟接口。本教程中使用的示例使用 A0 模拟引脚。将此模块连接到 Base Shield 的 A0 端口。
也可以通过跳线直接将 Grove 模块连接到 Arduino,连接方式如下表所示:
Arduino | 气体传感器 |
---|---|
5V | VCC |
GND | GND |
NC | NC |
Analog A0 | SIG |
当气体浓度增加时,气体传感器的输出电压也会增加。可以通过调节电位器来调整灵敏度。请注意,传感器的最佳预热时间为 24 小时以上。有关 MQ-5 传感器的详细信息,请参考资源部分提供的数据手册。
支持的平台
Arduino | Raspberry Pi |
---|---|
上述提到的支持平台表示该模块的软件或理论兼容性。在大多数情况下,我们只为 Arduino 平台提供软件库或代码示例。无法为所有可能的 MCU 平台提供软件库/演示代码。因此,用户必须编写自己的软件库。
##开始使用
与Arduino一起使用
所需材料
Seeeduino V4.2 | Base Shield | Grove - 气体传感器(MQ5) |
---|---|---|
立即购买 | 立即购买 | 立即购买 |
如上图所示,将Grove - 气体传感器(MQ5)连接到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);
}
测量:近似值
这个示例演示了一种了解气体近似浓度的方法。根据MQ5传感器的数据手册,这些方程是在标准条件下测试的,并未经过校准。它可能会因温度或湿度的变化而有所不同。
- 将气体传感器置于清洁空气环境中。上传下面的程序。
void setup() {
Serial.begin(9600);
}
void loop() {
float sensor_volt;
float RS_air; // 通过清洁空气获取RS的值
float R0; // 通过H2获取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/6.5; // 从图表中可知,在清洁空气中RS/R0的比值为6.5(使用WebPlotDigitizer找到)
Serial.print("sensor_volt = ");
Serial.print(sensor_volt);
Serial.println("V");
Serial.print("R0 = ");
Serial.println(R0);
delay(1000);
}
- 然后,打开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);
}
现在,我们可以从下图中获取气体的浓度。
根据图表,我们可以看到我们能测试的最小浓度是200ppm,最大是10000ppm,换句话说,我们可以获得0.02%到1%之间的气体浓度。但是,我们无法提供公式,因为比值和浓度之间的关系是非线性的。
与Raspberry Pi一起使用(使用Grove Base Hat for Raspberry Pi)
硬件
- 步骤1. 本项目中使用的物品:
Raspberry pi | Grove Base Hat for RasPi | Grove - 气体传感器(MQ5) |
---|---|---|
立即购买 | 立即购买 | 立即购买 |
- 步骤2. 将Grove Base Hat插入Raspberry Pi。
- 步骤3. 将Grove - 气体传感器(MQ5)连接到Base Hat的A0端口。
- 步骤4. 通过USB线将Raspberry Pi连接到PC。
对于步骤3,您可以将Grove - 气体传感器(MQ5)连接到任何模拟端口,但请确保您使用相应的端口号更改命令。
软件
- 步骤1. 按照设置软件配置开发环境。
- 步骤2. 通过克隆grove.py库下载源文件。
cd ~
git clone https://github.com/Seeed-Studio/grove.py
- 步骤3. 执行以下命令编写代码。
cd grove.py/grove
nano grove_gas_sensor_mq5.py
然后您应该在此文件中复制以下代码,并按++ctrl+x++退出并保存。
import math
import sys
import time
from grove.adc import ADC
class GroveGasSensorMQ5:
def __init__(self, channel):
self.channel = channel
self.adc = ADC()
@property
def MQ5(self):
value = self.adc.read(self.channel)
return value
Grove = GroveGasSensorMQ5
def main():
if len(sys.argv) < 2:
print('Usage: {} adc_channel'.format(sys.argv[0]))
sys.exit(1)
sensor = GroveGasSensorMQ5(int(sys.argv[1]))
print('Detecting...')
while True:
print('Gas value: {0}'.format(sensor.MQ5))
time.sleep(.3)
if __name__ == '__main__':
main()
- 步骤4. 执行以下命令运行代码。
python grove_gas_sensor_mq5.py 0
如果一切顺利,您将能够看到以下结果
pi@raspberrypi:~/grove.py/grove $ python grove_gas_sensor_mq5.py 0
Detecting...
Gas value: 28
Gas value: 28
Gas value: 27
Gas value: 26
Gas value: 26
^CTraceback (most recent call last):
File "grove_gas_sensor_mq5.py", line 69, in <module>
main()
File "grove_gas_sensor_mq5.py", line 66, in main
time.sleep(.3)
KeyboardInterrupt
您可以通过简单地按++ctrl+c++退出此程序。
您可能已经注意到,对于模拟端口,丝印引脚号类似于A0, A1,但在命令中我们使用参数0和1,就像数字端口一样。因此请确保您将模块插入正确的端口,否则可能会出现引脚冲突。
资源
建议阅读/参考资料
- 如何选择气体传感器
- 什么是LEL
原理图
数据手册
技术支持与产品讨论
可升级为工业传感器
通过 SenseCAP S2110 控制器 和 S2100 数据记录器,您可以轻松将 Grove 转换为 LoRaWAN® 传感器。Seeed 不仅帮助您进行原型设计,还为您提供了使用 SenseCAP 系列坚固的工业传感器扩展项目的可能性。
IP66 外壳、蓝牙配置、与全球 LoRaWAN® 网络的兼容性、内置 19 Ah 电池以及来自 APP 的强大支持,使 SenseCAP S210x 成为工业应用的最佳选择。该系列包括土壤湿度、空气温湿度、光照强度、CO2、EC 传感器以及 8 合 1 气象站。为您下一个成功的工业项目尝试最新的 SenseCAP S210x。