sistema de ahorro de agua, almacena agua de una lavadora y la almacena en un tanque de 100 litros, el sistema solo acciona una bomba si detecta agua que sale por el drenaje de la lavadora, en caso contrario la bomba se apaga, el sistema detecta si la bomba no logra cebarse y induce cebado haciendo encendidos cortos hasta que un sensor de nivel verifica que el nuvel de un balde de almacenamiento parcial baja por accion de la succion de la bomba, se detecta ademas si el tanque de 100 litros se llena por completo y apaga la bomba y ademas entra en modo alarma si no logra cebarse

Dependencies:   DebouncedIn PinDetect Pulse1 mbed

La idea de este sistema es obtener agua gris para vaciado de cisternas(Sanitarios). El sistema aprovecha el agua de desecho de una lavadora y la almacena en un tanque elevado de 100 litros. Esta cantidad de agua es suficiente para vaciar una cisterna durante una semana completa, con el gasto de una persona. El sanitario se le clausura la entrada de agua potable y se le acondiciona una nueva tubería que llena el tanque con el agua gris de este sistema.

En resumen el sistema acciona la bomba solo si se detecta flujo de agua en el drenaje de la lavadora y además vigila que no se de una inundación. En caso de que el sistema falle por alguna razón.

El programa publicado esta incompleto, por ahora solo da pistas, aunque ya está listo y funcionando perfectamente, es un reto que debe ser programado. Mas adelante lo publicaremos completamente.

señales del sensor de flujo /media/uploads/tony63/lavadora2.png /media/uploads/tony63/lavadora3.png

*********** onda del sensor de flujo cuando este se esta perdiendo /media/uploads/tony63/lavadora4.png ***************** Detalle del sistema sobre la lavadora. se puede instalar el tanque grande directamente sobre la lavadora ya que esta puede soportar mas de 100Kg de peso. /media/uploads/tony63/lavacompleto.png

*********** Modulo FRDMKL25Z. Este se alimenta por un cargador USB de pared. y abajo se aprecia el escudo para los componentes adicionales . /media/uploads/tony63/lavafrdm.png /media/uploads/tony63/escudolavadora.png

*********** Sistema instalado. Vista del sensor de nivel en el balde /media/uploads/tony63/leveltank.png

*********** Observe la posición de las válvulas rojas de PVC. Esta posición es la de aprovechamiento de agua. Pero si se giran 90 grados(ambas), quedan en modo drenaje y es la posición que deben tener si el sistema cae en condición de contingencia o fallo. ************ . Circuito esquemático. se diseñó un escudo similar a los de arduino sobre un pcb universal de prototipos arduino, donde se soldaron las componentes electrónicas. Al igual que un arduino se inserta encima..no publicamos fotos de esta PCB. /media/uploads/tony63/planolava2.png

SE DEBEN HACER LAS SIGUIENTES CORRECCIONES AL PLANO CONECTAR EL SENSOR DE FLUJO A LA ENTRADA PTA13 (la original PTC12, no soporta interrupción) CONECTAR LA ENTRADA DEL SENSOR DE NIVEL DEL TANQUE GRANDE A PTD5 (la original no soporta interrupción) Este no se ve en el plano de arriba, EL RESTO ESTA OK! el sensor del plano de arriba es el del Balde. Se requiere uno idéntico para el tanque grande

