Sensor ultrasónico de distancia
El módulo de ultrasonido HC-SR04 es un dispositivo popular utilizado para medir distancias utilizando ondas ultrasónicas. Consiste en un transmisor y un receptor ultrasónicos que trabajan en conjunto para calcular la distancia entre el módulo y un objeto.
El transductor ultrasónico emisor convierte una señal eléctrica en una onda ultrasónica, que es inaudible para los humanos debido a su alta frecuencia. Esta onda ultrasónica se emite desde el sensor y se propaga en el aire en forma de un «chirrido» o «clic» de corta duración.
Cuando la onda ultrasónica choca con un objeto en su camino, se refleja y regresa al sensor. El transductor ultrasónico receptor recibe esta onda ultrasónica reflejada y la convierte de nuevo en una señal eléctrica.
El sensor mide el tiempo transcurrido desde que se emitió la señal ultrasónica hasta que se recibió su eco. Basándose en el tiempo de ida y vuelta y la velocidad conocida del sonido en el aire, el sensor puede calcular la distancia al objeto utilizando la fórmula: distancia = (velocidad del sonido x tiempo de ida y vuelta) / 2.
Es importante tener en cuenta que la velocidad del sonido en el aire puede variar ligeramente según la temperatura y la humedad, por lo que se utiliza un valor aproximado de 343 metros por segundo para el cálculo.
El sensor HC-SR04 se conecta a una placa Arduino u otro microcontrolador, y a través de programación, se puede leer la señal de eco recibida y realizar los cálculos necesarios para obtener la distancia al objeto.
Este tipo de sensor se utiliza ampliamente en proyectos de robótica, sistemas de seguridad, sistemas de navegación y muchas otras aplicaciones donde se requiere medir distancias de manera precisa y sin contacto.
Aquí tienes un ejemplo más simple que muestra la distancia medida por el sensor HC-SR04 en el monitor serial:
#define TRIG_PIN 2
#define ECHO_PIN 3
void setup() {
Serial.begin(9600);
}
void loop() {
long duration, distance;
// Generar un pulso de 10 microsegundos en el pin Trig
pinMode(TRIG_PIN, OUTPUT);
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Medir la duración del pulso en el pin Echo
pinMode(ECHO_PIN, INPUT);
duration = pulseIn(ECHO_PIN, HIGH);
// Calcular la distancia en centímetros
distance = duration * 0.034 / 2;
// Mostrar la distancia en el monitor serial
Serial.print("Distancia: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000);
}