Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Sensor distancia arduíno - 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:
Sensor distancia arduíno
Buenas tardes. Tengo aquí otro esquema donde he introducido un nuevo elemento que sería el sensor HC-SR04 que es el que aparece aquí.
00:00:05
Si veis, consta de cuatro pines. Estos serían los cuatro pines. Está formado por un VCC, que sería alimentación, un GND, que sería tierra, y luego un trigger y un eco.
00:00:15
El HC-SSR04 es un sensor de distancia por ultrasonidos
00:00:26
muy utilizado en proyectos con Arduino, robótica y automatización
00:00:35
Su función es medir la distancia a un objeto sin contacto físico
00:00:39
utilizando ondas sonoras de alta frecuencia, o sea, ultrasonidos
00:00:42
imperceptibles para el oído humano
00:00:45
El rango típico de medición va entre 2 cm y 400 cm
00:00:48
Y la precisión aproximada es de más o menos 3 milímetros de error.
00:00:54
La alimentación que necesita este sensor es de 5 voltios y este tipo de sensor se usa en robots que evitan obstáculos, en sistemas de aparcamiento, en medidores de nivel, domótica y seguridad.
00:01:00
¿Cómo funciona el sensor?
00:01:14
El sensor tiene dos transductores circulares.
00:01:18
Aquí sería una imagen del sensor y estaría formada en su parte frontal por estos dos traductores que serían estos de aquí y uno sería el emisor que sería el T que aparece aquí en el que envía un pulso de ultrasonidos.
00:01:22
Luego el otro transductor, que sería este, el R, recibe el eco reflejado por el objeto.
00:01:41
El proceso es el siguiente, Arduino envía un pulso eléctrico al pin TRICK, que sería de trigger, este aquí Arduino envía un pulso, el sensor emite un sonido de ultrasonidos que iría a 40 kHz, el sonido, una vez que lo ha emitido, este sería el sonido original por ultrasonidos,
00:01:47
El sonido rebota en un objeto
00:02:09
Y el eco
00:02:12
Que sería la vuelta de ese sonido
00:02:14
Vuelve al sensor
00:02:16
Que sería el
00:02:18
Receiver, que sería el R
00:02:19
El que transmite sería el T
00:02:22
Y el que recibe sería el R
00:02:24
El pin eco
00:02:27
Que sería el otro pin que aparece aquí
00:02:28
Permanece en high durante el tiempo
00:02:30
Que tarda el sonido en ir y volver
00:02:32
Solo en ese
00:02:34
Intervalo de tiempo
00:02:37
En ir y volver
00:02:38
Arduino va a medir ese tiempo y calculará la distancia
00:02:39
¿Cómo la calcula? La distancia la calcula a través de una fórmula
00:02:42
que sería el tiempo por la velocidad del sonido, dividido entre dos
00:02:48
puesto que el divisor es debido porque el sonido tiene que recoger
00:02:51
tanto la ida como la vuelta, por eso lo divide entre dos
00:02:58
por lo tanto los pines del sensor son cuatro pines que sean el VCC
00:03:01
que es este de aquí, en el que sería el de alimentación 5 voltios, aquí se ve muchísimo mejor, aquí tenemos el UCC que sería el de 5 voltios, el trigger que sería la entrada de disparo, por eso se llama trigger, es el disparo el que envía el ultrasonido y que necesita pues un pin de entrada para que entre un valor alto y genere la salida del ultrasonido.
00:03:06
Después tenemos el otro pin, que sería el eco, en el que sería la salida.
00:03:36
Cuando lo recibe, ha chocado contra el objeto y recibimos esos ultrasonidos,
00:03:39
por tanto, necesitamos un pin de salida.
00:03:43
Este pin de salida lo que va a hacer es que recogerá ese eco que va a recibir.
00:03:49
Y por último, es el último, que sería el GND,
00:03:56
que es para cerrar el circuito correctado a tierra o a cero voltios.
00:03:59
por tanto este es el transmisor y este es el receptor
00:04:02
vamos a ver el circuito
00:04:06
vamos a quitar esto
00:04:11
y este sería el circuito
00:04:12
si nosotros le damos, este es el código que aparece aquí que luego explicaré
00:04:14
y lo vamos a hacer poco a poco
00:04:17
cuando le damos a simular
00:04:19
y cerramos el código
00:04:20
si yo selecciono el sensor de ultrasonidos
00:04:23
veis que aquí aparece un círculo verde
00:04:29
que es lo que nosotros podemos modificar, él va a ir detectando distintas distancias
00:04:31
en función de cómo lo hallamos, dónde está el obstáculo.
00:04:37
Esto sería el obstáculo en el que el que transmite ultrasonido llega hasta el obstáculo
00:04:41
y rebota y lo recoge el receptor, que sería este, a través del eco.
00:04:45
Veis aquí que está midiendo 90,2 centímetros, el código lo he hecho con el monitor en serie
00:04:50
para que detectemos la distancia a la que está el objeto.
00:04:55
Veis, ahora mismo está en 90,2, aproximadamente le pone que la distancia será 89, si yo lo modifico y el objeto está más cerca, veis, se modifica y aparece que estaría a 64 centímetros.
00:05:00
Siempre hay un intervalo de error entre la medición, pero es un error muy pequeño.
00:05:13
Bien, vamos a hacer el circuito y vamos a explicar el código.
00:05:21
Por lo tanto, cogemos un nuevo elemento, creamos un nuevo proyecto y vamos a ir un poquito deprisa para ponerlo.
00:05:28
Esta sería la placa de Arduino y vamos a poner todos los objetos, todos, para que nos aparezca el sensor de distancia que sería este de aquí.
00:05:41
Bien, vamos a conectar primero la alimentación, el VCC, con 5 voltios, como siempre.
00:05:54
Lo ponemos de color rojo.
00:06:02
A continuación cogemos el GND y lo vamos a unir con el de arriba.
00:06:05
Y con esto ya tendríamos cerrado el circuito.
00:06:13
Lo ponemos de color negro.
00:06:15
Y lo único que nos quedaría son el trigger y el eco.
00:06:18
El trigger lo tenemos que conectar a un pin.
00:06:20
Que lo vamos a poner concretamente al pin 2.
00:06:24
Lo vamos a poner de color verde.
00:06:32
y luego el
00:06:34
el eco lo vamos a conectar con el pin 3
00:06:37
para diferenciarlos el eco lo vamos a poner de color azul
00:06:41
y el trigger de color verde
00:06:50
ya estaría el circuito y lo único que nos quedaría es el código
00:06:55
vamos a poner texto y le damos a continuar
00:06:59
y borramos estas dos líneas
00:07:02
y estas
00:07:04
bien, ya tenemos las conexiones
00:07:07
hemos puesto el trigger al 2 y el eco al pin 3. Hemos dicho que el trigger se configura
00:07:11
como una salida, puesto que le tiene que enviar al trigger un valor de un 1 para que el sensor
00:07:23
envíe la señal de ultrasonidos hacia el objeto. Después el eco va a rebotar en el objeto
00:07:31
y obtendremos la vuelta del sonido
00:07:40
entonces el eco se va a encargar
00:07:45
será un pin de lectura
00:07:48
y leerá si le ha llegado señal o no
00:07:50
bien, por lo tanto el trigger se configurará de salida
00:07:53
y el eco se configurará como entrada
00:08:00
lo primero vamos a generar dos variables
00:08:03
acordaos, en C++ se podían definir dos variables
00:08:05
a través de estas dos líneas con define
00:08:08
Define en el que vamos a poner que trig sea el 2 y define el echo que sería el 3.
00:08:12
Bien, ya tenemos las dos constantes que serían estas dos.
00:08:26
Donde yo ponga trig supone que es un 2 y donde ponga yo echo se hace suponer que es un 3.
00:08:29
Bien, vamos a la configuración inicial que se realizaría en el setup,
00:08:36
en aquel método en el que se lee una única vez.
00:08:40
vamos a configurar los pines, habrá un pin de entrada y un pin de salida
00:08:42
el pin de entrada y el pin de salida
00:08:46
el pin de trig, que sería concretamente el 2
00:08:51
ese le vamos a hacer de, lo hemos dicho, de salida, entonces sería output
00:09:02
mientras que el pin echo, que sería el 3
00:09:05
será un pin de entrada, input
00:09:12
Una vez configurados, configuramos también el monitor en serie, que sería este de aquí para que podamos ver los resultados. Si os acordáis de otros vídeos, eso se hacía con Serial y a través de su método Begin, para que el monitor en serie se inicialice. Esto se hacía con 9600 baudios por defecto.
00:09:15
Y ya tendríamos esto que sería la primera parte. Una vez que hemos realizado el setup, que hemos inicializado los dos pines y hemos inicializado también el monitor en serie, lo siguiente va a ser, vamos a ir hacia el loop,
00:09:39
donde vamos a hacer que se ponga el trig en un valor bajo, low o cero
00:09:58
para que se estabilice el sensor
00:10:06
después envía un pulso high de 10 microsegundos
00:10:08
va a ser una cantidad de tiempo muy pequeña
00:10:12
o sea primero dejamos que la señal del trig sea cero
00:10:15
se estabiliza y después mandamos una señal de ultrasonidos durante 10 microsegundos únicamente
00:10:21
esos 10 microsegundos llegaran hasta el objeto
00:10:27
el sensor emite el ultrasonido durante esos 10 microsegundos
00:10:29
y Arduino lo que va a hacer es que cuando rebote y llegue al eco
00:10:34
va a medir el eco con una función o un método que se llama pulseIn
00:10:38
se calcula la distancia en centímetros
00:10:43
ya hemos visto que la distancia era
00:10:46
la distancia era, vamos a ponerla aquí
00:10:48
para medir la distancia
00:10:51
se va a realizar así
00:10:58
distancia
00:11:02
es igual
00:11:03
a duración
00:11:06
por
00:11:11
0,034
00:11:15
que sería aproximadamente
00:11:19
la velocidad del sonido
00:11:20
partido de 2 puesto que hay
00:11:22
un camino de ida y uno de vuelta
00:11:24
0,034
00:11:26
serían concretamente centímetros
00:11:28
por microsegundo
00:11:30
que es la velocidad de sonido del aire
00:11:32
¿Qué ocurre físicamente cuando el circuito está funcionando?
00:11:34
Pues cada vez que el Arduino envía un pulso al sensor
00:11:38
Este emite un sonido ultrasonico
00:11:43
Este sonido rebota en el objeto que tiene delante y vuelve al sensor
00:11:45
Ya lo vimos, a través del T, traductor T, emisión, traductor R, receptor
00:11:49
Midiendo el tiempo que tarda en regresar esa señal de otro sonido desde que va hasta que viene
00:11:58
y eso se realiza a través de esta fórmula que aparece aquí
00:12:04
y esta es la que vamos a medir
00:12:07
bien, vamos por tanto a crear una variable
00:12:09
y lo vamos a poner aquí
00:12:17
primero en el loop vamos a crear dos variables
00:12:20
concretamente una sería de tipo long
00:12:26
El tipo long es un tipo de números decimales, pero un tipo grande, sería un poquito mayor que el tipo, bueno, sería un double ni sería un float, sería un tipo long que es un número grande.
00:12:29
El long lo vamos a llamar duración
00:12:50
Y luego vamos a poner otro tipo long que sería distancia
00:12:54
Vale, una vez que hemos creado estas dos variables
00:13:02
Aquí, ¿qué vamos a hacer?
00:13:08
Primero, hemos dicho que íbamos a lanzar desde el trigger un valor bajo
00:13:12
Para estabilizar el sensor
00:13:16
Y vamos a poner digital
00:13:17
acordaos, write
00:13:26
para escribir un valor
00:13:28
en un determinado pin
00:13:30
como el trigger es un pin de salida
00:13:32
en trigger
00:13:35
le vamos a dar un valor
00:13:36
primero de 0, entonces vamos a poner un valor
00:13:38
de 0 o de low, podríamos haber puesto ahí también
00:13:40
bien, posteriormente
00:13:43
vamos a leer
00:13:44
el tiempo
00:13:47
del echo
00:13:51
bueno, primero vamos
00:13:52
antes del echo
00:13:55
Lo voy a poner aquí, pero luego lo vemos. Lo que primero nos quedaría aquí es que una vez que se establece el sensor o se estabiliza el sensor con un valor de cero, le decimos que detenga delay microseconds y le vamos a poner 10 microsegundos.
00:13:57
Acordaos, aquí ahora estamos diciéndole que durante 10 microsegundos envíe un pulso, enviar pulso durante 10 microsegundos.
00:14:22
Pero para ello, aquí hemos estabilizado, para enviar un pulso durante 10 microsegundos tenemos que decirle digital write, ahora trig, trig 1.
00:14:47
Ahora lo explico. Bien, ya tenemos el valor. Aquí espera 10 microsegundos que envíe el pulso durante 10 microsegundos y posteriormente volvemos a apagarlo.
00:15:10
digital write
00:15:24
trig
00:15:25
vamos a separarlo
00:15:32
para que se vea mejor, aquí tenemos la variable
00:15:34
de tipo long
00:15:36
vale, aquí tenemos
00:15:38
vamos a separarlo
00:15:47
para que quede muchísimo mejor
00:15:49
estabilizar el sensor y
00:15:50
primero aquí sería estabilizar el sensor
00:15:52
y luego tendríamos aquí esta otra parte
00:15:54
hemos hecho
00:15:57
vamos a ver
00:16:02
creamos
00:16:03
Tenemos dos variables de tipo long, que sería de tipo de 32 bits.
00:16:07
Bien, en la primera fase lo que hemos es creado dos variables, una que es a maturación y otra que es a distancia.
00:16:20
Son de tipo long. Esto es un rango de valores bastante alto, de valores decimales, de 32 bits.
00:16:25
Perdón, de valores enteros de 32 bits.
00:16:31
Eso es lo que vamos a generar aquí, son dos variables que serían duración y distancia en el que en vez de utilizar, por ejemplo, un tipo long, o sea, un tipo in entero, que sería un valor entero más corto, que estaría aproximadamente entre menos 32.000 y 32.000 como valor numérico, pues utilizamos un tipo long que es muchísimo mayor.
00:16:35
Estamos hablando de valores que van desde menos 2.147 millones a más 2.147 millones.
00:16:57
Ese es el rango para que podría alojar esta variable, pero que aloja valores enteros, de tipo long, enteros.
00:17:06
Bien, posteriormente estabilizamos el sensor, lo he explicado antes.
00:17:14
Primero le decimos que le pase al trigger, que era el pin 2, le pase un valor de 0.
00:17:18
Con eso establecemos el sensor y posteriormente enviamos un pulso de 10 microsegundos.
00:17:26
¿Por qué lo enviamos? Primero le envía un valor de un 1, le envía un valor al pin 2 de un valor de 1
00:17:33
y aquí nos ha faltado que haya un intervalo entre, vamos a copiarlo aquí, 2 microsegundos.
00:17:41
estabilizamos el sensor
00:17:55
que es, le enviamos desde el pin 2
00:17:58
o sea, hacia el trig
00:18:00
le enviamos un valor de 0
00:18:01
con eso estabilizamos el sensor
00:18:03
¿cuánto?
00:18:05
delay microseconds es un método
00:18:06
que nos va a paralizar la ejecución
00:18:07
o la pausa
00:18:10
durante un determinado tiempo
00:18:11
acordaos que ya utilizamos delay
00:18:13
y delay era en milisegundos
00:18:14
ahora, delay microseconds es en microsegundos
00:18:16
o sea, cantidades muy muy pequeñas
00:18:19
y le estamos diciendo que
00:18:21
tenga un 0 durante 2 microsegundos
00:18:22
o sea que durante los 2 microsegundos
00:18:25
le hemos enviado un 0
00:18:27
para que establece el sensor
00:18:28
posteriormente una vez que han pasado
00:18:30
esos 2 microsegundos
00:18:33
le enviamos ahora a TRIG un valor de 1
00:18:34
con lo cual está activando el valor
00:18:37
de TRIG para que envíe
00:18:39
un pulso
00:18:40
de ultrasonidos
00:18:43
¿cuánto tiempo vamos a enviar ese pulso de ultrasonidos?
00:18:44
aquí tendríamos
00:18:48
que en un principio
00:18:48
con el valor de 0
00:18:51
hacia TRIG
00:18:53
le estamos diciendo que estabilice durante 2 microsegundos
00:18:54
el sensor
00:18:57
posteriormente una vez que han pasado esos 2 microsegundos
00:18:58
lo que hacemos es que ahora le mandamos a TRIG
00:19:01
le mandamos a través de DigitalWrite
00:19:03
le mandamos un 1 o un HIGH
00:19:05
lo que hace que
00:19:07
este trigger funcione
00:19:09
y haga que el sensor envíe una señal
00:19:11
de ultrasonidos, pero ¿cuánto tiempo lo vamos a hacer?
00:19:13
durante 10 microsegundos
00:19:15
te fijas aquí, 10 microsegundos
00:19:17
porque le estamos diciendo que
00:19:19
este valor de 1 se lo proporcione durante
00:19:21
10 microsegundos
00:19:23
una vez que hayan pasado esos 10 microsegundos
00:19:24
ya habrían pasado 12 porque había 2 de estabilización
00:19:26
en 0 y 10 con un valor de 1
00:19:29
cuando haya llegado a 12 microsegundos
00:19:31
el
00:19:33
sensor deja de emitir
00:19:34
la señal de ultrasonidos
00:19:37
ahora lo único que nos interesa
00:19:39
y porque lo deja de transmitir
00:19:41
porque le hemos puesto aquí después de esos 10 microsegundos
00:19:43
que le ponga otra vez el valor de trig
00:19:45
a un valor 0
00:19:47
entonces ahora que nos quedaría
00:19:48
no nos quedaría nada más que recoger
00:19:50
el valor del eco
00:19:53
o sea el rebote
00:19:55
de la señal, aquí han pasado ya
00:19:56
los 10 microsegundos, al ponerle un 0
00:19:59
en trig, estas líneas desaparecen
00:20:00
ya no hay pulso de salida, ahora lo único
00:20:03
que nos quedaría es recoger
00:20:05
cuando haya rebotado con el objeto
00:20:06
el pulso de llegada que sería
00:20:08
el eco, y el eco es un pin
00:20:11
de entrada en el que lo que va a recoger
00:20:12
es ese pulso a través
00:20:14
de este pin, eso se va a realizar
00:20:16
a través de una función que se llama
00:20:19
pulseIn, vamos a leer el tiempo del eco
00:20:20
y lo ponemos aquí debajo
00:20:22
vale
00:20:24
lo primero que vamos a hacer
00:20:26
es, hemos utilizado una variable
00:20:29
que se llama duración
00:20:30
y en esa variable de tipo long vamos a recoger
00:20:31
lo que venga
00:20:35
el pulso que venga rebotado
00:20:36
eso se hace con una función que se llama
00:20:38
pulseIn
00:20:40
que
00:20:41
tiene dos parámetros, uno sería el eco
00:20:44
lógicamente
00:20:47
y le estamos diciendo, oye ponme
00:20:49
en el eco un 1, ahora
00:20:51
el eco al activar este pin
00:20:53
con un 1
00:20:55
le estamos diciendo que recoja ese pulso
00:20:56
que va a venir rebotado
00:20:59
del objeto, bien una vez que
00:21:01
hemos leído el eco
00:21:03
nos quedaría ahora calcular la distancia
00:21:04
calcular
00:21:07
la
00:21:07
distancia
00:21:10
en centímetros y eso tenemos otra variable de tipo long que hemos definido arriba que se llama
00:21:12
distancia y donde vamos a recoger la fórmula que hemos puesto aquí esta sería la fórmula de que
00:21:18
nos va a permitir calcular la distancia que ha recorrido ya lo he explicado anteriormente
00:21:26
distancia o espacio es igual a velocidad por tiempo eso es una fórmula básica en física
00:21:31
espacio es igual a velocidad por tiempo por tanto esta sería la la fórmula que
00:21:38
podemos aplicar entonces lo que tenemos que poner aquí primero la velocidad
00:21:49
hemos dicho que la velocidad era centímetros por microsegundo y que
00:21:52
aproximadamente tiene un valor de 0.034 eso es una constante nada más que
00:21:57
puedes saber que es esta y por la duración lo que ha durado o sea por el
00:22:00
tiempo, veis esta es la velocidad por el tiempo y la duración que es lo que ha durado entre que
00:22:05
se envió el pulso y vino, claro hay que dividirlo entre dos porque es una de llamada y una de vuelta
00:22:11
o sea una de ida y una vuelta por eso dividimos la mitad para dividir porque este recorrido si
00:22:17
no pusiéramos dividido entre dos tendríamos que mediríamos la distancia que hay de aquí a aquí
00:22:24
y luego la que hay de aquí a aquí que sería el doble de lo que queremos medir porque nosotros
00:22:29
queremos saber qué distancia hay entre el sensor y el objeto por eso se divide entre dos una vez
00:22:33
que tenemos calculada la distancia que sería este de aquí y que nos quedaría ahora mostrar
00:22:39
el resultado donde vamos a mostrar el resultado en el monitor en serie mostrar un resultado el
00:22:45
monitor en serie era serial el objeto serial y para imprimir el monitor se utilizaba un método
00:22:54
que se llama print el print vamos a poner en principio vamos a poner en distancia distancia
00:23:02
la cadena distancia con un espacio y esto lo vamos a copiar y puesto que vamos a poner tanto
00:23:13
el valor de la distancia copiar y copiar después de distancia tendríamos que queremos que imprima
00:23:21
la variable distancia
00:23:37
que es la variable que hemos
00:23:38
calculado aquí
00:23:41
o sea que imprimiría distancia dos puntos
00:23:42
espacio, luego el valor de la distancia que ha calculado
00:23:45
y por último nos pondría
00:23:47
los centímetros para que
00:23:49
pongamos unidades a esa distancia
00:23:51
dejamos un espacio y ponemos centímetros
00:23:53
y con esto tendríamos
00:23:55
solo nos faltaría poner
00:23:57
aquí
00:23:59
como este método se está repitiendo
00:23:59
infinitas veces
00:24:03
vamos a hacer que eso lo realice cada un cierto tiempo.
00:24:05
Entonces le vamos a poner un delay para que pause la ejecución
00:24:10
cada, por ejemplo, 300 milisegundos.
00:24:13
Y ya estaría el circuito. Vamos a ver si funciona.
00:24:20
Vamos a darle aquí a Iniciar simulación
00:24:24
y nos dice que hay un error.
00:24:27
Dice que la directiva está mal porque he puesto aquí,
00:24:33
si veis, no he puesto define, lo he escrito mal
00:24:36
ahora estaría bien, le damos a ejecutar
00:24:40
y vemos que funciona perfectamente
00:24:45
vamos a poner el esquema aquí
00:24:47
y vamos a seleccionar la distancia
00:24:51
si vamos al monitor en serie, vemos que distancia
00:24:55
pero veis, me lo está poniendo
00:24:59
me lo está poniendo todo de seguido en la misma línea
00:25:01
y yo quiero que aparezca en vertical
00:25:05
que haya un retorno de carro por cada vez que la pone
00:25:07
entonces vamos a pararlo
00:25:11
y aquí serial tiene un método que se llama print
00:25:12
pero tiene otro método que se llama println
00:25:16
ln es que además de imprimir centímetros
00:25:19
luego genera un retorno de carro que iría a la siguiente línea
00:25:23
con eso evitamos que aparezcan todos así
00:25:27
le damos a ejecutar y ahora vamos viendo que nos sale los 112 centímetros
00:25:29
siempre hay un pequeño intervalo de error entre lo que sale aquí y la medida del sensor
00:25:37
si ponemos el obstáculo más cerca pasaría 56 centímetros y así sucesivamente en función de la distancia a la que esté el objeto
00:25:43
- Idioma/s:
- Materias:
- Informática
- 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
- Autor/es:
- Francisco José González Constanza
- Subido por:
- Francisco J. G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 2
- Fecha:
- 16 de diciembre de 2025 - 9:19
- Visibilidad:
- Público
- Centro:
- IES CIFP a Distancia Ignacio Ellacuría
- Duración:
- 26′ 01″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 611.95 MBytes