¿Qué son los ultrasonidos?
Un ultrasonido es una onda acústica o sonora cuya frecuencia está por encima del espectro audible del oído humano (aproximadamente 20.000 Hz).
Sabiendo esto, veamos como es y como funciona el sensor utilizado:
Sabiendo esto, veamos como es y como funciona el sensor utilizado:
El sensor HC-SR04
Como componente principal del proyecto, utilizaré un sensor de ultrasonidos HC-SR04. Este sensor contiene un emisor y un receptor de ondas de ultrasonidos, y funciona a modo de sonar, de tal forma que el emisor lanza un tren de pulsos ultrasónicos – de 40 kHz en este caso – y el receptor espera el “eco” de dicho tren de pulsos en algún objeto.
En el datasheet del sensor podemos ver que la distancia medida es proporcional a la amplitud del eco de la señal enviada, y para calcular dicha distancia, nos remitimos a la formula “Distancia = Velocidad x Tiempo”.
En el datasheet del sensor podemos ver que la distancia medida es proporcional a la amplitud del eco de la señal enviada, y para calcular dicha distancia, nos remitimos a la formula “Distancia = Velocidad x Tiempo”.
MATERIAL NECESARIO
1 – Tarjeta ARDUINO UNO
1 – Cable USB para Arduino
1 – Placa Protoboard
1 – Buzzer o altavoz
1 – Sensor de ultrasonidos HC-SR04
4 - Conectores macho-hembra
– Cables para conexiones
CONEXIONADO EN PLACA PROTOBOARD
CÓDIGO
/* Programa que simula el funcionamiento de un sensor de aparcamiento,
pitando con una frecuencia mayor conforme nos aproximamos al objeto */
int speakerPin = 8;
long distancia;
long tiempo;
int j;
void setup(){
Serial.begin(9600);
pinMode(6, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
pinMode(7, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
}
void loop(){
digitalWrite(6,LOW); /* Por cuestión de estabilización del sensor*/
delayMicroseconds(5);
digitalWrite(6, HIGH); /* envío del pulso ultrasónico*/
delayMicroseconds(10);
tiempo=pulseIn(7, 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);
if(distancia<=40)
{
if(distancia >=0 && distancia<=3)
j = 1;
if(distancia >3 && distancia<=8)
j = 50;
if(distancia >8 && distancia<=20)
j = 300;
if(distancia >20 && distancia<=30)
j = 600;
if(distancia >30 && distancia<=40)
j = 900;
if(distancia >40)
j = 1200;
tone(speakerPin,349);
delay(j);
noTone(speakerPin);
delay(100);
}
else
{
noTone(speakerPin);
}
}
pitando con una frecuencia mayor conforme nos aproximamos al objeto */
int speakerPin = 8;
long distancia;
long tiempo;
int j;
void setup(){
Serial.begin(9600);
pinMode(6, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
pinMode(7, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
}
void loop(){
digitalWrite(6,LOW); /* Por cuestión de estabilización del sensor*/
delayMicroseconds(5);
digitalWrite(6, HIGH); /* envío del pulso ultrasónico*/
delayMicroseconds(10);
tiempo=pulseIn(7, 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);
if(distancia<=40)
{
if(distancia >=0 && distancia<=3)
j = 1;
if(distancia >3 && distancia<=8)
j = 50;
if(distancia >8 && distancia<=20)
j = 300;
if(distancia >20 && distancia<=30)
j = 600;
if(distancia >30 && distancia<=40)
j = 900;
if(distancia >40)
j = 1200;
tone(speakerPin,349);
delay(j);
noTone(speakerPin);
delay(100);
}
else
{
noTone(speakerPin);
}
}
No hay comentarios:
Publicar un comentario