Este artículo ha sido extraído del conjunto de Clase 911, por tal razón verán dos artículos en Panamá Hitek que hacen referencia al mismo sensor pero con informaciones diferentes. En este enlace puedes visitar el otro artículo: «HC-SR04: Sensor ultrasonico para Arduino». Ya en artículos anteriores se ha visto varios dispositivos que se pueden utilizar en conjunto con Arduino, ahora comenzaré hablando sobre otro tipo, en este caso un sensor que permitirá detectar objetos o calcular distancias entre distintos puntos. El sensor ultrasónico HC-SR04 es uno de los sensores más utilizados dentro de la comunidad debido a su bajo costo (1.88 USD) e intervalo de detección ya que es bastante amplio. Va desde los 2 cm hasta 5 m a una resolución o precisión de 3 mm.
Este sensor tiene el mismo funcionamiento que un radar ya que envia pulsos a alta frecuencia en este caso ultrasónicos. Está compuesto por dos piezoeléctricos: un transmisor y receptor ambos en forma de cilindro. El transmisor se encarga de emitir la señal ultrasónica para luego ser rebotada a través de un objeto llegando al cilindro receptor. Debido a que la señal le tardará un tiempo en regresar desde que se emite, es obvio pensar que la velocidad con la cual llegará al receptor está íntimamente relacionada con la distancia de transmisión y rebote.
Se puede expresar matemáticamente como d = 170 (m/s) * t
Esto se puede demostrar partiendo de la ecuación de velocidad: v = 2d/t donde la d es igual a la distancia que le tarda a la señal en llegar al objeto. Asumiendo que la velocidad de este sensor es apróximadamente unos 340 m/s, entonces se puede obtener más o menos la distancia a la cual está el objeto.
Al ser un sensor ultrasónico, éste trabaja en la banda de los 40 kHz casi el doble de la frecuencia de muestreo para una señal de audio. Esto quiere decir que para el ser humano es imposible percibir a través de los oídos esta señal ya que supera el ancho de banda del oído humano que es de hasta apróximadamente 20 kHz. Un sensor ultrasónico puede trabajar en áreas donde se tenga completa oscuridad ya que las luces no afectan o detienen 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:
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:
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:
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.
Imágenes tomadas de:
Hola!! de cuanto es el margen de error de este sensor?
gracias y saludos..
Estos sensores tienden a ser menos precisos en distancias cortas
Hay forma de saber la frecuencia que le llega al receptor?
Con un osciloscopio?
Alguien sabe cual seria la formula para poder sacar el porcentaje de llenado de recipiente con el sensor Ultrasonico ??
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 »