Committer:
tony63
Date:
Fri Apr 22 06:44:17 2016 +0000
Revision:
0:542dfe9204c5
sistema de ahorro de agua

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:542dfe9204c5 1 /*
tony63 0:542dfe9204c5 2 DISEÑO POR MEDIO DE FREEDOM BOARD FRDMKL25Z DE NXP Y PROGRAMADA EN www.mbed.org BUSCAR CUENTA Tony63 (PROGRAMA lAVADORA)
tony63 0:542dfe9204c5 3 PROGRAMA PARA UN SISTEMA DE RECICLAJE DE AGUAS GRISES EN UNA VIVIENDA. SU FUNCION ES ACCIONAR UNA BOMBA DE ASPIRACION.
tony63 0:542dfe9204c5 4 EN LA MEDIDA QUE LA BOMBA DE AGUA DE UNA LAVADORA LANZA AGUA POR EL DRENAJE.
tony63 0:542dfe9204c5 5 PARA DETECTAR ESTE EVENTO, SE EMPLEA UN SENSOR DE FLUJO DE AGUA QUE PRODUCE PULSOS CON UNA FRECUENCIA PROPORCIONAL AL FLUJO
tony63 0:542dfe9204c5 6 ESTE YA SE LOGRO CARACTERIZAR Y PRODUCE UNA ONDA CUADRADA DE CICLO DE DUREZA DE CASO EL 50% CON DURACION SEGUN LAS FOTOS
tony63 0:542dfe9204c5 7
tony63 0:542dfe9204c5 8 CUANDO SE ENCIENDE LA BOMBA, ESTA A VECES NO LOGRA ASPIRAR BIEN EL AGUA YA QUE NO SIEMPRE LOGRA EL CEBADO CORRECTO.
tony63 0:542dfe9204c5 9 TOCA HACER RECONECCIONES RAPIDAS DE LA BOMBA PARA QUE LOGRE ASPIRAR AGUA DE UN BALDE DONDE ESTA INSTALADA
tony63 0:542dfe9204c5 10 Y A ESE BALDE LE LLEGA AGUA DEL DRENAJE DE LA LAVADORA.
tony63 0:542dfe9204c5 11 EN LA PRACTICA PUEDE REQUERIR HASTA 3 RECIERRES
tony63 0:542dfe9204c5 12 SI EL TANQUE DE ALMACENAMIENTO ELEVADO DE 100 LITROS, SE LLENA. DEBE EMITIR ALARMA SONORA. ESTO SE LOGRA CON UN SENSOR DE NIVEL MAGNETICO
tony63 0:542dfe9204c5 13 EL OPERADOR DEBE ACCIONAR LAS VALVULAS MANUALES DE PVC DE COLOR ROJO EN EL MODO INDICADO POR LOS GRAFICOS. PARA EVITAR INUNDACIONES
tony63 0:542dfe9204c5 14
tony63 0:542dfe9204c5 15 EL SISTEMA INICIALMENTE HACE UN TEST CON EL ENCENDIDO DE LEDS. LUEGO DE UNOS SEGUNDOS SE PONE A ESPERAR LA APARICION DE PULSOS EN UN RANGO DE 5 A 50ms
tony63 0:542dfe9204c5 16 QUE ESTEN PRESENTES POR AL MENOS 200ms SI ESTO SUCEDE ES INDICO CLARO DE QUE HAY AGUA PASANDO POR EL DRENAJE Y UNOS SEGUNDOS DESPUES PRENDE LA BOMBA ESPERA A QUE LA BOMBA SUCCIONE UNOS SEGUNDOS Y LUEGO
tony63 0:542dfe9204c5 17 SE VA A REVISAR EL SENSOR DE NIVEL DEL BALDE SI ESTE SE HACE UNO O ESTA EN UNO DEBE PONERSE A HACER RECIERRES ESTOS SON CONTADOS SI LLEGAN NA SER 4 EL SISTEMA ENTRA EN CONTINGENCIA Y DA ALARMA Y APAGA LA BOMBA
tony63 0:542dfe9204c5 18 EN ESTA SITUACION SE DEBEN PONER LAS VALVULAS MANUALES DE PVC EN MODO DRENAJE
tony63 0:542dfe9204c5 19
tony63 0:542dfe9204c5 20 SI EL SENSOR DE NIVEL ESTA EN CERO ES INDICIO DE QUE ESTA BOMBEANDO BIEN Y EL SISTEMA RETORNA A MUESTREAR PULSOS SI LOS HAY PERMANECE LA BOMBA ENCENDIDA
tony63 0:542dfe9204c5 21 VUELVE A HACER TEST DEL NIVEL DEL BALDE Y ADEMAS REVISA NIVEL DE TANQUE, SI EL TANQUE SE LLENA SE DETECTA CON SENSOR DE NIVEL MAXIMO Y SE DA ALARMA SE DEBEN ACCIONAR VALVULAS DE PVC Y EL LED ROJO DESTELLA DE FORMA INDEFINIDA
tony63 0:542dfe9204c5 22
tony63 0:542dfe9204c5 23 LA BOMBA SE ENERGIZA POR MEDIO DE UN TRIAC Y UN OPTO-ACOPLADOR (LED/TRIAC) MOC3020 QUE HACE EL DISPARO EN EL CRUCE CERO PARA EVITAR RUIDO ELECTRICO QUE PUEDE AFECTAR EL MICROCONTROLADOR
tony63 0:542dfe9204c5 24 */
tony63 0:542dfe9204c5 25 #include "mbed.h"
tony63 0:542dfe9204c5 26 #include <Pulse1.h>
tony63 0:542dfe9204c5 27 #include "DebouncedIn.h"
tony63 0:542dfe9204c5 28 PulseInOut H2O(PTC12);// en este puerto se pone el sensor de flujo
tony63 0:542dfe9204c5 29 DigitalOut LedVerde(LED2);//leds sobre la FRDMKL25Z
tony63 0:542dfe9204c5 30 DigitalOut LedRojo(LED1);
tony63 0:542dfe9204c5 31 DigitalOut LedAzul(LED3);
tony63 0:542dfe9204c5 32 DigitalOut Bomba(PTA17);//triac que enciende la bomba por optoacoplador MOC3010
tony63 0:542dfe9204c5 33 DebouncedIn LevelBalde(PTC17);//sensor de nivel del balde donde se mete la bomba de aspiracion
tony63 0:542dfe9204c5 34 DebouncedIn LevelTanque(PTC16);//sensor de nivel en el tanque de almacenamiento de 100 litros
tony63 0:542dfe9204c5 35 //la logica de los sensores de nivel es; activado=1
tony63 0:542dfe9204c5 36 int i; //variable de conteo3
tony63 0:542dfe9204c5 37 int intentos=0;
tony63 0:542dfe9204c5 38 int primerP;
tony63 0:542dfe9204c5 39 // ************************ACA SE INICIA EL PROGRAMA*****************************
tony63 0:542dfe9204c5 40 int main(void){
tony63 0:542dfe9204c5 41 //inicialmente se prenden leds
tony63 0:542dfe9204c5 42 LedRojo=0;
tony63 0:542dfe9204c5 43 LedVerde=0;
tony63 0:542dfe9204c5 44 LedAzul=0;
tony63 0:542dfe9204c5 45 wait(2);
tony63 0:542dfe9204c5 46 LedRojo=1;
tony63 0:542dfe9204c5 47 LedVerde=1;
tony63 0:542dfe9204c5 48 LedAzul=1;
tony63 0:542dfe9204c5 49 wait_ms(500);
tony63 0:542dfe9204c5 50 LedVerde=1;//encendemos solo el led rojo
tony63 0:542dfe9204c5 51 LedRojo=0;
tony63 0:542dfe9204c5 52 LedAzul=1;
tony63 0:542dfe9204c5 53 LedVerde=1;
tony63 0:542dfe9204c5 54 Bomba=0;
tony63 0:542dfe9204c5 55 wait(1); //ESPERAMOS UN SEGUNDO
tony63 0:542dfe9204c5 56 /*nos quedamos a la espera de detectar si la lavadora acciona la bomba de drenaje.
tony63 0:542dfe9204c5 57 eso se hace detectando si hay flujo de agua y verificando que los pulsos no son falsos positivos.
tony63 0:542dfe9204c5 58 Medimos el primer pulso bajo que aparece y revisamos si esta en un ranfo de 5 a 50mS se hace un segundo muestreo a los 200mS y si estan en el mismo ramgo
tony63 0:542dfe9204c5 59 se consideran aceptables como pulsos de flujo casi constantes
tony63 0:542dfe9204c5 60 luego accionamos la bomba y esperamos a que esta reaccione y luego tenemos que verificar que hay bombeo al tanque grande de 100litros
tony63 0:542dfe9204c5 61 si el balde se esta llenando es por que no esta aspirando y se dben hacer recierres hasta que la bomba logre el cebado en cada intento volvemos a revisar el sensor de nivel delñ balde
tony63 0:542dfe9204c5 62 si logra bombear es por que el sensor da cero y lo que sigue es revisar los otros sensores de nivel si los hay y luego repetir a muestrear el sensor de flujo para decidir con la bomba accionada o apagarla
tony63 0:542dfe9204c5 63 */
tony63 0:542dfe9204c5 64 //*************************************************************************I N I C I O************************************************
tony63 0:542dfe9204c5 65 muestreo_inc_flow:primerP=0;
tony63 0:542dfe9204c5 66 LedVerde=0;
tony63 0:542dfe9204c5 67 wait_ms(100);
tony63 0:542dfe9204c5 68 LedVerde=1;
tony63 0:542dfe9204c5 69 Bomba=0;
tony63 0:542dfe9204c5 70 LedRojo=0;
tony63 0:542dfe9204c5 71 ;//leemos la duracion del primer pulso bajo)
tony63 0:542dfe9204c5 72 ;//el pulso debe tener un rango conocido y real y si se cumple continua
tony63 0:542dfe9204c5 73 ;
tony63 0:542dfe9204c5 74 ;
tony63 0:542dfe9204c5 75 {
tony63 0:542dfe9204c5 76 LedVerde=0;
tony63 0:542dfe9204c5 77 LedRojo=1;
tony63 0:542dfe9204c5 78 LedAzul=1;
tony63 0:542dfe9204c5 79 Bomba=1;
tony63 0:542dfe9204c5 80 wait(2);
tony63 0:542dfe9204c5 81 goto verify_pump;
tony63 0:542dfe9204c5 82 }
tony63 0:542dfe9204c5 83 //volver a muestrear los pulsos
tony63 0:542dfe9204c5 84 }
tony63 0:542dfe9204c5 85 LedVerde=1;
tony63 0:542dfe9204c5 86 LedRojo=0;
tony63 0:542dfe9204c5 87 LedAzul=1;
tony63 0:542dfe9204c5 88 Bomba=0;
tony63 0:542dfe9204c5 89
tony63 0:542dfe9204c5 90 { //si el tanque esta lleno indicar alarma general
tony63 0:542dfe9204c5 91 LedVerde=1;
tony63 0:542dfe9204c5 92 LedRojo=0;
tony63 0:542dfe9204c5 93 LedAzul=1;
tony63 0:542dfe9204c5 94 Bomba=0;
tony63 0:542dfe9204c5 95 goto fracasoR;
tony63 0:542dfe9204c5 96 }
tony63 0:542dfe9204c5 97 goto muestreo_inc_flow;
tony63 0:542dfe9204c5 98 //*********************************************************************************************************
tony63 0:542dfe9204c5 99 //verificar si la bonba logra hacer succion muestreando el nivel de agua del balde
tony63 0:542dfe9204c5 100 //1. se acciona la bomba pero despues se alcanza el nivel maximo del balde (flanco de subida es que el balde se rebosa)
tony63 0:542dfe9204c5 101 //2. se acciona la bomba pero el nivel no desciende (flanco de caida no presente, no vacia el balde)
tony63 0:542dfe9204c5 102 //*************************************************************************************************
tony63 0:542dfe9204c5 103 //esperemos a que el balde se llene por causa de bomba sin succion, no debe haber agua al principio
tony63 0:542dfe9204c5 104 //pero si se acciona la bomba y no hay succion el nivel del balde sube y hay que inducir cebado
tony63 0:542dfe9204c5 105 //haciendo reconexiones rapidas de la Bomba a la red electrica.
tony63 0:542dfe9204c5 106 //nueva seccion********************************************************************************************************************************
tony63 0:542dfe9204c5 107 verify_pump: { //no hay succion se debe hacer recierres
tony63 0:542dfe9204c5 108 //apagar bomba de inmediato y los leds
tony63 0:542dfe9204c5 109 //esperamos un poco
tony63 0:542dfe9204c5 110 //prender bomba de nuevo
tony63 0:542dfe9204c5 111 //prender led verde
tony63 0:542dfe9204c5 112 //apagar el rojo
tony63 0:542dfe9204c5 113
tony63 0:542dfe9204c5 114 //si con 5 recierres no succiona,...apagar todo y dar alarma general
tony63 0:542dfe9204c5 115
tony63 0:542dfe9204c5 116 goto fracaso; //ir a fracaso
tony63 0:542dfe9204c5 117 }
tony63 0:542dfe9204c5 118 //esperar que inicie el bombeo
tony63 0:542dfe9204c5 119 //si esto se cumple, logró succión
tony63 0:542dfe9204c5 120 //hacer intentos =0;
tony63 0:542dfe9204c5 121 // toca ir a esperar perdida de flujo
tony63 0:542dfe9204c5 122 }
tony63 0:542dfe9204c5 123 //va a verificar de nuevo bomba
tony63 0:542dfe9204c5 124 }
tony63 0:542dfe9204c5 125 //como no es verdadero todo esto toca volver a indagar por pulsos
tony63 0:542dfe9204c5 126 //***********************************************************************************************************
tony63 0:542dfe9204c5 127 fracaso: LedRojo=1;// se enclava el programa en un ciclo infinito donde solo sale si de da reset prende el led azul
tony63 0:542dfe9204c5 128 LedVerde=1;
tony63 0:542dfe9204c5 129 LedAzul=0;
tony63 0:542dfe9204c5 130 Bomba=0;
tony63 0:542dfe9204c5 131 wait_ms(300);
tony63 0:542dfe9204c5 132 LedAzul=1;
tony63 0:542dfe9204c5 133 wait_ms(300);
tony63 0:542dfe9204c5 134 goto fracaso;
tony63 0:542dfe9204c5 135 fracasoR: LedRojo=0;// se enclava el programa en un ciclo infinito donde solo sale si de da reset prende el led azul
tony63 0:542dfe9204c5 136 LedVerde=1;
tony63 0:542dfe9204c5 137 LedAzul=1;
tony63 0:542dfe9204c5 138 Bomba=0;
tony63 0:542dfe9204c5 139 wait_ms(300);
tony63 0:542dfe9204c5 140 LedRojo=1;
tony63 0:542dfe9204c5 141 wait_ms(300);
tony63 0:542dfe9204c5 142 goto fracasoR;
tony63 0:542dfe9204c5 143
tony63 0:542dfe9204c5 144 }