Diferencia entre revisiones de «Controlar desconexión ascensor»
Sin resumen de edición |
Sin resumen de edición |
||
| Línea 66: | Línea 66: | ||
Incluso en este caso la ejecución de desconexión no debe pararse. | Incluso en este caso la ejecución de desconexión no debe pararse. | ||
El proceso de estar atento a la entrada de la tecla *, mientras se ejecuta el proceso de desconexión, lo tengo implementado pero no se si de forma optima o no. | El proceso de estar atento a la entrada de la tecla *, mientras se ejecuta el proceso de desconexión, lo tengo implementado pero no se si de forma optima o no. | ||
'''Soluciones a interferencia entre de los procesos desconexion y menu''' | '''Soluciones a interferencia entre de los procesos desconexion y menu''' | ||
*A 10 o 20 min desconexión no poder entrar en menú. Si se entra la espera de datos sera max 2 min. Problema --> si voy viajando entre menús menos de dos min por cada uno puedo pasarme de la hora de desconexión | *A 10 o 20 min desconexión no poder entrar en menú. Si se entra la espera de datos sera max 2 min. Problema --> si voy viajando entre menús menos de dos min por cada uno puedo pasarme de la hora de desconexión | ||
*Debería ser que si a las 17.50 no se ha podido iniciar lo intente cada 10 min. Tiene que haber una variable que guarde si la desconexión/conexión se ha realizado. Con esto juntamente que no se puede estar esperando una entrada mas de dos min me aseguro que el p desconexión se ejecute siempre | *Debería ser que si a las 17.50 no se ha podido iniciar lo intente cada 10 min. Tiene que haber una variable que guarde si la desconexión/conexión se ha realizado. Con esto juntamente que no se puede estar esperando una entrada mas de dos min me aseguro que el p desconexión se ejecute siempre | ||
Revisión del 08:08 24 ene 2013
Tareas
- Un calendario para poder saber que dias ha de estar desconectado todo el dia o solo en horario laboral
- Pantalla
- Para poder configurar el dia en el que estamos y la hora
- Poder ver el estado de si esta desconectado o no
- Teclado
- Introducir hora y dia
- Poder hacer una desconexion manual (aunque esto puede hacerse desde el boton rojo que ya hay) - El circuito de desconexion no tiene que anular el del boton rojo
- Antes de ponerlo hay que hacer pruebas de si es fiable estar siempre el arduino encendido, al ser esta una plataforma diseñada para pruebas
- Mirar amperios que pasan por el boton rojo y voltios
- Implementar funcion de subir el montacargas a la 4 planta
- Mirar amperios que pasan por el boton y voltios
- Bateria litio para supuesto cortan luz k siga funcionando. Aunque si cortan y vuelven a dar la pila del reloj mantiene hora i al dar otra vez el prog se ejecuta normalmnt
- Almacenar calendario n tarjeta sd para poder ajustar facilmnt
- Mirar posibilidad configurar fiestas especiales o todo cale dsd keypad
- Modo conf calendario dsd keypad, introducir primero mes y lego dias festivos separados por puntos. Hanilitar tmb introduccion periodos consecutivos
- Estudiar dias festivos para ver k siempre sean iguales
- Al introducir dias festivos, quitar el anterior o dejar anteriores y quitar permitar solo seleccionados
- Leer hora cada segundo o leer hora una vez al dia y k arduino cuente solo un dia
- Politica d lectura de dia, cada cuanto leo el dia del mes? Podria contar el arduino 28 dias que es lo minimo que tiene el mes i luego preguntar cada 24 horas la fecha al reloj durante 4 dias (para llegar al maximo de 31 dias)
- Pero no se si esto gasta mas (codigo y tiempo) que preguntar cada 24 horas el dia
- Hacer el programa teniendo en cuenta que si se resetea empieza correctamnt
- Cuando se introduzca la hora o un dia festivo tiene que salir un mensaje traduciendo los datos a entendibles y preguntando confirmacion
- Se puede utilizar shift Register para ahorrar pines para el keypad?
- Control tiempo max espera entrada datos. Para hacerlo leer milis antes del bucle y en el bucle controlar que si milos es superior a 2 min salga del bucle
Ejecución código
Proceso desconexión
- Muestro hora y fecha
- Proceso desconexion en marcha
- Leo Hora
- Leo Dia
- Si dia y hora laborables entonces //Hora desde 7.30 hasta 17.50
- Desactivo Stop
- Desactivo Led
- Sino si hora es igual a 17.50 y dias es laborable entonces //Empiezo proceso de desconexion
- Espero puertas cerrar
- Llamo planta 4
- Espero ascensor llegue
- Activo Stop
- Activo Led
- Sino //dias de fiesta o horas no laborables. Realmente este caso no se necesita porque de seri el rele de stop y el led estan activados
- Activo rele Stop
- Activo led
Proceso menu
- Si aprieto * entro en menu
- Dibujo menú
- Espero opción valida (1,2,3 o #)
- Si opcion es 1 entonces
- Muestro configuración hora
- Espero entrada de hora //hago las comprobaciones de si la hora entrada es correcta
- Muestro configuracion dia
- Espero entrada de dia //hago las comprobaciones de si el dia entrado es correcto
- Sino Si opcion es 2 entonces
- Muestro configuracion dia festivo
- Espero entrada nuevo dia festivo //hago las comprobaciones de si dia festivo es correcto
- Guardo nuevo dia en SD
- Sino Si opcion es 3 entonces
- Extraigo SD
El proceso de desconexión tiene que estar funcionando siempre, aunque entre en el menú y me ponga a configurar cosas. El caso mas desfavorable es cuando estoy en el menú y la ejecución esta parada esperando una entrada de tecla.
Incluso en este caso la ejecución de desconexión no debe pararse.
El proceso de estar atento a la entrada de la tecla *, mientras se ejecuta el proceso de desconexión, lo tengo implementado pero no se si de forma optima o no.
Soluciones a interferencia entre de los procesos desconexion y menu
- A 10 o 20 min desconexión no poder entrar en menú. Si se entra la espera de datos sera max 2 min. Problema --> si voy viajando entre menús menos de dos min por cada uno puedo pasarme de la hora de desconexión
- Debería ser que si a las 17.50 no se ha podido iniciar lo intente cada 10 min. Tiene que haber una variable que guarde si la desconexión/conexión se ha realizado. Con esto juntamente que no se puede estar esperando una entrada mas de dos min me aseguro que el p desconexión se ejecute siempre
- Interrupciones: creo que si la interrupción se encarga de la desconexión, mirando cada x tiempo la hora y si llega la hora se ejecuta el p desconexión. El p menú estaria en el principal. Pero esto no se como hacerlo
- En el bucle principal pongo condición de entrar en menú k se apriete la tecla asterisco y que no sean 10 o 20 min antes de la hora de conex/descon. En los bucles de espera de datos hago lo mismo. Si son 10 o 20 min antes se sale del bucle. Haciendo que se cierren los procesos hasta llegar al principal que entonces ira directamente al p desconexion
Elementos
- Para el reloj y calendario
- DS1307
- DS3231 (este lleva el cristal incorporado)
- Conexion via i2c
- Ocupa 2 pines
- Rele para desconexion ascensor - ocupa 1 pin
- Rele para llamar al piso 4 - ocupa 1 pin
- Interruptor para desconexion general Arduino y que siga el funcionamiento normal del ascensor
- LCD
- DFR0091
- Conexion via SPI - ocupa 3 pines
- 128x64 Liquid Crystal
- 4 lines and 12 English characters
- DFR0063
- Conexion i2c - ocupa 2 pines
- 16x2
- DFR0091
- Keypad - ocupa 7 pines
- Led para mostrar si esta desconectado el ascensor o no - ocupa 1 pin
- SD para guardar dias festivos (SPI) - ocupa 4 pines
Uso Pines Arduino Uno
- SPI (LCD y SD)- 9-13
- I2C - A4 y A5
- Keypad - 2-8
- Reles - A0 y A1
- Led - A2
Libres: A3
Uso Pines Arduino Leonardo
Si uso Leonardo en vez de Uno, los pines SPI van al ICSP y me ahorro 4 pines digitales, entonces pasariamos a tener esta configuracion:
- SPI - ICSP + 12 (SS1) + 13 (SS2)
- I2C - A4 y A5 (Hay que revisar que Leonardo tiene dos pines que ponen SDA y SCL)
- Keypad - 2-8
- Reles - 9 y 10
- Led - 11
Libres: A0, A1, A2, A3
Programacion
- Módulo Reloj/Calendario
- Funcion lectura datos reloj
- Funcion escritura datos reloj (puesta en hora del reloj)
- Módulo SD-Calendario
- Escritura en el fichero los dias festivos
- Lectura del fichero los dias festivos
- Comprobar que detecta bien la SD
- Módulo Mostrar datos en Pantalla
- Menú
- Configurar reloj
- Configurar dias festivos
- Verificar si lee correctamente SD
- Desconectar manualmente el ascensor a traves de una orden (no se si esto es necesario)
- Hora y dia
- Estado desconexion ascensor
- Menú
- Desconexión ascensor
- Llamada planta 4
Documentacion
http://tronixstuff.wordpress.com/2011/05/13/tutorial-arduino-and-the-spi-bus/ http://www.instructables.com/id/Using-the-sparkfun-12-Button-keypad-with-the-ardu/?ALLSTEPS ---- Wiring keypad correcto para ejemplos arduino Keypad coocking hacks:
1 2 3 -- 2 4 5 6 -- 7 7 8 9 -- 6 * 0 # -- 4 | | | 3 1 5