Sensor de distancia Arduino HC SR04

Sensor de distancia Arduino HC SR04

Los sensores de distancia por ultrasonidos de Arduino son muy usados en proyectos de robótica debido a su relativa simplicidad, suficiente precisión y bajo coste. Pueden utilizarse como medio para esquivar obstáculos, medir objetos, simular mapas de habitaciones y señalar la aproximación o alejamiento de objetos. El sensor ultrasónico de distancia más utilizado es el HC SR04. En este tutorial nos familiarizaremos con el funcionamiento de este medidor de distancia, consideraremos algunas variantes de conexión a Arduino, y veremos ejemplos de código para utilizarlo.

Sensor de distancia en proyectos Arduino

Principio de funcionamiento de los sensores de ultrasonidos

La capacidad de un sensor ultrasónico para detectar la distancia a un objeto se basa en el principio sonar: al enviar un haz de ultrasonido y recibir su reflejo con retraso, el dispositivo determina la presencia de objetos y la distancia a ellos. Las señales ultrasónicas generadas por el receptor, reflejadas por el obstáculo, vuelven a él después de un cierto período de tiempo. Es este intervalo de tiempo el que se convierte en la característica que ayuda a determinar la distancia al objeto.

Atención: Como el principio de funcionamiento se basa en el ultrasonido, este sensor no es adecuado para determinar la distancia a los objetos que absorben el sonido. Los objetos con una superficie lisa son óptimos para la medición.

Descripción del sensor HC SR04

Este sensor proporciona una medición precisa y alta estabilidad. Su rango de medición es de 2 a 400 cm. No se ve afectado significativamente por la radiación electromagnética o la energía solar. El módulo arduino HC SR04 también incluye un receptor y un transmisor.

El sensor ultrasónico HC SR04 tiene estos parámetros técnicos:

  • Tensión de alimentación de 5V;
  • Parámetro de funcionamiento de la fuerza ocular t – 15 mA;
  • Corriente pasiva < 2 mA;
  • Ángulo de visión general – 15°;
  • Resolución táctil – 0,3 cm;
  • Ángulo de medición – 30°;
  • El ancho del pulso es de 10-6 s.

El sensor está equipado con cuatro pines:

  • Contacto de potencia +5V DC;
  • Trig – señal de entrada;
  • Echo – señal de salida;
  • GND es la salida “Tierra”.

Esquema de interacción entre Arduino y HC SR04

Arduino distance sensor HC SR04El funcionamiento del sensor de ultrasonidos es el siguiente:

    • El sensor esperará un pulso alto (HIGH) con una duración de pulso 10 μs (10 microsegundos) para comenzar su ciclo de detección a distancia.
    • En el sensor ultrasónico hc sr04 conectado al arduino será convertido en 8 pulsos con una frecuencia de 40 kHz, que serán enviados a través del trigger (Trig);
    • Cuando los pulsos emitidos llegan a un obstáculo, rebotan y vuelven, siendo recibidos por el receptor, el cual generará un pulso alto (HIGH) en la salida (pin Echo) de igual duración que el tiempo transcurrido entre la emisión y la recepción del pulso.
    • En el lado del controlador, la señal recibida debe ser convertida a distancia utilizando fórmulas. Al dividir el ancho del pulso por 58.2, obtenemos los datos en centímetros, cuando se divide por 148 – en pulgadas.

Funcionamiento del sensor utltrasónico de distancia

Cómo conectar el sensor HC SR04 a Arduino

Conectar un sensor de distancia ultrasónico a la placa Arduino es muy fácil. El diagrama de cableado se muestra en la figura.

hc-sr04 arduino

Conectar el contacto de tierra al terminal GND de la placa Arduino, conectar la salida de potencia a 5V. Conectar las salidas Trig y Echo al arduino en los pines digitales. En el siguiente ejemplo se muestra la conexión con una placa de prototipado:

Conexión del sensor HC-SR04 a la placa Arduino

Librería HC SR04

Para facilitar el trabajo con el sensor de distancia HC SR04 en arduino se puede utilizar la librería NewPing. No tiene problemas con el acceso de ping y añade algunas características nuevas.

Las características de la librería son las siguientes:

  • Capacidad para trabajar con varios sensores ultrasónicos;
  • Puede trabajar con el sensor de distancia utilizando un solo pin;
  • No hay retardo de 1 segundo en ausencia de eco de pulso;
  • Para una fácil corrección de errores, hay un filtro digital incorporado;
  • Máxima precisión en el cálculo de distancias.

Puede descargar la librería NewPing aquí

Precisión de medición de la distancia del sensor HC SR04

La precisión del sensor depende de varios factores:

  • temperatura y humedad del aire;
  • la distancia al objeto;
  • ubicaciones relativas al sensor (según el diagrama de radiación);
  • la calidad de los componentes del módulo de encóder.

 

HC-SR04

El principio de funcionamiento de cualquier sensor ultrasónico se basa en el fenómeno de reflexión de las ondas acústicas que se propagan en el aire. Pero como se sabe por el curso de la física, la velocidad de propagación del sonido en el aire depende de las propiedades de este mismo aire (principalmente de la temperatura).

