Compare commits

..

19 Commits
1.0.0 ... 1.0.4

Author SHA1 Message Date
3261318577 Fixed merge conflict 2019-09-28 11:21:23 -05:00
e5578c199f Updated version in library.prop 2019-09-28 11:20:37 -05:00
ff002f9993 Updated examples, added new method explanation 2019-09-28 11:18:28 -05:00
b85e7520d4 Merge pull request #14 from miguel5612/develop
Value of _RLValue - Added getRL and setRL method
2019-09-28 11:07:40 -05:00
0f912a3c4a Value of _RLValue - Added getRL and setRL method 2019-09-28 11:05:55 -05:00
b2616295a3 Respect upper and down limits from datasheet indicating 0 PPM or 9999 PPM 2019-09-08 12:49:02 -05:00
886bfd9981 Merge pull request #9 from aetilius/master
Correct data type for voltage resolution
2019-09-07 17:08:15 -05:00
cfe8ccc6ad Correct data type for voltage resolution 2019-09-07 13:20:13 -07:00
a9aba676e2 Update README.md 2019-09-02 20:00:44 -05:00
f351f6bdf2 Update README.md 2019-09-02 19:40:29 -05:00
aedc9edb8e Adding zenodo cite form 2019-09-02 19:40:02 -05:00
6addbeb50b Reviewing typing errors 2019-08-27 16:25:56 -05:00
43cb57012d Update issue templates 2019-08-20 12:06:10 -05:00
5fefa8ab66 release or tag that matches the version value in your library.properties file. 2019-08-16 10:03:46 -05:00
5a911a2149 Update library.properties 2019-08-16 09:58:05 -05:00
620b7c0cf0 Merge pull request #8 from miguel5612/develop
Removed liquid crystal from paragraph in lib.prop
2019-08-16 09:57:15 -05:00
bff0304e3f Merge pull request #7 from per1234/remove-duplicate-architectures-field
Remove incorrect architectures field from library.properties
2019-08-16 09:56:44 -05:00
a14b14c449 Removed liquid crystal from paragraph in lib.prop 2019-08-16 09:17:39 -05:00
9a43163cae Remove incorrect architectures field from library.properties
Previously, there were two architectures fields. The first correctly identified the library as being for all architectures. The second incorrectly identified the library as being for avr architecture only. The second field overrides the value of the first field. For this reason, I have removed the incorrect second architectures field.
2019-08-15 21:15:27 -07:00
18 changed files with 197 additions and 29 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 # MQSensorsLib
This is a unified library to use sensors MQ: 2, 3, 4, 5, 6, 7, 8, 9, 131, 135, 303A and 309A. 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 ### 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 manufacture:
| Sensor | Manufacter | URL Datasheet | | Sensor | Manufacture | URL Datasheet |
|----------|----------|----------| |----------|----------|----------|
| MQ-2 | Pololulu| [datasheet](https://www.pololu.com/file/0J309/MQ2.pdf) | | 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) | | 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 ### Installing
Clone this repositry into your desktop machine Clone this repository into your desktop machine
``` ```
git clone https://github.com/miguel5612/MQSensorsLib 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 ### 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 Examples/MQ-3
@ -56,7 +59,7 @@ Examples/MQ-3
### And coding style tests ### 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 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) * **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) * **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.** * **Andres A. Martinez.**
* **Juan A. Rodríguez.** - [*Github*](https://github.com/Obiot24) * **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 ## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details 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() { void loop() {
MQ131.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ131.calibrate(); float R0 = MQ131.calibrate();
MQ131.setR0(R0): MQ131.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -41,6 +41,10 @@ void setup() {
void loop() { void loop() {
MQ135.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)

View File

@ -41,12 +41,16 @@ void setup() {
void loop() { void loop() {
MQ2.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ2.calibrate(); float R0 = MQ2.calibrate();
MQ2.setR0(R0): MQ2.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() { void loop() {
MQ3.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ3.calibrate(); float R0 = MQ3.calibrate();
MQ3.setR0(R0): MQ3.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() { void loop() {
MQ303.update(); 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ303.calibrate(); float R0 = MQ303.calibrate();
MQ303.setR0(R0): MQ303.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() { void loop() {
MQ309.update(); 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ309.calibrate(); float R0 = MQ309.calibrate();
MQ309.setR0(R0): MQ309.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -42,11 +42,15 @@ void setup() {
void loop() { void loop() {
MQ4.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ4.calibrate(); float R0 = MQ4.calibrate();
MQ4.setR0(R0): MQ4.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -42,12 +42,16 @@ void setup() {
void loop() { void loop() {
MQ5.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ5.calibrate(); float R0 = MQ5.calibrate();
MQ5.setR0(R0): MQ5.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -41,6 +41,10 @@ void setup() {
void loop() { void loop() {
MQ6.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)

View File

@ -44,12 +44,16 @@ void setup() {
void loop() { void loop() {
MQ7.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ7.calibrate(); float R0 = MQ7.calibrate();
MQ7.setR0(R0): MQ7.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() { void loop() {
MQ8.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ8.calibrate(); float R0 = MQ8.calibrate();
MQ8.setR0(R0): MQ8.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -41,12 +41,16 @@ void setup() {
void loop() { void loop() {
MQ9.update(); // Update data, the arduino will be read the voltaje in the analog pin 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) //Rutina de calibracion - Uncomment if you need (setup too and header)
if(calibration_button) if(calibration_button)
{ {
float R0 = MQ9.calibrate(); float R0 = MQ9.calibrate();
MQ9.setR0(R0): MQ9.setR0(R0);
} }
*/ */
/***************************** MQReadSensor **************************************** /***************************** MQReadSensor ****************************************

View File

@ -1,11 +1,10 @@
name=MQUnifiedsensor 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> author= Miguel Califa <miguelangel5612@gmail.com>, Yersson Carrillo <miguelangel5612@gmail.com>, Ghiordy Contreras <miguelangel5612@gmail.com>
maintainer= Miguel Califa <miguelangel5612@gmail.com> maintainer= Miguel Califa <miguelangel5612@gmail.com>
sentence= This library allows you to read the MQ sensors very easily. sentence= This library allows you to read the MQ sensors very easily.
paragraph= This library allows an Arduino/Genuino board to read LiquidCrystal MQ Sensors (AIr quality meter) references: MQ2, MQ3, MQ4, MQ5, MQ6, MQ7, MQ8, MQ9, MQ131, MQ135, MQ303A, MQ309A. paragraph= This library allows an Arduino/Genuino board to read MQ Sensors (AIr quality meter) references: MQ2, MQ3, MQ4, MQ5, MQ6, MQ7, MQ8, MQ9, MQ131, MQ135, MQ303A, MQ309A.
category= Sensors category= Sensors
url=https://github.com/miguel5612/MQSensorsLib url=https://github.com/miguel5612/MQSensorsLib
architectures=*
architectures=avr architectures=avr
license=MIT license=MIT

View File

@ -107,8 +107,12 @@ float MQUnifiedsensor::readSensor(String nameLectureRequeired, bool print)
setSensorCharacteristics(nameLectureRequeired, print); //In this function update _a and _b setSensorCharacteristics(nameLectureRequeired, print); //In this function update _a and _b
//More explained in: https://jayconsystems.com/blog/understanding-a-gas-sensor //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 _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 _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); _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) if(print)
{ {
@ -522,7 +526,9 @@ float MQUnifiedsensor::calibrate(boolean print) {
float RS_air; //Define variable for sensor resistance float RS_air; //Define variable for sensor resistance
float R0; //Define variable for R0 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 R0 = RS_air/_ratioInCleanAir; //Calculate R0
if(R0 < 0) R0 = 0; //No negative values accepted.
if(print) if(print)
{ {
Serial.println("*******Calibrating*********"); Serial.println("*******Calibrating*********");
@ -562,6 +568,14 @@ void MQUnifiedsensor::setR0(double R0) {
double MQUnifiedsensor::getR0() { double MQUnifiedsensor::getR0() {
return _R0; return _R0;
} }
void MQUnifiedsensor::setRL(double RL) {
this->_RLValue = RL;
}
double MQUnifiedsensor::getRL() {
return _RLValue;
}
void MQUnifiedsensor::setDefaultGas() void MQUnifiedsensor::setDefaultGas()
{ {
if(_type == 2) if(_type == 2)

View File

@ -255,6 +255,7 @@ class MQUnifiedsensor
void inicializar(); void inicializar();
void update(); void update();
void setR0(double R0 = 10); void setR0(double R0 = 10);
void setRL(double RL = 10);
void setVoltResolution(float voltaje = 5); void setVoltResolution(float voltaje = 5);
void setSensorCharacteristics(String nameLectureReqeuired = "", bool print = false); void setSensorCharacteristics(String nameLectureReqeuired = "", bool print = false);
void setDefaultGas(); void setDefaultGas();
@ -265,6 +266,7 @@ class MQUnifiedsensor
//get function for info //get function for info
double getR0(); double getR0();
double getRL();
double getVoltage(int read = true); double getVoltage(int read = true);
double stringToDouble(String & str); double stringToDouble(String & str);
String getnameLecture(); String getnameLecture();
@ -273,14 +275,14 @@ class MQUnifiedsensor
private: private:
/************************Private vars************************************/ /************************Private vars************************************/
int _pin, _type, _lecturePosInArray; byte _pin, _type, _lecturePosInArray;
double _R0; 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; 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;
}; };
#endif //MQUnifiedsensor_H #endif //MQUnifiedsensor_H