#include "MQUnifiedsensor.h"
// Configurações básicas
#define Board "Arduino UNO"
#define Voltage_Resolution 5 // Tensão de operação (5V)
#define ADC_Bit_Resolution 10 // ADC de 10 bits (0 a 1023)
#define pin A0 // Pino analógico
#define Type "MQ-2" // Tipo de sensor
#define RatioMQ2CleanAir 9.83 // Rs/R0 em ar limpo, valor padrão do datasheet
// Instância do sensor
MQUnifiedsensor MQ2(Board, Voltage_Resolution, ADC_Bit_Resolution, pin, Type);
void setup() {
Serial.begin(9600);
// Define o modelo de curva para GLP
MQ2.setRegressionMethod(1); // Método 1: PPM = a * (Rs/R0)^b
MQ2.setA(574); // 'a' da curva para GLP (obtido do datasheet)
MQ2.setB(-2.18); // 'b' da curva para GLP
MQ2.init(); // Inicializa o sensor
MQ2.setRL(10.00); // Resistência de carga do sensor (RL) em kΩ
// Calibração automática em ar limpo
Serial.println("Calibrando... mantenha o sensor em ar limpo.");
float r0 = 0;
for (int i = 0; i < 10; i++) {
MQ2.update();
r0 += MQ2.calibrate(RatioMQ2CleanAir);
delay(1000);
}
r0 = r0 / 10;
MQ2.setR0(r0);
// Checagem
Serial.print("R0 calibrado: ");
Serial.println(r0);
if (isinf(r0)) {
Serial.println("ERRO: o sensor está desconectado ou sem sinal!");
while (1);
}
if (r0 == 0) {
Serial.println("ERRO: R0 igual a zero. Verifique a conexão do sensor.");
while (1);
}
Serial.println("Calibração completa.\n");
}
void loop() {
MQ2.update(); // Atualiza leitura
float ppm = MQ2.readSensor(); // Retorna GLP em ppm
Serial.print("GLP: ");
Serial.print(ppm*100);
Serial.println(" ppm");
delay(1000);
}