Prácticas con DASA

Título de la práctica: | ¿Qué es un sonar? |
Objetivo: | El alumno aprenderá a detectar objetos en un rango de distancia determinado con la implementación de un sonar con Arduino, haciendo uso de un servomotor y un sensor ultrasónico. |
Tiempo estimado: | 100 minutos |
Nivel de dificultad: | Avanzado |
Autora: | Sara Rodríguez González |
Introducción
Un sonar es un dispositivo que utiliza la propagación del sonido con el fin de navegar, comunicarse o detectar objetos. En un inicio, los sonares se desarrollaron para ayudar a los capitanes de la marina a detectar objetos en las profundidades del mar que pudieran llegar a dañar los barcos. Hoy en día tienen diversas aplicaciones en distintos campos tales como:
- Aplicaciones militares. Usados desde la época de la Segunda Guerra Mundial para que los barcos pudieran detectar submarinos enemigos y evitar ataques sorpresa.
- Aplicaciones civiles. Empleados en actividades de pesca y en la búsqueda de aviones o barcos hundidos en el océano.
- Aplicaciones científicas. Aprovechados para en el cálculo de la biomasa, así como para en la caracterización del suelo marino y arqueología subacuática.

Materiales









Programas
Arduino IDE. Disponible en: https://www.arduino.cc/en/software
Desarrollo
Para el desarrollo de esta práctica utilizaremos varios componentes, de los cuales algunos se encuentran ya integrados en la tarjeta DASA, como los LEDs y el zumbador pasivo. Por otra parte, también emplearemos otros dispositivos que conectaremos de manera externa como es el caso del sensor ultrasónico HC-SR04 y el servomotor.
A continuación, encontrarás videos que contienen información acerca de las características y funcionamiento de los elementos mencionados:
Construcción del circuito electrónico
En esta sección empezaremos a conectar todos los dispositivos electrónicos necesarios para construir nuestro sonar.
Conexión del servomotor al DASA
Precaución: Para esta práctica no se conectará el servomotor directamente al header asignado para dicho componente en la tarjeta DASA. Esto es debido a que el sensor ultrasónico HC-SR04 y el servomotor utilizan las mismas líneas de control. Para solucionar esto, se conectará el servomotor al DASA como se muestra en la Figura 2:
- Toma dos cables jumper macho-hembra y un cable macho-macho.
- Agarra uno de los jumpers macho-hembra y conéctalo a la tierra del servomotor (cable café).
- Ubica en el DASA la conexión para el servomotor. Dicha conexión está señalada como «SERVO-D6» en la tarjeta.
- Introduce el otro extremo del cable jumper al pin del lado derecho, designado en la serigrafía como «CAFE».
- Toma otro cable jumper macho-hembra y conéctalo al pin de alimentación del servomotor (cable rojo).
- De nuevo en la conexión designada para el servomotor en la tarjeta DASA, conecta el otro extremo del cable jumper al pin central.
- Toma el jumper macho-macho y conéctalo al último pin disponible del servomotor, el cual corresponde a la señal (cable naranja).
- Por último, deberás ubicar el header correspondiente al pin analógico A5. Este pin se encuentra en la conexión designada para el sensor de gas MQ-x. Una vez ubicado este header de 6 pines, el pin al que debes conectar el extremo del jumper estará etiquetado como «A5».

Conexión y ensamble del sensor ultrasónico HC-SR04 al DASA
Para la conexión del sensor ultrasónico HC-SR04 utilizaremos la liga de hule, un brazo para servo (incluido con el servomotor) y cuatro cables jumper macho-hembra. Empezaremos por ensamblar el brazo para servo con el sensor ultrasónico, para lo cual se recomienda seguir los siguientes pasos:
- Tomar los cuatro cables jumper y conectar los extremos macho a los pines del sensor ultrasónico.
- Colocar la liga por encima del sensor y debajo de los cables jumper.
- Empezar a dar vuelta a la liga, de tal manera que pase por en medio del receptor y emisor del sensor ultrasónico.
- Coloca el brazo para servo de manera que sostenga el extremo opuesto a los pines del sensor. Asimismo, asegúrate de que la parte donde se conecta al servomotor quede libre, es decir, hacia abajo para que se pueda acoplar al mismo.
- Sigue dando vuelta a la liga alrededor del servomotor. Una vez que llegues a los pines y los cables jumper, deberás pasar los jumpers por debajo de la liga. Asegúrate que los extremos del brazo se mantengan soportados por la liga.
- Después, deberás volver a dar una vuelta con la liga al sensor y al brazo, hasta volver a pasar los cables jumper debajo de la liga. Esto deberás hacerlo cuantas veces te permita la liga, lo que dependerá de su largo.
- Luego, pasa el extremo de la liga alrededor del emisor y receptor del sensor ultrasónico. De esta forma, el sensor tendrá un buen soporte para después colocarlo al servo.
- Por último, conecta el brazo al servomotor.
Las Figuras 3 y 4 ilustran los pasos anteriormente mencionados.


Ahora conectaremos el sensor ultrasónico HC-SR04 al DASA. Para ello, ubica el header de 4 pines señalado como HC-SR04 en la tarjeta. Después, conecta cada extremo macho de los cables jumper utilizados en el sensor ultrasónico. Asegúrate que cada pin del sensor HC-SR04 (los cuales se encuentran rotulados en la parte posterior del sensor) correspondan con cada pin del header (designados en la serigrafía de la tarjeta).

Por último, conecta el DASA a la tarjeta Arduino UNO, como se muestra en la Figura 6. Confirma que todos los pines se introduzcan completamente en los conectores de la tarjeta Arduino correspondientes.

