arduino和MG111二氧化碳传感器采集co2

2023-10-30 09:40

本文主要是介绍arduino和MG111二氧化碳传感器采集co2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


原文地址:http://wiki.dfrobot.com.cn/index.php/(SKU:SEN0159)CO2_二氧化碳传感器模块_V1#.E6.A0.B7.E4.BE.8B.E4.BB.A3.E7.A0.81.E4.BA.8C

(SKU:SEN0159)CO2 二氧化碳传感器模块 V1

SEN0159.JPG

目录

 [隐藏] 
  • 1 简介
  • 2 产品参数
  • 3 使用教程
    • 3.1 连线图
    • 3.2 样例代码一
    • 3.3 样例代码二
    • 3.4 结果
  • 4 疑难解答

简介

温室效应、废气排放、冰川融化、岛国淹没,这一切的罪魁祸首就是CO2的过度排放。是时候家中常备一款CO2监测装置,来知道我们的环境危机是多么的紧迫。它还可以告诉你室内空气的质量,及时开窗降低CO2浓度。DFRobot为您带来这款CO2传感器。CO2浓度越高,输出的电压值就越小。通过我们的说明书和样例代码,用户可以轻松的读取CO2数值。

用户还可以用板子上的电位器直接设置阈值,当CO2浓度高达一定程度时,探头旁边的3P针头会输出一个信号(数字量)。

该模块采用工业级的MG-811 CO2探头,对CO2极为敏感,同时还能排除酒精和CO的干扰。该探头对环境温湿度的依赖小,性能稳定,快速恢复响应。模块自带信号放大电路,进一步提高灵敏度。另外,板子上的加热电路直接把5V转换成稳定6V,为探头加热供电,提高模块适应性。


产品参数

  • 传感器探头工作电压:6v
  • 内置升压电路,支持3.7~5v DC电源输入,电源电流大于500mA
  • 兼容蜂鸣器,通过调节板载金属电位器,可快速实现CO2超标蜂鸣器警报功能
  • 高品质接头,耐反复插拔
  • 沉金工艺,金色质感
  • 板子上带有模拟传感图标“A”和明显的电位器标识
  • 尺寸:32*42mm


  • 模块数据曲线表
数据曲线表


使用教程

连线图

SEN0159 Diagram
注意:使用二氧化传感器时,Arduino必须外接供电(7.5V-9V),否则会造成数据不准确。另外,样例2中需要更改代码,具体看#define 部分Application Related Macros
细节说明:电位器用来设置阀值,当设置的阀值小于测得的数值时,数字输出口便输出一个高电平。你可以在数字输出口接蜂鸣器模块或者LED模块用作报警显示。


样例代码一

void setup(){Serial.begin(9600);}void loop(){Serial.print("Sample value:");Serial.println(analogRead(0));delay(100);
}


样例代码二

/*******************Demo for MG-811 Gas Sensor Module V1.1*****************************
Author:  Tiequan Shao: tiequan.shao@sandboxelectronics.comPeng Wei:     peng.wei@sandboxelectronics.comLisence: Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)Note:    This piece of source code is supposed to be used as a demostration ONLY. Moresophisticated calibration is required for industrial field application. Sandbox Electronics    2012-05-31
************************************************************************************//************************Hardware Related Macros************************************/
#define         MG_PIN                       (0)     //define which analog input channel you are going to use
#define         BOOL_PIN                     (2)
#define         DC_GAIN                      (8.5)   //define the DC gain of amplifier/***********************Software Related Macros************************************/
#define         READ_SAMPLE_INTERVAL         (50)    //define how many samples you are going to take in normal operation
#define         READ_SAMPLE_TIMES            (5)     //define the time interval(in milisecond) between each samples in //normal operation/**********************Application Related Macros**********************************/
//These two values differ from sensor to sensor. user should derermine this value.
#define         ZERO_POINT_VOLTAGE           (0.324) //define the output of the sensor in volts when the concentration of CO2 is 400PPM
#define         REACTION_VOLTGAE             (0.020) //define the voltage drop of the sensor when move the sensor from air into 1000ppm CO2/*****************************Globals***********************************************/
float           CO2Curve[3]  =  {2.602,ZERO_POINT_VOLTAGE,(REACTION_VOLTGAE/(2.602-3))};   //two points are taken from the curve. //with these two points, a line is formed which is//"approximately equivalent" to the original curve.//data format:{ x, y, slope}; point1: (lg400, 0.324), point2: (lg4000, 0.280) //slope = ( reaction voltage ) / (log400 –log1000) void setup()
{Serial.begin(9600);                              //UART setup, baudrate = 9600bpspinMode(BOOL_PIN, INPUT);                        //set pin to inputdigitalWrite(BOOL_PIN, HIGH);                    //turn on pullup resistorsSerial.print("MG-811 Demostration\n");                
}void loop()
{int percentage;float volts;volts = MGRead(MG_PIN);Serial.print( "SEN0159:" );Serial.print(volts); Serial.print( "V           " );percentage = MGGetPercentage(volts,CO2Curve);Serial.print("CO2:");if (percentage == -1) {Serial.print( "<400" );} else {Serial.print(percentage);}Serial.print( "ppm" );  Serial.print( "       Time point:" );Serial.print(millis());Serial.print("\n");if (digitalRead(BOOL_PIN) ){Serial.print( "=====BOOL is HIGH======" );} else {Serial.print( "=====BOOL is LOW======" );}Serial.print("\n");delay(200);
}/*****************************  MGRead *********************************************
Input:   mg_pin - analog channel
Output:  output of SEN0159
Remarks: This function reads the output of SEN0159
************************************************************************************/ 
float MGRead(int mg_pin)
{int i;float v=0;for (i=0;i<READ_SAMPLE_TIMES;i++) {v += analogRead(mg_pin);delay(READ_SAMPLE_INTERVAL);}v = (v/READ_SAMPLE_TIMES) *5/1024 ;return v;  
}/*****************************  MQGetPercentage **********************************
Input:   volts   - SEN-000007 output measured in voltspcurve  - pointer to the curve of the target gas
Output:  ppm of the target gas
Remarks: By using the slope and a point of the line. The x(logarithmic value of ppm) of the line could be derived if y(MG-811 output) is provided. As it is a logarithmic coordinate, power of 10 is used to convert the result to non-logarithmic value.
************************************************************************************/ 
int  MGGetPercentage(float volts, float *pcurve)
{if ((volts/DC_GAIN )>=ZERO_POINT_VOLTAGE) {return -1;} else { return pow(10, ((volts/DC_GAIN)-pcurve[1])/pcurve[2]+pcurve[0]);}
}


