Sensor de distancia Arduino usando el HC-SR04

En este tutorial, seguiré los pasos sobre cómo configurar un sensor de distancia Arduino usando el sensor ultrasónico HC-SR04.

Hay muchos proyectos diferentes en los que este tutorial será útil. Repaso solo algunos ejemplos a continuación.

Un sensor de distancia será útil en muchos proyectos de robots en los que conocer las distancias de los objetos será útil. Por ejemplo, puede utilizar la información de distancia para evitar obstáculos que puedan estar en su camino.

También puede utilizar el sensor de distancia HC-SR04 para detectar cuando la distancia a un objeto ha cambiado radicalmente. Puede usar algo como MyDevices Cayenne o su propia solución personalizada para alertarlo sobre el cambio.

Hay tantas posibilidades y esperamos construir y compartir algunos proyectos que harán uso de este sensor en un futuro próximo.

Si prefiere el Pi, también puede configurar el HC-SR04 para que funcione con el Raspberry Pi. Tanto Arduino como Raspberry Pi tienen muchos usos para un sensor de distancia.

Si está listo para comenzar a aprender, puede encontrar el tutorial completo a continuación. Incluso hemos incluido un video para ayudarlo a guiarlo a través de todos los pasos para configurar este sensor.

Equipo

Todo el equipo que necesitará para completar este sensor de distancia Arduino se enumera a continuación. Este tutorial es para el HC-SR04, así que asegúrese de elegir uno de esos.

Recomendado

Arduino Uno

Tablero de circuitos

Alambre de tablero

Sensor ultrasónico HC-SR04

Video

El siguiente video recorrerá todos los pasos para configurar un sensor ultrasónico HC-SR04 con Arduino.

Se puede encontrar una explicación completa por escrito justo debajo del video y describe algunas cosas adicionales que el video no incluye.

¿Adblock bloquea el video? Apóyenos suscribiéndose a nuestro servicio sin publicidad.

El sensor ultrasónico HC-SR04

El sensor de distancia ultrasónico HC-SR04 es un sensor asequible popular que proporciona de 2 cm (0,7 pulgadas) a 400 cm (157 pulgadas) de medición. Puede tener una precisión de hasta 3 mm (0,1 pulgadas), pero puede variar según la calidad del sensor.

Los sensores ultrasónicos son dispositivos relativamente simples y extremadamente útiles en muchas configuraciones de alta tecnología. Funcionan emitiendo ondas de sonido y luego esperando que reboten en un objeto cercano. El receptor detectará cuando las ondas sonoras hayan rebotado en el sensor.

Puede medir el tiempo que pasó desde que emitió la onda de sonido hasta que la recibió usando el sensor y un poco de código.

Como sabemos que la velocidad del sonido es de 340 metros por segundo o 0,0343 centímetros por microsegundo, podemos calcular la distancia utilizando el tiempo que tardó una onda de sonido en recuperarse. (Distancia = Tiempo * Velocidad)

Es importante recordar que debemos reducir a la mitad la velocidad del sonido o el tiempo que tarda en viajar, ya que solo queremos saber la distancia al objeto. Si no divide a la mitad uno de los valores, calculará la distancia al objeto y viceversa.

Debo señalar que las matemáticas utilizadas para calcular la distancia son muy rudimentarias y no son muy precisas. Sin embargo, debería ser lo suficientemente bueno para la mayoría de los proyectos.

Configuración del circuito del sensor de distancia

El circuito para este sensor ultrasónico de distancia Arduino es muy sencillo. No debería tomar más de un par de minutos configurarlo.

Siga los pasos a continuación o consulte el diagrama del circuito sobre cómo ensamblar este circuito súper fácil.

  • VCC se conecta a 5v
  • Trig se conecta al pin 2
  • Echo se conecta al pin 3
  • GND se conecta a GND

Código del sensor de distancia Arduino

Hay algunas implementaciones de código diferentes que puede usar para calcular la distancia. Este cálculo siempre se realiza utilizando la señal que está produciendo su sensor de distancia.

El método más fácil es usar una biblioteca, pero para este tutorial, escribiremos el código desde cero.

1. El código es bastante sencillo, si prefiere descargarlo, puede encontrarlo en nuestro Github. Alternativamente, puede continuar y aprender sobre lo que hace el código.

int trigger_pin = 2; int echo_pin = 3; long distance, pulse_duration;

Primero, necesitaremos encontrar todas las variables que necesitaremos en nuestro script. Necesitaremos definir los pines para el disparador y el eco.

También requerimos dos variables para nuestras distancias y la duración del pulso.

void setup() {    Serial.begin (9600);      pinMode(trigger_pin, OUTPUT);   pinMode(echo_pin, INPUT); }

A continuación, necesitamos codificar nuestra función de configuración. Esta función inicializará todo lo que necesitemos listo para nuestra función de bucle.

En primer lugar, iniciamos la salida en serie y configuramos la velocidad en baudios en 9600.

Como mencionamos anteriormente, el pin de disparo (trigger_pin) deberá configurarse como una salida. Este pin le dirá a nuestro sensor que emita la onda de sonido ultrasónico que captará el receptor.

