Sensor Ultrasónico HC-SR04 + Arduino

6
17641
Sensor HC-SR 04

El siguiente contenido proviene de la Clase 911, motivo por el cual encontrarás dos artículos relacionados al mismo sensor en Panamá Hitek, pero con enfoques distintos. Puedes leer el artículo complementario aquí: «HC-SR04: Sensor ultrasónico para Arduino«. Hemos explorado en ocasiones anteriores diversos dispositivos compatibles con Arduino. En esta ocasión, presentaré uno particularmente interesante: el sensor ultrasónico HC-SR04. Este sensor es altamente valorado en la comunidad debido a su asequibilidad, con un precio menor a 2.00 USD, y su rango de detección, que varía entre 2 cm y 5 m con una precisión de 3 mm.

El sensor ultrasónico opera bajo un principio similar al de un radar, emitiendo pulsos de alta frecuencia, en este caso, ultrasónicos. Está conformado por dos elementos piezoeléctricos: un transmisor y un receptor, ambos con forma cilíndrica. El transmisor emite la señal ultrasónica, que al chocar con un objeto, rebota hacia el receptor. El tiempo que tarda la señal en regresar tras ser emitida indica la distancia entre el sensor y el objeto, pues está directamente relacionado con la velocidad de transmisión y rebote.

Matemáticamente, la relación entre distancia y tiempo se representa como d = 170 (m/s) x t. Tomando como referencia la ecuación de velocidad v = 2d/t , donde d es la distancia que recorre la señal hasta el objeto y de vuelta, y asumiendo que la velocidad de la señal ultrasónica es aproximadamente 340 m/s, podemos calcular la distancia a la que se encuentra el objeto.

Operando en la banda de los 40 kHz, el sensor ultrasónico trabaja con frecuencias casi el doble de las habituales para señales de audio. Esto implica que es inaudible para el oído humano, cuyo límite es aproximadamente 20 kHz. Además, un beneficio notable de los sensores ultrasónicos es su capacidad para operar en completa oscuridad, ya que la luz no afecta ni interrumpe su funcionamiento.

Características

A comparación de otros dispositivos anteriomente mostrados en Clase911, este sensor tiene únicamente cuatro pines. Dependiendo del fabricante, puede tener desde tres hasta cinco pines. Para este caso se tiene:

  • VCC: Voltaje de alimentación
  • TRIG: Pin de disparo
  • ECHO: Pin de eco
  • GND: Ground
  • Medición mínima: 2 cm
  • Medición máxima: 5 m
  • Ángulo efectivo < 15 °
  • Señal de disparo: TTL de 10 us.

Unidades de operación

Parámetros
de operación
Min Típ. Máx Unidad
Voltaje
de operación
4.5 5 5.5 V
Corriente 10 15 20 mA

 

Indagaré entonces a profundidad cómo funciona este sensor, para que puedan observar que realmente es sencillo. Para ello, haré uso de la data del fabricante:

En la data se presenta un diagrama de tiempo que es muy importante conocerlo y dominarlo. Funciona de la siguiente manera:

Sensor Timing Chart

Se tienen tres canales: el canal del disparo, el canal donde se emite la señal desde el módulo y el canal del eco respectivamente.

Para que el módulo inicie su trabajo es necesario enviar un pulso TTL (típicamente 5 V) con una duración de 10 us. Una vez se haya enviado este pulso a través del pin TRIG entonces el módulo comenzará a trabajar internamente enviando varios pulsos ultrasónicos de 40 kHz apróximadamente. Una vez que el módulo haya enviado ocho pulsos, el pin de eco enviará la distancia a la cual está el objeto en forma de pulsos con nível TTL de amplitud más baja. Dependiendo del ancho del pulso que emita el receptor, se tendrá distintos valores de distancias. El ancho de pulso para el pin eco va desde apróximadamente 150 us a 25 ms. El caso especial ocurre a 38 ms que es cuando el sensor indica que no hay obstáculo. Y así es que funciona el sensor.

Ángulo efectivo

Este sensor presenta una gráfica similar a la de un patrón de radiación, con esta información se puede saber a qué ángulo desde una referencia inicial se pueden obtener mejores resultados en las lecturas. El patrón de radiación es una gráfica que presenta propiedades importantes en base a coordenadas espaciales, generalmente esféricas. La propiedad más relevante en este tipo de gráfica es la distribución de energía, es decir cuántos dB tenemos en función de un punto de referencia a lo largo de un radio que no cambia. Para este caso se comenta a qué distancia se puede detectar un objeto en función del ángulo.

El ángulo efectivo para este sensor es de 15 °, esto indica que el sensor podrá detectar objetos a un rango de 30 °, 15 ° hacia la derecha e izquierda del ángulo cero. A continuación presento la imagen:

Sensor Angle

Aquí se observa que en efecto para un angulo menor a 15 grados, las lecturas son bastante buenas.

Consideraciones
  • Antes de conectarlo a la red, primero asegúrate que esté conectado a la refencia o bien: ground.
  • Recuerda que todos los sensores de este tipo tienen una zona ciega, para evitar salidas inestables utilizada el sensor para medir distancias a más de 80 cm desde su frente.
  • La temperatura es un factor que puede afectar las lecturas del sensor, la velocidad de propagación de una onda mecánica decrece a medida que la temperatura aumenta.

Ahora que ya has conocido un poco de este sensor, hagamos un pequeño proyecto en Arduino para que observes su funcionamiento.

  • Nivel: Básico
  • Costo: dinero > 5 USD
  • Materiales:
    • 1 Arduino UNO
    • 1 Sensor HC-SR04
    • Arduino Jumper Wires
Paso 1: Creando el circuito

El circuito solamente utiliza el sensor ultrasónico, el arduino y el led SMD que se encuentra en la misma placa. Puedes ver el circuito en la siguiente imagen:

Sensor schematic

Paso 2: Creando el programa

Este es un programa ejemplo que pueden obtenerlo desde mi repositorio en github.

Paso 3: Presentación del proyecto

Las aplicaciones que se le pueden dar a sensores de este tipo son amplías y van desde el conteo de botellas en una fábrica industrial, control de calidad, posicionamiento de vehículos, medición de volumen en pequeños envases, sensado de altura, entre otros.

Circuito con sensor ultrasónico HC-SR04

Inspirado en:

Imágenes tomadas de:

0 0 votes
Article Rating
Suscríbete
Notify of
guest

6 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
Silma
Silma
3 years ago

Hola!! de cuanto es el margen de error de este sensor?

gracias y saludos..

Moises
Moises
4 years ago

Hay forma de saber la frecuencia que le llega al receptor?

Arma Beta
Arma Beta
8 years ago

Alguien sabe cual seria la formula para poder sacar el porcentaje de llenado de recipiente con el sensor Ultrasonico ??

Kalas
Kalas
5 years ago
Reply to  Arma Beta

primero colocas el sensor en una zona fija (probablemente a una altura por encima de la botella mirando hacia abajo). Con el recipiente vacio mides la distancia que tienes ´(esa sera tu distancia maxima) equivale al 0% de contenido. Llenas el recipiente hasta el nivel máximo y mides la distancia (esa sería tu distancia minima) equivale al 100% del contenido. En arduino se nos facilita la opción de mapear un rango de valores a porcentajes, por ejemplo. la funcio seria algo así int porcentaje = map(0,100,dist_min,dist_max), 0 y 100 es tu porcentaje y dist_min y dist_max las distancias máximas y… Read more »