Les Presento mi Detector de Fugas de Gas con Arduino

Iniciado por rreedd, Marzo 20, 2016, 06:44:18 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Marzo 20, 2016, 06:44:18 PM Ultima modificación: Marzo 20, 2016, 06:47:47 PM por rreedd
RREEDD
Hola!!

El otro día estaba jugando con mi auto hecho con Arduino y un familiar que trabaja en gasfiteria me dijo que necesitaba un detector de fugas de gas (para poder encontrar las fugas en las mangueras) y si le podría hacer uno así que me puse manos a la obra gane  un poco de dinero y antes de entregarlo se los presento para que puedan construir el suyo
(disculpen si no se ve muy perfecto las terminaciones pero el armazon lo hice con cartón piedra)

::: MATERIALES :::


  • 1x modulo metector de gas MQ-2 (detector de gas propano butano y gases inflamables)

  • 1x LCD 19x2 (I2C)
  • 1x Arduino nano
  • 1x Zumbador (piezoeléctrico)
  • 1x interruptor pequeño
  • 1x Porta batería 


Bueno el funcionamiento de el detector es bastante simple, se toma el valor obtenido desde el sensor y si encuentra una fuga emite un sonido para alertar.

Una ves consigamos los materiales solo nos queda armarlo  ;) , la explicación de la conexión la puse en el código el cual dejo a continuación.


Código: php
// Proyecto_SensorDeGas_0.1.ino



#include <Wire.h>                 
#include <LiquidCrystal_I2C.h>    // Libreria que controla la pantalla LCD
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Inicializa el LCD
const int gasPin = A0;
const int pinPiezo  = 6;    // pin de conexion del Piezoelectrico

/*

                    Codigo by RREEDD

Para descargar la libreria  LiquidCrystal_I2C.h.

https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/LiquidCrystal_V1.2.1.zip

             
                    _________________
                    |d13         D12|
                    |3v3         D11|
                    |REF         D10|     
        AD(sensor)  |A0   Arduino D9|
                    |A1    NANO   D8|
                    |A2           D7|
                    |A3           D6| Pin VCC del zumbador
         SDA (lcd)  |A4           D5|
         SCL (lcd)  |A5           D4|
                    |A6           D3|
                    |A7           D2|
         VCC (lcd)  |5v          GND| GND (lcd,sensor,zumbador)
                    |RST         RST|
     GND (bateria)  |GND          TR|
     VCC (bateria)  |VIN          TX|
                    |_______________|       
*/
void setup()   {
  pinMode(pinPiezo, OUTPUT);   // declaramos el pin del piezo de salida
           
lcd.begin(16,2);      // Se introduce el tamaño de nuestro LCD 
Serial.begin(9600);  // Establecemos la comunicación Serial a 9600 baud

}
void loop() {
   
lcd.clear();                                  // Limpia la pantalla
lcd.setCursor(0,0);                          // Establece la ubicación en el lcd       
lcd.print("NIVEL DE GAS");                  // mensaje por lcd
lcd.setCursor(1,1);                        // Establece la ubicación en el lcd
Serial.println(analogRead(gasPin));       // mensaje por serial, para poder calibrar nuestro sensor       
principal();                             // llama a la función que comparara los valores recibidos desde el sensor
delay (700);                            // establece una espera en el codigo

}

void tono(int frecuencia){
                                                //se emitirá un sonido con la frecuencia introducida
for( int i=0; i<500; i++ ) {               
digitalWrite(pinPiezo, HIGH);
delayMicroseconds(frecuencia);
digitalWrite(pinPiezo, LOW);
delayMicroseconds(frecuencia);     

}

}

void principal(){
if(analogRead(gasPin) <= 390){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("#");                                  // mensaje por lcd, para mostrar el nivel de gas detectado
}else
if(analogRead(gasPin) <= 400){
lcd.setCursor(0,1);                               // Establece la ubicación                           
lcd.print("##");                                 // mensaje por lcd, para mostrar el nivel de gas detectado
}else
if(analogRead(gasPin) <= 500){
lcd.setCursor(0,1);                               // Establece la ubicación                             
lcd.print("###");                                // mensaje por lcd, para mostrar el nivel de gas detectado
}else
if(analogRead(gasPin) <= 600){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("####");                               // mensaje por lcd, para mostrar el nivel de gas detectado 
}else
if(analogRead(gasPin) <= 700){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("#####");                              // mensaje por lcd, para mostrar el nivel de gas detectado
}else
if(analogRead(gasPin) <= 750){
lcd.setCursor(0,1);                               // Establece la ubicación                           
lcd.print("######");                             // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 790){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("#######");                            // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 800){
lcd.setCursor(0,1);                               // Establece la ubicación                         
lcd.print("#########");                          // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 850){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("##########");                         // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 890){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("##########");                         // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 900){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("##########");                         // mensaje por lcd, para mostrar el nivel de gas detectado   
delay (1000);
}else
if(analogRead(gasPin) <= 920){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("###########");                        // mensaje por lcd, para mostrar el nivel de gas detectado   
tono(500);                                     // emite una alerta sonora
}else
if(analogRead(gasPin) <= 950){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("############");                       // mensaje por lcd, para mostrar el nivel de gas detectado   
tono(400);                                     // emite una alerta sonora
}else
if(analogRead(gasPin) <= 960){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("#############");                      // mensaje por lcd, para mostrar el nivel de gas detectado   
tono(300);                                     // emite una alerta sonora
}else
if(analogRead(gasPin) >= 970){
lcd.setCursor(0,1);                               // Establece la ubicación                                   
lcd.print("##############");                     // mensaje por lcd, para mostrar el nivel de gas detectado
tono(200);                                     // emite una alerta sonora
}
}



Armazon




Armado 




Terminado




Funcionamiento




El detector ya esta probado y funcionando a un 100%.

Cualquier duda sobre el proyecto o si quieres hacer una sugerencia solo comenta.


Saludos desde Chile

Me encantó bro!!! tienes mas proyectos hechos con arduino?

saludos!
ANTRAX


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Me encantó bro!!! tienes mas proyectos hechos con arduino?

saludos!
ANTRAX

Si compañero @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta tengo muchos mas  ;D , así que pronto esta haciendo mas post.


@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Siempre es bueno ver proyectos frescos y propios.
Gracias por compartirlo y felicitaciones.

Gabriela
Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.