El pin de eco (echo_pin) deberá establecerse como entrada. Este pin se elevará cuando la onda ultrasónica se haya recuperado y golpee el receptor.

void loop() {      //Set pin to high for 10 microseconds   digitalWrite(trigger_pin, HIGH);   delayMicroseconds(10);   digitalWrite(trigger_pin, LOW);     //Check the echo pin for when it goes high and save the time it took in microseconds)   pulse_duration = pulseIn(echo_pin, HIGH); 

A continuación, echamos un vistazo a nuestra función de bucle. Es donde dispararemos nuestro sensor de distancia ultrasónico HC-SR04 y calcularemos la distancia al objeto más cercano.

Comenzamos estableciendo nuestro trigger_pin (echo) alto, y esto emitirá ondas ultrasónicas para que las reciba nuestro echo_pin (receptor). Mantenemos el pin alto durante 10 microsegundos antes de volver a ponerlo en bajo.

Por último, usamos la función pulseIn para medir el tiempo que tarda el pin de eco (echo_pin) en pasar de bajo a alto. Devuelve el tiempo en microsegundos.

Si hay un error, simplemente devolverá 0, y esto indica que nunca recibió un pulso completo dentro del período de tiempo de espera.

  // Math: distance = ( (duration) * (speed of sound in cm per microsecond 0.0343 / 2)   distance = round(pulse_duration * 0.0171);    // Math: distance = ( (duration) * (speed of sound in inches per microsecond 0.01350 / 2)   //distance = round(pulse_duration/0.00675); 

Ahora tenemos nuestros cálculos de distancia, como puede ver arriba, tenemos dos. Uno es para centímetros y el otro es para pulgadas.

La matemática para centímetros y pulgadas es aproximadamente la misma excepto por la velocidad del valor del sonido. Explicaré el cálculo de cm.

La velocidad del sonido en cm por microsegundo es aproximadamente 0.0343. Dividimos esto por dos ya que solo medimos la mitad de la distancia tomada por el sonido ultrasónico. Esto nos da el valor de 0.0171.

  Serial.print(distance);   Serial.print("cm");   Serial.println();      delay(500); }

Por último, necesitamos imprimir nuestra información para poder verla. Hacemos uso de Serial.print para que todos nuestros datos se impriman en el monitor de serie.

Primero imprimimos la distancia, seguida de cm. Puede cambiar cm a pulgadas si es necesario. Después de esto, enviamos un Serial.println para que nuestra próxima línea de datos esté en una nueva línea.

Finalmente, retrasamos el script en 500 milisegundos.

Ese es todo el código que ahora se cubre, recuerde que puede descargarlo de GitHub si tiene problemas. También puede encontrar el código final sin comentarios justo debajo.

int trigger_pin = 2; int echo_pin = 3; long distance, pulse_duration;  void setup() {  Serial.begin (9600);  pinMode(trigger_pin, OUTPUT); pinMode(echo_pin, INPUT);  digitalWrite(trigger_pin, LOW); }  void loop() {  digitalWrite(trigger_pin, HIGH); delayMicroseconds(10); digitalWrite(trigger_pin, LOW);  pulse_duration = pulseIn(echo_pin, HIGH);  distance = round(pulse_duration * 0.0171);  //distance = round(pulse_duration/0.00675);  Serial.print(distance); Serial.print("cm"); Serial.println();  delay(500); }

2. Ahora debería estar listo para implementar el código en Arduino y ver su creación en acción.

Prueba del circuito y el código

1. Para cargar el código, haga clic en verificar (1.) y luego cargar (2.).

Si tiene problemas, verifique el código para asegurarse de que todo sea correcto.

Además, verifique que su Arduino esté conectado y lo tenga seleccionado en Herramientas-> Puerto:

3. Su sensor de distancia Arduino ahora debería estar en acción. Cargue el monitor en serie ubicado en el menú de herramientas y debería ver que se imprimen algunas medidas.

Solución de problemas

Hay algunas cosas que salen mal en este tutorial. Destacaré algunos de los problemas más comunes con los que se encuentra la gente.

  • Si el compilador de Arduino arroja errores, vuelva a revisar el código para verificar que lo haya copiado correctamente. El compilador generalmente señalará cualquier problema, solucionará estos problemas y el código debería compilarse.
  • Los valores extraños que no tienen sentido suelen estar relacionados con un sensor de distancia mal cableado o con un sensor de distancia defectuoso. Un sensor mal cableado es mucho más fácil de arreglar, ya que solo necesita verificar su circuito. Si está defectuoso, deberá comprar uno nuevo. Además, verifique que haya declarado los pines correctos en el script.
  • Si tiene problemas para cargar el código en Arduino, verifique que lo haya seleccionado en el IDE. Se encuentra en «Herramientas-> Puerto:» y «Herramientas-> Placa».

Espero que este tutorial le haya mostrado todos los pasos sobre cómo configurar un sensor de distancia Arduino que hace uso del HC-SR04. Si tiene comentarios, sugerencias o cualquier otra cosa, no dude en dejar un comentario a continuación.