Skip to Content

Sensor de Gás VOC MEMS Fermion GM-502B com Arduino

Sensor de Gás VOC MEMS Fermion GM-502B com Arduino

O sensor de gás analógico Fermion VOC da DFRobot é um módulo compacto de deteção de compostos orgânicos voláteis (VOC) projetado para integração com plataformas de microcontroladores como Arduino e ESP32.

Ele utiliza tecnologia de sistemas microeletromecânicos (MEMS) para fornecer alta sensibilidade a uma variedade de VOCs, incluindo etanol, formaldeído e tolueno na faixa aproximada de 1 a 500 ppm.

Neste tutorial, aprenderás a medir concentrações de VOC e a ativar um alarme sonoro ou piscar um LED se a concentração de VOC ficar demasiado alta.

Peças Necessárias

Vais precisar de um sensor de gás Fermion VOC da DFRobot. Quanto ao microcontrolador, usei um Arduino Uno para este projeto, mas qualquer outro Arduino ou ESP32 também funcionará.

Para o nosso sistema de alarme de gás, precisaremos de um LED ou um buzzer, que podes adquirir na Amazon. Também usaremos um OLED para mostrar os valores medidos de VOC num ecrã. Listei abaixo o pequeno OLED SSD1306 128×64 que utilizei.

Sensor de Gás MEMS Fermion VOC

Buzzer Passivo

Kit de Resistores & LED

OLED display

Ecrã OLED

Arduino

Arduino Uno

USB Data Sync cable Arduino

Cabo USB para Arduino UNO

Dupont wire set

Conjunto de Fios Dupont

Half_breadboard56a

Breadboard

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Hardware do Sensor de Gás Fermion VOC

O sensor de gás analógico Fermion VOC da DFRobot é uma placa compacta de deteção de gases projetada para detetar compostos orgânicos voláteis (VOCs), como etanol, formaldeído, tolueno e outros.

Baseia-se no chip GM-502B, que utiliza tecnologia de sistemas microeletromecânicos (MEMS) para alcançar um formato pequeno com baixo consumo de energia e características de resposta rápida.

A placa mede aproximadamente 13 mm por 13 mm com uma espessura de cerca de 2,5 mm. A imagem abaixo mostra a placa com o sensor GM-502B no topo e um regulador de tensão por baixo:

Fermion VOC Analog Gas Sensor Board
Placa do Sensor de Gás Analógico Fermion VOC

O módulo destina-se à deteção qualitativa de concentrações de VOC em vez de análise quantitativa precisa. Note que a DFRobot também oferece sensores calibrados, mas são maiores e mais caros (link).

Características Elétricas e Saída

O sensor opera numa faixa de tensão de alimentação de 3,3 V a 5 V, que corresponde aos níveis lógicos da maioria das placas de desenvolvimento Arduino e ESP32. Quando alimentado, o dispositivo consome menos de 20 mA de corrente operacional e gera muito pouco aquecimento próprio devido ao seu design MEMS.

A concentração de gás é representada por uma saída de tensão analógica que varia proporcionalmente à quantidade de VOC detectada no ar circundante. A tensão de saída está na faixa de 0…VCC.

Faixa de Deteção e Sensibilidade

O sensor pode detetar VOCs comuns como etanol, formaldeído e tolueno numa faixa de 1 ppm a 500 ppm. A sensibilidade é quantificada pela razão da resistência no ar limpo (R0) para a resistência numa concentração conhecida de VOC (Rs), com uma especificação típica de R0/Rs ≥ 3 a uma concentração de etanol de 50 ppm. Como mencionado antes, a saída do sensor não é um valor calibrado de concentração.

Especificações Ambientais e de Vida Útil

O elemento sensor é projetado para operar numa faixa de temperatura ambiente de aproximadamente -10 °C a +50 °C e humidade relativa de 15 % a 90 % (sem condensação). O fabricante especifica uma vida útil de pelo menos cinco anos quando o sensor é usado em condições atmosféricas normais sem contaminação excessiva.

Como os sensores de VOC respondem a uma ampla classe de gases orgânicos, fatores ambientais como humidade, temperatura e a presença de outros gases também podem afetar a saída.

Pinagem

Fisicamente, a placa expõe três pinos para conexão: saída analógica (A), tensão de alimentação (VCC) e terra (GND). A imagem abaixo mostra a pinagem da placa:

Pinout of VOC Analog Gas Sensor Board
Pinagem da Placa do Sensor de Gás Analógico VOC

Esquemas

A imagem seguinte mostra o esquema da placa do sensor de gás Fermion VOC:

Esquema do Sensor de Gás Analógico Fermion VOC (source)

Podes ver o regulador de tensão e o chip sensor GM-502B com o resistor de carga de 20K na saída VOUT.

Preparação

O sensor de gás vem com uma película protetora que precisas remover. Se olhares para o topo do sensor, verás uma película amarela a cobrir os orifícios de entrada de ar. Usa uma pinça para retirar a película. As fotos abaixo mostram o sensor com a película protetora completa, a meio de ser removida e completamente removida:

Peeling of protective film
Remoção da película protetora

Note que o sensor requer um período de aquecimento para atingir estabilidade operacional. Isto pode levar vários minutos na primeira utilização até que as leituras se estabilizem. Se não usares o sensor por um longo tempo, é recomendado deixá-lo funcionar entre 24 a 72 horas:

Preheating times for GM-502B VOC Sensor
Tempos de pré-aquecimento para o sensor VOC GM-502B (source)

Especificação Técnica

A tabela seguinte resume a especificação técnica do sensor de gás Fermion VOC:

Parâmetro Especificação
Tipo de Sensor Sensor de gás VOC baseado em MEMS
Gases Alvo Compostos orgânicos voláteis (ex.: etanol, formaldeído, tolueno)
Faixa de Deteção Aproximadamente 1 ppm a 500 ppm
Tipo de Saída Saída de tensão analógica
Tensão de Operação 3,3 V a 5 V DC
Corrente de Operação < 20 mA
Resistência de Carga (RL) 20 kΩ (a bordo)
Temperatura de Operação -10 °C a +50 °C
Humidade de Operação 15 % a 90 % HR (sem condensação)
Característica de Resposta A tensão de saída aumenta com o aumento da concentração de VOC
Tempo de Aquecimento Vários minutos (estabilização inicial necessária)
Vida Útil Esperada ≥ 5 anos (em condições normais)
Dimensões Aprox. 13 mm × 13 mm × 2,5 mm (elemento sensor)
Pinos de Interface VCC, GND, Saída Analógica

E aqui está um link para a folha de dados do GM-502B com mais dados técnicos:

Sensor de Gás Fermion VOC versus Sensor de Gás MQ-135

Uma alternativa comum ao sensor Fermion VOC é o mais antigo sensor MQ-135 MQ-135. A seguir, uma breve comparação entre os dois sensores.

Tecnologia e Princípio de Deteção

O sensor Fermion VOC usa tecnologia MEMS (sistemas microeletromecânicos) que responde a compostos orgânicos voláteis alterando a resistência interna e produzindo uma tensão analógica proporcional. O seu design é otimizado para baixo consumo, tamanho compacto e deteção qualitativa de VOC na faixa de 1–500 ppm, com aquecimento próprio mínimo e rápida recuperação.

Em contraste, o MQ-135 é um sensor semicondutor de óxido metálico (MOS) que incorpora uma camada sensora aquecida de dióxido de estanho (SnO₂). O sensor apresenta ampla sensibilidade cruzada a gases como amoníaco, benzeno, compostos relacionados com CO₂ e fumo. Sensores MOS como o MQ-135 têm consumo de energia muito maior e requerem um período de aquecimento mais longo antes das leituras se estabilizarem.

Condições de Operação e Consumo de Energia

O sensor Fermion VOC opera de 3,3 V a 5 V com corrente muito baixa (< 20 mA), tornando-o adequado para sistemas embutidos de baixo consumo e monitorização contínua sem um aquecedor separado.

O MQ-135, no entanto, normalmente funciona a cerca de 5 V e usa uma corrente significativa para o aquecedor (geralmente ~100–200 mA ou mais), o que aumenta o consumo total.

Gases Alvo e Sensibilidade

Ambos os sensores respondem a VOCs, mas o Fermion é especificamente ajustado para detetar VOCs típicos interiores como etanol, formaldeído e tolueno, e pode fornecer uma resposta analógica relativamente consistente dentro da sua faixa especificada.

O MQ-135, por outro lado, tem sensibilidade ampla a muitos gases incluindo amoníaco, fumo e vários poluentes do ar; isto pode ser uma vantagem para indicação geral da qualidade do ar, mas a falta de seletividade dificulta distinguir um gás de outro ou calibrar para concentrações precisas.

Calibração e Estabilidade

Sensores baseados em MEMS como o Fermion tendem a estabilizar mais rápido, com tempo mínimo de “burn-in”, e são menos afetados pela temperatura ambiente porque não dependem de uma câmara aquecida.

Sensores MQ-135 geralmente requerem pré-burn-in (geralmente 24–48 horas) e recalibração regular para resultados estáveis, e as suas leituras são fortemente influenciadas pela temperatura e humidade.

Ligação do Sensor de Gás VOC ao Arduino UNO

Ligar o sensor a um Arduino UNO é simples. Liga VCC a 5V (ou 3,3V), GND ao terra e A à entrada analógica A0 como mostrado abaixo:

Connecting VOC Gas Sensor to Arduino UNO
Ligação do Sensor de Gás VOC ao Arduino UNO

Exemplos de Código

Leitura da concentração de gás

Neste primeiro exemplo, simplesmente lemos os valores medidos pelo sensor de gás e imprimimos no Monitor Serial:

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

void loop() {
  int val = analogRead(A0);
  Serial.println(val);
  delay(100);
}

Verás valores entre 0 e 1023, dependendo da quantidade de gases VOC no ambiente.

Se o sensor ainda não estiver completamente aquecido, verás uma sequência de valores a diminuir continuamente no Monitor Serial:

Após vários minutos, as medições estabilizam. No meu caso, num valor em torno de 643:

Se expuseres o sensor a perfume ou outro gás VOC, verás um aumento súbito no valor medido:

Como o sensor não está calibrado, não podes usá-lo para medir concentrações reais em ppm (partes por milhão) ou mg/m 3 de gases VOC. No entanto, podes usá-lo para construir um alarme de gás, que faremos na próxima secção.

Alarme de Gás com LED

O código seguinte implementa um alarme de gás simples. Liga um LED se o valor medido de VOC ultrapassar um limiar predefinido de 700:

byte sensorPin = A0;
byte ledPin = 13;
int threshold = 700;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  digitalWrite(ledPin, val > threshold ? HIGH: LOW);
  delay(100);
}

Liguei o LED com um resistor de 220 Ohm ao GPIO 13 como LED de alarme, conforme mostrado abaixo:

Connecting alarm LED to Arduino Uno
Ligação do LED de alarme ao Arduino UNO

Note que para um sistema de alarme fiável, podes querer adicionar também um sensor de temperatura e um de humidade, pois as leituras do sensor de gás são afetadas pela temperatura e humidade. A figura abaixo mostra a dependência da resistência do sensor, que é proporcional à tensão que o Arduino lê, em relação à humidade relativa:

Typical temperature/humidity characteristics
Características típicas de temperatura/humidade (source)

Alarme de Gás com Buzzer Passivo

