数码之家

 找回密码
 立即注册
搜索
查看: 11931|回复: 45

[Arduino] 同步采样对比 MQ系列气敏传感器,证实术业有专攻(原创)

[复制链接]
发表于 2021-6-11 11:01:24 | 显示全部楼层 |阅读模式
玩过 Arduino 的朋友可能大多接触过 MQ 系列气敏头,利用材料电阻率随特定气体浓度变化的特性,制成气敏电阻,用于检测空气中有害气体(氢气、甲烷等),进而实现漏气报警。

由于输出是电阻这样的模拟信号,加之气敏头需要额外供电预热,气敏头多以模块形式出现。一般 Arduino 气敏模块集成了供电、分压转换、模拟比较器等功能,同时有数字量、模拟量输出。

实际使用中 MQ 系列传感器外观相近,今对常见型号进行比对测试,证实了术业各有专攻,特来分享。

【背景】

MQ 系列气敏头(模块)针对不同气体有多种型号,但外观大致相似:



千篇一律的外观和底板,区别只是个不干胶标签。如果标签无意或有意贴错,基本上没可能肉眼识别。更糟糕的是模块的敏感气体并不单一,甲烷模块可能对酒精也有反应,只是敏感度略低。

这里附上常见 MQ 系列的选型表,大多针对还原性气体有反应:



理论上区分型号的根本依据应该类似于光谱谱线图,即对各种气体敏感度的综合走势。为了研究这些模块各自特性,并确认标签没有胡乱贴错,有必要搭建一个同步采样平台。

【原理】

传感器以套件的形式买最为合适,虽说是店家临时把各种型号装成一大包,但至少保证货源差别不大,避免不同厂家、批次的有较大出入,尽可能降低比对中的不确定性。

由于传感器为气敏电阻分压结构,因而对于电源的稳定性要求较高;另一方面传感器自身有加热装置,每套上百 mA 的电流消耗也是 Arduino 无法统一提供的。

最终每路传感器都由各自独立的 7805 供电,单路原理如下:



所有 7805 的高压端 VI 由外电源统一供电;而 Arduino 主板使用 USB 电源即可实现供电+通信。实际测试过程中,由 Arduino 主板(准)同步采样各模块 AO 信号,即可实现传感器比对。

【硬件】

由于传感器数量众多,常规 Arduino UNO 的模拟端不够采样数目,因而使用 Arduino MEGA 进行测试。
画个 MEGA 的扩展板避免众多跳线,同时可以有效防止接触不良:



板子上总计有 9 路 MQ 测试座,每组测试座由一片独立的 78M05 供电。焊上后的样子:



焊上剩余的接插件,扩展板完工:



插上众气敏模块,有点内味儿了:



再插上 MEGA 底板,通电就是扑面而来的热浪:



实测外部供电电流达到了 1.3A,还好设计了各路独立的 7805,否则直接带不动。

【软件】

软件上并无太多复杂之处,使用 MEGA 依次读取各路 ADC 电压数值,并回传 PC 即可。编程自然是 Arduino IDE 最为合适,毕竟 MEGA 比较庞大,再去对照 AVR 引脚太费事。



附上上述测试工程源码:


利用 Arduino IDE 自带的绘图功能,可以直接识别串口数据,并绘制测试曲线:



这样一来短期测试可以直接用这个曲线来看走势;长期还是用串口助手保存成日志文件更为稳妥。

【效果】

手头没有太多气源,只拿简单酒精、打火机丁烷进行了测试。曲线变化还是有一定规律的:



可以看到对于这些激励,各敏感头响应不尽相同,但有如下几个简单结论:
a. 红色曲线(MQ3) 对于远处微弱的酒精反应灵敏,与选型表相吻合;
b. 青色曲线(MQ7) 对于酒精、丁烷都相当敏感,与实际一氧化碳有偏差,想必属于重叠干扰。

再往深了挖,想要通过曲线走势识别出是什么气体污染,目测得上人工神经网络(ANN)模型。
虽然不少探头对临近气体有反应,但反应的程度各不相同,相当于光谱走势有别。

若以已知气源逐次训练 ANN 模型,想要识别某种未知气体应该不是难事。

----------------------------------------------------------------------------

以上,用 Arduino MEGA 扩展板形式搭建了一个 MQ 气敏头同步采样平台,对常见的传感模块进行了初步比对。结果证实模块各自的敏感范围不尽相同,但同时也存在重叠区间,容易受到性质相近气体干扰。

后期如果有多种被测气源,假以人工神经网络(ANN)模型训练,做出个气体识别的专家系统也未尝不可。

最后祝大家折腾愉快!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 19家元 +356 收起 理由
jf201006 + 20 謝謝分享
ljlun + 20 優秀文章
geek云中漫步 + 10 原創內容
newnet1234 + 20 原創內容
xuyaz + 20
qianjiakun + 6
sunnyquan + 20 原創內容
海那边.. + 20 優秀文章
moontree + 20 謝謝分享
ch104517745 + 20 专业测评。

查看全部打赏

发表于 2021-6-11 12:39:51 | 显示全部楼层
很好、很专业。:praise::praise::praise:
回复 支持 反对

使用道具 举报

发表于 2021-6-11 16:27:32 | 显示全部楼层
:lol:好厉害的人啊
回复 支持 反对

使用道具 举报

发表于 2021-6-11 17:55:59 | 显示全部楼层
光是有这么多的传感器,就知道,已经很专业了。
回复 支持 反对

使用道具 举报

