- MQ6 Sensor de Gás
- Como medir PPM usando sensores MQ Gas?
- Componentes necessários
- Esquemático
- Sensor MQ com programação PIC
Os sensores de gás da série MQ são tipos muito comuns de sensores usados em detectores de gás para detectar ou medir certos tipos de gases. Esses sensores são amplamente usados em todos os dispositivos relacionados ao gás, desde simples detectores de fumaça até monitores industriais da qualidade do ar. Já usamos esses sensores de gás MQ com Arduino para medir alguns gases prejudiciais como a amônia. Neste artigo, vamos aprender como usar esses sensores de gás com microcontroladores PIC, para medir o valor PPM do gás e exibi-lo em um LCD 16x2.
Conforme mencionado anteriormente, existem diferentes tipos de sensores da série MQ disponíveis no mercado e cada sensor pode medir diferentes tipos de gases, conforme mostrado na tabela abaixo. Para o propósito deste artigo, usaremos o sensor de gás MQ6 com PIC que pode ser usado para detectar a presença e concentração de gás GLP. No entanto, usando o mesmo hardware e firmware, outros sensores da série MQ também podem ser usados sem grandes modificações no código e na parte do hardware.
Sensor | Detecta |
MQ-2 | Metano, Butano, GLP, fumaça |
MQ-3 | Álcool, etanol, fumaça |
MQ-4 | Metano, Gás CNG |
MQ-5 | Gás natural, GLP |
MQ-6 | GLP, gás butano |
MQ-7 | Monóxido de carbono |
MQ-8 | Gás hidrogênio |
MQ-9 | Monóxido de carbono, gases inflamáveis. |
MQ131 | Ozônio |
MQ135 | Qualidade do ar (benzeno, álcool, fumaça) |
MQ136 | Gás sulfeto de hidrogênio |
MQ137 | Amônia |
MQ138 | Benzeno, tolueno, álcool, acetona, propano, gás formaldeído, hidrogênio |
MQ214 | Metano, gás natural |
MQ216 | Gás natural, gás de carvão |
MQ303A | Álcool, etanol, fumaça |
MQ306A | GLP, gás butano |
MQ307A | Monóxido de carbono |
MQ309A | Monóxido de carbono, gases inflamáveis |
MG811 | Dióxido de carbono (CO2) |
AQ-104 | Qualidade do ar |
MQ6 Sensor de Gás
A imagem abaixo mostra o diagrama de pinos do sensor MQ6. No entanto, a imagem à esquerda é um sensor MQ6 baseado em módulo para interface com a unidade de microcontrolador, o diagrama de pinos do módulo também é mostrado nessa imagem.
O pino 1 é VCC, o pino 2 é o GND, o pino 3 é a saída digital (Lógica baixa quando o gás é detectado.) E o pino 4 é a saída analógica. O potenciômetro é usado para ajustar a sensibilidade. Não é RL. O resistor RL é o resistor correto do LED DOUT.
Cada sensor da série MQ possui um elemento de aquecimento e uma resistência de detecção. Dependendo da concentração do gás, a resistência de detecção é alterada e, detectando a alteração da resistência, a concentração de gás pode ser medida. Para medir a concentração de gás no PPM, todos os sensores MQ fornecem um gráfico logarítmico que é muito importante. O gráfico fornece uma visão geral da concentração de gás com a razão de RS e RO.
Como medir PPM usando sensores MQ Gas?
O RS é a resistência de detecção durante a presença de um gás específico, enquanto o RO é a resistência de detecção em ar limpo sem nenhum gás específico. O gráfico logarítmico a seguir obtido da folha de dados fornece uma visão geral da concentração de gás com a resistência de detecção do sensor MQ6. O sensor MQ6 é usado para detectar a concentração de gás GLP. Portanto, o sensor MQ6 fornecerá uma resistência particular durante a condição de ar limpo, onde o gás GLP não está disponível. Além disso, a resistência mudará sempre que o gás GLP for detectado pelo sensor MQ6.
Portanto, precisamos traçar este gráfico em nosso firmware de forma semelhante ao que fizemos em nosso projeto de detector de gás Arduino. A fórmula é ter 3 pontos de dados diferentes. Os primeiros dois pontos de dados são o início da curva LPG, nas coordenadas X e Y. O terceiro dado é a inclinação.
Então, se selecionarmos a curva azul profundo que é a curva LPG, o início da curva nas coordenadas X e Y é 200 e 2. Então, o primeiro ponto de dados da escala logarítmica é (log200, log2) que é 2,3, 0,30).
Vamos torná-lo como, X1 e Y1 = (2,3, 0,30). O final da curva é o segundo ponto de dados. Pelo mesmo processo descrito acima, X2 e Y2 são (log 10000, log0,4). Assim, X2 e Y2 = (4, -0,40). Para obter a inclinação da curva, a fórmula é
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
O gráfico de que precisamos pode ser dado como
LPG_Curve = {começando X e começando Y, declive} LPG_Curve = {2,3, 0,30, -0,41}
Para outros sensores MQ, obtenha os dados acima da folha de dados e do gráfico logarítmico. O valor será diferente com base no sensor e no gás medido. Para este módulo específico, ele possui um pino digital que fornece apenas informações sobre o gás presente ou não. Para este projeto, ele também é usado.
Componentes necessários
Os componentes necessários para a interface do sensor MQ com o microcontrolador PIC são fornecidos abaixo-
- Fonte de alimentação 5V
- Tábua de pão
- Resistor de 4,7k
- LCD 16x2
- Resistor 1k
- Cristal de 20 MHz
- Capacitor 33pF - 2pcs
- Microcontrolador PIC16F877A
- Sensor série MQ
- Berg e outros fios de conexão.
Esquemático
O esquema para este sensor de gás com um projeto PIC é bastante simples. O pino analógico é conectado ao RA0 e o digital ao RD5 para medir a tensão analógica fornecida pelo módulo sensor de gás. Se você é completamente novo no PIC, talvez queira dar uma olhada no tutorial do PIC ADC e no tutorial do PIC LCD para entender melhor este projeto.
O circuito é construído em uma placa de ensaio. Depois que as conexões foram concluídas, minha configuração se parece com isto, mostrado abaixo.
Sensor MQ com programação PIC
A parte principal deste código é a função principal e outras funções periféricas associadas. O programa completo pode ser encontrado na parte inferior desta página, os trechos de código importantes são explicados a seguir
A função abaixo é usada para obter o valor da resistência do sensor no ar livre. Como o canal analógico 0 é usado, ele está obtendo dados do canal analógico 0. Isso é para calibrar o sensor de gás MQ.
float SensorCalibration () { contagem interna ; // Esta função irá calibrar o sensor em free air float val = 0; for (contagem = 0; contagem <50; contagem ++) {// pegar várias amostras e calcular o valor médio val + = calcular_resistência (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // dividido por RO_CLEAN_AIR_FACTOR produz o valor de retorno Ro ; }
A função abaixo é usada para ler os valores analógicos do sensor MQ e fazer a média para calcular o valor Rs
float read_MQ () { contagem interna ; float rs = 0; for (count = 0; count <5; count ++) {// faça várias leituras e calcule a média. rs + = calcular_resistência (ADC_Read (0)); // rs muda de acordo com a concentração de gás. __delay_ms (50); } rs = rs / 5; return rs; }
A função abaixo é usada para calcular a resistência do resistor divisor de tensão e a resistência da carga.
float Calcule_resistance (int adc_channel) {// sensor e resistor de carga forma um divisor de tensão. então usando valor analógico e retorno de valor de carga (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // encontraremos o resistor do sensor. }
O RL_VALUE é definido no início do código como mostrado abaixo
#define RL_VALUE (10) // define a resistência de carga na placa, em quilo-ohms
Altere este valor após verificar a resistência de carga a bordo. Ele pode ser diferente em outras placas de sensores MQ. Para plotar os dados disponíveis na escala logarítmica, a função abaixo é usada.
int gas_plot_log_scale (float rs_ro_ratio, float * curva) { return pow (10, (((log (rs_ro_ratio) -curva) / curva) + curva)); }
A curva é a curva de GLP definida acima do código que foi calculado anteriormente em nosso artigo acima.
float MQ6_curve = {2.3,0.30, -0.41}; // Gráfico do gráfico, altere para um sensor específico
Finalmente, a função principal dentro da qual medimos o valor analógico, calculamos o PPM e o exibimos no LCD é fornecida abaixo
void main () { system_init (); limpar tela(); lcd_com (FIRST_LINE); lcd_puts ("Calibrando…."); Ro = SensorCalibration (); //limpar tela(); lcd_com (FIRST_LINE); lcd_puts ("Concluído!"); //limpar tela(); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K Ohms"); __delay_ms (1500); detecção_gás = 0; enquanto (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Há gás presente"); lcd_com (SECOND_LINE); lcd_puts ("Gás ppm ="); float rs = read_MQ (); razão de flutuação = rs / Ro; lcd_print_number (gas_plot_log_scale (proporção, MQ6_curve)); __delay_ms (1500); limpar tela(); } else { lcd_com (FIRST_LINE); lcd_puts ("Gás não presente"); } } }
Primeiro, o RO do sensor é medido em ar limpo. Em seguida, o pino digital é lido para verificar se o gás está presente ou não. Se o gás estiver presente, ele é medido pela curva LPG fornecida.
Usei um isqueiro para verificar se o valor do PPM está mudando quando o gás é detectado. Esses isqueiros contêm gás GLP que, ao ser liberado no ar, será lido pelo nosso sensor e o valor do PPM no LCD mudará conforme mostrado abaixo.
O trabalho completo pode ser encontrado no vídeo fornecido no final desta página. Se você tiver alguma dúvida, deixe-a na seção de comentários ou use nossos fóruns para outras questões técnicas.