结果

打开串口监视器,大约五分钟后,你会得到你周围二氧化碳浓度的数据。

Result co2 density.png

这篇关于arduino和MG111二氧化碳传感器采集co2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/307032

相关文章

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

Python 爬虫入门 - 基础数据采集

Python网络爬虫是一种强大且灵活的工具,用于从互联网上自动化地获取和处理数据。无论你是数据科学家、市场分析师,还是一个想要深入了解互联网数据的开发者,掌握网络爬虫技术都将为你打开一扇通向丰富数据资源的大门。 在本教程中,我们将从基本概念入手,逐步深入了解如何构建和优化网络爬虫,涵盖从发送请求、解析网页结构到保存数据的全过程,并讨论如何应对常见的反爬虫机制。通过本教程,你将能够构建有效的网络爬

人体红外传感器简介

人体红外传感器的工作原理是利用热释电效应,将人体发出的特定波长的红外线转化为电信号,从而实现对人体的检测和感知。               具体来说,人体红外传感器主要由滤光片、热释电探测元和前置放大器组成。滤光片的作用是使特定波长的红外辐射选择性地通过,到达热释电探测元,而在其截止范围外的红外辐射则不能通过。热释电探测元是传感器的核心元件,当它受到非恒定强度的红外光照射时,会产生

Python 爬虫入门 - 基础数据采集流程拓展

在网络爬虫的世界里,数据就是一切。通过爬虫技术,你可以自动化地收集各种类型的公开数据,从文本和图片到复杂的结构化信息,这些数据为各类分析和应用提供了基础。 本教程将引导你深入了解爬虫可以采集的数据种类,如何有效地获取这些数据,并探讨如何使用代理服务来规避限制与增强爬虫的灵活性。无论是初学者还是有经验的开发者,这些知识都将帮助你在网络数据采集中更加游刃有余。 文章目录 可采集的数据基本操作

景联文科技:专业图像采集服务,助力智能图像分析

景联文科技是专业数据服务公司,致力于为人工智能企业提供从数据采集、清洗到标注的全流程解决方案。协助客户解决AI开发过程中数据处理环节的关键问题,助力企业实现智能化转型。 1.多样化的图像采集服务 景联文科技提供多样化的图像采集服务,涵盖不同应用场景和需求: •高分辨率图像采集:适用于高质量图像需求,如医学影像、工业检测等。 •实时图像采集:适用于需要实时处理的应用场景,如安防监

物联网之ESP32控制舵机、通过网页设置舵机角度、Web服务、舵机原理、接线、Arduino、WiFi、Http

MENU 前言原理硬件电路设计软件程序设计LEDC输出PWM信号使用第三方库控制舵机网页控制舵机 前言 舵机在电子产品中非常常见,比如四足机器人、固定翼航模等都有应用,因此学习舵机对电子制作非常有意义。本文章使用Arguino的PWM对SG90舵机旋转角度控制。 原理 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机只

Arduino IDE安装

Arduino IDE(集成开发环境)的安装过程是一个相对直观且易于操作的流程,主要步骤包括下载、安装和配置。以下将详细阐述Arduino IDE的安装过程,同时提供一些背景信息和注意事项,确保安装过程顺利进行。 一、Arduino IDE下载 1. 访问Arduino官网 首先,用户需要访问Arduino的官方网站(https://www.arduino.cc),这是获取Arduino I

ubuntu14下Arduino IDE无法打开串口的问题

ubuntu版本是14.04 LTS,arduino版本是1.8.1。使用arduino的串口工具时无法打开串口,串口是USB转的,用的cp2102 。 google了一下,发现可能是权限的问题,执行以下语句,即可解决: sudo chown username /dev/ttyUSB0将username改成自己的用户名就行了。

大隈设备采集

大隈(OKUMA)荣一在名古屋东区成立自己的私人公司,开始制造、销售制面机械。下面是社长的一些介绍:我司自1898年生产·销售制面机开始创业以来,秉承若所需之物世间尚无,必不妥协,独自创造的“破土创新”精神,并将其一脉相承,于1904年开始进行机床的生产。自创业以来,历经120余年,从未间断对先进技术和产品的开发。1963年,作为日本机床制造商,首次自主研发出数控装置“OSP”,利