Está en la página 1de 4

SENSOR ULTRASONICO

El sensor de ultrasonidos se enmarca dentro de los sensores para medir distancias o


superar obstculos, entre otras posibles funciones.
En este caso vamos a utilizarlo para la medicin de distancias. Esto lo consigue
enviando un ultrasonido (inaudible para el odo humano por su alta frecuencia) a
travs 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
precisin de 3mm.

Qu recibimos en el sensor?
El tiempo que transcurre entre el envo y la recepcin del ultrasonido.

Cmo 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 centmetros y microsegundos). Para
calcular la distancia, recordaremos que v=d/t (definicin de velocidad: distancia
recorrida en un determinado tiempo).
De la frmula anterior despejamos d, obteniendo d=vt, siendo v la constante
anteriormente citada y t el valor devuelto por el sensor a la placa Arduino.

Tambin 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 ultrasnico, "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); /*activacin del pin 9 como salida: para
el pulso ultrasnico*/
pinMode(8, INPUT); /*activacin del pin 8 como entrada: tiempo
del rebote del ultrasonido*/
}
void loop(){
digitalWrite(9,LOW); /* Por cuestin de estabilizacin del
sensor*/
delayMicroseconds(5);
digitalWrite(9, HIGH); /* envo del pulso ultrasnico*/
delayMicroseconds(10);
tiempo=pulseIn(8, HIGH); /* Funcin para medir la longitud del
pulso entrante. Mide el tiempo que transcurrido entre el envo
del pulso ultrasnico y cuando el sensor recibe el rebote, es
decir: desde que el pin 12 empieza a recibir el rebote, HIGH, ha
sta que
deja de hacerlo, LOW, la longitud del pulso entrante*/
distancia= int(0.017*tiempo); /*frmula para calcular la
distancia obteniendo un valor entero*/
/*Monitorizacin en centmetros por el monitor serial*/
Serial.println("Distancia ");
Serial.println(distancia);
Serial.println(" cm");
delay(1000);
}

PROGRAMA 2
/* Sketch medidor ultrasonico */
/* Creado por Josemanu
*/
/* para Ardumania.es
*/
unsigned long pulso; // necesitamos una variable para medir el pulso
float distancia; // otra para calcular la distancia
int pin = 8; // y otra para el pin
void setup()
{
Serial.begin(9600); // inicializamos el puerto serie
}
void loop()
{
pinMode(pin, OUTPUT);
// ponemos el pin como salida

digitalWrite(pin, HIGH); // lo activamos


delayMicroseconds(10); // esperamos 10 microsegundos
digitalWrite(pin, LOW); // lo desactivamos
pinMode(pin, INPUT);
// cambiamos el pin como entrada
pulso = pulseIn(pin, HIGH); // medimos el pulso de salida del sensor
Serial.print("tiempo = "); // lo pasamos a milisegundos y lo sacamos por
// el puerto serie
Serial.print(float(pulso/1000.0));
Serial.print("ms, distancia = "); // ahora calculamos la distancia en cm
// y al puerto serie
distancia = ((float(pulso/1000.0))*34.32)/2;
Serial.print(distancia);
Serial.println("cm");
delay(1000); // esperamos un segundo antes de hacer una nueva medida
}