El GLP está presente hoy en día en casi todos los hogares, ya sea en bombonas o a través de tuberías, pero ¿qué fracción de estos hogares cuentan con dispositivos para detectar fugas de GLP ? Dado que tantas personas pierden la vida a causa de esto, sorprende que se haya hecho poco al respecto.
En realidad, es muy sencillo construir su propio detector de fugas de GLP y aquí aprenderá cómo hacerlo. El circuito detector de fugas de GLP aquí detecta la concentración de GLP cercana y la muestra en una pantalla LCD. También lo comparará con un límite y emitirá un pitido si supera el 75% del límite. El usuario puede ingresar el límite deseado usando el teclado provisto y también calibrar el sensor según sea necesario.
Dispositivo de desarrollo ATmega328p
El proyecto se basa en el Development Stick ATmega328p de Knewron, que es una unidad excelente y compacta. Consiste en soporte integrado para una pantalla LCD estándar compatible con HD44780 de 16×2 operada en modo de 4 bits. Tiene la versión TQFP de 32 pines del ATmega328p con todas las E/S divididas mediante encabezados; En realidad, tiene dos juegos de cada pin, lo cual resulta muy útil durante el diseño y las pruebas.
Figura 1: Imagen típica del dispositivo de desarrollo ATMega328P
Para este proyecto conectaremos un módulo LCD estándar, un teclado 4x4, un zumbador y un sensor de gas que usará 1 pin ADC, y después de conectar todo, habremos usado la mayoría de los pines disponibles en la pequeña MCU. El sensor de gas se interconectará con el canal 0 del ADC, es decir, el pin PC0, mientras que el zumbador se conectará al pin PC1. El teclado 4×4 se interconectará con el puerto D, utilizando todos los pines PD0-PD7. Por último, sólo necesitamos montar una pantalla LCD en los pines del encabezado ya poblados en el dispositivo (PUERTO B); Es muy fácil, ya que el potenciómetro necesario para variar el contraste de la pantalla ya está en la placa.
Teclado
El teclado elegido es prácticamente un diseño estándar utilizado en pequeños sistemas integrados. Consta de 4 filas y 4 columnas de botones configurados en forma de matriz y por eso se denomina matriz 4×4. Existen varios métodos para leer este tipo de teclados, algunos implican el uso de interrupciones para iniciar barridos de teclas, mientras que otros requieren múltiples barridos de lectura para detectar si se presionan varias teclas; pero para esta aplicación no necesitamos preocuparnos de presionar varias teclas; se han implementado otras salvaguardas para verificar la validez de las pulsaciones de teclas; Tampoco es necesario un esquema de interrupción ya que nuestro controlador no está muy cargado.
Figura 2: Diagrama de circuito del teclado 4X4
La figura de arriba muestra la disposición matricial real del teclado donde tenemos 4 filas y 4 columnas conectadas. La teoría es que si inicialmente configuramos las columnas en salidas mientras hacemos las entradas de las filas con resistencias pull-up en su lugar, podemos configurar individualmente cada columna en 0 lógico (GND), mientras mantenemos las otras tres en 1 lógico (5V); Al leer el cuarteto inferior, es decir, las filas, podemos determinar si se presionó una tecla, si una entrada específica es baja, entonces se presionó la tecla correspondiente a esa fila.
Vale la pena mencionar que las prioridades clave están fijadas en el orden de escaneo (lectura), es decir, si se presionan ambas teclas 1 y 6, la MCU solo leerá la tecla 1 de la primera columna e ignorará la otra ya que la rutina habrá regresado. un valor correspondiente a la tecla 1. Sin embargo, esto no es malo, ya que no existe una forma definida de diferenciar entre pulsaciones simultáneas de teclas; Se puede tener en cuenta el momento exacto de la pulsación, pero el hecho de que se hayan pulsado dos teclas juntas es una indicación de un error desde el punto de vista del usuario.
Cronógrafo
Es bien sabido que los cambios en los gases son relativamente lentos en comparación con otros fenómenos, por lo que no tiene sentido leer el sensor a velocidades rápidas, pero esto causa un problema ya que nuestra MCU funciona a velocidades mucho más rápidas. Aquí es exactamente donde entra en juego el cronómetro. Podemos utilizar los temporizadores integrados del ATmega328p y realizar un seguimiento de intervalos de tiempo más largos, en nuestro caso de 100 ms. Por lo tanto, tomamos muestras del sensor cada 100 ms y obtenemos 5 de estas lecturas, calculamos el promedio de estas 5 y usamos el resultado para nuestro cálculo.
Lo primero que debemos entender es que el temporizador funciona en ciclos de reloj; al igual que la MCU principal; y tiene un conteo establecido más allá del cual se desborda. Para el temporizador de 8 bits es 255, mientras que para el temporizador de 16 bits (Temporizador 1) que usaremos es 65535. El reloj del temporizador es un factor del reloj principal de la MCU y se puede ajustar en consecuencia; esto se controla utilizando el valor preescalar almacenado en el registro de función especial. Las opciones preescalar disponibles se dividen por 1, 8, 64, 256 y 1024. Dado que la MCU tiene una frecuencia de 8 MHz (usando RC interno), podemos dividir el reloj del temporizador por 256 para obtener un tic de 1/(8000000/256 ) = 32 microsegundos. Ahora, para obtener un intervalo de tiempo de 100 ms, necesitamos clics de 500 ms/32 microsegundos, es decir, (100e-3)/(32e-6), que es 3125.
Dado que el temporizador cuenta de 0 a 65535 por tic del reloj y se desborda cuando pasa de 65535 a 0, generando así una interrupción de desbordamiento, necesitamos cargar el conteo del temporizador con (65535 – 3125), para que cuente 3125 clics, dándonos un intervalo de tiempo de 100 ms. También necesitamos habilitar la interrupción por desbordamiento del temporizador.
La interrupción se genera automáticamente cada 100ms y podemos realizar nuestras rutinas en la rutina del servicio de interrupción (función llamada cuando se genera la interrupción). Para nuestra aplicación, simplemente configuramos un indicador de 100 ms y desactivamos la interrupción del temporizador en la rutina de servicio; la bandera se borra, el conteo se recarga y la interrupción se habilita cuando se llama a la rutina de 100 ms en el bucle principal.
Componentes y detalles esquemáticos.
Sensores de gas
El sensor de gas utilizado aquí está disponible y tiene varias unidades compatibles capaces de detectar varios gases. Los sensores de gas se conocen comúnmente como sensores de la serie MQ; Usaremos el sensor de GLP MQ-6 ahora. Algunos otros sensores útiles disponibles que tienen un funcionamiento muy similar incluyen:
MQ-7 – Monóxido de carbono
MQ-3 – Alcohol
MQ-4 – Metano
MQ-8 – Hidrógeno
Hay muchos más sensores; También es importante tener en cuenta que cada sensor también es capaz de detectar otros gases; sin embargo, está diseñado para un gas específico enumerado y, por lo tanto, es más sensible a ese gas específico, como se desprende de las curvas de respuesta proporcionadas en la hoja de datos.
El sensor funciona mediante el uso de un calentador para calentar el aire presente alrededor del sensor químico, este calor actúa como catalizador de reacciones químicas liberando electrones e iones según el gas a detectar, los electrones liberados fluyen como corriente y por lo tanto desarrollan y generan voltaje. a través de la resistencia de carga. El voltaje desarrollado varía entre 0 y 5 V y, por lo tanto, puede detectarse mediante un ADC. Vale la pena leer la hoja de datos y obtener los valores de resistencia de carga, así como los requisitos de voltaje del calentador. El MQ-6 tiene un valor de resistencia de carga recomendado de 20 Kohmios y un rango de 10K-47 Kohmios. El calentador también requiere un voltaje constante de 5V.
Algunos sensores especifican un tiempo de funcionamiento (24-48 horas) durante el cual el sensor debe permanecer encendido para que las lecturas obtenidas sean confiables, pero esto se puede evitar en nuestro caso ya que nos interesan valores relativos más que absolutos. Se ha descubierto que cuando le das al sensor unos segundos, se estabiliza en un valor estable (bajo) para comenzar a detectar. El sensor GLP MQ-6 tiene un rango de detección de 200-1000 ppm.
Sección CAD
La unidad ADC en la MCU funciona tomando el voltaje de referencia del ADC y dividiéndolo en partes más pequeñas según la resolución del ADC. La resolución del ADC no es más que la cantidad de bits utilizados para representar la salida. El ATmega328p tiene un ADC de 10 bits, lo que significa que la salida puede variar de 0 a 1023. Por lo tanto, la MCU divide el voltaje de referencia en 1024 partes. La placa de desarrollo tiene el voltaje de referencia del ADC vinculado a 5 V, tomándolo como referencia, el ADC lo divide en 1024 fragmentos de aproximadamente 5 V/1024 = 4,8 mV cada uno. Entonces, si el ADC da un valor de 10, significa que el voltaje en el pin ADC es 10 * 4,8 mV = 48 mV, de manera similar, para una salida de escala completa de 1023, el voltaje en el pin ADC es 1023 * 4,8 mV, que es aproximadamente 4910 mV (el error se debe al redondeo del valor del bit así como a la precisión del ADC de +/- 0,5 LSB – 1 LSB).
Para esta aplicación, solo nos interesa obtener los valores ADC sin procesar del sensor, por lo que los usaremos para calcular los parámetros intermedios que se usarán para calcular la concentración de gas.
Sección de visualización
Se utiliza un módulo LCD estándar de 16x2 caracteres en modo de 4 bits para fines de visualización. La interfaz de una pantalla LCD es bastante simple y se explica por sí misma desde el propio código fuente.
Diagrama de bloques y circuitos.
Figura 3: Diagrama de bloques del detector de fugas de GLP basado en AVR ATMega328P
La Figura 2 muestra el diagrama de bloques del proyecto, mientras que la Figura 3 detalla más circuitos. La palanca de desarrollo verifica constantemente que el teclado tenga entradas válidas y al mismo tiempo obtiene valores del sensor de gas; Luego calcula la concentración de gas y la muestra en la pantalla LCD.
El circuito está diseñado alrededor del dispositivo de desarrollo ATmega328p. La señal VCC del dispositivo es de 5 V y se utiliza para alimentar la pantalla LCD. La mayoría de las conexiones se explican por sí mismas, sin embargo, tenga en cuenta que el potenciómetro de contraste de la pantalla LCD y el transistor para controlar la retroiluminación de la pantalla LCD ya están presentes en la palanca de desarrollo.
El sensor de gas tiene 6 pines; sin embargo, el juego de pasadores (A1, HA, A2) y el juego de pasadores (B1, HB, B2) son intercambiables. En nuestro esquema aplicamos 5 V a los pines del calentador HA, HB y suministramos 5 V a los pines A1, A2 y, por lo tanto, la salida se obtiene en la unión de los pines B1, B2. Usamos una resistencia de carga entre esta salida y tierra para formar el divisor de voltaje necesario según la hoja de datos.
Debido a que el zumbador puede consumir más corriente de la que puede suministrar el pin de E/S, es más seguro utilizar un transistor en modo clave para activar el zumbador. El transistor utilizado es un transistor NPN, por lo que cuando se aplica un voltaje positivo (pin de E/S para lógica alta) a la base, se satura y activa el zumbador, permitiendo que la corriente fluya desde el colector al emisor. Aplicando lógica baja a la base del transistor, podemos apagar el timbre.
El BC548 es un transistor NPN de uso general comúnmente disponible. La resistencia de 1K en la base del transistor es una resistencia limitadora de corriente que evita el consumo excesivo de corriente; sin embargo, puedes usar con seguridad cualquier cantidad entre 330E y 1K.
El funcionamiento general se ilustra en el diagrama de flujo que se muestra en la Figura.
Figura 4: Diagrama de flujo del código AVR para la detección de fugas de GLP
Calibración de sensores
El usuario tiene la opción de presionar el botón ' C ' en el teclado para iniciar la calibración. La MCU tomará 5 lecturas del sensor espaciadas 100 ms y cada vez que calcula la resistencia del sensor R0 promediará las cinco lecturas y las almacenará en la EEPROM. Antes de la calibración, la MCU utilizará un valor predeterminado de R0 = 10.
Almacenamiento EEPROM
Para almacenar los valores en la EEPROM utilizamos la biblioteca estándar AVR EEPROM. Los datos de calibración se almacenan en la dirección 1 y, para garantizar la validez de los datos, los bytes de prueba se colocan en las ubicaciones 0x00 y 0x03. Además, el valor umbral se almacena en la dirección 6, con bytes de prueba en las direcciones 5 y 8. Cada vez al inicio; la MCU comprueba si estos bytes de prueba están presentes; si es así, lee el valor y el límite de calibración y los utiliza para el cálculo; de lo contrario, utiliza el valor predeterminado para la operación. El límite predeterminado está establecido en 250 ppm.
Tecla de secuencia de pads
Para iniciar la calibración, el usuario debe presionar la tecla ' C '. El sensor se calibrará automáticamente. Para ingresar un límite, la secuencia es la siguiente:
1. Presione la tecla '*' .
dos. Ingrese el límite de 4 dígitos inferior a 9999 (ppm máximo del sensor); el valor típico podría ser alrededor de 250.
3. Presione la tecla '#' para finalizar.
Lectura de concentración de gas
Veamos cómo obtenemos las lecturas del sensor y luego podemos convertirlas en valores de concentración reales en partes por millón (ppm). El sensor puede verse (en su modelo teórico) como una resistencia variable, que depende de la concentración de gas en su entorno. Ahora, conociendo la resistencia del sensor, podemos correlacionar esta información y obtener niveles de concentración. Esto parece fácil, ¿no?
Fig. 5: Diagrama de circuito simplificado del lector de concentración de gas
Aclaremos un principio antes de continuar. Considere un circuito divisor de voltaje; Mostrado anteriormente; compuesto por dos resistencias. Permite obtener un voltaje de salida menor al de entrada, simplemente porque el voltaje se divide entre las dos resistencias y como la corriente que circula por las dos resistencias en serie es la misma, el voltaje de salida depende de los valores de resistencia de los componentes. . .
En caso de sensor; Sea V C el voltaje aplicado al sensor, es decir, 5 V, y sea Vout la caída de voltaje a través de la resistencia de carga.
Ahora, por el principio del divisor de voltaje, tenemos
V SALIDA = V C (RL / (RL + RS))
…donde RS = resistencia del sensor, RL = resistencia de carga
Esto se puede expresar como
RS = ((V C –V SALIDA ) *RL) /V SALIDA
Ahora, dado que estamos tratando con recuentos de ADC, podemos sustituir V C = 5 V = 5 V * 1023/1024 (la diferencia se debe al error de conversión de ADC de +/- 0,5 LSB – 1 LSB) y V OFF = 5* (RAW_ADC/1024). Simplificando tenemos,
RS=RL* (1023 – RAW_ADC)/RAW_ADC
Y esta es la ecuación que nos interesa usar en nuestro programa principal.
Entonces con solo sustituir los valores de RAW_ADC en la ecuación anterior, podemos obtener la resistencia del sensor en ese nivel de concentración, dividiendo este valor por R0 – la resistencia del sensor en aire limpio, podemos obtener RS/R0; una proporción que es el eje Y del gráfico logarítmico en la hoja de datos.
Solicitud
También podemos ir un paso más allá al encontrar la ecuación de la curva y luego sustituir la relación RS/R0 para producir directamente las ppm.
La MCU compara la concentración actual con el límite establecido y si el valor actual excede el 75% del límite, activa el zumbador que permanece encendido hasta que la concentración vuelve a caer por debajo del 75%.
Figura 6: Imagen representativa de la pantalla LCD de caracteres con descripciones de pines
La misma lógica se puede aplicar para trabajar con cualquier otro sensor similar de la serie MQ.
Solicitud
Una vez hecho todo esto, tiene sentido utilizar este dispositivo para un trabajo real; así es como puedes hacer eso...
RECUERDA HACER ESTO CUIDADOSAMENTE Y BAJO TU PROPIO RIESGO
Utilice una fuente de GLP/isobutano y verifique la variación de producción para diferentes cantidades de gas liberado. La fuente más segura es un encendedor. Puede utilizar una estufa de gas, pero es obligatorio observar la seguridad y la supervisión de un adulto.
dos. Presiona suavemente el botón del encendedor para evitar que se encienda y coloca el sensor al lado y mide la potencia.
3. Repite nuevamente el procedimiento manteniendo el encendedor a unos centímetros de distancia del sensor.
4. Utilice ambas lecturas para obtener un buen umbral para determinar si tiene una fuga de gas.
5. Establece esto como tu límite y ahora coloca el sensor de forma segura en tu cocina, al lado de la estufa. Los LED le avisarán si se detecta alguna fuga.
6. Para ir un paso más allá; puedes agregar conectividad de teléfono celular/módulo GSM para que te notifique si se detecta alguna fuga en tu ausencia.
Aunque la estufa de gas es una buena fuente de referencia, por motivos de seguridad, no se recomienda utilizarla como fuente principal para establecer el límite. Sin embargo, puede colocar el sensor muy cerca del quemador sin que se encienda, luego podrá verificar el cambio en las lecturas, sin embargo, debe tener cuidado de no mantener el quemador encendido por más de 3-4 segundos, asegúrese también de que el la cocina esté bien ventilada y que no haya fuentes de chispas cercanas durante el ejercicio.
Fig. 7: Prototipo de detector de gas GLP basado en AVR
Configuración del trabajo
Fig. 8: Imagen que muestra los diferentes componentes del Kit de Detección de GLP
Diagramas de circuito
Diagrama de circuito-AVR-ATMega328P-Basado-LPG-Detector-Alarma de fugas |