Nota: si no cuentas con un DASA, puedes construir el circuito electrónico mostrado en la Figura 7, o bien, utilizar la herramienta de simulación de circuitos electrónicos Arduino de Tinkercad.
Programación del circuito electrónico
El procedimiento que debemos seguir para el funcionamiento del sonar es el siguiente:
- Mover un grado el servomotor.
- Enviar un pulso de 10 microsegundos por el pin TRIG.
- Medir el tiempo que transcurre entre el envío del pulso ultrasónico del pin TRIG y la recepción de la señal de rebote por el pin ECHO.
- Calcular la distancia.
- Evaluar si la distancia es menor a 30 cm. Si lo es, encender el LED rojo, producir un sonido en el buzzer y mostrar el mensaje «OBJETO DETECTADO» en el monitor serial.
- En caso de que la distancia sea mayor a 30 cm, encender el led verde y mostrar el mensaje «ESPACIO DESPEJADO» en el monitor serial.
- Repetir desde el paso 1.
Esta instrucciones se realizan utilizando la estructura de decisión if-then-else. Asimismo, se deben crear dos ciclos for para hacer el barrido con el servomotor.
Nota: Si tienes dudas acerca de cómo se programa el sensor ultrasónico HC-SR04, se te recomienda revisar la práctica «Sensor ultrasónico: medición de distancias» que podrás encontrar en el apartado del DASA.
Programación del circuito electrónico
A continuación, se presenta el programa del circuito electrónico del sonar
/* Sonar
* Programa que busca objetos a una distancia menor a 30 cm.
* Si la distancia es menor, se encenderá el led rojo, se producirá un tono con el buzzer y se
* desplegará "OBJETO DETECTADO" en el monitor serial.
* Por el contrario, si la distancia es mayor, se encenderá el led verde y se desplegará
* "ESPACIO DESPEJADO" en el monitor serial.
* NOTA: El sensor ultrasónico está conectado a los pines 6 (TRIG) y 7 (ECHO). Mientras que el servomotor
* está conectado al pin A5.
* UNAM 2022
*/
#include <Servo.h> //Biblioteca del servomotor
const int TRIG = 6; // Declaración de la constante TRIG que almacena el pin al que está conectado el canal TRIGGER del sensor
const int ECHO = 7; // Declaración de la constante ECHO que almacena el pin al que está conectado el canal ECHO del sensor
// Declaración de variables
long distancia = 0;
long tiempo = 0;
int i = 0;
Servo MOTOR; //Creación de un objeto "MOTOR"
// Declaración de LEDs
const int LEDR = 3;
const int LEDV = 5;
void setup() {
Serial.begin(9600);
pinMode(LEDR, OUTPUT); //LED Rojo
pinMode(LEDV, OUTPUT); //LED Verde
MOTOR.attach(A5); //Liga el objeto MOTOR al pin A5
pinMode(TRIG, OUTPUT); // Activación del pin TRIG como salida
pinMode(ECHO, INPUT); // Activación del pin ECHO como entrada
digitalWrite(TRIG, LOW); // Garantizar que la señal trigger inicie en bajo
pinMode(A1, OUTPUT);
}
void loop() {
//Ciclo for para hacer el barrido con el servomotor
for(i = 0; i <= 180; i++){
detectar_objeto();
}
//Ciclo for para hacer el barrido de regreso con el servomotor
for(i = 180; i >= 0; i--){
detectar_objeto();
}
}
void detectar_objeto() {
MOTOR.write(i); //Manda el servo a la posición
delay(90); //Pausa de 90 milisegundos para estabilizar el servo
digitalWrite(TRIG, HIGH);
delayMicroseconds(10); // Se envía un pulso de 10 microsegundos
digitalWrite(TRIG, LOW); // Activación de la señal ultrasónica
/* pulseIn es la función que mide la longitud del pulso entrante.
Mide el tiempo que transcurre entre el envío del pulso ultrasónico del pin TRIG
y la recepción de la señal de rebote por el pin ECHO
*/
tiempo = pulseIn(ECHO, HIGH);
distancia = 0.01716 * tiempo; // Cálculo de la distancia en cm
//Evaluar si la distancia es menor a 30cm
if(distancia < 30 && distancia != 0) {
digitalWrite(LEDR, HIGH); //Encender el led rojo
digitalWrite(LEDV, LOW); //Apagar el led verde
Serial.println("OBJETO DETECTADO");
// Se genera un tono de 350 Hz en el pin A1
// El tono dura 50 milisegundos y se apaga
tone(A1,350);
delay(50); // Pausa de 50 milisegundos
noTone(A1);
}
else {
digitalWrite(LEDR, LOW); //Apagar el led rojo
digitalWrite(LEDV, HIGH); //Encender el led verde
Serial.println("ESPACIO DESPEJADO");
}
delay(20); //Pausa de 20 milisegundos
}
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.
Nota: se recomienda fijar con cinta adhesiva el servomotor a tu mesa de trabajo. Asimismo, busca objetos de superficie lisa para probar como obstáculos a detectar por el sonar.
Resultados
Pon a prueba tu circuito electrónico colocando distintos objetos a diferentes distancias para que sean detectados por el sonar. Trata de que haya un espacio de al menos 5 cm entre los objetos.
También puedes modificar el código de tu programa con distancias mayores o menores a 30 cm. Observa si cambia el nivel de precisión de la detección del sonar conforme vas haciendo las modificaciones. Recuerda, el sensor ultrasónico HC-SR04 tiene un rango de medición de 2cm a 400 cm.
Discusión y conclusiones
La fórmula para calcular una distancia con el sensor ultrasónico es:
distancia= int(0.01716*tiempo);
Finalmente, responde las siguientes preguntas como conclusión:
- ¿Qué aprendiste con esta práctica?
- ¿Se te ocurre alguna aplicación en tu día a día con el sonar?
- Menciona, además de las aplicaciones mencionadas en la introducción, algún ejemplo de proceso científico o industrial donde se pudiera hacer uso de un sonar.
- ¿Cómo mejorarías el diseño del sonar?
Retos Arduino
Para que practiques tus habilidades de programación con Arduino, te invitamos a que realices el siguiente reto:
- Agrega al circuito electrónico del sonar un display LCD y prográmalo para que muestre los mensajes del monitor serial en el display LCD, lo más centrados posible.
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.
deeper. (s. f.). Cómo funciona el Sonar. https://deepersonar.com/es/es_es/como-funciona/como-funciona-el-sonar#:%7E:text=Un%20dispositivo%20de%20sonar%20env%C3%ADa,un%20objeto%20y%20luego%20rebotar.