Alarme detector de GLP

Alarme detector de GLP

O GPL está presente em quase todos os agregados familiares hoje, quer em cilindros quer através de canalização, mas que fracção destes agregados familiares tem dispositivos para detectar vazamentos de GLP? Dado que muitas pessoas perdem a vida por causa disso, é surpreendente que pouco tenha sido feito.

Na verdade, é muito simples construir o seu próprio Detector de vazamento de GLP e aqui você aprenderá como fazer exatamente isso. O Detector de vazamento de GLP o circuito aqui detecta a concentração de GLP nas proximidades e exibe a mesma em um LCD. Ele também comparará o mesmo com um limite e emitirá um sinal sonoro se ultrapassar 75% do limite. O usuário pode inserir o limite desejado usando o teclado fornecido e também calibrar o sensor conforme necessário.

Vareta de desenvolvimento ATmega328p

O projeto é desenvolvido em torno do Development Stick ATmega328p da Knewron, que é uma unidade excelente e compacta. Consiste em suporte integrado para um LCD padrão 16×2 compatível com HD44780 operado no modo de 4 bits. Ele possui a versão TQFP de 32 pinos do ATmega328p com todas as E/S divididas por meio de cabeçalhos; na verdade, possui dois conjuntos de cada pino, o que é muito útil durante o projeto e o teste.

Figura 1: Imagem típica do stick de desenvolvimento ATMega328P

Para este projeto faremos a interface de um módulo LCD padrão, teclado 4×4, campainha e um sensor de gás que utilizará 1 pino ADC, e após a interface de tudo, teremos utilizado a maior parte dos pinos disponíveis no minúsculo MCU. O sensor de gás terá interface com o canal 0 do ADC, ou seja, pino PC0, enquanto a campainha será conectada ao pino PC1. O teclado 4×4 terá interface com a porta D, utilizando todos os pinos PD0-PD7. Por último, só precisamos montar um LCD nos pinos do cabeçalho já preenchidos no stick (PORTA B); é muito fácil, pois o potenciômetro necessário para variar o contraste do display já está na placa.

Teclado

O teclado escolhido é praticamente um layout padrão usado em pequenos sistemas embarcados. Consiste em 4 linhas e 4 colunas de botões configurados em forma de matriz e por isso é chamada de matriz 4×4. Existem vários métodos para ler esses tipos de teclados, alguns envolvem o uso de interrupções para iniciar varreduras de teclas, enquanto outros exigem várias varreduras de leitura para detectar se várias teclas são pressionadas; mas para esta aplicação não precisamos nos preocupar com o pressionamento de múltiplas teclas; outras salvaguardas para verificar a validade das teclas digitadas foram implementadas; também não é necessário um esquema de interrupção, pois nosso controlador não está muito carregado.

Diagrama de circuito do teclado 4X4

Figura 2: Diagrama de circuito do teclado 4X4

A figura acima mostra o arranjo matricial real do teclado onde temos 4 linhas e 4 colunas conectadas. A teoria é que se inicialmente definirmos as colunas para saídas enquanto fazemos as entradas das linhas com resistores pull up no lugar, podemos definir individualmente cada coluna para lógica 0 (GND), enquanto mantemos as outras três para lógica 1 (5V); lendo o nibble inferior, ou seja, as linhas, podemos determinar se uma tecla foi pressionada, se uma entrada específica for baixa, então a tecla correspondente a essa linha foi pressionada.

Vale ressaltar que as prioridades das teclas são fixadas na ordem de varredura (leitura), ou seja, se ambas as teclas 1 e 6 forem pressionadas o MCU irá ler apenas a chave 1 da primeira coluna e irá ignorar a outra desde o a rotina terá retornado um valor correspondente à tecla 1. Isso, entretanto, não é ruim, pois não há uma maneira definida de diferenciar entre pressionamentos simultâneos de teclas; pode-se levar em consideração o tempo exato de pressionamento, mas o fato de duas teclas terem sido pressionadas juntas é uma indicação de um erro do ponto de vista do usuário.

Cronômetro

É bem sabido que as variações nos gases são relativamente lentas em comparação com outros fenómenos, portanto não faz sentido ler o sensor a taxas rápidas, mas isto causa um problema uma vez que o nosso MCU funciona a taxas muito mais rápidas. É exatamente aqui que um cronômetro entra em cena. Podemos usar os temporizadores integrados do ATmega328p e acompanhar intervalos de tempo mais longos, no nosso caso 100ms. Portanto, amostramos o sensor a cada 100 ms e obtemos 5 dessas leituras, calculamos a média dessas 5 e usamos a resultante para nosso cálculo.

A primeira coisa que precisamos entender é que o cronômetro funciona em ciclos de clock; assim como o MCU principal; e tem uma contagem definida além da qual transborda. Para o temporizador de 8 bits é 255, enquanto é 65535 para o temporizador de 16 bits (Temporizador 1) que usaremos. O relógio do temporizador é um fator do relógio principal do MCU e pode ser ajustado de acordo; isso é controlado usando o valor pré-escalar armazenado no registro de função especial. As opções pré-escalares disponíveis são divididas por 1, 8, 64, 256 e 1024. Como o MCU tem clock de 8 MHz (usando RC interno), podemos dividir o clock do temporizador por 256 para obter um tick de 1/(8000000/256) = 32 microssegundos. Agora, para obter um intervalo de tempo de 100ms, precisamos de cliques de 500 ms/32 microssegundos, ou seja, (100e-3)/(32e-6) que é 3125.

Como o cronômetro conta de 0 a 65535 por tique do relógio e transborda quando faz a transição de 65535 para 0, gerando assim uma interrupção de estouro, precisamos carregar a contagem do cronômetro com (65535 – 3125), para que ele conte 3125 cliques, dando nos um intervalo de tempo de 100ms. Também precisamos habilitar a interrupção de estouro do temporizador.

A interrupção é gerada automaticamente a cada 100ms e podemos realizar nossas rotinas na rotina de serviço de interrupção (função chamada quando a interrupção é gerada). Para nossa aplicação, apenas definimos um sinalizador de 100ms e desabilitamos a interrupção do temporizador na rotina de serviço; o flag é limpo, a contagem recarregada e a interrupção habilitada quando a rotina de 100ms é chamada no loop principal.

Componentes e detalhes esquemáticos

Sensores de Gás

O sensor de gás utilizado aqui está prontamente disponível e possui diversas unidades compatíveis capazes de detectar vários gases. Os sensores de gás são comumente conhecidos como sensores da série MQ; usaremos o sensor de GLP MQ-6 agora. Alguns outros sensores úteis disponíveis que são muito semelhantes em operação incluem:

MQ-7 – Monóxido de Carbono

MQ-3 – Álcool

MQ-4 – Metano

MQ-8 – Hidrogênio

Existem muitos mais sensores; também é importante notar que cada sensor também é capaz de detectar outros gases, no entanto, ele é projetado para um gás específico listado e, portanto, é mais sensível a esse gás específico, como é evidente nas curvas de resposta fornecidas na folha de dados.

O sensor funciona usando um aquecedor para aquecer o ar presente ao redor do sensor químico, esse calor atua como um catalisador para reações químicas liberando elétrons e íons de acordo com o gás a ser detectado, os elétrons liberados fluem como corrente e, portanto, desenvolvem e geram tensão através o resistor de carga. A tensão desenvolvida varia entre 0-5V e, portanto, pode ser detectada usando um ADC. Vale a pena ler a ficha técnica e obter os valores de resistência da carga, bem como os requisitos de tensão do aquecedor. O MQ-6 tem um valor de resistência de carga recomendado de 20Kohms e uma faixa de 10K-47Kohms. O aquecedor também requer uma tensão constante de 5V.

Alguns sensores especificam um tempo de queima (24-48 horas), para o qual o sensor deve permanecer ligado para que as leituras obtidas sejam confiáveis, mas isso pode ser evitado no nosso caso, pois estamos interessados ​​em valores relativos e não absolutos. Verificou-se que ao dar alguns segundos ao sensor, ele se estabiliza em um valor estável (baixo) para começar a detectar. O sensor MQ-6 GLP possui uma faixa de detecção de 200-1000ppm.

Seção ADC

A unidade ADC no MCU funciona pegando a tensão de referência do ADC e dividindo-a em pedaços menores com base na resolução do ADC. A resolução ADC nada mais é do que o número de bits usados ​​para representar a saída. O ATmega328p possui um ADC de 10 bits, o que significa que a saída pode variar de 0 a 1023. Portanto, o MCU divide a tensão de referência em 1.024 pedaços. A placa de desenvolvimento tem a tensão de referência do ADC vinculada a 5V, tomando isso como referência, o ADC a divide em 1024 pedaços de cerca de 5V/1024 = 4,8mV cada. Portanto, se o ADC fornecer um valor de 10, isso significa que a tensão no pino ADC é 10 * 4,8mV = 48mV, da mesma forma para uma saída de escala completa de 1023, a tensão no pino ADC é 1023 * 4,8mV, que é cerca de 4910mV (o erro é devido ao arredondamento do valor do bit, bem como à precisão do ADC de +/- 0,5 LSB – 1 LSB).

