jueves, 5 de octubre de 2017

Sensor Ultrasonico HC-SR04


¿Qué es un Sensor ultrasónico(HC-SR04)?

Es un dispositivo capaz de medir distancias por medio de una frecuencia ultrasónica, este funciona a través del envío de pulsos de alta frecuencia, no audible para el oído humano. Normalmente este pulso (frecuencia) rebota en los objetos que se encuentran alrededor y es reflejado hacia el sensor (captado por un micrófono adecuado para la frecuencia especifica). El tiempo entre pulsos es medido conociendo la velocidad del sonido podemos calcular la distancia de un objeto contra la superficie que reflejaron los pulsos. Los sensores ultrasónicos HC-SR04 son capaces de medir entre 2 centímetros y 400 centímetros, con una resolución de 0.3 centímetros. Dentro de la practica el rango de medición es entre 4 centímetros y 200 centímetros.

Los sensores ultrasónicos son sensores de baja precisión. La orientación de la superficie a medir puede provocar que la onda se refleje, dando una falsa medición. Es importante verificar en un entorno el resultado de un numero de objetos, ya que el sonido rebota en las superficies de los objetos generando ecos y falsas mediciones.



Figura 1.-Angulo para la detección de un objeto con sensor ultrasónico.

Aunque este dispositivo es de baja precisión, podemos conocer con alguna imprecisión la distancia a un objeto, los sensores de ultrasonidos son ampliamente empleados. En robótica es habitual montar uno o varios de estos sensores, por ejemplo, para detección de obstáculos, determinar la posición del robot, crear mapas de entorno, resolver laberintos entre otros.

Figura 2.- Funcionamiento de sensor ultrasónico.
Para una aplicación que se requiera una precisión mayor en la medición de la distancia, suelen acompañarse de medidores de distancia por infrarrojos o sensores ópticos.

Funcionamiento:
El sensor se basa simplemente en medir el tiempo entre el envío y la recepción de un pulso sonoro. Sabemos que la velocidad del sonido es 343 m/s en condiciones de temperatura 20 ºC, 50% de humedad, presión atmosférica a nivel del mar. Transformando unidades resulta: 


Es decir, el sonido tarda 29,2 microsegundos en recorrer un centímetro. Por tanto, podemos obtener la distancia a partir del tiempo entre la emisión y recepción del pulso mediante la siguiente ecuación.

El motivo es dividir por dos el tiempo (además de la velocidad del sonido en las unidades apropiadas, que hemos calculado antes) es porque hemos medido el tiempo que tarda el pulso en ir y volver, por lo que la distancia recorrida por el pulso es el doble de la que queremos medir.
Conexión típica con un Arduino uno:


Figura 3.-Conexión típica Arduino Uno con Sensor Ultrasónico HC-SR04.


Programación Arduino:
const int EchoPin = 5;
const int TriggerPin = 6;
const int LedPin = 13;

void setup() {
   Serial.begin(9600);
   pinMode(LedPin, OUTPUT);
   pinMode(TriggerPin, OUTPUT);
   pinMode(EchoPin, INPUT);
}

void loop() {
   int cm = ping(TriggerPin, EchoPin);
   Serial.print("Distancia: ");
   Serial.println(cm);
   delay(100);
}

int ping(int TriggerPin, int EchoPin) {
   long duration, distanceCm;
  
   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us
   delayMicroseconds(4);
   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us
   delayMicroseconds(10);
   digitalWrite(TriggerPin, LOW);
  
   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos
  
   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm
   return distanceCm;

}