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.

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
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).

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.
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:
- Abre el IDE de Arduino.
- Crea un nuevo sketch.
- Captura las instrucciones del programa.
- Guarda tu programa.
- Compila tu programa. En caso necesario, depúralo hasta que no tenga ningún error.
- Conecta la tarjeta Arduino a tu computadora.
- Selecciona el puerto serial (COM) de la computadora asociado a la tarjeta.
- Sube el programa a la memoria de la tarjeta Arduino UNO.
- Ejecuta tu programa.
El resultado de la ejecución del programa deberá ser similar a la que se muestra en la Figura 5.

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:
-
- ¿Cómo funciona el servomotor?
- ¿Qué es lo que debe variar si quiero cambiar el tono del buzzer?
- ¿Qué otra aplicación tiene este sistema?
- ¿Por qué usar el CNY70 para este problema?
- ¿Por qué usar un servomotor para este problema?
- ¿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:
- 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.