- MQ系列气体传感器
- 准备硬件:
- 从MQ气体传感器测量PPM的方法:
- 计算洁净空气中的Ro值:
- 测量Rs的值:
- 将Rs / Ro比率与PPM相关联:
- 使用MQ传感器计算PPM的程序:
- 在具有Arduino和MQ-137的硬件上显示PPM值:
从工业时代开始,我们人类一直在迅速发展。随着每一项进展,我们也污染了我们的环境,并最终使其恶化。现在,全球变暖已成为一个令人震惊的威胁,甚至我们呼吸的空气也变得至关重要。因此,空气质量监测也开始变得越来越重要。因此,在本文中,我们将学习如何在Arduino上使用任何MQ系列气体传感器,并以PPM(百万分之一)显示输出。PPM也以毫克每升(mg / L)表示。这些传感器通常可用,并且对于测量如下所示的不同类型的气体也很可靠
MQ系列气体传感器
- 二氧化碳(CO2):MG-811
- 一氧化碳(MQ-9)
- 总挥发性有机化合物(TVOC):CCS811
- 等效二氧化碳(eCO2):CCS811
- 金属氧化物(MOX):CCS811
- 氨水:MQ-137
- 空气质量:MQ-135
- 液化石油气,酒精,烟气:MQ2
我们已经将MQ2用于烟雾感测,并将MQ-135用于空气质量监控项目。在这里,我将使用sainsmart的MQ-137传感器来测量以ppm为单位的氨。握住传感器后,我仔细阅读了所有可用的教程,发现没有适当的文档说明如何测量ppm气体。大多数教程要么只处理模拟值,要么介绍一些常数,这些常数对于测量所有类型的气体都不可靠。因此,在网上闲逛了很长时间之后,我终于找到了如何使用这些MQ系列气体传感器通过Arduino测量ppm。我正在从底部开始解释所有库,以便您可以将本文用于任何可用的气体传感器。
准备硬件:
MQ气体传感器既可以作为模块购买,也可以单独购买。如果您的目的是仅测量ppm,那么最好单独购买传感器,因为该模块仅适用于数字引脚。因此,如果您已经购买了模块,则必须执行一个小技巧,这将在后面进行讨论。现在,假设您已经购买了传感器。传感器的引脚和连接如下所示
如您所见,您只需要将“ H”的一端连接到电源,并将“ H”的另一端接地。然后合并两个A和两个B。将一组连接到电源电压,另一组连接到模拟引脚。电阻R L在使传感器工作中起着非常重要的作用。因此,请记下您使用的是哪个值,建议使用47k的值。
如果您已经购买了模块,则应跟踪PCB走线,以找到电路板上R L的值。Grauonline已经为我们完成了这项工作,MQ气体传感器板的电路图如下所示。
如您所见,电阻器R L(R2)连接在Aout引脚和地之间,因此,如果您有模块,则可以使用万用表在电阻模式下通过Vout引脚和Vcc引脚之间的电阻模式来测量R L的值。模块。在我的sainsmart MQ-137气体传感器中,RL的值为1K,位于下图所示的位置。
但是,该网站声称它提供了一个可变电位计R L,正如您在电路图中可以清楚地看到的那样,这是不正确的,该电位计用于设置运算放大器的可变电压,而与R L无关。因此,我们必须手动焊接上面显示的SMD电阻器(1K),并且必须在接地和Vout引脚两端使用自己的电阻器,该引脚将充当RL。数据表建议的RL最佳值为47K,因此我们将使用相同的值。
从MQ气体传感器测量PPM的方法:
现在我们知道R L的值,让我们继续如何实际测量这些传感器的ppm。像所有传感器一样,开始的地方是其数据表。这里提供了MQ-137数据表,但请确保您找到适合传感器的正确数据表。在数据表内,我们仅需要一张将相对于(Rs / Ro)VS PPM绘制的图形,这就是我们计算所需的图形。因此,请抓住它并放在方便的地方。我的传感器的一个如下所示。
事实证明,MQ137传感器可以测量NH3,C2H6O甚至CO。但是,在这里我只对NH3的值感兴趣。但是,您可以使用相同的方法为所需的任何传感器计算ppm。该图是我们找到ppm值的唯一来源,如果我们能够以某种方式计算Rs / Ro的比例(X轴),我们可以使用此图来找到ppm值(Y轴)。要找到Rs / Ro的值,我们需要找到Rs的值和Ro的值。其中Rs是气体浓度下的传感器电阻,Ro是干净先生的传感器电阻。
是的…这是计划,让我们看看如何摆脱这个…。
计算洁净空气中的Ro值:
请注意,在图表中Rs / Ro的值对于空气是恒定的(蓝色粗线),因此我们可以利用它来取得优势,并说当传感器在新鲜空气中工作时,Rs / Ro的值将为3.6,请参见图片下面
Rs / Ro = 3.6
从数据表中,我们还可以获得计算Rs值的公式。公式如下所示。如果您想知道如何推导此公式,可以通过jay con系统阅读,我也想感谢他们帮助我解决了这个问题。
在这个公式中,Vc的值是我们的电源电压(+ 5V),R L的值是我们已经计算出的值(对于我的传感器为47K)。如果我们编写一个小的Arduino程序,我们还可以找到V RL的值,最后计算Rs的值。我在下面给出了一个Arduino程序,该程序读取传感器的模拟电压(V RL),并使用此公式计算Rs的值,最后将其显示在串行监视器中。该程序通过注释部分得到了很好的解释,因此为了使本文简短,我在此跳过其解释。
/ * *在新鲜空气条件下测量已知RL的R0值的程序*程序:B.Aswinth Raj *网站:www.circuitdigest.com *日期:28-12-2017 * / //此程序效果最佳在温度为20°C,湿度为65%,O2浓度为21%并且Rl值为47K的新鲜空气室中#define RL 47 //电阻RL的值为47K void setup()//仅运行一次{Serial.begin(9600); //初始化用于显示值的串行COM} void loop(){float Analog_value;浮动VRL;浮动卢比;浮Ro; for(int test_cycle = 1; test_cycle <= 500; test_cycle ++)//读取传感器的模拟输出200次{Analog_value = Analog_value + AnalogRead(A0); //添加200的值} Analog_value = Analog_value / 500.0; //取平均VRL = Analog_value *(5.0 / 1023.0);//将模拟值转换为电压// RS =((Vc / VRL)-1)* RL是我们从数据表中获得的公式Rs =((5.0 / VRL)-1)* RL; //我们从数据表的图表Ro = Rs / 3.6获得的RS / RO为3.6; Serial.print(“ Ro at新鲜空气=”); Serial.println(Ro); //显示计算出的Ro delay(1000); //延迟1秒}
注意: Ro的值将变化,允许传感器至少预热10小时,然后使用Ro的值。
我总结Ro的值是30 KΩ为我的传感器(当R大号是47kΩ的)。您的可能会略有不同。
测量Rs的值:
现在我们知道Ro的值,我们可以使用上述两个公式轻松计算Rs的值。请注意,先前计算的Rs值是针对新鲜空气条件,当空气中存在氨气时,Rs值将不同。计算Rs的值不是一个大问题,我们可以在最终程序中直接注意。
将Rs / Ro比率与PPM相关联:
现在我们知道了如何测量Rs和Ro的值,我们将能够找到其比率(Rs / Ro)。然后,我们可以使用图表(如下所示)关联到相应的PPM值。
尽管NH3线(青色)看起来是线性的,但实际上不是线性的。外观是因为比例尺的外观不均匀。因此,Rs / Ro和PPM之间的关系实际上是对数的,可以用以下等式表示。
log(y)= m * log(x)+ b其中,y =比率(Rs / Ro)x = PPM m =线的斜率b =交点
为了找到m和b的值,我们必须考虑气体管线上的两个点(x1,y1)和(x2,y2)。在这里,我们正在使用氨水,因此我考虑的两个点是上图(标记为红色)中带有红色标记的(40,1)和(100,0.8)。
m = / m = log(0.8 / 1)/ log(100/40)m = -0.243
同样对于(b),让我们从图形中获得(70,0.75)的中点值(x,y),如上图所示(蓝色标记)
b = log(y)-m * log(x)b = log(0.75)-(-0.243)* log(70)b = 0.323
就是这样,我们已经计算了m和b的值,可以使用以下公式将(Rs / Ro)的值等同于PPM
PPM = 10 ^ {/ m}
使用MQ传感器计算PPM的程序:
下面给出了使用MQ传感器计算PPM的完整程序。几条重要的线在下面解释。
之前与该程序继续进行,我们需要在饲料值负载电阻(RL),斜率(m),截距(b)和阻力的新鲜空气(RO)的价值。已经解释了获取所有这些值的过程,所以现在让我们输入它们
#定义RL 47 //电阻RL的值为47K#定义m -0.263 //输入计算的斜率#定义b 0.42 //输入计算的截距#定义Ro 30 //输入找到的Ro值
然后读取传感器两端的电压降(VRL),并将其转换为电压(0V至5V),因为模拟读取将仅返回0到1024之间的值。
VRL = AnalogRead(MQ_sensor)*(5.0 / 1023.0); //测量压降并转换为0-5V
现在,已经计算出VRL的值,您可以使用上面讨论的公式来计算Rs的值以及比率(Rs / Ro)
比率= Rs / Ro; //找到比率Rs / Ro
最后,我们可以使用对数公式计算PPM并将其显示在串行监视器上,如下所示
双ppm = pow(10,(((log10(比率)-b)/ m))); //使用公式来计算ppm Serial.print(ppm); //显示ppm
在具有Arduino和MQ-137的硬件上显示PPM值:
足够多的理论让我们用传感器和LCD建立一个简单的电路来显示PPM中的气体值。我在这里使用的传感器是MQ137,它可以测量氨气,下面是我设置的电路图。
如电路图所示,连接传感器和LCD,并上传程序末尾给出的代码。您必须如上所述修改Ro值。如果您将4.7K以外的任何其他电阻用作RL,也请更改参数值。
在读取任何读数之前,请保持装置电源至少2小时(建议使用48小时以获得更准确的数值)。此时间称为加热时间,在此期间传感器预热。之后,您应该能够看到PPM的值和LCD屏幕上显示的电压,如下所示。
现在,要确保这些值是否确实与氨的存在有关,让我们将此装置放置在密闭的容器中,并在其中注入氨气以检查该值是否在增加。我没有合适的PPM仪表进行校准,如果有仪表的人可以测试此设置并让我知道,那将是很好的。
您可以观看下面的视频,以检查读数是否根据氨的存在而变化。希望您理解这个概念并喜欢学习。如果您有任何疑问,请将其留在评论部分或获得更详细的帮助,请在此处使用论坛。