Arduino hc-sr04

Los sensores de ultrasonidos son dispositivos usados para detectar la distancia de los objetos, se encuentran en proyectos de robotica o en la industria, en este post vamos a explicar como usar un sensor de este tipo.

Sensor Ultrasonido

Los sensores de ultrasonido o sensores ultrasónicos son detectores de proximidad que trabajan libres de roces mecánicos y que detectan objetos a distancias que van desde pocos centímetros hasta varios metros[1]. El sensor emite un sonido y mide el tiempo que la señal tarda en regresar.

Sensor HC-SR04

El HC-SR04 es un sensor de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 450 cm. El sensor funciona por ultrasonidos y contiene toda la electrónica encargada de hacer la medición. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. De muy pequeño tamaño, el HC-SR04 se destaca por su bajo consumo, gran precisión y bajo precio por lo que esta reemplazando a los sensores polaroid en los robots mas recientes.

Para más informacián del sensor la encuentran en HC-SR04.

Circuito

En el siguiente circuito esta la forma de conectar el sensor al arduino como se describe en la tabla y en la imagen.

Arduino hcsr04
8 Trig
9 Echo
5V VCC
GND GND

Materiales

Para el ejercicio usaremos un arduino y el sensor ultrasonido.

Material Cantidad Descripción
Arduino 1 Usa el arduino que mas te guste.
HC-SR04 1 Sensor de ultrasonido.
Cables macho a macho 4 Para realizar la conexión del sensor a arduino

Código

El código lo tenemos en el repositorio de github por si deseas clonar el proyecto.

//Se declaran los pines para el sensor
int const TRIG = 9;
int const ECHO = 8;

//Variables de calculo
float distancia;
float tiempo;

void setup(){
  Serial.begin(9600);
  //Activación del pin como salida: para el pulso ultrasónico
  pinMode(TRIG, OUTPUT); 
  //Activación del pin como entrada: tiempo del rebote del ultrasonido
  pinMode(ECHO, INPUT); 
}

void loop(){
  //Por cuestión de estabilización del sensor
  digitalWrite(TRIG,LOW); 
  delayMicroseconds(5);
  //Envío del pulso ultrasónico
  digitalWrite(TRIG, HIGH); 
  delayMicroseconds(10);
  /* Función para medir la longitud del pulso entrante. 
  Mide el tiempo que transcurrido entre el envío
  del pulso ultrasónico y cuando el sensor recibe el rebote, e
  s decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que
  deja de hacerlo, LOW, la longitud del pulso entrante*/
  tiempo = pulseIn(ECHO, HIGH); 
  /*fórmula para calcular la distancia obteniendo un valor entero*/
  /*Monitorización en centímetros por el monitor serial*/
  distancia = int(0.017 * tiempo); 
  Serial.print("Distancia ");
  Serial.print(distancia);
  Serial.print(" cm");
  Serial.println("");
  delay(1000);
}

Funcionamiento

Para poder entender un poco lo que hace el codigo anterior, debemos saber primero debemos saber como funciona nuestro sensor para ello lo e explicado en los siguientes pasos.

  1. Enviar un Pulso "1" de al menos de 10uS por el Pin Trigger (Disparador).
  2. El sensor enviará 8 Pulsos de 40KHz (Ultrasonido) y coloca su salida Echo a alto (seteo), se debe detectar este evento e iniciar un conteo de tiempo.
  3. La salida Echo se mantendrá en alto hasta recibir el eco reflejado por el obstáculo a lo cual el sensor pondrá su pin Echo a bajo, es decir, terminar de contar el tiempo.
  4. Se recomienda dar un tiempo de aproximadamente 50ms de espera después de terminar la cuenta.
  5. La distancia es proporcional a la duración del pulso y puedes calcularla con las siguiente formula (Utilizando la velocidad del sonido = 340m/s):

Nota:

  • Tener en cuenta, que la distancia que recorre la onda es dos veces (x2) la distancia del objeto, al usar: "distancia recorrida = velocidad x tiempo transcurrido"
  • Conecte el pin GND primero antes de suministrar alimentación a VCC.
  • Por favor, asegúrese de que la superficie del objeto a detectar debe tener al menos 0,5m para un mejor rendimiento.

Referencias

[1] Wikipedia ultrasonido https://es.wikipedia.org/wiki/Ultrasonido, Consultado abril 2019

Comentarios

Para dejar el comentario solo necesitamos tu correo que registraste en la pagina, pero si aun no te haz registrado se creara el usuario automaticamente.

  • Pablo_zone
    Pablo_zone
    la variable que utilizas para meter la distancia del ultrasonico y hacerlo un valor para poder usarlo en una condicion por ejemplo if(distancia => a) { si se cumple la condicion que haga esto} es la de distancia verdad

Detalle contenido

Arduino hcsr04
Generic placeholder image
Oscar Fernandez Alzate

05, Junio 2016

1868
Categorías
ARDUINO