Los sensores ultrasónicos funcionan emitiendo ondas de sonido por encima de los 20kHz y midiendo el tiempo que tardan en rebotar. Esto permite calcular distancias que son útiles en aplicaciones robóticas y de medición industrial. El documento explica cómo funcionan los sensores ultrasónicos y cómo se pueden usar en un robot para la navegación mediante la detección de obstáculos.
3. ¿Cómo funcionan?
Dos unidades piezoeléctricas
El trasmisor emite frecuencias de
sonido sobre 20KHz (audible)
El receptor captura el rebote de las
ondas ultra sonoras y entrega los
datos obtenidos
5. Robot Bat Bot. Navegación con
ultrasonidos
http://video.google.es/videoplay?docid=-8818446984975466550&q=criadobot&total=22&sta
6. •
¿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
7.
8. long distancia;
int led1=11;
int led2=12;
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*/
pinMode(11, OUTPUT); //declara el led corto
pinMode(12, OUTPUT); //declara el led largo
}
CONFIGURACION
9. 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*/
CUERPO DEL PROGRAMA
TODAS LAS INSTRUCCIONES
10. if(distancia==50){
digitalWrite(led1,HIGH); //enciende led a 50 mts
}
else
{
digitalWrite(led1,LOW); // apagada el led
}
if(distancia==100){
digitalWrite(led2,HIGH); //enciende led a 1 mts
}
else
{digitalWrite(led2,LOW); //apaga el led
}
/*Monitorización en centímetros por el monitor serial*/
Serial.println("Distancia ");
Serial.println(distancia);
Serial.println(" cm");
}
SENTENCIAS DE CONDICION