Arduino: SENSOR ULTRASÓNICO HC-SR04
Al trabajar con este sensor y hacer una serie de prácticas correspondientes con el mismo usted estará en la capacidad de diseñar sistemas y dispositivos que permitan medir, controlar variables físicas usando este dispositivo y acoplándolo a una tarjeta arduino de su preferencia. Las variables más comunes de manipular son: nivel y distancia.
El módulo HC-SR04 hace uso de las ondas mecánicas es decir a las ondas de sonido, sin embargo, la frecuencia a la que opera o trabaja este dispositivo es muy elevada y está por encima de lo que el oído humano puede llegar a escuchar y en particular nos referimos a las ondas de ultrasonido. Básicamente el módulo mencionado anteriormente hace uso de una frecuencia que ronda alrededor de los 40 a 50 kilo Hertz (KHz).
En este post hablaremos de la parte técnica, del modo de operación, características y su funcionamiento.
CARACTERISTICAS DEL SENSOR ULTRASONICO HC-SR04
Trabaja con ondas sonoras o mecánicas de ultrasonido
Tiene una frecuencia de trabajo que ronda los 40khz
Puede hacer transmisión y recepción de ondas ultrasónicas a circuitos o sistemas de control
PINES DE CONEXIÓN
fig 1 SENSOR HC-SR04 |
TABLA 1 PINES DE CONEXIÓN DEL SENSOR |
CARACTERÍSTICAS ELÉCTRICAS
corriente de reposo debe ser menor a 2 mA (< 2mA)
corriente de operación: 15 mA
ángulo efectivo de medición: 15°
rango de detección: 2cm-400 cm
resolución de precisión en la medida: ≥ 3mm o 0.3 cm
ecuación característica del sensor:
Donde X es la distancia en metros (m) y el tiempo se mide en segundos (s)unidad de medida de la velocidad: m/s
Rango de detección del oído humano: 20Hz-20KHz
Velocidad del sonido= 340m/s a una temperatura de 20°C
Internamente el sensor HC-SR04 posee un dispositivo piezoeléctrico. Los piezoeléctricos son transductores electrónicos que a una cierta frecuencia se comportan como dispositivos resonadores. En este caso incluye un transmisor-receptor y un circuito de control el cual se encuentra en la parte trasera del dispositivo.
FIG 2 Circuito electrónico del sensor |
el esquema aunque no es de mucho interés para el aficionado o el programador es el mostrado en la siguiente figura: es bueno analizarlo para en caso de que tengamos que hacer una reparación de último minuto sepamos donde puede estar una falla posible
fig 3 circuito interno del sensor HC-SR04 |
DIAGRAMA DE ESTADOS DE FUNCIONAMIENTO
gráfico 1 operación del sensor HC-SR04 |
Constantemente está emitiendo una señal mecánica o ultrasónica de una frecuencia elevada de 40KHz. Mientras no encuentre obstáculo obviamente no va a recibir una señal por el piezoeléctrico receptor. Uno de ellos envía y el otro recibe. Mientras se encuentre un obstáculo la onda mecánica u onda sonora va a chocar con el obstáculo. En ese lapso de tiempo va a llegar al receptor de dicho sensor y automáticamente el va a saber a que distancia se encuentra el objeto o elemento una vez programemos el arduino o incluso cualquier microcontrolador y de esa manera podemos hacer que suene una alarma, emita un destello el led o nos muestre los datos de la medición por un monitor serial o incluso puede ir acoplado a un sistema de bandas transportadoras donde cada vez que haya un choque con la onda emita un pulso y cargue los datos a un display de siete segmentos o a una pantalla LCD. Ya en cuestiones de imaginación depende de lo que el usuario quiera hacer. Se puede usar en robótica o incluso en llenado de tanques.
Para el caso de la gráfica anterior el pin de trigger es un disparador o pin de entrada. Y debe ser conectada como una entrada en arduino. El pin echo es salida en el arduino. El pulso debe ser TTL y debe tener una duración de 10 microsegundos. Una vez ocurre esto el emite una señal audible por el transmisor piezoeléctrico que la recibe y hace conmutar una serie de pulsos o tren de pulsos a una frecuencia de 40KHz. Ese tren de pulsos es emitido en forma de ondas sonoras de 8 pulsos. Cuando llega al 8 pulso el pin de echo que es una salida lo lleva a un estado alto (1 lógico) a partir de ese momento mide el tiempo para calcular la distancia. La respuesta es el obstáculo detectado por la onda sonora.
AHORA PASEMOS A LA PRÁCTICA.
DETECTOR DE OBSTÁCULOS POR ULTRASONIDO
Materiales
1 parlante de 8 ohms
1 arduino uno
1 sensor HC SR04
1 Resistencia de 120 ohms (cafe-rojo-café)
1 led
PROCEDIMIENTO.
Se empieza realizando las conexiones plasmadas en el circuito mostrado en la figura. El plano de conexiones ha sido elaborado en proteus. Recuerden que deben de tener el software para elaborar el código en arduino y de esta manera puedan compilar y ejecutar dicho programa para llevar a cabo una ejecución de forma exitosa.
fig -4 circuito con sus respectivas conexiones…(ojo recuerde conectar +5V el arduino y el sensor y gnd a tierra) |
PROGRAMA
#include “Ultrasonic.h” //Libreria del sonar
Ultrasonic ultrasonic(6,7); //Trigger, Echo
// Señal acustica
#include “pitches.h” //Libreria que contiene las notas musicales
int sonido = NOTE_E5; //Declaramos la nota musical elegida como el sonido
int sonar; //Declaramos la variable sonar
int led=5;
void setup()
{
pinMode(led,OUTPUT);
//Serial.begin(9600); //Inicio de la comunicacion serie a 9600 baudios
}
void loop()
{
sonar = ultrasonic.Ranging(CM); //Leemos la distancia del sonar
//La funcion ultrasonic.ranging(cm) viene declarada en la libreria del sonar
//Calcula la distancia a la que rebota una señal enviada basandose en el
//tiempo que tarda en recorrer dicha distancia, devolviendonos la distancia
//en centimetros, lista para utilizar en casos de medicion por ultrasonidos.
while (sonar < 60) //Mientras que la distancia sea menor a 60 cm
{
noTone(4); //Mantenemos el sonido apagado
delay(sonar*10);
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
//Delay dependiente del valor del sonar. Si la distancia se reduce
//el delay es menor y la señal acustica sonara con mayor frecuencia.
//Si la distancia aumenta, el delay aumenta, disminuyendo la frecuencia
//con la que suenan los pitidos.
tone(4, sonido); //Señal acustica de aviso
delay(100); //Delay para mantener la señal acustica 0,1 segundos minimo
noTone(4); //Apagamos el sonido
while (sonar < 10) //Si la distancia del sonar es menor que 10 cm
{
delay(sonar*10);
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
tone(4, sonido); //Suena sin interrupciones indicando la proximidad del objeto
sonar = ultrasonic.Ranging(CM); //Distancia del sonar
}
sonar = ultrasonic.Ranging(CM); //Leemos la distancia del sonar para volver a empezar
}
}
CONTENIDOS MÁS RELEVANTES.