miércoles, 9 de septiembre de 2015

[Arduino 08] Medir distancia con sensor ultrasónico HR-SR04

En este nuevo tutorial mostrare como conectar y configurar el sensor ultrasónico HC-SR04, este es un sensor que sirve para medir distancias y superar obstáculos. En este caso lo utilizaremos para medir distancia y ver esta distancia medida en pantalla (mediante el puerto serial)

El sensor ultrasónico le debe su nombre a las ondas de ultrasonido que envía y que luego recepciona por un micrófono, usando el mismo principio que usan los murciélagos o sonares de los submarinos
El oído humano tiene un rango de audición de entre los 20-20.000 Hz, el ultrasonido son todas aquellas ondas sonoras que tienen una frecuencia mayor a los 20.000Hz y que no podemos oír debido a que se encuentran fuera de nuestro espectro auditivo.
Objetivos
  1. Conocer el funcionamiento del HC-SR04
  2. Programar el HC-SR04
  3. Lograr visualizar los valores medidos por el sensor HC-SR04 en pantalla por medio del puerto serial (Puerto serie)
  4. Familiarizarnos con el puerto serial
Materiales
  • Arduino UNO, Arduino Pícaro o similares.
  • Cable USB para arduino
  • Sensor HC-SR04
  • Jumpers o conectores
  • Protoboard
Fotos del proyecto
 

 






Características HC-SR04
Tensión de alimentación: 5Vcc
Dimensiones del circuito: 45x20x17mm
Rango de medición: 2-400cm
Resolución: 3mm
Frecuencia de trabajo: 40kHz
Angulo de detección: 15°
Corriente de funcionamiento 15mA
Cómo calcularemos la distancia
  • Para calcular la distancia lo que hacemos es medir el tiempo que demora en en ir el sonido y regresar a nuestro sensor, esto tomara un tiempo "t" (uSeg o micro segundos).
  • Nosotros conocemos la velocidad del ultrasonido y es 0.034 (cm/uSeg)
  • La distancia la calcularemos de la ecuacion de velocidad Velocidad=distancia/tiempo, siendo distancia=Velocidad*tiempo
  • Como el tiempo que mide el sensor es el tiempo que toma en ir y volver el sonido, tenemos el doble de la distancia recorrida, por lo que cuando calculemos la distancia tendremos que dividir el tiempo por la mitad, siendo nuestra ecuacion final Distancia=velocidad*(tiempo/2)
  • Ecuacion final Distancia=0.034*tiempo/2 --> Distancia=0.017*tiempo

Cómo montar el circuito
Para armar el circuito debemos conectar los componentes como se ve en la imagen generada por fritzing que se aprecia a continuación.
Código para Arduino
En la imagen anterior se muestra como conectar el sensor HC-SR04 al arduino para posteriormente comenzar a programarlo.
Stetch 1 Arduino
#define echoPin 8 // Pin Echo
#define trigPin 9 // Pin Trigger

int maximumRange = 200; // Maximo rango (entero)
int minimumRange = 0; // Minimo rango (entero)
float duration, distance; // duracion y distancia (tipo flotante)

void setup() {
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
}

void loop() {
/* El siguiente ciclo entre trigger y echo se usa para determinar la *  distancia entre objetos cercanos usando las ondas de ultrasonido */ 
 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 

 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);
 
 //Calculamos la distancia (cm,mm) en base a la velocidad del sonido.
 distance = float (duration*0.017);
 
 Serial.println(distance);
 
 //Delay 400ms antes de la siguiente medición.
 delay(400);
}
Sketch 2 Arduino

#define echoPin 8 // Echo Pin
#define trigPin 9 // Trigger Pin

int maximumRange = 200; // Rango maximo (variable de tipo entero)
int minimumRange = 0; // Rango minimo (variable de tipo entero)
long duration, distance; // duracion y distancia (variable tipo long)

void setup() {
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
}

void loop() {
/* El siguiente ciclo entre trigger y echo se usa para determinar la *  distancia entre objetos cercanos usando las ondas de ultrasonido */ 
 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 

 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);
 
 //Calculamos la distancia (cm,mm) en base a la velocidad del sonido.
 distance =int (duration*0.017); //Aquí esta la diferencia con el código anterior
 
 Serial.println(distance);
 
 //Delay 400ms antes de la siguiente medición.
 delay(400);
}
Cómo ver la distancia medida en el Monitor Serie (Ctrl+Silft+M)
Para ver la distancia que medimos en arduino necesitamos, tener conectado el arduino a nuestra computadora por medio del USB y tiene que estar correctamente seleccionado el puerto COM, ahora solo basta abrir el monitor serie que esta en arduino IDE, el mismo sofware que utilizamos para programar arduino. En este tenemos que ir a Herramientas >>Monitor Serie, o simplemente apretar CTRL+Shift+M
Aqui pueden apreciar los resultados que obtuve con el primer y segundo sketch respectivamente


En el proximo capitulo aprendemos a usar y conectar una pantalla LCD 2x16, para luego agregar este mismo sensor a la pantalla, estén atentos :)

Gracias por visitar mi blog si tienes alguna consultas o comentarios, los puedes realizar por medio de este mismo blog

5 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  2. no entendi ni un pico de los picos de la mama pico y el papa pico con su pico y su piquito de NADA

    ResponderBorrar
  3. buenas, como puedo ver la distancia en una sola linea mediante web?, con el ethernet shielld??

    ResponderBorrar
  4. The 5 Best Casinos in Las Vegas, NV - DrMCD
    3 Best 인천광역 출장마사지 Casinos 오산 출장샵 in Las Vegas, 경주 출장안마 NV · 4. Caesars Casino · 광양 출장마사지 5. Golden Nugget 세종특별자치 출장안마 Casino · 6. Caesars Palace · 7. Bellagio Casino · 8. Wynn

    ResponderBorrar