Skip to Content

Sensor de Gás Monóxido de Carbono MEMS Fermion GM-702B com Arduino

Sensor de Gás Monóxido de Carbono MEMS Fermion GM-702B com Arduino

O Fermion: MEMS CO Gas Detection Sensor é um sensor compacto em placa breakout projetado para detectar monóxido de carbono (CO) usando tecnologia moderna de sistemas microeletromecânicos (MEMS). Integra um elemento sensor MEMS GM-702B que responde às concentrações de CO no ar fornecendo uma tensão analógica proporcional à presença do gás.

O CO é extremamente venenoso e causa cerca de 400 mortes anualmente nos EUA. Fontes comuns incluem equipamentos de aquecimento mal mantidos ou usados incorretamente, aparelhos a gás, grelhadores a carvão e motores em funcionamento em espaços confinados. Como é indetetável pelos sentidos humanos, um alarme de CO é a única forma de detetar a sua presença.

Neste tutorial, aprenderás como detetar monóxido de carbono com o sensor. Vamos construir um sistema de alarme simples que pisca um LED ou soa um buzzer se a concentração de monóxido de carbono ficar demasiado alta.

Peças Necessárias

Vais precisar do sensor Fermion CO 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, também precisaremos de um LED e um buzzer, que podes adquirir na Amazon. Além disso, usaremos um pequeno OLED SSD1306 para mostrar o valor medido de CO no ecrã.

Sensor Fermion MEMS CO

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 Monóxido de Carbono (CO) Fermion

O breakout do Sensor Fermion MEMS de Monóxido de Carbono (CO) é construído em torno de um pequeno elemento sensor MEMS de gás. Este elemento é uma estrutura microeletromecânica revestida com um filme sensível proprietário que altera as suas características elétricas quando exposto a moléculas de CO.

A placa breakout inclui componentes passivos de suporte e fornece um único sinal de saída analógica. A alimentação e o terra são fornecidos através de níveis lógicos padrão de 3,3 V/5 V.

Princípio de Detecção

O núcleo sensor usa tecnologia MEMS para detetar gás CO. Esta tecnologia baseia-se na interação entre moléculas de CO e uma superfície quimicamente sensível na estrutura MEMS. Quando o CO está presente, a resistência do material sensor altera-se.

O circuito interno da placa breakout converte esta variação de resistência numa tensão analógica proporcional no pino de saída. Não há processamento digital a bordo, pelo que o sinal analógico bruto deve ser lido e interpretado pelo microcontrolador.

Características Elétricas

O sensor opera com uma tensão de alimentação entre 3,3 V e 5 V. A corrente típica de operação é baixa, da ordem de dezenas de miliamperes, o que permite o uso em sistemas alimentados por bateria com gestão adequada de energia.

A tensão de saída analógica varia com a concentração do gás, mas não está referenciada a unidades calibradas. A saída deve ser amostrada através de um conversor analógico-digital no microcontrolador anfitrião.

Comportamento do Sinal e Aquecimento

O sensor requer um curto período de aquecimento após a aplicação da alimentação antes que as leituras se estabilizem. Durante este tempo, o elemento MEMS atinge um equilíbrio térmico e elétrico. Após o aquecimento, a tensão de saída varia em resposta às mudanças na concentração de CO.

Limitações

O sensor não inclui compensação interna para temperatura ou humidade. Estes fatores ambientais podem influenciar a saída analógica, pelo que sensores adicionais podem ser usados num sistema que exija medições mais estáveis. Além disso, como a saída não é calibrada, estimativas absolutas da concentração de CO requerem calibração externa contra níveis de referência conhecidos.

Especificações Técnicas

A tabela seguinte resume as especificações técnicas do Sensor Fermion CO GM-702B:

Parâmetro Especificação
Elemento Sensor Sensor de gás MEMS GM-702B
Gás Alvo Monóxido de Carbono (CO)
Faixa de Detecção 5 ppm a 5000 ppm (típico)
Sinal de Saída Tensão analógica
Tensão de Operação 3,3 V a 5 V DC
Corrente de Operação < 20 mA (típico)
Tipo de Interface Pino único de saída analógica
Tipo de Resposta Mudança de resistência convertida em tensão
Temperatura de Operação −10 °C a +50 °C
Humidade de Operação 15 % a 90 % HR (sem condensação)
Calibração Sem calibração de fábrica fornecida

Pinagem

Fisicamente, o breakout do sensor expõe três pinos para ligaçã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 Fermion Smoke Sensor GM-202B Board
Pinagem da Placa do Sensor Fermion CO GM-702B

Esquemas

A imagem seguinte mostra o esquema da placa do Sensor de Gás Fermion CO GM-702B:

Schematics of Fermion CO Sensor GM-702B
Esquema do Sensor Fermion CO GM-702B (source)

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

Preparação

O sensor vem com uma película protetora que precisas de remover. Se olhares para o topo do sensor, encontrará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, meio removida e completamente removida (da esquerda para a direita):

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 período, é recomendado deixá-lo funcionar entre 48 a 168 horas:

Preheating times for GM-202B Smoke sensor
Tempos de burn-in para o sensor de fumo GM-702B (source)

Especificações Técnicas

A tabela seguinte resume as especificações técnicas do Sensor Fermion CO GM-702B:

Especificação Detalhe
Modelo do Sensor GM-702B
Gás Detectado Monóxido de Carbono (CO)
Faixa de Detecção ~5 ppm a 5000 ppm CO
Tipo de Saída Tensão analógica (proporcional/indicativa)
Tensão de Alimentação 3,3 V – 5 V DC
Corrente de Operação < 20 mA
Sensibilidade R₀(no ar) / Rₛ(em 150 ppm CO) ≥ 3
Temperatura de Operação -10 °C a +50 °C
Humidade de Operação 15 % – 90 % HR (sem condensação)
Tempo de Aquecimento Recomendado ≥ 5 min (mais longo após armazenamento)
Expectativa de Vida ≥ 5 anos (no ar)
Tamanho da Placa Breakout ~13×13×2.5 mm (incluindo PCB)
Interface 3 pinos: A (saída analógica), VCC, GND
Aplicações Típicas Alarmes de fuga de CO, monitorização ambiental, sistemas de deteção de segurança

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

Sensor Fermion GM-702B CO versus Sensor MQ-7 CO

O Sensor Fermion MEMS de Monóxido de Carbono (CO) e o Sensor de Gás MQ-7 CO são ambos usados frequentemente em aplicações de hobby para detetar monóxido de carbono, mas diferem no princípio de deteção, características de desempenho e requisitos de integração.

Tecnologia de Deteção

O sensor MEMS Fermion usa um elemento sensor de sistemas microeletromecânicos (MEMS) que reage à presença de CO com uma alteração nas suas propriedades elétricas. Esta alteração é convertida na placa breakout numa tensão analógica proporcional.

O MQ-7, por outro lado, é um sensor semicondutor de óxido metálico (MOX). Baseia-se numa superfície aquecida de óxido de estanho cuja resistência varia quando moléculas de CO interagem com a camada sensora aquecida. Este mecanismo faz com que o MQ-7 tenha tipicamente um consumo médio de energia superior ao sensor MEMS Fermion.

Alimentação e Aquecimento

Em termos de alimentação e comportamento de aquecimento, o sensor MEMS geralmente estabiliza mais rapidamente e consome menos energia porque não alimenta um aquecedor separado com alta corrente.

O MQ-7, por sua vez, usa um esquema de ciclo periódico de aquecimento para alcançar sensibilidade e deve ser alimentado com tensões e temporizações específicas para produzir leituras repetíveis, o que adiciona complexidade no firmware e aumenta o consumo energético.

Saída

Ambos os sensores fornecem uma saída analógica que deve ser lida por um conversor analógico-digital num microcontrolador como Arduino ou ESP32. No entanto, nenhum dos sensores fornece um valor digital calibrado de concentração diretamente.

Seletividade e Estabilidade

Em seletividade e estabilidade, o sensor MEMS geralmente apresenta menor sensibilidade cruzada e melhor estabilidade de linha base a longo prazo comparado com sensores MOX como o MQ-7, que podem responder a múltiplos gases redutores e são influenciados pela humidade e temperatura ambientais.

Resumo

No geral, o sensor Fermion MEMS CO tende a ser mais adequado para projetos que valorizam baixo consumo, resposta rápida e integração simples, enquanto o MQ-7 é atraente para deteção básica de CO a baixo custo, mas exige controlo de energia, calibração e compensação ambiental mais cuidadosos no firmware.

Ligação do Sensor Fermion CO ao Arduino UNO

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

Connecting Smoke Sensor to Arduino UNO
Ligação do Sensor CO ao Arduino UNO

Exemplos de Código

Leitura da concentração de Monóxido de Carbono

Neste primeiro exemplo, simplesmente lemos os valores medidos pelo sensor e imprimimos no Monitor Serial a cada segundo:

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

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

Verás valores entre 0 e 1023, dependendo da quantidade de Monóxido de Carbono no ambiente.

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

Após vários minutos, as medições estabilizam. No meu caso, num valor em torno de 130. Podes testar o sensor respirando sobre ele. 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 . No entanto, podes usá-lo para construir um alarme de Monóxido de Carbono, que faremos na próxima secção.

Alarme de Monóxido de Carbono com LED

O código seguinte implementa um alarme simples de Monóxido de Carbono. Liga um LED se o valor medido de CO ultrapassar um limiar predefinido de 160:

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

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:

Ligação do LED de alarme ao Arduino UNO

Note que para um sistema de alarme fiável, pode querer adicionar também um sensor de temperatura e um de humidade, pois as leituras do sensor são afetadas por temperatura e humidade. Alternativamente, podes usar uma janela deslizante para compensar a deriva do sensor devido à temperatura e humidade.

Alarme de Monóxido de Carbono com Buzzer Passivo

Em vez de um LED, podes também usar um buzzer para sinal de alarme. No código seguinte, um buzzer passivo é ativado se a concentração de CO medida ultrapassar o limiar:

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

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 via 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 Active and Passive Piezo Buzzers with Arduino tutorial.

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

Exibir a Concentração de Monóxido de Carbono no OLED

Neste último exemplo, mostramos os valores medidos de concentração de fumo num pequeno OLED. O código imprime “CO” 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(50, 10);  
  oled.print("CO");

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

  oled.display();

  delay(100);
}

Note que precisas da Adafruit_SSD1306 biblioteca 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 o 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 o VCC a 5V e o GND ao GND. A imagem abaixo mostra a ligação completa:

Connecting OLED and Sensor to Arduino UNO
Ligação do OLED e Sensor ao Arduino UNO

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

Conclusão

Neste tutorial aprendeste a usar o sensor Fermion CO com um Arduino UNO para detetar Monóxido de Carbono. 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 e humidade ambiente.

Além disso, o sensor de Monóxido de Carbono Fermion não é calibrado e, portanto, não pode ser usado diretamente para medir concentrações reais em unidades ppm.

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

Se tiveres alguma dúvida, sente-te à vontade para deixar nos comentários.

Boas experiências de construção 😉