Sistema de acceso a un estacionamiento

Prácticas con DASA

Título de la práctica:Sistema de acceso a un estacionamiento con servomotor y opto interruptor
Objetivo:El alumno aprenderá a detectar objetos cercanos y mover objetos con la implementación de sistema de acceso para estacionamiento, haciendo uso de un un sensor óptico y un servomotor.
Tiempo estimado:100 minutos
Nivel de dificultad:Intermedio
Autora:Maria Isabel Cuevas Avila

Introducción

Para entrar al estacionamiento de algún centro comercial o una tienda de autoservicio, existe la necesidad de obtener un boleto para que el sistema de acceso autorice la entrada.
Anteriormente esta actividad usaba botones para dicha acción. Actualmente debido a la pandemia de COVID-19 se han implementado diferentes medidas sanitarias que evitan el contacto con superficies y así detener los contagios.
La implementación de sensores es una solución para este problema. Por lo que hoy en día es muy común encontrarlos en los estacionamientos.

Figura 1. Pluma de estacionamiento ICAT

Materiales

Programas

Arduino IDE. Disponible en: https://www.arduino.cc/en/software

Desarrollo

Te invitamos a ver el siguiente video con información sobre las características del sensor infrarojo CNY70

Video sensor infrarojo

Conexión del DASA a la tarjeta Arduino

Para la práctica vamos a utilizar el buzzer, el opto interruptor y los leds que se encuentran integrados en el Dispositivo Automatizado de Sensores Arduino (DASA).

Figura 2 Conexión del DASA a la tarjeta Arduino UNO

Conecta el DASA a la tarjeta Arduino UNO como se muestra en la Figura 2. Asegúrate que todos los pines se introduzcan completamente en los conectores de la tarjeta Arduino correspondiente.

Nota: si no tienes un DASA, puedes construir el circuito electrónico mostrado en la Figura 3, o bien, utilizar la herramienta de simulación de circuitos electrónicos Arduino de Tinkercad.

Figura 3. Diagrama de conexiones del servomotor, con el buzzer, los leds y el CNY70

Programación del circuito electrónico

El siguiente programa te permite controlar la señal emitida por el foto interruptor para seguir una secuencia de alarma, haciendo uso del buzzer y los leds incluidos en la DASA.

 

#include <Servo.h> // Biblioteca del servomotor 

#define
LEDR 3 //LED Rojo en el pin D3
#define LEDA 4 //LED Amarillo en el pin D4
#define LEDV 5 //LED Verde en el pin D5
#define buzzer A1 // zumbador en el pin A1
#define opto 2 //Opto interruptor en pin D2 
Servo miservo; // Se crea un objeto "miservo" 
const int pinServo = 6; // pin del servo
int angulo = 0; // Guarda la posición angular del servo 


void setup () {
pinMode (LEDR, OUTPUT); //Led rojo salida 
pinMode (LEDA, OUTPUT); // Led amarillo salida
pinMode (LEDV, OUTPUT); // Led verde salida
pinMode (buzzer, OUTPUT); // Buzzer salida
pinMode (opto, INPUT); //CNY70 entrada
miservo.attach(pinServo); //Liga el objeto Servo al pin 6 

//RUTINA DE INICIO
angulo= (50); //Estabiliza al servo en línea recta
miservo.write(angulo); // Indica al servo cuanto moverse
delay (15); // Espera 15 ms para quedarse en la posición inicial
digitalWrite (LEDR, HIGH); //Enciende el led rojo
delay (500); //Durante 500 ms
digitalWrite (LEDR, LOW); //Apaga el led rojo
digitalWrite (LEDA, HIGH); //Enciende el led rojo
delay (500); //Durante 500 ms
digitalWrite (LEDA, LOW); //Apaga el led amarillo
digitalWrite (LEDV, HIGH); //Enciende el led verde
delay (500); //Durante 500 ms
  digitalWrite (LEDV, LOW); //Apaga el led verde
}