Para esta aplicação, estamos apenas interessados ​​em obter os valores brutos do ADC do sensor, portanto, usaremos isso para calcular parâmetros intermediários que serão usados ​​para calcular a concentração de gás.

Seção de exibição

Um módulo LCD padrão de 16×2 caracteres é usado no modo de 4 bits para fins de exibição. A interface de um LCD é bastante simples e autoexplicativa a partir do próprio código-fonte.

Diagrama de blocos e circuito

Diagrama de blocos do detector de vazamento de GLP baseado em AVR ATMega328P

Figura 3: Diagrama de blocos do detector de vazamento de GLP baseado em AVR ATMega328P

A Figura 2 mostra o diagrama de blocos do projeto, enquanto a Figura 3 detalha mais circuitos. O stick de desenvolvimento verifica constantemente o teclado em busca de entradas válidas, ao mesmo tempo que obtém valores do sensor de gás; em seguida, ele calcula a concentração do gás e a exibe no LCD.

O circuito é projetado em torno do bastão de desenvolvimento ATmega328p. O sinal VCC do stick é de 5V e é usado para alimentar o LCD. A maioria das conexões é autoexplicativa, porém observe que o potenciômetro de contraste do LCD e o transistor para controlar a luz de fundo do LCD já estão presentes no stick de desenvolvimento.

O sensor de gás possui 6 pinos; entretanto, o conjunto de pinos (A1, HA, A2) e o conjunto (B1, HB, B2) são intercambiáveis. Em nosso esquema aplicamos 5V nos pinos do aquecedor HA, HB e alimentamos os pinos A1, A2 com 5V e, portanto, a saída é obtida na junção dos pinos B1, B2. Usamos um resistor de carga entre esta saída e o terra para formar o divisor de tensão necessário conforme a folha de dados.

Como a campainha pode consumir mais corrente do que o pino de E/S pode fornecer, é mais seguro usar um transistor no modo chave para ativar a campainha. O transistor usado é um transistor NPN, portanto, quando uma tensão positiva (pino de E/S para nível lógico alto) é aplicada à base, ela entra em saturação e liga a campainha, permitindo que a corrente flua do coletor para o emissor. Aplicando lógica baixa à base do transistor, podemos desligar a campainha.

O BC548 é um transistor NPN de uso geral comumente disponível. O resistor de 1K na base do transistor é um resistor limitador de corrente que evita o consumo excessivo de corrente; no entanto, você pode usar qualquer valor entre 330E e 1K com segurança.

O funcionamento geral é ilustrado no fluxograma mostrado na Figura.

Fluxograma do código AVR para detecção de vazamento de GLP

Figura 4: Fluxograma do código AVR para detecção de vazamento de GLP

Calibração do Sensor

O usuário tem a opção de pressionar o botão 'C' no teclado para iniciar a calibração. O MCU obterá 5 leituras de sensores espaçadas de 100 ms e cada vez que calcular a resistência do sensor R0, fará a média das cinco leituras e armazenará isso na EEPROM. Antes da calibração, o MCU usará um valor padrão de R0 = 10.

Armazenamento EEPROM

Para armazenar os valores na EEPROM utilizamos a biblioteca padrão AVR EEPROM. Os dados de calibração são armazenados no endereço 1 e para garantir a validade dos dados, os bytes de teste são colocados nos locais 0x00 e 0x03. Além disso, o valor limite é armazenado no endereço 6, com bytes de teste nos endereços 5 e 8. Cada vez na inicialização; o MCU verifica se esses bytes de teste estão presentes; em caso afirmativo, lê o valor de calibração e o limite e os utiliza para cálculo; caso contrário, utiliza o valor padrão para operação. O limite padrão é definido como 250 ppm.

ChaveSequência de pad

Para iniciar a calibração, o usuário deve pressionar a tecla 'C'. O sensor será calibrado automaticamente. Para inserir um limite, a sequência é a seguinte:

1. Imprensa '*' chave.

2. Insira o limite de 4 dígitos inferior a 9999 (máx. ppm do sensor); o valor típico pode ser cerca de 250.

3. pressione a tecla '#' para terminar.

Leitura da concentração de gás

Vamos ver como obtemos as leituras do sensor e podemos então converter as mesmas em valores reais de concentração em partes por milhão (ppm). O sensor pode ser visto (em seu modelo teórico) como um resistor variável, dependente da concentração do gás em sua vizinhança. Agora, conhecendo a resistência do sensor, podemos correlacionar essas informações e obter os níveis de concentração. Isso parece fácil, não é?

