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
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,11 +1,10 @@
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.
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
url=https://github.com/miguel5612/MQSensorsLib
architectures=*
architectures=avr
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
//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