Hallo.
I used MQ-4 grafik from https://www.sparkfun.com/datasheets/Sensors/Biometric/MQ-4.pdf, but I need more detail information about CH4 Curve. Example : float LPGCurve[3] = {2.3,0.21,-0.47};
Anybody can help me to how finding the curve and calculate the points.
Thanks.
Thats a log-log scale.
excel tell me that ppm=1021*(rs/r0)^-2.7887
bases on theese values:
rs/r0 ppm
1,8 200
1 1000
0,57 5000
0,44 10000
..arduino got thr pow-function (or use log)
Or you can use multimap - Arduino Playground - MultiMap - and use interpolation
Dear Rob.
float CH4Curve[3] = {2.3, 1, -0.38};
I used from your calculate. log(200) for 2.3 and 1 for log 1000, but how the slope. That is true for my formula.
..use the simple formula from #1: ppm=1021*pow((rs/r0),-2.7887);
The only job is to calculate the relative change in resistance, based on the analog value u read.
I try like this. that is true. please correct me when i am wrong.
void setup()
{
Serial.begin(9600); //Set serial baud rate to 9600 bps
}
void loop()
{
int val;
float ppm;
val=analogRead(0);//Read Gas value from analog 0
//Serial.println(val,DEC);//Print the value to serial port
ppm=1021*pow((1),-2.7887);
Serial.println(ppm);
delay(500);
}
after this on:
val=analogRead(0);//Read Gas value from analog 0
// calcurate rs/ro..
We need to know: value of the serial resistor and the analogread value in 'clean' air.
also need to know how this is connected: 5V->sensor->resistor->GND ? or 5V->resistor->sensor->GND ?
Give us theese info, I'll show you how to go on..
addition: Sensor must be powed a looong time before reading the analog.. (>24 hours)
I try using this code. Please corrected of the algorithm.
#define RL_VALUE (4.7)
void setup()
{
Serial.begin(9600); //Set serial baud rate to 9600 bps
}
void loop()
{
int val;
float ppm;
float ro;
float ratio;
float rs;
ro=10; //kOhm
int i;
val=analogRead(0);//Read Gas value from analog 0
//Serial.println(val,DEC);//Print the value to serial port
//ppm=1021*pow((1),-2.7887);
//calculate rs/ro
rs=((RL_VALUE * (1021 - val) / val));
ratio=rs/ro;
//Serial.println(RL_VALUE);
//Serial.println("\n");
Serial.println(ratio);
Serial.println(" rs/ro");
Serial.println("\n");
ppm=1021*pow((ratio),-2.7887);
Serial.println(ppm);
Serial.println(" ppm");
Serial.println("\n");
delay(1000);
}
I tried this one. (my sensor heated for 3 hrs only)
#define RL 4.7 //serial resistor
int val;
float ppm;
float r0=10; //10k = estimat for 1000ppm // datasheet says 10k..60k
// calibration in known concentration is needed !
float ratio;
float rs;
int i;
void setup()
{
Serial.begin(9600); //Set serial baud rate to 9600 bps
}
void loop()
{
val=analogRead(0);//Read Gas value from analog 0
Serial.print("Raw\t");
Serial.print(val);
Serial.print("\t");
rs=((RL * (1023 - val) / val));
Serial.print("Rsensor\t");
Serial.print(rs,0);
Serial.print("\t");
ratio=rs/r0;
Serial.print("Rato\t");
Serial.print(ratio,1);
Serial.print("\t => ");
ppm=1021*pow((ratio),-2.7887);
Serial.print(ppm,0);
Serial.println("\tppm");
delay(1000);
}
This output.. Then introduced some drops of aceton 3cm away..:
Raw 40 Rsensor 116 Rato 11.6 => 1 ppm
Raw 40 Rsensor 116 Rato 11.6 => 1 ppm
Raw 40 Rsensor 116 Rato 11.6 => 1 ppm
Raw 41 Rsensor 113 Rato 11.3 => 1 ppm
Raw 42 Rsensor 110 Rato 11.0 => 1 ppm
Raw 42 Rsensor 110 Rato 11.0 => 1 ppm
Raw 42 Rsensor 110 Rato 11.0 => 1 ppm
Raw 41 Rsensor 113 Rato 11.3 => 1 ppm
Raw 40 Rsensor 116 Rato 11.6 => 1 ppm
Raw 41 Rsensor 113 Rato 11.3 => 1 ppm
.. aceton..: two drops onto paper
Raw 54 Rsensor 84 Rato 8.4 => 3 ppm
Raw 117 Rsensor 36 Rato 3.6 => 28 ppm
Raw 206 Rsensor 19 Rato 1.9 => 180 ppm
Raw 262 Rsensor 14 Rato 1.4 => 429 ppm
Raw 256 Rsensor 14 Rato 1.4 => 393 ppm
Raw 330 Rsensor 10 Rato 1.0 => 1059 ppm
Raw 385 Rsensor 8 Rato 0.8 => 2050 ppm
Raw 398 Rsensor 7 Rato 0.7 => 2382 ppm
Raw 377 Rsensor 8 Rato 0.8 => 1867 ppm
Raw 404 Rsensor 7 Rato 0.7 => 2551 ppm
Raw 381 Rsensor 8 Rato 0.8 => 1957 ppm
Raw 369 Rsensor 8 Rato 0.8 => 1699 ppm
Raw 356 Rsensor 9 Rato 0.9 => 1456 ppm
Raw 271 Rsensor 13 Rato 1.3 => 487 ppm
Raw 200 Rsensor 19 Rato 1.9 => 162 ppm
Raw 190 Rsensor 21 Rato 2.1 => 136 ppm
Raw 212 Rsensor 18 Rato 1.8 => 199 ppm
Raw 290 Rsensor 12 Rato 1.2 => 632 ppm
Raw 199 Rsensor 19 Rato 1.9 => 159 ppm
Raw 160 Rsensor 25 Rato 2.5 => 76 ppm
Raw 143 Rsensor 29 Rato 2.9 => 53 ppm
Raw 162 Rsensor 25 Rato 2.5 => 79 ppm
Raw 183 Rsensor 22 Rato 2.2 => 120 ppm
Raw 216 Rsensor 18 Rato 1.8 => 212 ppm
Raw 242 Rsensor 15 Rato 1.5 => 319 ppm
Raw 241 Rsensor 15 Rato 1.5 => 315 ppm
Raw 235 Rsensor 16 Rato 1.6 => 287 ppm
Raw 243 Rsensor 15 Rato 1.5 => 324 ppm
Raw 257 Rsensor 14 Rato 1.4 => 399 ppm
Raw 242 Rsensor 15 Rato 1.5 => 319 ppm
Raw 308 Rsensor 11 Rato 1.1 => 801 ppm
Raw 304 Rsensor 11 Rato 1.1 => 760 ppm
Raw 278 Rsensor 13 Rato 1.3 => 537 ppm
Raw 317 Rsensor 10 Rato 1.0 => 899 ppm
Raw 264 Rsensor 14 Rato 1.4 => 441 ppm
Raw 226 Rsensor 17 Rato 1.7 => 249 ppm
Raw 270 Rsensor 13 Rato 1.3 => 480 ppm
Raw 300 Rsensor 11 Rato 1.1 => 721 ppm
Raw 328 Rsensor 10 Rato 1.0 => 1033 ppm
Raw 305 Rsensor 11 Rato 1.1 => 770 ppm
Raw 288 Rsensor 12 Rato 1.2 => 615 ppm
Raw 265 Rsensor 13 Rato 1.3 => 447 ppm
Raw 223 Rsensor 17 Rato 1.7 => 238 ppm
Raw 190 Rsensor 21 Rato 2.1 => 136 ppm
Raw 202 Rsensor 19 Rato 1.9 => 168 ppm
Raw 204 Rsensor 19 Rato 1.9 => 174 ppm
Raw 154 Rsensor 27 Rato 2.7 => 67 ppm
Raw 150 Rsensor 27 Rato 2.7 => 62 ppm
Raw 161 Rsensor 25 Rato 2.5 => 78 ppm
Raw 171 Rsensor 23 Rato 2.3 => 95 ppm
Raw 179 Rsensor 22 Rato 2.2 => 111 ppm
Raw 191 Rsensor 20 Rato 2.0 => 138 ppm
.. evapurated totally..
Raw 172 Rsensor 23 Rato 2.3 => 97 ppm
Raw 149 Rsensor 28 Rato 2.8 => 60 ppm
Raw 138 Rsensor 30 Rato 3.0 => 47 ppm
Raw 165 Rsensor 24 Rato 2.4 => 84 ppm
Raw 150 Rsensor 27 Rato 2.7 => 62 ppm
Raw 126 Rsensor 33 Rato 3.3 => 35 ppm
Raw 113 Rsensor 38 Rato 3.8 => 25 ppm
Raw 109 Rsensor 39 Rato 3.9 => 22 ppm
Raw 104 Rsensor 42 Rato 4.2 => 19 ppm
Raw 96 Rsensor 45 Rato 4.5 => 15 ppm
Raw 89 Rsensor 49 Rato 4.9 => 12 ppm
Raw 84 Rsensor 53 Rato 5.3 => 10 ppm
Raw 81 Rsensor 55 Rato 5.5 => 9 ppm
Raw 78 Rsensor 57 Rato 5.7 => 8 ppm
Raw 77 Rsensor 58 Rato 5.8 => 8 ppm
Raw 76 Rsensor 59 Rato 5.9 => 7 ppm
Raw 76 Rsensor 59 Rato 5.9 => 7 ppm
Raw 74 Rsensor 60 Rato 6.0 => 7 ppm
Raw 72 Rsensor 62 Rato 6.2 => 6 ppm
Raw 69 Rsensor 65 Rato 6.5 => 6 ppm
Raw 68 Rsensor 66 Rato 6.6 => 5 ppm
Raw 67 Rsensor 67 Rato 6.7 => 5 ppm
Raw 66 Rsensor 68 Rato 6.8 => 5 ppm
Raw 64 Rsensor 70 Rato 7.0 => 4 ppm
Raw 64 Rsensor 70 Rato 7.0 => 4 ppm
Raw 63 Rsensor 72 Rato 7.2 => 4 ppm
Raw 62 Rsensor 73 Rato 7.3 => 4 ppm
This Output I trying in the soil. every data sampling 5 minute. Open Clean air and Close Air.
Time ppm
5 206
10 199
15 199
20 196
25 230
30 206
35 219
40 189
45 183
50 177
55 189
60 189
65 196
70 196
75 165
80 174
85 168
90 189
95 189
100 199
105 165
110 189
115 206
120 189
125 196
130 199
135 177
140 186
145 183
150 206
155 206
160 212
165 212
170 216
175 216
180 219
185 219
190 223
195 212
200 212
205 212
210 209
215 212
220 219
225 212
230 206
235 206
240 206
245 209
250 209
255 209
260 209
265 212
270 212
275 209
280 209
285 212
290 209
295 209
300 209
305 209
310 209
315 209
320 209
325 209
330 209
335 212
340 212
345 209
350 212
355 212
360 212
365 212
370 212
375 216
380 216
385 216
390 216
395 216
400 216
405 219
410 219
415 219
420 223
425 223
430 223
435 223
440 223
445 219
450 223
455 223
460 223
465 223
470 223
475 223
480 223
485 219
490 223
495 230
500 219
505 223
510 227
515 227
520 227
525 230
530 234
535 234
540 234
545 238
550 234
555 234
560 206
565 209
570 209
575 171
580 168
585 151
590 146
595 141
600 146
605 138
610 141
615 143
620 149
625 143
630 177
635 162
640 171
645 168
650 171
655 171
660 168
665 171
670 171
675 165
680 186
685 183
690 186
695 189
700 192
705 196
710 199
715 206
720 212
725 216
730 219
735 223
740 223
745 223
750 216
755 212
760 212
765 212
770 209
775 206
780 199
785 209
790 209
795 216
800 216
805 219
810 223
815 223
820 227
825 230
830 234
835 242
840 246
845 246
850 253
855 253
860 257
865 257
870 262
875 262
880 262
885 266
890 270
895 270
900 266
905 270
910 270
915 270
920 270
925 274
930 274
935 274
940 278
945 278
950 278
955 283
960 283
965 283
970 283
975 283
980 283
985 283
990 283
995 283
1000 283
1005 283
1010 283
1015 283
1020 283
1025 283
1030 283
1035 283
1040 283
1045 283
1050 283
1055 283
1060 283
1065 283
1070 283
1075 283
1080 283
1085 283
1090 283
1095 283
1100 287
1105 287
1110 287
1115 287
1120 287
1125 287
1130 287
1135 287
1140 287
1145 287
1150 287
1155 287
1160 287
1165 287
1170 287
1175 287
1180 287
1185 287
1190 287
1195 287
1200 287
1205 287
1210 287
1215 287
1220 287
1225 287
1230 287
1235 287
1240 287
1245 287
1250 287
1255 287
1260 287
1265 292
I guess the r0 value isn't 10k -> try change to 20k
What output if u run same code I did ?
200 ppm in condition air open. if ppm increase that is mean ch4 detection constration of gas. but a litte because the soil in condition dry. also ch4 dependent with temperature. temorrow i will change again to 20Kohm. we also validate using manual measurement. please wait until tomorrow.
Are u using a MQ-4 module or what? May i know do you solve ur problem?