High MQ-131 values

I've been using my mq131 low concentration module for a while, and I burn it out for like 48 hours before using. After that, i got normal values ( 22 micrograms/m3). But a few day ago i tried to use it with the Bluetooth hc-05 and suddenly i couldn't see any changes on my Bluetooth app on android). After that, i tried to check it up on my serial monitor and i only get ovf or very big values. I have no idea what happens, i always power it up on 5V and I've been using this code:

/*******************************************************************************
 * Sample the ozone concentration every 60 seconds
 * 
 * Example code base on low concentration sensor (black bakelite)
 * and load resistance of 1MOhms
 * 
 * Schematics and details available on https://github.com/ostaquet/Arduino-MQ131-driver
 ******************************************************************************
 * MIT License
 *
 * Copyright (c) 2018 Olivier Staquet
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *******************************************************************************/

#include <MQ131.h>

void setup() {
  Serial.begin(115200);

  // Init the sensor
  // - Heater control on pin 2
  // - Sensor analog read on pin A0
  // - Model LOW_CONCENTRATION
  // - Load resistance RL of 1MOhms (1000000 Ohms)
  MQ131.begin(2,A0, LOW_CONCENTRATION, 1000000);  

  Serial.println("Calibration parameters");
  Serial.print("R0 = ");
  Serial.print(MQ131.getR0());
  Serial.println(" Ohms");
  Serial.print("Time to heat = ");
  Serial.print(MQ131.getTimeToRead());
  Serial.println(" s");
}

void loop() {
  Serial.println("Sampling...");
  MQ131.sample();
  Serial.print("Concentration O3 : ");
  Serial.print(MQ131.getO3(PPM));
  Serial.println(" ppm");
  Serial.print("Concentration O3 : ");
  Serial.print(MQ131.getO3(PPB));
  Serial.println(" ppb");
  Serial.print("Concentration O3 : ");
  Serial.print(MQ131.getO3(MG_M3));
  Serial.println(" mg/m3");
  Serial.print("Concentration O3 : ");
  Serial.print(MQ131.getO3(UG_M3));
  Serial.println(" ug/m3");

  delay(60000);
}

What could have happened? I observe that the R0 now is low, around 1900 ohms, compared to very big values that had a few days ago.

Can you share a schematic and a picture of your setup?
1900 ohms is indeed way low.

I solved it. I forgor the calibration line MQ131.calibrate();

Great!

now i have another problem. Seems like the Ardutooth app won't see the mq131 values, no matter what..

Do you understand tgat we cannot help you without any background on your setup?
So please post a schematic.
Also post the latest version of your code.


#include <MQ131.h>




// Ozone sensor setup
const int heaterPin = 2;
const int sensorPin = A0;

void setup() {
  Serial.begin(9600);
  Serial3.begin(9600);

  // Ozone sensor initialization
  MQ131.begin(heaterPin, sensorPin, LOW_CONCENTRATION, 1000000);  
  MQ131.calibrate();
  MQ131.getR0();
  MQ131.getTimeToRead();
  
}

void loop() {
  // Ozone sampling
  MQ131.sample();
  float ozone = MQ131.getO3(UG_M3) ;
  Serial3.print(ozone);
  Serial.println(MQ131.getO3(UG_M3));
  Serial3.print(" ug/m3");
  Serial.println(" ug/m3");
  Serial3.print(";");

  delay(60000); // Wait for 60 seconds
}

I use Serial3 for the Bluetooth . I've checked the values on the Serial monitor on my arduino ide and everything it's ok, but i cannot output the values of my mq131 on the app. I also tested this project, with DHT11, and it worked.

Why do you not print a ","?
And why read the sensor again instead of using the value stored in ozone?

I thought i have to use "," if i have more values.
I forgot to change the argument of the Serial.print function, since it was for debugging, but that should not affect my bluetooth Serial3, right?

No, but if you use Serial.print to debug your code, it does not make sense to print something else there...

Might depend on howmany values the app expects.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.