发表于 2021-6-11 20:17:22 | 显示全部楼层
刚用esp8266做了个空气质量检测器

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-11 21:07:26 | 显示全部楼层
892777011 发表于 2021-6-11 20:17
刚用esp8266做了个空气质量检测器

塞了不少头子进去啊,那个小的铁壳(空气质量)和大铁网(MQ)感觉监测范围有点重叠;

红外光的尘埃传感器不错,我家炒个菜,卧室角落里的尘埃传感器都有反应(其实油烟机不咋地)。

推荐个 SGP30,好用不贵,关键是体积小
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-11 21:09:20 | 显示全部楼层
892777011 发表于 2021-6-11 20:17
刚用esp8266做了个空气质量检测器

另外这个液晶是串口 HMI 屏吧,今年涨价夸张不?
回复 支持 反对

使用道具 举报

发表于 2021-6-11 21:19:13 | 显示全部楼层
硬说的话你这是时序数据,得用LSTM/RNN可能效果会好一些
不过我觉得划分一下,SVM凑活凑活得了
回复 支持 反对

使用道具 举报

发表于 2021-6-11 21:31:22 | 显示全部楼层
t3486784401 发表于 2021-6-11 21:07
塞了不少头子进去啊,那个小的铁壳(空气质量)和大铁网(MQ)感觉监测范围有点重叠;

红外光的尘埃传感 ...

那个是MP503,大的是MQ135,两个都是空气质量传感器,因为感觉电化学传感器比较玄学,所以做了两个互为对比,主要是最近在房间烟抽的比较多,夏天开了空调又不好通风,想看看空气到底咋样,顺便把数据上传做长期检测
回复 支持 反对

使用道具 举报

发表于 2021-6-11 21:34:11 | 显示全部楼层
t3486784401 发表于 2021-6-11 21:09
另外这个液晶是串口 HMI 屏吧,今年涨价夸张不?

的确是串口HMI屏,用起来方便点,之前买的50左右,2.4寸的。现在要一百多,毕竟有颗价值连城的stm32嘛::smile:
回复 支持 1 反对 0

使用道具 举报

发表于 2021-6-11 21:39:57 | 显示全部楼层
SGP30的确不错,但价格不便宜啊,均价要40左右,这个检测器成本都一百多了,就用普通的用吧,另外看了你的贴子也想买墨水屏玩玩了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-11 21:44:50 | 显示全部楼层
wllzhk 发表于 2021-6-11 21:19
硬说的话你这是时序数据,得用LSTM/RNN可能效果会好一些
不过我觉得划分一下,SVM凑活凑活得了 ...

行家啊,能在 Arduino 上跑出 CPU 的香气....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-11 21:50:22 | 显示全部楼层
892777011 发表于 2021-6-11 21:31
那个是MP503,大的是MQ135,两个都是空气质量传感器,因为感觉电化学传感器比较玄学,所以做了两个互为对比 ...

感谢科普型号!

气敏传感器都一个德行,就算 SGP30 也是有抽风的时候。
我放在卧室里的 SGP30,只要家门口酒精消毒剂喷一下,半小时内 eCO2、TVOC 全爆表。
有时候工作好好的 SGP30 自己的基线修正算法就炸了,接连几个小时爆表缓不过来,只能手动重启。

只是想安静地测个 CO2 避免太久不开窗,这逼得我都要去买红外激光的了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-11 21:53:45 | 显示全部楼层
892777011 发表于 2021-6-11 21:39
SGP30的确不错,但价格不便宜啊,均价要40左右,这个检测器成本都一百多了,就用普通的用吧,另外看了你的 ...

去年在家隔离入手了一片 SGP30,Arduino 怎么都跑不起来,相同代码已经用过 SGP30 的。
为验证是否系静电损坏,就在同一家买了第二片,然后同样的 BUG 让人欲哭无泪。

后来发现是 Adafruit 大姐的库有漏洞,在新型号的 SGP30 上因为 ID 识别不出来就罢工....
这学费交的....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-11 21:54:40 | 显示全部楼层
892777011 发表于 2021-6-11 21:34
的确是串口HMI屏,用起来方便点,之前买的50左右,2.4寸的。现在要一百多,毕竟有颗价值连城的stm32嘛::s ...

价值连城.... 那有一托盘岂不富可敌国了
回复 支持 反对

使用道具 举报

发表于 2021-6-12 09:48:32 | 显示全部楼层
t3486784401 发表于 2021-6-11 21:54
价值连城.... 那有一托盘岂不富可敌国了

那不可能,起码得一卡车:lol:
回复 支持 反对

使用道具 举报

发表于 2021-6-12 12:36:48 来自手机浏览器 | 显示全部楼层
7805输出要要加电容,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-12 12:54:13 | 显示全部楼层
zhkrid 发表于 2021-6-12 12:36
7805输出要要加电容,

因为带的是模块,各自都有板载去耦电容,也就没有在 7805 输出端这里加上。

为严谨些查下手册,证实输出端去耦主要是改善动态响应,这样一来模块自带去耦应该就够了:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2021-6-12 13:36:59 | 显示全部楼层
果然又是楼主啊,厉害:praise:
回复 支持 反对

使用道具 举报

发表于 2021-6-12 14:07:30 | 显示全部楼层
本帖最后由 revery 于 2021-6-12 14:10 编辑
t3486784401 发表于 2021-6-11 21:50
感谢科普型号!

气敏传感器都一个德行,就算 SGP30 也是有抽风的时候。

想要空气好,我有个办法,定期在房间内投入比例定量的液氧和液氮~在蒸发过程中还能顺便回收二氧化碳~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-8 21:47 , Processed in 0.296400 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表