Magos do Arduino

Sensor de detecção de gás

Aprenda a utilizar um sensor de detecção de gás com o Arduino

Magos do Arduino

Sensor de detecção de gás

O sensor de detecção de gás (MQ-135) é um detector de gases usado principalmente para medir qualidade do ar e poluição.

Sensor de detecção de gás

Ele também pode identificar a presença de gás amônia (NH₃), óxidos de nitrogênio (NOx), álcool, benzeno, fumaça, dióxido de carbono (CO₂), etc.

Ele é constituído por um tubo cerâmico com uma serpentina de aquecimento interna para atingir a temperatura de operação necessária, e uma camada externa de material resistivo, que designamos pela fórmula química SnO₂ (dióxido de estanho), encapsulado em uma malha metálica.

Ele possui quatro pinos, sendo dois para alimentação de 5V (VCC) e GND, além de um pino de leitura analógica (A0) e outro digital (D0).

O pino digital (D0) retorna 0V ou 5V dependendo do nível calibrado utilizando o potenciômetro existente nele.

Já o pino analógico (A0) retorna o valor proporcional à concentração de gás.

Este sensor necessita de calibração, que consiste em deixá-lo ligado por um certo tempo para medições precisas.

Ao adquirir um sensor desses, a calibração pode demorar até 24 horas, mas para uso no dia a dia ele apenas precisa de alguns minutos.

Exemplos de leituras. Para uso confiável, é necessário calibrar: medir em ar limpo (valor de referência) e em ambiente com concentração conhecida (valor de calibração)

Intervalo Qualidade Descrição
0 - 100 Ar muito limpo Pode ser difícil alcançar (ambiente controlado)
100 - 300 Ar limpo/normal CO₂ ~ 350-600 ppm, baixa presença de gases
300 - 600 Ar moderado Pode indicar aumento de CO₂ (> 1000 ppm) ou álcool/fumaça leve
600 - 800 Ar poluído Gases nocivos perceptíveis, fumaça, solventes
800 - 1023 Muito poluído / saturado Alta concentração de CO₂ (> 5000 ppm) ou presença forte de NH₃, álcool, benzeno, etc

Sensor de detecção de gás

Neste projeto você criará um circuito que faz o uso de um sensor de detecção de gás com o Arduino.

Para a criação deste circuito serão necessários os seguintes componentes:

  • 1x Breadboard (opcional)
  • 1x Arduino UNO
  • 1x Sensor de detecção de gás
  • Jumpers

Circuito Sensor de detecção de gás

Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.

Circuito Sensor de detecção de gás

Código fonte para o circuito do sensor de detecção de gás

Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.

/**
 * Código do curso Magos do Arduino para utilizar um sensor de detecção de gás com o Arduino. 
 * 
 * Imprima no monitor serial as leituras digitais e analógicas de um sensor de detecção de gás com o Arduino.
 * Para um sensor MQ135 novo ou previamente armazenado, é necessário um período de teste de 24 horas para garantir leituras estáveis e precisas. 
 * Após o teste inicial, o sensor precisa de um tempo de aquecimento de alguns minutos para que o aquecedor interno se estabilize antes de fornecer dados normais. 
 * Para monitoramento contínuo, normalmente é possível realizar leituras a cada 1 a 5 segundos ou com mais frequência, mas também pode ocorrer um tempo de resposta lento dependendo do gás e de sua concentração.
 * Portanto, um intervalo de leitura de 1 a 5 minutos pode ser necessário para valores estáveis em alguns casos.
 *
 * Exemplos de leituras no Arduino (0-1023):
 * 0 - 100	Ar muito limpo	Pode ser difícil alcançar (ambiente controlado)
 * 100 - 300	Ar limpo/normal	CO₂ ~ 350-600 ppm, baixa presença de gases
 * 300 - 600	Ar moderado	Pode indicar aumento de CO₂ (> 1000 ppm) ou álcool/fumaça leve
 * 600 - 800	Ar poluído	Gases nocivos perceptíveis, fumaça, solventes
 * 800 - 1023	Muito poluído / saturado	Alta concentração de CO₂ (> 5000 ppm) ou presença forte de NH₃, álcool, benzeno etc.
 *
 * (c) Copyright KazaleIT
 * @kazaleitoficial no YouTube
 **/

#define PINO_SENSOR_DIGITAL 2
#define PINO_SENSOR_ANALOGICO A0

int valorDigital = 0;
int valorAnalogico = 0;

void setup() {
  pinMode(PINO_SENSOR_DIGITAL, INPUT);

  Serial.begin(9600);
}

void loop() {
  // faz a leitura do valor digital do sensor
  valorDigital = digitalRead(PINO_SENSOR_DIGITAL);
  // imprime o valor digital obtido pelo sensor
  Serial.print("Valor digital: ");
  Serial.println(valorDigital);

  // imprime uma mensagem com base no valor digital obtido (HIGH ou LOW)
  if (valorDigital == HIGH) {
    Serial.println("Presença de gases detectada!");
  } else {
    Serial.println("Nenhuma presença de gases detectada.");
  }

  // faz a leitura do valor analógico do sensor
  valorAnalogico = analogRead(PINO_SENSOR_ANALOGICO);

  // imprime o valor analógido obtido pelo sensor
  Serial.print("Valor analógico: ");
  Serial.println(valorAnalogico);
  if (valorAnalogico < 100) {
    Serial.println("Ar muito limpo");
  } else if (valorAnalogico < 300) {
    Serial.println("Ar limpo/normal");
  } else if (valorAnalogico < 600) {
    Serial.println("Ar moderado, existe aumento de CO₂ ou álcool/fumaça leve");
  } else if (valorAnalogico < 800) {
    Serial.println("Ar poluído, presença de gases nocivos perceptíveis como fumaça ou solventes");
  } else { // 800-1023
    Serial.println("Muito poluído / saturado, alta concentração de CO₂");
  }

  Serial.println("");
  delay(3000);
}