Diagrama de circuito simplificado do leitor de concentração de gás

Fig. 5: Diagrama de Circuito Simplificado do Leitor de Concentração de Gás

Vamos esclarecer um princípio antes de prosseguirmos. Considere um circuito divisor de tensão; Mostrado acima; composto por dois resistores. Ele permite obter uma tensão de saída menor que a de entrada, simplesmente porque a tensão é dividida entre os dois resistores e como a corrente que flui pelas duas resistências em série é a mesma, a tensão de saída depende dos valores de resistência dos componentes. .

No caso de sensor; deixe VC seja a tensão aplicada ao sensor, ou seja, 5V, e seja Vout a queda de tensão na resistência da carga.

Agora, pelo princípio do divisor de tensão, temos

VFORA =VC (RL / (RL + RS))

…onde RS = resistência do sensor, RL = resistência de carga

Isto pode ser expresso como

RS = ((VC –VFORA) *RL) /VFORA

Agora, como estamos lidando com contagens ADC, podemos substituir VC = 5V = 5V * 1023/1024 (a diferença é por conta do erro de conversão ADC de +/- 0,5LSB – 1 LSB), e VFORA = 5*(RAW_ADC/1024). Simplificando temos,

RS=RL* (1023 – RAW_ADC)/RAW_ADC

E esta é a equação que estamos interessados ​​em utilizar no nosso programa principal.

Então apenas substituindo os valores de RAW_ADC na equação acima, podemos obter a resistência do sensor naquele nível de concentração, dividindo este valor por R0 – a resistência do sensor em ar limpo, podemos obter o RS/R0; uma proporção que é o eixo Y do gráfico logarítmico na folha de dados.

Aplicativo

Também podemos dar um passo adiante, encontrando a equação da curva e, em seguida, substituindo a razão RS / R0 para produzir diretamente o ppm.

O MCU compara a concentração atual com o limite definido e se o valor da corrente exceder 75% do limite, então ativa a campainha que permanece ligada até que a concentração caia novamente abaixo de 75%.

Imagem representacional do LCD de caracteres com descrições de pinos

Figura 6: Imagem representacional do LCD de caracteres com descrições de pinos

A mesma lógica pode ser aplicada para trabalhar com qualquer outro sensor similar da série MQ.

Aplicativo

Tendo feito tudo isso, faz sentido usar este dispositivo para trabalho real; aqui está como você pode fazer isso…

LEMBRE-SE DE FAZER ISSO COM CUIDADO E POR SUA CONTA E RISCO

Utilize uma fonte de GLP/isobutano e verifique a variação da produção para diferentes quantidades de gás liberadas. A fonte mais segura é um isqueiro. Você pode usar um fogão a gás, mas observe a segurança e a supervisão de um adulto é obrigatória.

2. Pressione suavemente o botão do isqueiro para evitar acendê-lo e coloque o sensor próximo a ele e meça a potência.

3. Repita o procedimento novamente, mantendo o isqueiro a alguns centímetros de distância do sensor.

4. Use as duas leituras para obter um bom limite para determinar se há vazamento de gás.

5. Defina isso como seu limite e agora coloque o sensor com segurança em sua cozinha, próximo ao fogão. Você será alertado pelos LEDs se algum vazamento for detectado.

6. Para dar um passo adiante; você pode adicionar conectividade de telefone celular / módulo GSM de forma que ele irá notificá-lo se algum vazamento for detectado na sua ausência.

Embora o fogão a gás seja uma boa fonte de referência, devido a questões de segurança, não é recomendado usá-lo como fonte primária para definir o limite. No entanto, você pode colocar o sensor bem próximo ao queimador, sem que ele acenda, então você poderá verificar a mudança nas leituras, porém, você deve ter cuidado para não manter o queimador aceso por mais de 3-4 segundos, certifique-se também de que a cozinha esteja bem ventilada e que não haja fontes de faíscas por perto durante o exercício.

Protótipo de detector de gás GLP baseado em AVR

Fig. 7: Protótipo de detector de gás GLP baseado em AVR

Configuração de trabalho

Imagem mostrando os diferentes componentes do kit de detecção de GLP

Fig. 8: Imagem mostrando diferentes componentes do Kit de Detecção de GLP

Diagramas de circuito

Diagrama de circuito-AVR-ATMega328P-Baseado-GLP-Detector-Alarme de vazamento

Conteúdo Relacionado

Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
ESP32-CAM é um módulo de câmera compacto que combina...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Proteção do transformador Os dois dispositivos mais importantes em...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
블로그로 돌아가기

댓글 남기기

댓글 게시 전에는 반드시 승인이 필요합니다.