You are on page 1of 12

UPCT - ELECTRNICA INDUSTRIAL 3 GITI

PROYECTO
OBLIGATORIO
ARDUINO
SISTEMA DE CONTROL DE NIVEL DE AGUA
DE UN DEPSITO
LVARO ALBALADEJO GALINDO

OBJETIVO DEL TRABAJO


El trabajo se basa en el trabajo propuesto n22 Sistema de control de niveles en
depsito. En el cual he desarrollado un sistema que permite medir el estado de la
capacidad de un depsito y mostrar esta medicin por un LCD 16x2.
Adems he implementado un sistema luminoso LED+Buzzer como complemento a
la pantalla ( o en caso de que sta fallase), los LED se van encendiendo segn el
nivel del agua.
El LCD muestra por pantalla el estado de la capacidad del depsito en todo
momento 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 al
encendido 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 la
opcin de utilizar sensores de presin dentro del depsito (varios en vertical) o
utilizar un sensor de ultrasonidos, finalmente eleg el sensor ultrasonidos puesto
que 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 las
resistencias adecuadas para cada Led.
El nico clculo que merece ser explicado es el del sensor de ultrasonidos, para
medir la distancia a la cual se encuentran los objetos me base en:
El tiempo que transcurre entre el envo del pulso ultrasnico y la recepcin del
rebote del mismo. Para ello use la funcin pulseIn explicada en el cdigo con ms
detalle.
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) dividida
entre 2 porqu solo necesitas el tiempo de ida (no de ida y vuelta).

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" al
pin de entrada digital que recibir el eco de dicho pulso y "GND" a tierra.

1xPantalla LCD 16X2. Este dispositivo es uno de los que mayor trabajo han llevado a la hora de
su 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 de
la 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)

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 sensor
ultrasnico individualmente, he desarrollado en Fritzing el esquema final
combinando 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.

FOTOS DEL MONTAJE:

1-MONTAJE LCD EN CAJA

2-Alimentacin

3- Sensor ultrasonidos (Direccionado al agua)

4-Caja Estanca Abierta

5-Capacidad 0-50% = 1 led encendido

6-Capacidad 51-93% = 2 leds encendidos

7-Capacidad > 93% = led rojo + Buzzer

V. FLUJOGRAMA DEL CDIGO.

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 <LiquidCrystal.h> /*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);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duracion = pulseIn(echoPin, HIGH);

/*Emitimos ultrasonidos*/
/*tiempo de espera*/
/*Paramos la emisin*/
/*Lo que tarda en recibir el eco*/

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


Sensor 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;

/*
/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 estamos
midiendo 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:");

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 transportar


fcilmente con lo que solo hara falta un dispositivo para medir en varios
depsitos.

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 es
lgico pues cada vez contiene ms agua, esto se explica por el error de medida del
sensor que es de 3cm por cada metro y el depsito tiene 30cm de longitud por lo
que el error de 1cm es normal en la medida, a esto hay que aadirle la variacin
debida 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, sin


embargo, 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.

You might also like