UNIVERSIDAD NACIONAL DE INGENIERIA
Abastecimiento automático
de agua potable Urbanización ╉Vivo Feliz╊
Kevin Nelson Quiñonez Mercado
Norlan Benito Vílchez
Francisco Telémaco López Díaz
Ismael García Sánchez
Este proyecto se desarrolla con la finalidad de abastecer del vital líquido a mas de 50 hogares
de la urbanización さVi┗o Felizざ, マediaミte el uso de la iミterfaz grafiIa laH┗ie┘ y el uso de micro
controladores.
Objetivo General
Implementar el prototipo de un sistema automatizado de abastecimiento de agua
potable para distribuir el vital líquido a la urbanización “Vivo Feliz”
Objetivos Específicos
Censar el nivel de agua potable del tanque por medio de un sensor ultrasónico.
Mostrar a través del interfaz grafico Labview el nivel de llenado de una cisterna.
Diseñar el sistema de automatización de la bomba encargada de llenar la
cisterna.
Presentar mediante una pantalla la cantidad de líquido contenido en la cisterna.
Antecedentes
La empresa urbanizadora “Casa del futuro” requiere garantizar el servicio de agua
potable a las 50 casas residenciales del reparto “Vivo feliz”.
Actualmente el de almacenamiento de agua potable cuenta con una cisterna de 5
metros de largo, 5 metros de ancho y 2 metros de alto. Para llenar la cisterna, el agua
es extraída de un pozo, se cuenta con una bomba la cual, a la fecha, es actuada
manualmente por un operador. Este operador enciende la bomba si la cisterna se
encuentra en el nivel inferior y la apaga cuando el nivel del líquido alcanza el límite
superior.
Con frecuencia, debido entre otras cosas a la ausencia del operador, suceden dos
cosas; la cisterna queda vacía lo cual implica reclamos por parte de los habitantes o el
nivel máximo es rebasado lo que se traduce en desperdicio del vital líquido.
Es por esta razón que el gerente de la urbanizadora se ve en la obligación de mejorar
el sistema de abastecimiento de agua potable para evitar los constantes reclamos y
quejas de los usuarios.
Introducción
A partir de ésta problemática, el gerente de la urbanizadora, con el objetivo de
garantizar el vital líquido así como evitar el desperdicio del mismo, ha solicitado
cotizaciones para la automatización del sistema y entre otras cosas pide que el
sistema sea capaz de:
Automáticamente encender y/o apagar la bomba cuando el nivel del líquido se
encuentre en los límites establecidos.
También le interesa tener la posibilidad de cambiar los límites inferiores y
superiores, en caso de ser necesario, desde una interface ubicada en un lugar
apropiado. Se deben tomar todas las precauciones necesarias a fin de evitar el
daño de la bomba.
Mostrar en un display, lo suficientemente grande para ver los números desde
una distancia de 10 metros, la cantidad de galones disponibles en la cisterna.
Indicar el número de galones consumidos diariamente así como el total durante
la semana.
Atendiendo a esta solicitud, tenemos la obligación de diseñar un sistema que sea
capaz de abastecer de agua potable a las 50 viviendas de la urbanización sin que
ningún operador este pendiente del proceso.
Este es un proyecto de fin de curso determinado en la asignatura de maquinas
computadoras I, mediante el cual se introduce al estudiante la utilización de los
microcontroladores los cuales facilitan el control, monitoreo y registros de variables
externas las que son procesadas para luego dar un control a las variables censadas,
además este proyecto se realiza para averiguar la interacción entre el software
Labview y sus beneficios.
Diagrama de bloques del Sistema
Labview
Set Point
High-Low
level
Registro de
datos Hojas
de excel
µC
Sensor
Ultrasónico
Bomba
Eléctrica
Circuito de
potencia
Circuito de
control
Diagrama de bloques de la programación
INICIO
Si
Declarar librerías Capacidad<=x
Del LCD y PIC
Enciende Bomba
No
Definir pines de:
Trigger, Echo, Accionamiento si
de la bomba, Nivel low (x),
Nivel High (y). Capacidad<=x
Apaga Bomba
Inicializar LCD no
Imprime Pantalla de
Bienvenida
Habilita el Timer_1
Envía Disparo al trigger
Inicializa el Timer_1
Desde 0
Lee Pin Echo o salida del
Sensor
Guarda lectura del echo
Calcula Nivel en litros
Imprime la Capacidad en litros
Funcionamiento del proyecto
Básicamente, el proyecto se reduce a censar una variable, en este caso el nivel de
agua, procesarla y luego mandar una orden para controlar el nivel a través de los
actuadores.
Comencemos por la adquisición de la variable. Para censar el nivel de agua se
utilizara un sensor ultrasónico HC-SR04, este es necesario para censar el nivel de
forma continua. El sensor envía un pulso de 5 volts con una específica duración en
correspondencia al nivel de agua que tiene el tanque.
Luego, la señal que envía el sensor será procesada a través de un micro controlador
de la familia 18F4455, se escogió esta familia de micro controlador por qué se puede
comunicar con la computadora por medio de los protocolos USB, en nuestro proyecto
usaremos comunicación USB CDC (Class Device Communication). El micro
controlador es el encargado de procesar la información enviada por el sensor y de
controlar el nivel, y así, evitar que el nivel de agua rebase la capacidad del tanque o
quede totalmente vacío. Todo esto se logra por medio a la previa programación del
integrado realizada en lenguaje C y compilada a través del programa CCS.
El actuador, es el encargado de permitir el flujo de agua hacia dentro del tanque, este
recibe una señal proveniente del micro controlador que luego es procesada por un
circuito de potencia, este circuito de potencia abastecerá el suficiente voltaje y
corriente para alimentar el solenoide.
Posteriormente, el micro controlador deberá enviar los datos obtenidos hacia un
interfaz grafico en el cual el usuario podrá observar el comportamiento del sistema, el
interfaz que utilizamos es el laboratorio virtual de National Instruments conocido como
LAVBIEW, en este fue necesario programar en lenguaje G en conjunto con los
módulos de visa para poder obtener la información proveniente del micro controlador.
Este sistema cerrado de abastecimiento de agua será capaz de trabajar por largas
jornadas sin consumir tanta energía y lo más importante sin ningún tipo de trabajo
humano.
Programacion en CCS
//Prueba de la programacion con modulo de USB y bootloader
#include "18F4455.h"
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#device ADC = 8; //setea ADC a usar 8-bits (0 - 255)
#use delay(clock=48000000) //Tiempo de reloj interno
#include <usb_cdc1.h> //Librerias de comunicación USB-CDC
#include <picUSB_CDC.h>
#rom int 0xf00000={1,2,3,4}
#include <usb_bootloader.h> //Include de la libreria para utilizar el bootloader
#define LCD_ENABLE_PIN PIN_B2
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B0
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <lcd.c>
/**************************************************************************
/Programa para realizar la lectura del sensor Ultrasónico HC-SR04
/ Pin configuration (5 pin)- VCC(+5) TRIG(Trigger pin) ECHO(Output pin) GND (Ground)
/ Pin configuration (4 pin)- VCC(+5) TRIG(Trigger pin) ECHO(Output pin) GND (Ground)
*/////////////////////////////////////////////////////////////////////////////////////////////////
float32 distancia, tiempo, altura, litros; // Definiciones de variables
// Definiendo los pines del sensor
#define trigecho pin_D6 // Pin de trigger y echo al mismo tiempo
#define bomba pin_D7 //Pin de activación y desactivación de la bomba
void main()
{
usb_cdc_init();
usb_init();
lcd_init(); // inicialización del LCD
output_d(0);
printf(LCD_PUTC, "\f UNI-4T1-EO \n DETECTOR NIVEL ");// Mensaje de inicialización del
sistema
delay_ms(1000); // Delay de arranque
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); // Enable del timer 1, T1 interno de 20MHZ
//Con T1_DIV_BY_8 el contador incrementa cada 1.6uS y cada 104ms
overflow
while(true)
{
delay_ms(200);
set_tris_d(0x00); //pone los pines D como salidas
output_high(trigecho); // Pulso corto al sensor
delay_us(5); // Enviando pulso de 5uS
output_low(trigecho); //Vuelve a estado bajo
delay_us(100);
while(!input(trigecho)) // Ciclo que espera el estado alto del pin eco o salida
{}
set_timer1(0); // Inicializa el contador timer1 en 0
while(input(trigecho)) // Espera por el estado alto del pin eco
{}
usb_task(); //Inicia tarea USB
if(usb_enumerated()) //Condicion de comunicación
{
tiempo=get_timer1(); // Instrucción que obtiene el tiempo del pulso
altura=(11.75-(tiempo*11.75/2524))+5.25; //Calculo de altura
distancia=(tiempo*10)/2198 ; // Calculando la distancia
if(altura<16.25){
litros=((altura-5.25)*3.785/1.22)+11.36;
printf(lcd_putc, "\fMEDIDA CAPACIDAD");
printf(LCD_PUTC, "\nlitros = %f lt",litros); // Imprimiendo el nivel en litros
printf(usb_cdc_putc,"%fu ",litros); // Envía dato de litraje a la PC
delay_ms(1000);
}
else {
printf(lcd_putc, "\fMEDIDA CAPACIDAD");
printf(LCD_PUTC, "\nlitros = %f lt",litros); // Imprimiendo el nivel en litros
printf(usb_cdc_putc,"%fu ",litros); // Imprimiendo el nivel en el USB
delay_ms(1000);
}
}
if(litros<=11.36 | litros==45.51) // si el nivel < a 11.36litros enciende bomba
output_high(bomba);
if(litros>=29.2) //si el nivel>= a 29.2 litros apaga bomba
output_low(bomba);
}
}
Metodología de trabajo
El método de trabajo a efectuar consistirá en buscar primeramente los conocimientos
necesarios sobre los procesos de adquisición de las variables, así como la utilización
del software además se deberá contar con los conocimientos necesarios para crear la
programación del micro controlador. Posteriormente el diseño del sistema del control y
monitoreo mediante la información obtenida al trabajar con el software, los pasos a
seguir en el diseño del sistema se realiza de manera grupal según cada quien aporte
ideas, siendo también auto-críticos y auto didactas pero también advocándonos al
profesor. Cada día que fuese necesario, de manera grupal comentar y hablar sobre los
avances a presentar así como posibles modificaciones para la mejora del proyecto.
Cronograma de actividades
Actividades Abril Mayo Junio julio S4 S 1 S2 S3 S4 S1 S2 S3 S4 S1 S2
Investigar sobre Labview Investigar sobre al sistema a
diseñar
Proporcionar ideas de los integrantes del grupo
Diseño del sistema Revisiones, hacer corrección
Presentación del diseño
Resultados Obtenidos
Logramos implementar un prototipo que se asemeja a lo inicialmente pretendíamos
realizar. Se tomo mucho en cuenta que necesitábamos hacer un diseño a escala para
hacer la presentación del proyecto por lo que se tomo la decisión de realizar una serie
de modificaciones.
Inicialmente se pretendía utilizar una bomba para extraer agua de un pozo, en el
diseño a escala esta no fue necesaria y decidimos reemplazarla por una válvula
solenoide, que se conecta directamente al caudal de agua potable.
La presentación de la capacidad del tanque se presentaría en un arreglo de leds lo
suficientemente grandes para poder ser vistos a una distancia de 10 metros, en lugar
de eso reemplazamos ese medio por un display lcd de 16x2.
Por problemas técnicos tuvimos, obligatoriamente, que cambiar el modelo de sensor
que teníamos previsto usar (HC-SR04) por un ping de parallax el cual se asemeja un
poco al sensor original.
Logramos diseñar una interfaz grafica para que el usuario pueda monitorear el nivel
del tanque por medio de la computadora a través programa LABVIEW. Además
conseguimos mostrar los registros de las mediciones del sensor. Lastimosamente, por
falta de tiempo, no logramos concluir la etapa en la que el usuario puede modificar los
límites superior e inferior por medio del software.
Bibliografía
[1] Comunicación Serial Utilizando LabVIEW con un Microcontrolador. National
Instrument, disponible en: http://zone.ni.com/devzone/cda/tut/p/id/7907
[2] Compilador C CCS y simulador PROTEUS para microcontroladores PIC. Eduardo
Garcia Breijo.
[3] Manual de usuario del compilador PCW de CCS. Andrés Cánovas López.
[4] PIC 18F4455 Datasheet.
[5] HC-SR04 Datasheet.