Controlar desconexión ascensor

De Proyectos
Ir a la navegación Ir a la búsqueda

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?


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.

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
  • 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
  • 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