Arduino Uno 实验15——MQ-135 气体传感器模块
MQ-135 气体传感器模块简介(空气质量检测 有害气体检测)
MQ135气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在污染气体时,传感器的电导率随空气中污染气体浓度的增加而增大。MQ135气体传感器对氨气、硫化物、苯系蒸汽的灵敏度高,对烟雾和其它有害气体的监测也很理想。这种传感器可检测多种有害气体,是一款适合多种应用的低成本传感器。
主要用途:家庭和环境的有害气体检测装置
主要芯片:LM393、MQ-135气体传感器
不同气体的型号选择
使用步骤:
①将配套程序下载到相应的开发板中。
②将串口线和模块接入开发板,给开发板上电。
若选择DOUT,TTL高低电平端,输出信号可以直接接单片机IO口或者接一个NPN型三极管去驱动继电器,电位器RP在这里用于调节输出电平跳变的阀值,当传感器检测到被测气体时,比较器LM393管脚2点的电压值,跟传感器检测到气体的浓度成正比,当浓度值超过电位器RP设定的阀值时,比较器2脚的点位高于3脚的点位,这个时候,比较器1脚输出低电平,LED灯亮,R3为LED灯限流电阻,C1为滤波电容。传感器输出低电平,反之,当没有信号的时候,传感器输出高电平,等于电源电压。
若选择AOUT,模拟量输出,那样就不用管电位器了,直接将AOUT脚接AD转换的输入端或者,带有AD功能的单片机,就可以了。根据我们的经验:在正常环境中,即:没有被测气体的环境,设定传感器输出电压值为参考电压,这时,AOUT端的电压在1V左右,当传感器检测到被测气体时,电压每升高0.1V,实际被测气体的浓度增加20ppm(简单的说:1ppm=1mg/kg=1mg/L=1×10-6 常用来表示气体浓度,或者溶液浓度。),根据这个参数就可以在单片机里面将测得的模拟量电压值转换为浓度值。注意:如果您是用来做精密仪器,请购买市场上标准的校准仪器,不然存在误差,因为,输出浓度和电压关系的比值并非线性,而是趋于线性。
③让传感器先预热一分钟。
④把传感器放入含有敏感气体的装置中,模块上的信号指示灯点亮。 把传感器从敏感气体装置中取出,模块上的信号指示灯熄灭。
MQ-135 气体传感器模块的使用
实验一:模拟值和数字值读取
项目要求:
直接读取数字信号和模拟信号的数值。
电路搭建
参考程序
int mqPinDO = 2;
int mqPinAO = A0;
void setup(){pinMode(mqPinDO,INPUT); pinMode(mqPinAO,INPUT); Serial.begin(9600);
}
void loop() {int mqDValue =digitalRead(mqPinDO);Serial.print("mqDValue =");Serial.println(mqDValue);int mqAValue =analogRead(mqPinAO);Serial.print("mqAValue =");Serial.println(mqAValue);delay(200);
}
实验结果
实验二:未完成
说明:
根据上面手册说明,还与环境的温度和湿度有关,
/**************************************************************************/
/*!
@file MQ135.cpp
@author G.Krocker (Mad Frog Labs)
@license GNU GPLv3First version of an Arduino Library for the MQ135 gas sensor
TODO: Review the correction factor calculation. This currently relies on
the datasheet but the information there seems to be wrong.@section HISTORYv1.0 - First release
*/
/**************************************************************************/#include "MQ135.h"/**************************************************************************/
/*!
@brief Default constructor@param[in] pin The analog input pin for the readout of the sensor
*/
/**************************************************************************/MQ135::MQ135(uint8_t pin) {_pin = pin;
}/**************************************************************************/
/*!
@brief Get the correction factor to correct for temperature and humidity@param[in] t The ambient air temperature
@param[in] h The relative humidity@return The calculated correction factor
*/
/**************************************************************************/
float MQ135::getCorrectionFactor(float t, float h) {return CORA * t * t - CORB * t + CORC - (h-33.)*CORD;
}/**************************************************************************/
/*!
@brief Get the resistance of the sensor, ie. the measurement value@return The sensor resistance in kOhm
*/
/**************************************************************************/
float MQ135::getResistance() {int val = analogRead(_pin);return ((1023./(float)val) * 5. - 1.)*RLOAD;
}/**************************************************************************/
/*!
@brief Get the resistance of the sensor, ie. the measurement value correctedfor temp/hum@param[in] t The ambient air temperature
@param[in] h The relative humidity@return The corrected sensor resistance kOhm
*/
/**************************************************************************/
float MQ135::getCorrectedResistance(float t, float h) {return getResistance()/getCorrectionFactor(t, h);
}/**************************************************************************/
/*!
@brief Get the ppm of CO2 sensed (assuming only CO2 in the air)@return The ppm of CO2 in the air
*/
/**************************************************************************/
float MQ135::getPPM() {return PARA * pow((getResistance()/RZERO), -PARB);
}/**************************************************************************/
/*!
@brief Get the ppm of CO2 sensed (assuming only CO2 in the air), correctedfor temp/hum@param[in] t The ambient air temperature
@param[in] h The relative humidity@return The ppm of CO2 in the air
*/
/**************************************************************************/
float MQ135::getCorrectedPPM(float t, float h) {return PARA * pow((getCorrectedResistance(t, h)/RZERO), -PARB);
}/**************************************************************************/
/*!
@brief Get the resistance RZero of the sensor for calibration purposes@return The sensor resistance RZero in kOhm
*/
/**************************************************************************/
float MQ135::getRZero() {return getResistance() * pow((ATMOCO2/PARA), (1./PARB));
}/**************************************************************************/
/*!
@brief Get the corrected resistance RZero of the sensor for calibrationpurposes@param[in] t The ambient air temperature
@param[in] h The relative humidity@return The corrected sensor resistance RZero in kOhm
*/
/**************************************************************************/
float MQ135::getCorrectedRZero(float t, float h) {return getCorrectedResistance(t, h) * pow((ATMOCO2/PARA), (1./PARB));
}
@file MQ135.h
@author G.Krocker (Mad Frog Labs)
@license GNU GPLv3First version of an Arduino Library for the MQ135 gas sensor
TODO: Review the correction factor calculation. This currently relies on
the datasheet but the information there seems to be wrong.@section HISTORYv1.0 - First release
*/
/**************************************************************************/
#ifndef MQ135_H
#define MQ135_H
#if ARDUINO >= 100#include "Arduino.h"
#else#include "WProgram.h"
#endif/// The load resistance on the board
#define RLOAD 10.0
/// Calibration resistance at atmospheric CO2 level
#define RZERO 76.63
/// Parameters for calculating ppm of CO2 from sensor resistance
#define PARA 116.6020682
#define PARB 2.769034857/// Parameters to model temperature and humidity dependence
#define CORA 0.00035
#define CORB 0.02718
#define CORC 1.39538
#define CORD 0.0018/// Atmospheric CO2 level for calibration purposes
#define ATMOCO2 397.13class MQ135 {private:uint8_t _pin;public:MQ135(uint8_t pin);float getCorrectionFactor(float t, float h);float getResistance();float getCorrectedResistance(float t, float h);float getPPM();float getCorrectedPPM(float t, float h);float getRZero();float getCorrectedRZero(float t, float h);
};
#endif
原理图
Arduino Uno 实验15——MQ-135 气体传感器模块相关推荐
- Arduino Uno 实验11——MQ-3酒精乙醇传感器模块
MQ-3酒精乙醇传感器模块简介 MQ-3气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sn02).当传感器所处环境中存在酒精蒸汽时,传感器的电导率随空气中酒精气体浓度的增加而增大. ...
- Arduino Uno 实验14——声音传感器
声音传感器简介 声音传感器的作用相当于一个话筒(麦克风).它用来接收声波,显示声音的振动图像,但不能对噪声的强度进行测量. 该传感器内置一个对声音敏感的电容式驻极体话筒.声波使话筒内的驻极体薄 ...
- 生物医学信号检测与处理实验5——2声表面波气体传感器+3电传感器+4吸湿膨胀引起的MEMS压力传感器漂移
文章目录 声表面波气体传感器 电传感器 吸湿膨胀引起的MEMS压力传感器漂移 实验总结 声表面波气体传感器 声表面波 (SAW)是沿固体材料表面传播的声波,它的振幅随材料深度通常呈指数迅速衰减.声表面 ...
- 【雕爷学编程】Arduino动手做(88)---水流量传感器模块
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...
- 第十七篇、基于Arduino uno,获取cp2d12红外测距传感器的原始值和距离值——结果导向
0.结果 说明:先来看看串口调试助手显示的结果,第一个值是原始的模拟电压值,第二个值是距离值,如果是你想要的,可以接着往下看. 1.外观 说明:虽然红外测距传感器形态各异,但是原理和代码都是适用的,只 ...
- Arduino Uno 实验8——HC-SR04 超声波测距模块
HC-SR04 超声波测距模块简介 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现. HC-SR04超声波 ...
- Arduino Uno 实验6——LM35温度传感器
LM35温度传感器简介 LM35 是由National Semiconductor 所生产的温度传感器,其输出电压为摄氏温标.LM35是一种得到广泛使用的温度传感器. 由于它采用内部补偿,所以 ...
- Arduino Uno 实验4——电位器
电位器简介: 电位器属于无极性器件,可变电阻的一种,三个触点,通过旋转旋钮改变2号脚的位置,从而改变阻值的大小,1脚和3脚分别接开发板的5V和GND,2脚接模拟输入引脚. 电位器的使用 实验一:电 ...
- Arduino Uno 实验2——按键开关
按键开关简介 按键是一种常用的控制电器元件,常用来接通或断开电路,从而达到控制电机或者其他设备运行的开关.按键的外观多种多样,本次实验使用的是这种微型按键,6mm的,如下图: 由图可知:按键没按下 ...
最新文章
- fragment类onresume里面刷新操作处理
- Dockerfile的介绍
- chkdsk 检查卷位图时发现损坏_如何修复Windows 10引导记录损坏故障
- MySQL 去除重复的方法
- Qt中使用OpenGL进行绘图
- 2019最新Python爬虫高频率面试题总结(一)
- python 月报_python实践--月报分析之获取jira缺陷数据
- iOS 面试题分析(二)
- 计算机数据结构图知识点,2011考研计算机数据结构复习重点解析:图的应用
- lzg_ad:XPE中的EWF分区设置说明
- 华为ensp ospf配置
- 使用 bioMart 包获取数据库信息
- 100小时学习SAP之自学环境(一)
- 怎么修改html游戏存档,星露谷物语存档修改方法 如何修改游戏存档
- 谷歌浏览器黑色主题设置
- ElasticJob源码部分解读-Zookeeper建立连接
- python在园林中的应用_攀缘植物在园林中的应用
- java计算机毕业设计失物招领信息交互平台源代码+数据库+系统+lw文档
- 联想E480升级硬盘到固态 加内存条
- 带你了解IEEE1394接口技术