martes, 24 de noviembre de 2015

Sensor de Ultrasonido HC-SR04 Arduino

---------------------------------------------------------------------------------------------------------
ENLACES

http://elcajondeardu.blogspot.com.co/2014/03/tutorial-sensor-ultrasonidos-hc-sr04.html






http://blog.ars-electronica.com.ar/2014/07/distancia-ultrasonido-hc-sr04-arduino.html

http://www.arduinocolombia.com/aprende/ultrasonido-hc-sr04/

 http://www.3dsmart.es/blog/medir-distancias-con-arduino-uno-y-el-modulo-hc-sr04/

http://pastebin.com/6abhnwJT

--------------------------------------------------------------------------------------------------------- 

Tutorial: sensor ultrasonidos HC-SR04

El sensor de ultrasonidos se enmarca dentro de los sensores para medir distancias o superar obstáculos, entre otras posibles funciones.
En este caso vamos a utilizarlo para la medición de distancias. Esto lo consigue enviando un ultrasonido (inaudible para el oído humano por su alta frecuencia) a través de uno de la pareja de cilindros que compone el sensor (un transductor) y espera a que dicho sonido rebote sobre un objeto y vuelva, retorno captado por el otro cilindro.
Este sensor en concreto tiene un rango de distancias sensible entre 3cm y 3m con una precisión de 3mm.


¿Qué recibimos en el sensor? 

El tiempo que transcurre entre el envío y la recepción del ultrasonido.


¿Cómo vamos a traducir dicho tiempo en distancia?

 Aprovechando que la velocidad de dicho ultrasonido en el aire es de valor 340 m/s, o 0,034 cm/microseg (ya que trabajaremos con centímetros y microsegundos). Para calcular la distancia, recordaremos que v=d/t (definición de velocidad: distancia recorrida en un determinado tiempo).
De la fórmula anterior despejamos d, obteniendo d=v·t, siendo v la constante anteriormente citada y t el valor devuelto por el sensor a la placa Arduino.
También habrá que dividir el resultado entre 2 dado que el tiempo recibido es el tiempo de ida y vuelta.

Material

Sensor ultrasonidos HC-SR04 de Electrohobby
Placa Arduino UNO
Cables
Cable USB
Protoboard

Conexiones



El sensor consta de 4 pines: "VCC" conectado a la salida de 5V de la placa, "Trig" conectado al pin digital de la placa encargado de enviar el pulso ultrasónico, "Echo" al pin de entrada digital que recibirá el eco de dicho pulso y "GND" a tierra.

Programa
long distancia;
long tiempo;
void setup(){
  Serial.begin(9600);
  pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
  pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
}

void loop(){
  digitalWrite(9,LOW); /* Por cuestión de estabilización del sensor*/
  delayMicroseconds(5);
  digitalWrite(9, HIGH); /* envío del pulso ultrasónico*/
  delayMicroseconds(10);
  tiempo=pulseIn(8, HIGH); /* 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, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que
  deja de hacerlo, LOW, la longitud del pulso entrante*/
  distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/
  /*Monitorización en centímetros por el monitor serial*/
  Serial.println("Distancia ");
  Serial.println(distancia);
  Serial.println(" cm");
  delay(1000);
}
 
---------------------------------------------------------------------------------
 
 

Como medir distancias por ultra-sonido, sensor HC-SR04 y Arduino

Si deseamos conocer la distancia entre dos puntos, una opción fácil es utilizar una cinta métrica, pero no siempre podemos recurrir a esta, o no queremos. Por ejemplo supongamos una aplicación de robótica donde se necesita detectar obstáculos, la misma debe ser suficientemente inteligente y automática como
para poder detectarlos.
Otra opción es recurrir al sonido, de la misma forma que se usa en barcos(Sonar) y en algunos animales(Ecolocación).
Imagen en representacion del sonar
Sonar activo, imagen de Wikimedia
La forma de funcionamiento es emitir un sonido, este se refleje en el objetivo y luego recibir el eco. Entonces conociendo la velocidad de propagación del sonido(340m/s) y la duración entre la emisión y recepción, es decir el tiempo entra ida y vuelta, podemos conocer la distancia.

formula para relacionar velocidad del sonido y distancia
Formula para obtener la distancia(en cm), conociendo la velocidad y el tiempo
Esta es una excelente forma de detección sin contacto, a diferencia de métodos lumínicos no se presenta alteraciones en el funcionamiento por la luz del sol o materiales negros, sin embargo se puede dificultar con materiales acústicos y la forma en que esta orientado el objeto también supone una dificultad, ya que al rebotar la onda sonora lo puede hacer en una dirección no deseada.

El Sensor

Imagen-HC-SR04
HC-SR04
El HC-SR04 es un sensor ultrasonico, que opera básicamente como lo detallado anteriormente, para tal fin tiene un transmisor y un receptor. Con el mismo, se pueden obtener medidas desde 2cm hasta los 400cm, con una resolución de 0.3cm.
El sensor tiene 4 pines, dos los necesarios para la alimentación(trabaja con 5V) y dos mas que son necesarios para iniciar el proceso de medición y obtener los datos para el calculo de la distancia.
Para comenzar con la medición el sensor debe recibir un pulso en alto en el pin de disparo(trigger), con una duración de al menos 10us, esto inicia una transmisión de 8 ciclos de una ráfaga de ultrasonido a 40khz. Cuando el receptor detecta el eco, pone el pin Echo en alto(5V) por un tiempo igual al que tardo el sonido en salir y volver(se encuentra en el orden de los us). En el diagrama temporal se observa el modo de operación.
Diagrama temporal
Diagrama temporal

Prueba con Arduino.

La conexión con Arduino o cualquier microcontrolador es sencilla. Necesitamos solamente 2 pines, uno como entrada y otro como salida.
A través de un display LCD de 16x2 se indica la distancia. El conexionado completo es:

Y el código a cargar en el Arduino es el siguiente:
/* Codigo para Arduino, para medir distancias con el sensor ultrasonico HC-SR04 y visualizarla en un display LCD 16x2 Circuito: * LCD RS pin- D12 * LCD Enable pin - D11 * LCD D4 pin - D5 * LCD D5 pin - D4 * LCD D6 pin - D3 * LCD D7 pin - D2 * Potenciometro de 10K : * El pin del medio a LCD Vo(pin3) * Los demas entre 5V y GND * Trigger HC-SR04 - D8 * Echo HC-SR04 - D9 */ // include the library code: #include <LiquidCrystal.h> //Inicializo la libreria del LCD con los pines correspondientes a la conexion realizada LiquidCrystal lcd(12, 11, 5, 4, 3, 2); long distancia; long tiempo; void setup() { // Configuracion del LCD 16x2 lcd.begin(16, 2); pinMode(9, OUTPUT); //Pin D9 como salida pinMode(8, INPUT); //Pind D8 como entrada } void loop() { lcd.clear(); //Limpio el LCD lcd.setCursor(0, 0); //Ubico el cursor digitalWrite(9,LOW); delayMicroseconds(5); digitalWrite(9, HIGH); //Inicio el proceso de medicion delayMicroseconds(10); //El pulso de disparo debe estar en alto por 10us tiempo=pulseIn(8, HIGH); //Funcion para medir el tiempo en alto del pin echo distancia= int(0.01653*tiempo); //Convierto los us en cm, el tiempo es proporcional a la distancia lcd.print("Distancia: "); lcd.print(distancia); lcd.print("cm"); delay(500);


 ----------------------------------------------------------------------------------------------------------


.....

 
 

No hay comentarios:

Publicar un comentario