ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

download ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

of 12

Transcript of ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    1/12

    UPCT - ELECTRNICA INDUSTRIAL 3 GITI

    PROYECTO

    OBLIGATORIOARDUINOSISTEMA DE CONTROL DE NIVEL DE AGUA

    DE UN DEPSITO

    LVARO ALBALADEJO GALINDO

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    2/12

    OBJETIVO DEL TRABAJO

    El trabajo se basa en el trabajo propuesto n22 Sistema de control de niveles endepsito. En el cual he desarrollado un sistema que permite medir el estado de lacapacidad de un depsito y mostrar esta medicin por un LCD 16x2.

    Adems he implementado un sistema luminoso LED+Buzzer como complemento ala pantalla ( o en caso de que sta fallase), los LED se van encendiendo segn elnivel del agua.

    El LCD muestra por pantalla el estado de la capacidad del depsito en todomomento en forma de porcentaje, las diferentes situaciones son:

    1-Capacidad 0-50% se muestra por pantalla el nivel + un led verde encendido.2-Capacidad 50-93% se muestra por pantalla el nivel + 2 leds verdes encendidos.3-Capacidad > 93% el LCD muestra PELIGRO DE DESBORDAMIENTO junto alencendido del LED rojo y suena el Buzzer.

    DESCRIPCIN DE LA SOLUCIN ADOPTADA.

    I-Breve descripcin de la solucin:

    El mayor problema era elegir un dispositivo de medicin adecuado, baraj laopcin de utilizar sensores de presin dentro del depsito (varios en vertical) outilizar un sensor de ultrasonidos, finalmente eleg el sensor ultrasonidos puestoque es ms econmico y solo necesitara uno.

    II-Clculos justificativos de los elementos que lo requieran.

    Este trabajo no requiere de un gran clculo, simplemente seleccionar lasresistencias adecuadas para cada Led.

    El nico clculo que merece ser explicado es el del sensor de ultrasonidos, paramedir la distancia a la cual se encuentran los objetos me base en:

    El tiempoque transcurre entre el envo del pulso ultrasnico y la recepcin delrebote del mismo. Para ello use la funcin pulseIn explicada en el cdigo con msdetalle.

    La distancia que sera la variable principal viene dada como tiempo*0,017,puesto que el valor de la velocidad del ultrasonido es 0,034 (cm/microsegundo) divididaentre 2 porqu solo necesitas el tiempo de ida (no de ida y vuelta).

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    3/12

    III-LISTA DE MATERIALES Y EXPLICACIN DE LOS MS SIGNIFICATIVOS.

    1xPlaca Arduino UNO.

    1xCable USB.

    1xpotencimetro 10kohmios.

    16x pines macho 2.54 mm.1xbobina de estao.

    1x soldador.

    1x Protoboard.

    2x Led verde.

    1x Led rojo.

    3x Resistencias.

    N x Cables.

    1xSensor ultrasonidos HC-SR04.

    El sensor consta de 4 pines: "VCC" conectado a la salida de 5V de la placa, "Trig"

    conectado al pin digital de la placa encargado de enviar el pulso ultrasnico, "Echo" alpin de entrada digital que recibir el eco de dicho pulso y "GND" a tierra.

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    4/12

    1xPantalla LCD 16X2.Este dispositivo es uno de los que mayor trabajo han llevado a la hora desu conexin, para aclarar el asunto adjunto una imagen de mi modelo y sus conexiones:

    VSS que es el pin de GND.

    VDD es la alimentacin principal de la pantalla y

    el chip.

    VO es el contraste de la pantalla.

    RS es el selector de registro.

    RW es el pin que comanda la lectura/escritura. En

    nuestro caso siempre estar en 0 (conectado a

    GND) para que escriba en todo momento.

    E es Enable, habilita la pantalla para recibir

    informacin.

    D0~D3 no los vamos a utilizar.

    A y K son los pines del led de la luz de fondo dela pantalla. A se conectar a 5 volts y K a GND.

    Voy a explicar las conexiones puesto que verlas en una foto es un caos, en especial

    para mi proyecto, hice las siguientes conexiones LCD-ARDUINO:

    Conexin: fila GND (fila -) de la breadboard --> pin 1 de la LCD (VSS)

    Conexin: fila 5V (fila +) de la breadboard--> pin 2 de la LCD (VDD)

    Conexin: fila 5V (fila +) de la breadboard--> pin 15 de la LCD (A)

    Conexin: fila GND (fila -) de la breadboard --> pin 16 de la LCD (K)

    Conexin: primer pin del potencimetro---> GND de la breadboard (fila -)

    Conexin: pin de en medio potencimetro --> pin 3 de la pantalla LCD (VO)

    Conexin: tercer pin del potencimetro---> 5V de la breadboard (fila +)

    Conexin: pin 4 de la LCD (RS) ---> pin 7 del arduino (salida digital, PWM)

    Conexin: pin 5 de la LCD (RW) --> GND de la breadboard (fila -)

    Conexin: pin 6 de la LCD (E) --> pin 8 de la placa Arduino UNO (PWM)

    Conexin: pin 11 de la LCD (D4) --> pin 9 de la placa Arduino UNO (PWM)

    Conexin: pin 12 de la LCD (D5) --> pin 10 de la placa Arduino UNO (PWM)

    Conexin: pin 13 de la LCD (D6) --> pin 11 de la placa Arduino UNO(PWM)

    Conexin: pin 14 de la LCD (D7) --> pin 12 de la placa Arduino UNO (PWM)

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    5/12

    1x Dremel. (Herramientas de corte).

    1x Caja estanca. (Para proteccin del equipo contra humedad y salpicaduras)

    Caja estanca con hueco para LCD + 3 agujeros para salida de los Leds

    IV Esquemtico:

    Las conexiones quedan explicadas en el apartado anterior, del LCD y del sensorultrasnico individualmente, he desarrollado en Fritzing el esquema finalcombinando ambos y quedara as:

    En el esquema faltan los 3 leds + Resistencias con su salida PWM cada uno y

    conexin a tierra puesto que fue una idea a posteriori.

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    6/12

    FOTOS DEL MONTAJE:

    1-MONTAJE LCD EN CAJA

    2-Alimentacin

    3- Sensor ultrasonidos (Direccionado al agua)

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    7/12

    4-Caja Estanca Abierta

    5-Capacidad 0-50% = 1 led encendido

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    8/12

    6-Capacidad 51-93% = 2 leds encendidos

    7-Capacidad > 93% = led rojo + Buzzer

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    9/12

    V. FLUJOGRAMA DEL CDIGO.

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    10/12

    VI. CDIGO DESARROLLADO.

    #define trigPin 6 /*Es la parte del sensor que emitir el tren de impulsos*/#define echoPin 5 /*Parte del sensor que recibir el eco de los ltrasonidos*/

    #include /*Librera del LCD*/

    LiquidCrystal lcd(7, 8, 9, 10, 11, 12); /*Entradas/salidas del LCD*/

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

    /*Variables como salida o entrada del sensor de ultrasonidos*/

    pinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);void loop() {int duracion, nivel, distancia, capacidad; /*Variables para operar*/

    /*Definimos las variables y su salida*/

    int led1ybuzzer = 4;int led2 = 3;int led3 = 2;

    /*Definimos como salidas*/

    pinMode(led3,OUTPUT);pinMode(led2,OUTPUT);pinMode(led1ybuzzer,OUTPUT);

    /*Comandos para controlar el sensor de ultrasonidos*/

    digitalWrite(trigPin, HIGH); /*Emitimos ultrasonidos*/delayMicroseconds(1000); /*tiempo de espera*/digitalWrite(trigPin, LOW); /*Paramos la emisin*/duracion = pulseIn(echoPin, HIGH); /*Lo que tarda en recibir el eco*/

    /*Calculamos la distancia como ya se ha dicho en el apartado de material necesarioSensor de ultrasonidos*/

    distancia= int(0.017*duracion);

    nivel = -3 + distancia; /*Pues he situado el medido 3cm por encima del depsito*/

    capacidad = 100 -((nivel)/27)*100;

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    11/12

    /* /27 es porque mi depsito mide 27cm de altura, as sacaremos el porcentaje*100. Despus, se lo restamos al 100% puesto que al medir desde arriba estamosmidiendo la distancia en la cual no hay agua */

    /*Para las 3 situaciones he usado un if, else if, else*/

    if (capacidad > 93){ /*Situacin de peligro*/

    lcd.begin(16, 2);lcd.setCursor(0,0); /*Primera lnea*/lcd.write("PELIGRO DE ");lcd.setCursor(0,1); /Segunda lnea/lcd.write("DESBORDAMIENTO");

    digitalWrite(led3,LOW); /*Led verde1 nivel BAJO*/digitalWrite(led2,LOW); /*Led verde2 nivel BAJO*/digitalWrite(led1ybuzzer,HIGH); /*Led rojo + buzzer nivel ALTO*/}

    else if(capacidad > 50) {

    digitalWrite(led2,HIGH); /*Led verde1 nivel ALTO*/digitalWrite(led3,HIGH); /*Led verde2 nivel ALTO*/digitalWrite(led1ybuzzer,LOW); /*Led rojo+buzzer nivel BAJO*/

    /*Mostramos el nivel por el LCD*/

    lcd.begin(16, 2);lcd.setCursor(0,0);lcd.write("CAPACIDAD ACTUAL:");lcd.setCursor(0,1);lcd.print(capacidad);lcd.setCursor(2,1);lcd.print("%");}

    else {

    digitalWrite(led2,HIGH); /*Led verde1 nivel ALTO*/digitalWrite(led3,LOW); /*Led verde2 nivel BAJO*/digitalWrite(led1ybuzzer,LOW); /*Led rojo+buzzer nivel BAJO*/

    /*Mostramos el nivel por el LCD*/lcd.begin(16, 2);

    lcd.setCursor(0,0);lcd.write("CAPACIDAD ACTUAL:");

  • 7/25/2019 ARDUINO SISTEMA DE DESBORDAMIENTO FLUVIAL

    12/12

    lcd.setCursor(0,1);lcd.print(capacidad);lcd.setCursor(2,1);lcd.print("%");

    }

    delay(1000); /*La medicin del nivel de agua se hace cada segundo*/}

    C. LINK A UN VDEO EXPLICATIVO DE 10 MINUTOS COLGADO EN YOUTUBE

    http://youtu.be/kHufLb4hH0Y

    D. OTRAS CONSIDERACIONES

    El dispositivo al ser porttil por ir dentro de la caja estanca se puede transportarfcilmente con lo que solo hara falta un dispositivo para medir en variosdepsitos.

    Podemos observar, en el vdeo, que el porcentaje cambia un 1-2% en cada medida,Por ejemplo podemos observar cmo cambia del valor 5% al 4%, y esto no eslgico pues cada vez contiene ms agua, esto se explica por el error de medida delsensor que es de 3cm por cada metro y el depsito tiene 30cm de longitud por loque el error de 1cm es normal en la medida, a esto hay que aadirle la variacindebida a las ondulaciones de agua y a los ecos que pueda recibir de las paredes.

    El dispositivo est programado para medir el nivel de agua de un depsito, sinembargo, este mismo modelo de hardware y montaje nos servira por ejemplo,para montar un sensor de aparcamiento o un metro digital con unos cambios

    insignificantes en el cdigo.