Control de acceso automático a nave industrial.

Hola, Este proyecto es un Control de acceso automático a nave industrial.

He estado buscando información o aplicaciones con Arduino, para implementar un sistema de control de entrada/salida a una nave industrial, que dispone de una puerta de entrada y otra de salida para vehículos.

Y no logro encontrar ningún ejemplo o forma de empezar el trabajo, por este motivo pido ayuda si alguien quiere y puede ayudarme con esta tarea, alguna idea. Cosa que agradezco desde ya.

El caso es que se trata de un sistema controlado de acceso a una nave industrial con dos puertas.

Para poder entrar tienes que disponer de una clave de entrada/salida que nos presenta una señal de autorización H o en caso contrario una señal L.

El detector de proximidad de entrada/salida ya existe y se puede controlar por medio de un PC que administra los pases, actualizando los pases o denegandolo cuando procede, esto es transparente.

El sistema tiene la particularidad de que si estás fuera, solo puedes entrar y si estás dentro solo puedes salir, de modo que la autorización es intransferible (?, es relativo).

En principio, considerando las condiciones expuestas, sera preciso solucionar por lo menos los siguientes puntos que he resumido:

*Detectar si la señal, se ha producido de entrada o salida del local. * Activar una señal (H-L), para activar una señal sonora, otra luminosa. * Después de un tiempo (de 3-5 segundos) se generará una señal continua para activar un control de potencia, para activar un motor que abrirá o cerrará la puerta de entrada o salida del local. * Un motor se activa para abrir una barrera de paso y * Un detector de paso, indica al sistema que ha pasado un objeto (E/S) y cierra la barrera. En otro caso no se cierra la barrera. * Generar una señal que enviará al sistema central para hacer constar la presencia o no de la persona. * Un Reset, permitira que se reinicie el sistema de control de las puertas.

Entiendo que es necesario el uso de puentes-h para manejar los motores en caso de motores DC o un relé en el caso de motores de alterna, esto no creo que sea un problema.

Lo que no tengo tan claro es, cómo puedo hacer que el sistema este alerta a cualquier petición de E/S al mismo tiempo que este realizando una tarea. No se si me explico. Si está enviando una señal para avisar que alguien sale y en ese momento por la otra puerta se produce una señal de entrada, cómo puedo implementar que ambas funciones se produzcan al mismo tiempo.

Espero ayuda, ideas y aportes de los maestros para llevar adelante esta tarea

Gracias por las ayudas.

Hola de nuevo por aquí.

He pensado en aplicar el código modificado del sensor de presencia de Igor Gonzalez Martin 14-01-2008 que como digo he modificado un poco.

int interruptorE = 12; // pin12 salida de señal motor abrir puerta de entrada y barrera int interruptorE = 11; // pin11 salida de señal motor cerrar puerta de entrada y barrera

int interruptorS = 8; // pin8 salida de señal para motores abrir puerta de salida y barrera int interruptorS = 7; // pin7 salida de señal para motores cerrar puerta de salida y barrera

// int alrma = 12; // pin12 salida para distintas actividades, sonido, luz, etc.

int sensorPuertaE = 3; // Sensor de entrada conectado a entrada digital pin4 int sensorPuertaS = 4; // Sensor de entrada conectado a entrada digital pin5

int espiraE = 5; // Sensor de espiraE de entrada pin6 int espiraS = 6; // Sensor de espiraS de salida pin7

long tiempoEN = 60000; // Tiempo encendido en mili-segundos (1 minuto) int PuertaEactiva=0; // guarda estado puertaE int PuertaSactiva=0; // guarda estado puertaS int SensorE=0; // guarda estado sensor espira E = SensorE int SensorS=0; // guarda estado sensor espira S = SensorS long contador = 0;

void setup (){ // establece estados de los pines pinMode(interruptorE, OUTPUT); // pinMode(interruptorS, OUTPUT); // pinMode(sensorPuertaE, INPUT); // pinMode(sensorPuertaS, INPUT); // pinMode(espiraE, INPUT); pinMode(espiraS, INPUT);

}

void loop (){ PuertaEactiva=digitalRead(sensorPuertaE); // Lee el sensorPuertaE PuertaSactiva=digitalRead(sensorPuertaS); // Lee el sensorPuertaS if (PuertaEactiva==HIGH) or // Si la puertaE (PuertaSactiva==HIGH) // o la puertaS esta activa, reinicia el contador de tiempo & (SensorE==HIGH) or & (SensorS==HIGH) { contador=tiempoEN; // al tiempo de encendido total. } if (contador > 0) { // Si el contador de tiempo es positivo mantiene contador = contador - 200; // encendido el interruptor y decrementa el digitalWrite(interruptor,HIGH); // tiempo de encendido, digitalWrite(alrma,HIGH); } else { digitalWrite(interruptor,LOW); // sino lo apaga. digitalWrite(alrma,LOW); } }

Me podéis decir si funcionara o si tenis una idea mejor.

Gracias.