El sensor, sin embargo, al emitir ondas y medir el tiempo antes de su retorno, no tiene idea de en qué entorno se extenderán y toma un cierto valor promedio para los cálculos. En condiciones reales, debido al factor de temperatura del aire, el sensor HC-SR04 tiene un margen de error de 1 a 3-5 cm.

El factor de distancia es importante porque la probabilidad de reflexión de los objetos vecinos aumenta y la señal misma se desvanece con la distancia.

Además, para aumentar la precisión, el sensor debe estar correctamente alineado: el objeto debe estar dentro del cono del patrón direccional. En pocas palabras, los “ojos” del HC-SR04 deben mirar directamente al objeto.

Para reducir los errores y los errores de medición, normalmente se realizan los siguientes pasos:

  • Calcular valores promedio (medir varias veces, quitar las ráfagas, luego encontrar el promedio);
  • Utilizar sensores (por ejemplo, DHT11 o DHT22) para detectar la temperatura e introducir los factores de corrección;
  • Montar el sensor en un servomotor, con la ayuda del cual lo vamos girando moviendo el patrón hacia la izquierda o hacia la derecha.

Ejemplos de uso de sensores de distancia

Veamos un simple ejemplo de proyecto con una placa Arduino Uno y un sensor de distancia HC SR04. En el sketch obtendremos el valor de la distancia a los objetos y los mostraremos en el monitor del puerto en el entorno IDE de Arduino. Podrá cambiar fácilmente el croquis y el diagrama de cableado para que el sensor señale la aproximación o retirada de un objeto.

Conexión del sensor al arduino

Al escribir el código, se utilizó la siguiente variante de conexión de sensor:

  • VCC: +5V
  • Trig: pin 12
  • Eco: pin 11
  • Tierra: (GND)

Ejemplos de Programación con el sensor HC SR04

Empecemos a trabajar con el sensor de inmediato con una variante relativamente compleja, sin utilizar bibliotecas externas.

En este boceto, realizamos esta secuencia de acciones:

  • El pulso corto (2-5 microsegundos) pone el sensor de distancia en modo de ecolocalización, enviando ondas ultrasónicas con una frecuencia de 40 kHz al espacio circundante.
  • Esperar hasta que el sensor analice las señales reflejadas y determine la distancia por retardo.
  • Obtener el valor de distancia. Para ello, espere hasta que HC SR04 emita un impulso proporcional a la distancia en la entrada de ECHO. Determinamos la duración del pulso mediante la función pulseIn, que devolverá el tiempo transcurrido antes de que cambie el nivel de señal (en nuestro caso, antes de que aparezca el borde del pulso).
  • Una vez recibido el tiempo, lo traducimos a una distancia en centímetros dividiendo el valor por una constante (para el sensor SR04 es 29,1 para la señal de ida, y la misma cantidad para la señal de regreso, que en total dará 58,2).

Si el sensor de distancia no lee la señal, la conversión de la señal de salida nunca tomará un valor de pulso corto (LOW). Dado que algunos de los sensores tienen diferentes tiempos de retardo dependiendo del fabricante, se recomienda ajustar el tiempo de retardo manualmente cuando se utilizan los esquemas especificados (lo hacemos al principio del ciclo).

Si la distancia es superior a 3 metros y el HC SR04 empieza a funcionar mal, conviene ajustar el tiempo de retardo a más de 20 ms, se puede poner en 25 ó 30 ms.

Esquema utilizando la biblioteca NewPing

Ahora consideremos un sketch usando la librería NewPing. El código se simplificará enormemente ya que todas las acciones descritas anteriormente están ocultas dentro de la librería. Todo lo que tenemos que hacer es crear un objeto de la clase NewPing, especificando los pines con los que conectaremos el sensor de distancia y usaremos los métodos del objeto. En nuestro ejemplo necesitamos usar ping_cm() para obtener la distancia en centímetros.

Ejemplo de conexión de un telémetro ultrasónico HC SR04 con un pin

El HC-SR04 puede ser conectado al Arduino usando un solo pin. Esta opción es útil si está trabajando con un proyecto grande y no tiene suficientes pines libres. Para conectar, sólo necesitas instalar una resistencia de 2.2K entre los contactos TRIG y ECHO y conectar el contacto TRIG al Arduino.

En resumen

Los sensores de distancia por ultrasonidos son lo suficientemente versátiles y precisos como para ser utilizados en la mayoría de los proyectos. El artículo trata sobre el popular sensor HC SR04, que se conecta fácilmente a la placa del arduino (para este propósito, debe proporcionar dos pines libres a la vez, pero hay una opción para conectar con un sólo pin).

Hay varias librerías libres para trabajar con el sensor (en este tutorial sólo vemos una de ellas: NewPing), pero se puede prescindir de ellas – el algoritmo de interacción con el controlador interno del sensor es bastante simple.

Basándonos en nuestra propia experiencia, podemos decir que el sensor HC-SR04 muestra una precisión de un centímetro a distancias de 10 cm a 2 m. Las distancias más cortas y más largas pueden causar interferencias fuertes, que dependen en gran medida de los objetos circundantes y de cómo se utilizan. Pero en la mayoría de los casos el sensor trabaja muy bien.

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 4,50 de 5)

Cargando…

Existen muchos sensores para usar con Arduino, aquí te mostramos algunos de ellos: