Sensor ultrasonido para Arduino - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Hola a todos y bienvenidos al capítulo 5 de Arduino desde cero en español.
00:00:00
En esta oportunidad vamos a conectar un sensor ultrasonico para medir distancia
00:00:06
y activar un LED cuando un objeto se encuentre dentro de un determinado rango.
00:00:11
También hablaremos sobre el monitor serial.
00:00:17
Antes de armar el circuito veamos un poco sobre este sensor.
00:00:20
Específicamente se trata del modelo HC-SR04.
00:00:24
Existen otros modelos disponibles en el mercado que funcionan correctamente con Arduino, pero este se caracteriza por ser muy fácil de usar y tiene un bajo precio.
00:00:28
Si lo miramos de frente resaltan dos componentes con forma de cápsula. Estos son el transmisor y receptor ultrasonico.
00:00:40
El sensor usa ondas de sonido a alta frecuencia para detectar la distancia a un objeto.
00:00:49
el sonido que emite no lo podemos escuchar ya que tiene una frecuencia de 40 kHz
00:00:55
prácticamente el doble de la frecuencia máxima que el oído humano puede percibir
00:01:01
el sonido se propaga a una velocidad constante en el aire
00:01:07
con lo cual si calculamos el tiempo que demora en emitirse la señal
00:01:10
y la recepción de la misma causada por el rebote sobre un objeto
00:01:15
podremos calcular la distancia con buena precisión
00:01:20
Este es un sensor activo, ya que debemos alimentarlo para usarlo y también incluye varios circuitos integrados que son los encargados de generar el pulso de sonido y luego recibirlo.
00:01:24
Estos circuitos que incluye nos facilitan la vida a la hora de la programación, por eso veremos que solo tiene 4 pines, que son VCC, Trigger, Echo y GND.
00:01:38
VCC y GND serán la alimentación que la obtendremos directamente de Arduino
00:01:51
Trigger será el pin al cual le enviaremos una señal para que dispare el pulso ultrasonico
00:01:58
Y por el pin ECO obtendremos otro pulso indicando que la señal ha sido recibida
00:02:04
Ahora si vamos al circuito de protoboard
00:02:10
Coloquemos el sensor como se muestra
00:02:14
VCC lo conectaremos al positivo del riel de tensión GND a masa
00:02:17
del trigger iremos con un cable directo al pin digital 10 de Arduino
00:02:22
y del pin ECO con otro cable directo al pin digital 9
00:02:28
eso es todo para el sensor
00:02:33
ahora el clásico circuito del LED conectando el cátodo a masa
00:02:35
y a través de una resistencia de 330 ohms conectamos el ánodo al pin digital 3.
00:02:40
Finalmente alimentamos la protoboard con 5V y GND de Arduino.
00:02:47
Comenzaremos el código definiendo las variables que representan los pines a los cuales tenemos conectados el sensor y el LED.
00:02:54
Así que escribiremos int trig igual a 10, int echo igual a 9, int led igual a 3.
00:03:01
Y también definiremos estas dos variables que luego usaremos, int duración e int distancia.
00:03:14
Ahora el setup.
00:03:24
PinMode trig output.
00:03:26
Pin Mode, Echo, Input.
00:03:31
Pin Mode, LED, Output.
00:03:36
Perfecto, ahora haremos el loop.
00:03:40
Lo primero será generar una señal que debemos enviar al pin trigger del sensor.
00:03:43
Este pulso debe tener una duración que le especifica el fabricante del sensor.
00:03:49
por eso cada vez que utilicemos un sensor activo es importante leer las indicaciones de la planilla de datos
00:03:54
en este caso debemos enviar un pulso generado inicialmente con un nivel alto de 1 milisegundo y luego un nivel bajo
00:04:01
por eso escribiremos digital write trig high delay 1 digital write trig low
00:04:10
De esa forma le estaremos indicando al sensor que deseamos que emita un pulso y luego con la siguiente función tomaremos el tiempo que tarda en respondernos mediante el pin echo.
00:04:23
Duración igual a PulseInEchoHigh.
00:04:37
El nombre de la función es PulseIn con la I mayúscula
00:04:43
Quizás en pantalla parezca una L pero es una I mayúscula
00:04:48
Lo que hace es devolver un valor de tiempo en microsegundos que lo asignamos a la variable duración
00:04:53
El primer parámetro es el pin en donde espera por el pulso, en nuestro caso Echo
00:05:00
Y el segundo parámetro es High ya que espera por un pulso alto
00:05:06
en definitiva con esa simple línea ya tenemos el tiempo que ha transcurrido
00:05:12
desde la emisión del pulso ultrasonico hasta la recepción del mismo
00:05:17
provocado por el rebote en un objeto
00:05:22
ahora convertiremos ese valor de tiempo en distancia que es lo que nos interesa
00:05:24
distancia igual a duración dividido 58.2
00:05:30
para obtener la distancia medida en centímetros
00:05:38
debemos dividir el valor de duración por una constante que es 58.2 nuevamente este es un
00:05:41
valor especificado por el fabricante del sensor y no debe variarse muy bien ya con esas pocas
00:05:49
líneas tenemos la distancia al objeto más cercano a nuestro sensor el detalle es cómo hacemos para
00:05:56
ver el valor de la distancia si no tenemos ningún dispositivo de visualización como ser un panel
00:06:04
LCD. Aquí es donde entra en juego el monitor serial, también llamado monitor serie. Nuestra
00:06:10
computadora se comunica con Arduino mediante el cable USB, eso ya lo sabemos. Por el mismo
00:06:18
enviamos el código que escribimos para que se ejecute. Por el mismo cable podemos también
00:06:24
obtener información, es decir que Arduino le envíe información a la computadora y nosotros
00:06:30
podemos visualizarla en una ventana del IDE. Para activar la comunicación serial solo se requiere
00:06:36
agregar la siguiente línea de código en el setup. Serial.begin entre paréntesis 9600. 9600 es la
00:06:44
tasa de velocidad de la comunicación, la cantidad de bits por segundo que estaremos recibiendo y es
00:06:56
un valor adecuado para la mayoría de los casos. Ahora solo debemos enviar el valor
00:07:03
de la distancia, esto lo haremos con la siguiente línea. Serial.println entre paréntesis distancia.
00:07:09
La función println es println, es decir imprimir una línea. Colocará el valor de la variable
00:07:19
distancia y luego un enter de forma automática. Agreguemos un delay para que nos demore un
00:07:28
poco entre dato y dato, si no es muy rápido y difícil de visualizar. Con 200 milisegundos
00:07:36
es suficiente. Delay entre paréntesis 200. Vamos ya mismo a verificar y subir el programa.
00:07:43
Para abrir el monitor serial hacemos clic en el icono que se encuentra en el extremo
00:07:53
superior derecho como se muestra en pantalla. Ahí se abrirá una nueva ventana donde podremos
00:07:59
ver el valor de distancia que está leyendo el sensor. Como coloca cada valor en una nueva
00:08:05
línea se realiza un desplazamiento automático o scroll. El valor de más abajo es siempre
00:08:11
el último leído. Como se muestra en pantalla el sensor nos devuelve el valor leído en
00:08:18
centímetros. En mi caso, el circuito está sobre un escritorio apuntando a una pared que se encuentra
00:08:24
algo más de 3 metros. Por eso aparece 320 aproximadamente. En tu caso, por supuesto que
00:08:31
será otro valor. Para verificar, podemos colocar un objeto delante y luego ir acercándolo de a poco.
00:08:40
Se puede colocarla a mano pero no es lo ideal
00:08:47
Un trozo de cartón, una caja o nuestro teléfono celular
00:08:50
Darán un buen rebote a la señal y veremos como va cambiando el valor que nos muestra el monitor serial
00:08:55
Perfecto, ya con eso sabemos que el sensor funciona correctamente
00:09:01
Durante la prueba quizás viste que en algún momento mostró un valor negativo
00:09:06
Esto es normal y significa que el sensor está fuera de rango
00:09:11
ya sea porque el objeto está muy lejos o porque no recibe correctamente el rebote del pulso ultrasonico.
00:09:15
Ahora vamos a agregar unas líneas de código a nuestro programa
00:09:22
para que se encienda el LED cuando el sensor detecte una distancia de 20 centímetros o menos.
00:09:26
Es un método muy utilizado para la detección de obstáculos.
00:09:34
Si estamos haciendo un robot o dispositivo que se desplaza
00:09:37
seguramente desearemos que detecte si hay un obstáculo en su camino y actuar en consecuencia
00:09:41
como ser detener el motor de avance, recalcular una nueva ruta, etc.
00:09:47
Nosotros lo haremos haciendo encender un LED.
00:09:53
Escribamos la siguiente
00:09:57
if distancia menor igual 20 and and distancia mayor igual 0 cerramos paréntesis abrimos llave enter
00:09:59
la sentencia if ya la vimos en el capítulo 3 y la condición que deseamos evaluar es la distancia
00:10:14
es decir que si la distancia está entre 0 y 20 centímetros ejecutaremos el código dentro de las llaves
00:10:21
recuerdan que hablamos que algunas veces si el sensor está fuera de rango devuelve un valor negativo
00:10:29
por eso dentro del if colocamos luego del doble ampersand para que evalúe también si el valor es mayor a 0
00:10:36
de manera de desestimar si obtenemos una distancia con valor negativo
00:10:45
Queda claro entonces que este IF evaluará verdadero si la distancia está entre 0 y 20 centímetros
00:10:50
Por eso debemos encender el LED con
00:11:00
DigitalWrite entre paréntesis LED coma high
00:11:03
Como ya sabemos debemos aplicar una demora para poder visualizar el LED encendido
00:11:09
Lo que haremos es aprovechar el valor de distancia para generar una demora que sea proporcional a la distancia.
00:11:15
Escribamos las siguientes líneas.
00:11:23
Delay entre paréntesis distancia por 10.
00:11:26
Luego DigitalWrite entre paréntesis LED Low.
00:11:31
El delay en vez de tener un valor fijo será el producto de la distancia por 10.
00:11:37
entonces si por ejemplo entramos al IF con una distancia media de 20 centímetros
00:11:43
el delay será de 20 por 10 es decir 200 milisegundos
00:11:50
si el objeto se sigue acercando entonces el delay será un número menor
00:11:55
haciendo que el LED prenda y apague cada vez con mayor rapidez
00:12:01
luego solo resta apagar el LED y será todo el código necesario
00:12:06
Vamos a verificar, subir y abrir el monitor serial.
00:12:11
Como se puede ver en el monitor serial cuando la distancia sea de 20 centímetros o menos,
00:12:16
el LED encenderá y apagará de forma repetida y lo hará más rápidamente a medida que el objeto esté más cerca.
00:12:23
Una modificación posible al circuito es reemplazar el conjunto LED y resistencia directamente por un zumbador o buzzer.
00:12:31
entonces cuando el objeto esté en rango en vez de encender el led
00:12:40
encenderá el zumbador emitiendo un pitido
00:12:45
que se incrementará en frecuencia a medida que el objeto esté más cerca
00:12:49
muy parecido a lo que muchos coches tienen en su paragolpes al activar la marcha atrás
00:12:53
eso es todo por este capítulo
00:13:00
en el próximo veremos cómo utilizar un servomotor
00:13:02
que se caracteriza por tener una gran fuerza o torque y gran precisión también aprenderemos a
00:13:06
alimentar arduino con una alimentación externa como siempre les pido se suscriban para recibir
00:13:12
notificaciones y por cualquier duda o comentario lo pueden hacer debajo que con gusto les responderé
00:13:19
chao y hasta la próxima
00:13:26
- Materias:
- Electrónica
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado básico
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado medio
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado superior
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado básico
- Subido por:
- Victoriano G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 1
- Fecha:
- 8 de febrero de 2025 - 6:57
- Visibilidad:
- Clave
- Centro:
- IES JULIO VERNE
- Duración:
- 13′ 30″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 21.34 MBytes