Em vez de um LED, podes também usar um buzzer como sinal de alarme. No código seguinte, um buzzer passivo é ativado se o valor medido de VOC ultrapassar o limiar:

byte sensorPin = A0;
byte buzzerPin = 11;
int threshold = 700;

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  if (val > threshold) {
     tone(buzzerPin, 500);
  } else {
    noTone(buzzerPin);
  }
  delay(100);
}

A imagem seguinte mostra como adicionar o buzzer ao circuito. Começa por ligar o terminal negativo do buzzer ao GND do Arduino (fio preto). Depois liga o terminal positivo através de um resistor de 100Ω ao GPIO 11 (fio vermelho):

Connecting alarm buzzer to Arduino UNO
Ligação do buzzer de alarme ao Arduino UNO

Certifica-te de que a polaridade do buzzer está correta e que é um buzzer passivo ligado a uma porta GPIO com capacidade PWM. Para mais informações, vê o tutorial Active and Passive Piezo Buzzers with Arduino.

Se tiveres um buzzer ativo, deves usar o código do alarme com LED anterior, pois não funcionará corretamente com o comando tone().

Mostrar a Concentração de VOC no OLED

Neste último exemplo, mostramos os valores medidos de VOC num pequeno OLED. O código imprime “VOC” e o valor no centro do ecrã e atualiza o valor mostrado a cada 100 ms:

#include "Adafruit_SSD1306.h"  // Version 2.5.16

Adafruit_SSD1306 oled(128, 64, &Wire, -1);

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.setTextColor(WHITE, BLACK);
  oled.clearDisplay();
}

void loop() {
  static char text[30];

  int val = analogRead(A0);

  oled.setTextSize(2);
  oled.setCursor(45, 10);  
  oled.print("VOC");

  sprintf(text, " %d ", val);
  oled.setTextSize(2);
  oled.setCursor(35, 40);
  oled.print(text);

  oled.display();

  delay(100);
}

Note que terás de instalar a biblioteca Adafruit_SSD1306 para controlar o OLED. Podes instalá-la via o Library Manager como de costume:

Adafruit_SSD1306 library installed in Library Manager
Biblioteca Adafruit_SSD1306 instalada no Library Manager

Ligar o OLED ao Arduino é fácil. Liga SDA e SCL do OLED aos pinos A4 e A5 do Arduino. Quanto à alimentação: como o OLED pode funcionar a 5V, podemos partilhar as linhas de alimentação. Liga VCC a 5V e GND a GND. A imagem abaixo mostra a ligação completa:

Connecting OLED to Arduino Uno
Ligação do OLED ao Arduino UNO

Se precisares de ajuda com o OLED, dá uma vista de olhos ao tutorial Use SSD1306 I2C OLED Display With Arduino.

Conclusão

Neste tutorial aprendeste a usar o sensor de gás Fermion VOC com um Arduino UNO para medir gases compostos orgânicos voláteis (VOC). O sensor pode ser facilmente usado com outros microcontroladores como o ESP32 também.

Sensores de gás MEMS têm a vantagem de serem pequenos, consumirem muito pouca energia (< 20mA) e terem um curto tempo de aquecimento. No entanto, ainda são afetados pela temperatura ambiente e humidade.

Além disso, o sensor de gás Fermion VOC usado aqui não está calibrado e, portanto, não pode ser usado diretamente para medir concentrações reais de VOC em unidades ppm, por exemplo. Em teoria, poderias calibrar o sensor tu mesmo, mas na prática isso seria difícil. A DFRobot também oferece sensores calibrados, mas são maiores e mais caros (link).

Note que existe uma série inteira de diferentes sensores MEMS disponíveis. Para uma visão geral, vê o artigo Review of the DFRobot Fermion MEMS Gas Sensor Series e para detalhes os nossos posts dedicados:

Se tiveres alguma dúvida, não hesites em deixar nos comentários.

Boas experiências 😉