void loop () {
if(digitalRead(opto))
{ //Si hay lectura en el opto interruptor
   digitalWrite (LEDR, HIGH) ;// Enciendo led rojo
  digitalWrite (LEDV, LOW) ;//Led verde apagado
digitalWrite (LEDA, LOW) ;//Led amarillo apagado
tone (buzzer, 440); //440 Hz primer tono
 delay (500); // Suena 500 ms
   tone (buzzer, 494); // 494 Hz cambia de tono 
   delay (500); // Suena 500 ms delay (500); // Suena 500 ms
noTone(buzzer); // No suena el buzzer
angulo= (150); //Angulo de apertura
miservo.write(angulo); //Indica al servo cuanto moverse
 delay (2000); //Espera 2 s para regresar a la posición inicial
} // fin if
else {
angulo=(50); //Estabiliza al servo en línea recta
miservo.write(angulo); //Indica al servo cuanto moverse
delay (2000); // Espera 2 s para volver a la posición inicial
digitalWrite (LEDV, HIGH); //Led verde encendido
digitalWrite (LEDA, LOW); //Led amarillo apagado
digitalWrite (LEDR, LOW) ;//Led rojo apagado
} // fien else
} // Fin programa

Captura, compila y ejecuta tu programa por medio de siguientes acciones:

  1. Abre el IDE de Arduino.
  2. Crea un nuevo sketch.
  3. Captura las instrucciones del programa.
  4. Guarda tu programa.
  5. Compila tu programa. En caso necesario, depúralo hasta que no tenga ningún error.
  6. Conecta la tarjeta Arduino a tu computadora.
  7. Selecciona el puerto serial (COM) de la computadora asociado a la tarjeta.
  8. Sube el programa a la memoria de la tarjeta Arduino UNO.
  9. Ejecuta tu programa.

El resultado de la ejecución del programa deberá ser similar a la que se muestra en la Figura 5.

Figura 5 Simulación

 

Resultados

  • Giro adecuado del servomotor.
  • Control del encendido y apagado del led a través de la respuesta del opto interruptor.
  • Tono de alarma del buzzer.

Conclusiones

El sensor infrarojo CNY70 es un sensor que incluye un LED infrarrojo y un fototransistor.que es utilizado como  detectores de líneas. Su función principal es la de medir la reflexión en superficies. Un servomotor es un  es un actuador que permite controlar con máxima precisión la posición y movimientos de su eje, es decir, que se puede mover en un ángulo, posición y a una velocidad determinada en cada momento. 

Reflexiona sobre los casos prácticos en donde has visto un funcionamiento similar a los de esta práctica.

Responde las siguientes preguntas:

    1. ¿Cómo funciona el servomotor?
    2. ¿Qué es lo que debe variar si quiero cambiar el tono del buzzer?
    3. ¿Qué otra aplicación tiene este sistema?
    4. ¿Por qué usar el CNY70 para este problema?
    5. ¿Por qué usar un servomotor para este problema?
    6. ¿Qué problema soluciona este programa?

Retos Arduino

Para que practiques tus habilidades de programación en Arduino, te invitamos a que realices el siguiente reto:

  1. Imprime un mensaje en la LCD para que el programa sea más agradable con el usuario. 

Por ejemplo: un mensaje que le indique a la persona que acerque su dedo al CNY70 “Por favor acerca tu dedo” y otro mensaje para que el usuario pueda retirar su boleto “Bienvenido. Tome su boleto”, así como un mensaje de bienvenida al encender el DASA.

2. Cambia el tono del buzzer.

3. Controla la velocidad con la que gira el servomotor.

Referencias

Arduino. (2021). Language Reference. https://www.arduino.cc/reference/en/

Bañuelos, M., Pacheco, M. y Villegas, R. (2022). Dispositivo Automatizado de Sensores Arduino (DASA). Manual de usuario.