Compare commits

...

14 Commits
1.0.1 ... 1.0.4

18 changed files with 196 additions and 27 deletions

38
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View File

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -1,3 +1,6 @@
[![DOI](https://zenodo.org/badge/170540207.svg)](https://zenodo.org/badge/latestdoi/170540207)
![Build Status](https://travis-ci.org/dwyl/esta.svg?branch=master)
# MQSensorsLib
This is a unified library to use sensors MQ: 2, 3, 4, 5, 6, 7, 8, 9, 131, 135, 303A and 309A.
@ -11,10 +14,10 @@ float ppmCH4 = MQ4.readSensor();
### Prerequisites
You'll need Arduino desftop app 1.8.9 or later.
You'll need Arduino desktop app 1.8.9 or later.
### Sensor manufacter:
| Sensor | Manufacter | URL Datasheet |
### Sensor manufacture:
| Sensor | Manufacture | URL Datasheet |
|----------|----------|----------|
| MQ-2 | Pololulu| [datasheet](https://www.pololu.com/file/0J309/MQ2.pdf) |
| MQ-3 | Sparkfun | [datasheet](https://www.sparkfun.com/datasheets/Sensors/MQ-3.pdf) |
@ -35,7 +38,7 @@ Review WPDigitalizer [folder](https://github.com/miguel5612/MQSensorsLib/tree/ma
### Installing
Clone this repositry into your desktop machine
Clone this repository into your desktop machine
```
git clone https://github.com/miguel5612/MQSensorsLib
@ -48,7 +51,7 @@ Use calibration systems if you have several sensors that read the same gas.
### Break down into end to end tests
These test can re-adjust values defined previously and you can contribute to improve conditions or features obtained from particular scenes.
These tests can re-adjust values defined previously and you can contribute to improve conditions or features obtained from particular scenes.
```
Examples/MQ-3
@ -56,7 +59,7 @@ Examples/MQ-3
### And coding style tests
These tests may generate statistics validation using descriptive tools for cuantitative variables.
These tests may generate statistics validation using descriptive tools for quantitative variables.
```
Examples/MQ-board.ino
@ -77,7 +80,7 @@ Please read [CONTRIBUTING.md](https://github.com/miguel5612/MQSensorsLib/blob/NO
* **Ghiordy F. Contreras C.** - [*GitHub*](https://github.com/Ghiordy) - [CV](https://scienti.colciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000050476)
* **Yersson R. Carrillo A.** - [*GitHub*](https://github.com/Yercar18/Dronefenix) - [CV](https://scienti.colciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0001637655)
## Colaborators
## Collaborators
* **Andres A. Martinez.**
* **Juan A. Rodríguez.** - [*Github*](https://github.com/Obiot24)
@ -88,3 +91,47 @@ See also the list of [contributors](https://github.com/miguel5612/MQSensorsLib/c
## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
## Cite as
* Plain text: Califa Urquiza, Miguel Angel, Contreras Contreras, Ghiordy, & Carrillo Amado, Yerson Ramiro. (2019, September 3). miguel5612/MQSensorsLib: Arduino Preview V1.03 (Version 1.0.3). Zenodo. http://doi.org/10.5281/zenodo.3384301
* CSL: {
"publisher": "Zenodo",
"DOI": "10.5281/zenodo.3384301",
"title": "miguel5612/MQSensorsLib: Arduino Preview V1.03",
"issued": {
"date-parts": [
[
2019,
9,
3
]
]
},
"abstract": "<p>Publishing on Zenodo platform as software in order to extend its applications for other works allowing to recognize MQSensorLib&#39;s Authors this work into scientific community using Digital Object Identifier System (DOI).</p>",
"author": [
{
"family": "Califa Urquiza, Miguel Angel"
},
{
"family": "Contreras Contreras, Ghiordy"
},
{
"family": "Carrillo Amado, Yerson Ramiro"
}
],
"version": "1.0.3",
"type": "article",
"id": "3384301"
}
* BibTeX:
@misc{califa_urquiza_miguel_angel_2019_3384301,
author = {Califa Urquiza, Miguel Angel and
Contreras Contreras, Ghiordy and
Carrillo Amado, Yerson Ramiro},
title = {miguel5612/MQSensorsLib: Arduino Preview V1.03},
month = sep,
year = 2019,
doi = {10.5281/zenodo.3384301},
url = {https://doi.org/10.5281/zenodo.3384301}
}

View File

@ -41,12 +41,16 @@ void setup() {
void loop() {
MQ131.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
// Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ131.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ131.calibrate();
MQ131.setR0(R0):
MQ131.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -41,6 +41,10 @@ void setup() {
void loop() {
MQ135.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ135.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)

View File

@ -41,12 +41,16 @@ void setup() {
void loop() {
MQ2.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ2.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ2.calibrate();
MQ2.setR0(R0):
MQ2.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() {
MQ3.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ3.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ3.calibrate();
MQ3.setR0(R0):
MQ3.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() {
MQ303.update();
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ303.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ303.calibrate();
MQ303.setR0(R0):
MQ303.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() {
MQ309.update();
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ309.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ309.calibrate();
MQ309.setR0(R0):
MQ309.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() {
MQ4.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ4.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ4.calibrate();
MQ4.setR0(R0):
MQ4.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -42,12 +42,16 @@ void setup() {
void loop() {
MQ5.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ5.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ5.calibrate();
MQ5.setR0(R0):
MQ5.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -41,6 +41,10 @@ void setup() {
void loop() {
MQ6.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ6.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)

View File

@ -44,12 +44,16 @@ void setup() {
void loop() {
MQ7.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ7.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ7.calibrate();
MQ7.setR0(R0):
MQ7.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() {
MQ8.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ8.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ8.calibrate();
MQ8.setR0(R0):
MQ8.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() {
MQ9.update(); // Update data, the arduino will be read the voltaje in the analog pin
/*
//Si el valor de RL es diferente a 10K por favor asigna tu valor de RL con el siguiente metodo:
MQ9.setRL(10);
*/
/*
//Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button)
{
float R0 = MQ9.calibrate();
MQ9.setR0(R0):
MQ9.setR0(R0);
}
*/
/***************************** MQReadSensor ****************************************

View File

@ -1,5 +1,5 @@
name=MQUnifiedsensor
version=1.0.0
version=1.0.4
author= Miguel Califa <miguelangel5612@gmail.com>, Yersson Carrillo <miguelangel5612@gmail.com>, Ghiordy Contreras <miguelangel5612@gmail.com>
maintainer= Miguel Califa <miguelangel5612@gmail.com>
sentence= This library allows you to read the MQ sensors very easily.

View File

@ -107,8 +107,12 @@ float MQUnifiedsensor::readSensor(String nameLectureRequeired, bool print)
setSensorCharacteristics(nameLectureRequeired, print); //In this function update _a and _b
//More explained in: https://jayconsystems.com/blog/understanding-a-gas-sensor
_RS_Calc = ((_VOLT_RESOLUTION*_RLValue)/_sensor_volt)-_RLValue; //Get value of RS in a gas
if(_RS_Calc < 0) _RS_Calc = 0; //No negative values accepted.
_ratio = _RS_Calc / this->_R0; // Get ratio RS_gas/RS_air
if(_ratio <= 0 || _ratio>100) _ratio = 0.01; //No negative values accepted or upper datasheet recomendation.
_PPM= _a*pow(_ratio, _b);
if(_PPM < 0) _PPM = 0; //No negative values accepted or upper datasheet recomendation.
if(_PPM > 10000) _PPM = 9999; //No negative values accepted or upper datasheet recomendation.
if(print)
{
@ -521,8 +525,10 @@ float MQUnifiedsensor::calibrate(boolean print) {
*/
float RS_air; //Define variable for sensor resistance
float R0; //Define variable for R0
RS_air = ((_VOLT_RESOLUTION*_RLValue)/_sensor_volt)-_RLValue; //Calculate RS in fresh air
RS_air = ((_VOLT_RESOLUTION*_RLValue)/_sensor_volt)-_RLValue; //Calculate RS in fresh air
if(RS_air < 0) RS_air = 0; //No negative values accepted.
R0 = RS_air/_ratioInCleanAir; //Calculate R0
if(R0 < 0) R0 = 0; //No negative values accepted.
if(print)
{
Serial.println("*******Calibrating*********");
@ -562,6 +568,14 @@ void MQUnifiedsensor::setR0(double R0) {
double MQUnifiedsensor::getR0() {
return _R0;
}
void MQUnifiedsensor::setRL(double RL) {
this->_RLValue = RL;
}
double MQUnifiedsensor::getRL() {
return _RLValue;
}
void MQUnifiedsensor::setDefaultGas()
{
if(_type == 2)

View File

@ -255,6 +255,7 @@ class MQUnifiedsensor
void inicializar();
void update();
void setR0(double R0 = 10);
void setRL(double RL = 10);
void setVoltResolution(float voltaje = 5);
void setSensorCharacteristics(String nameLectureReqeuired = "", bool print = false);
void setDefaultGas();
@ -265,6 +266,7 @@ class MQUnifiedsensor
//get function for info
double getR0();
double getRL();
double getVoltage(int read = true);
double stringToDouble(String & str);
String getnameLecture();
@ -273,14 +275,14 @@ class MQUnifiedsensor
private:
/************************Private vars************************************/
int _pin, _type, _lecturePosInArray;
double _R0;
String _nameLectureRequeired;
int _VOLT_RESOLUTION = 5.0; // if 3.3v use 3.3
int _RLValue = 10; //Value in KiloOhms
float _PPM, _RS_Calc;
float _ratioInCleanAir, _sensor_volt, RS_air, _a, _b, _ratio;
byte _pin, _type, _lecturePosInArray;
byte _VOLT_RESOLUTION = 5.0; // if 3.3v use 3.3
byte _ratioInCleanAir, _sensor_volt;
byte _RLValue = 10; //Value in KiloOhms
float _R0, RS_air, _ratio, _PPM, _RS_Calc;
float _b;
double _a;
String _nameLectureRequeired;
};
#endif //MQUnifiedsensor_H