martes, 5 de marzo de 2024

PRÁCTICA 5: SENSOR ULTRASONIDOS

LOS  ULTRASONIDOS


0.- TEORÍA: LOS ULTRASONIDOS. 
Los ultrasonidos son señales acústicas cuya frecuencia está comprendida entre 20 y 400kHz. Esto es, por encima del rango de frecuencias que el oído humano puede oír, pero que pueden ser captadas por delfines y murciélagos, además de por sofisticados robots y hasta por los parachoques de los coches para aparcarlos.


Los sensores de ultrasonidos permiten medir la  distancia a la que se encuentra un objeto sin establecer contacto físico con él.

Para ellos se valen de:
a) emiten un pulso  de señal de ultrasonido.
b) el pulso  una vez rebota vuelve al sensor.
c) Se calcula el tiempo que ha tardado en el ir y volver y se puede saber la distancia del objeto.
Distancia = (Velocidad * Tiempo) / 2 















La Velocidad es la del sonido en el aire, que a 20ºC es de 343 m/s, y el tiempo es el que tarda el pulso en ir y volver (por eso lo dividimos entre dos para calcular la distancia del objeto).



1.- EL MÓDULO  HC-SR04 DE ARDUINO.
El HC-SR04 es un pequeño sensor de ultrasonidos que opera a una frecuencia de 40kHz y puede detectar objetos entre 3cm y 3 m, con una precisión de 3mm.
Este sensor tiene cuatro pines de conexión: 
a) Vcc (que es para alimentar el sensor  conectándolo a 5voltios)
b) Trig (es el que produce el disparo del ultrasonido), lo conectaremos a pin digital de salida.
c) echo (es el receptor de la señal de ultrasonido), lo conectaremos al pin digital  de entrada.
d) GND (que  se conecta a 0voltios.)
PRÁCTICA
Para medir distancias mediante un sensor de ultrasonido, generaremos un pulso de 10 microsegundos en el pin conectado a trig.

De esta forma, si expresamos la distancia en cm y el tiempo en microsegundos, la velocidad del sonido será de 343 m/s = 0.0343 cm/microseg.

Luego, para saber la distancia en CM a la que está el objeto tendremos (dividimos entre porque la señal debe recorrer la distancia dos veces, una en ir y la otra en volver).

distancia= (0.0343*tiempo) /  2 = 0.017 * tiempo




El sensor consta de 4 pines: "VCC" conectado al  pin  de 5V de la placa, "Trig" conectado al pin9 digital encargado de enviar el pulso ultrasónico, "Echo" al pin8 de entrada digital que recibirá el eco de dicho pulso y "GND" a tierra.
Enviaremos un pulso con una cresta de +5v durante  10 microsengudos y un valle de 0voltios que durará 5 microsegundos.



CÓDIGO DEL PROGRAMA:
long distancia;//
long tiempo;
int pinTrig=9;
int pinEcho=8; 
void setup(){
  Serial.begin(9600);
  pinMode(pinTrig, OUTPUT); //PIN9 como salida/TRIG para enviar el ultrasonido  
  pinMode(pinEcho, INPUT);//PIN8 entrada , recoge el rebote del ultrasonido
}
void loop(){
  digitalWrite(pinTrig,LOW); /* Por cuestión de estabilización del sensor*/
  delayMicroseconds(5);
  digitalWrite(pinTrig, HIGH); /* envío del pulso ultrasónico*/
  delayMicroseconds(10);
  tiempo=pulseIn(pinEcho, HIGH);// 
  distancia= int(0.017*tiempo); //distancia medida en cm
  Serial.println("Distancia ");
  Serial.println(distancia);
  Serial.println(" cm");
  delay(1000);
}
NOTA EXPLICATIVA:
  • long :El formato de variable numérica de tipo extendido “long” se refiere a números enteros
 (tipo 32 bits = 4 bytes) sin decimales que se encuentran dentro del rango -2147483648 a 2147483647.
  • pulseIn (pin,value) :pin: el número de pin en el que desea leer el pulso. (int),value: tipo de pulso a leer: HIGH o LOW. (int)
  1. distanciaint(0.017*tiempo); 
Es una función en cm para medir la longitud del pulso entrante. Mide el tiempo transcurrido  entre el envío 
del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 8 
empieza a recibir el rebote, HIGH,  hasta que   deja de hacerlo, LOW, la longitud del pulso entrante.
 
 ACTIVIDAD:
1.- Diseña un parktronic (sensor de aparcamiento  para coches).


Para que  suene   según la  distancia  utilizaremos un zumbador. Frecuencia: 20 Hz – 20.000 Hz
int pinzumbador = 13;    // pin del zumbador
int frecuencia = 220;      // frecuencia correspondiente a la nota La

void setup()
{
}

void loop()
{
    tone(pinzumbador,frecuencia);    // inicia el zumbido
    delay(2000);                    
    noTone(pinzumbador);               // lo detiene a los dos segundos
    delay(1000);
}

No hay comentarios: