Ir al contenido

Detección de objetos en movimiento con el sensor ultrasónico HC-SR04

Cómo usar el sensor HC-SR04 para crear un detector de movimiento
1 de septiembre de 2022 por
Detección de objetos en movimiento con el sensor ultrasónico HC-SR04
Boot & Work Corp. S.L, Bernat Brunet Pedra

Introducción

Los sensores ultrasónicos miden la distancia a los objetos emitiendo ondas y midiendo el tiempo que transcurre entre la emisión y la recepción de la onda. En este artículo aprenderás a construir un detector de movimiento con este sensor.

Requisitos

Montaje del detector

Lo primero es conectar el sensor al PLC como indica la tabla siguiente. Como el HC-SR04 tiene 4 pines, harán falta 4 cables.

HC-SR04M-Duino PLC
Vcc5V
GNDGND
TrigPin 3
EchoPin 2

Comprueba que los interruptores situados tras las conexiones permiten el acceso al Pin 2 y al Pin 3.

Una vez conectado el sensor, ya puedes cargar el programa en el PLC. El código que hay que subir es el siguiente:

#define threshold 200
bool cooldown = false;
const int E = 2;
const int T = 3;

void setup() {
    Serial.begin(9600);
    pinMode(T, OUTPUT);
    pinMode(E, INPUT);
    digitalWrite(2, LOW);
}

void loop() {
    long t;
    long d;
    digitalWrite(T, HIGH);
    delayMicroseconds(10);
    digitalWrite(T, LOW);
    t = pulseIn(E, HIGH);
    d = t / 59;

    if (d > threshold ) {
        cooldown = false;
        digitalWrite(Q0_0, LOW);
    }

    else if (d <= threshold and !cooldown) {
        Serial.print("Someone passed at "); Serial.print(d); Serial.println(" cm");
        digitalWrite(Q0_0, HIGH);
        cooldown = true;
    }
    delay(60);
}

Las primeras líneas definen dónde están conectados los pines Trigger y Echo (pines 2 y 3). El valor threshold es la distancia límite a la que el sensor detecta movimiento: si algo se mueve a una distancia inferior a ese valor, el detector lo advierte. Después se inicializan el puerto serie y los modos de los pines del sensor.

En la función loop se envía un pulso de 10 microsegundos desde el pin Trigger y, con la función pulseIn(), el pin Echo mide exactamente cuánto tiempo ha pasado desde que se emitió el pulso. Con ese tiempo se calcula la distancia a partir de la fórmula v = d / t, tomando v como 340 m/s (velocidad del sonido en el aire). Al pasarlo a cm/us, la distancia al objeto es igual al tiempo medido con pulseIn() dividido entre 29,5. Como el tiempo que recibe el pin Echo es el de ida y vuelta de la onda, hay que dividir el resultado entre 2. La fórmula final es la siguiente:

d (cm) = t (us) / (2*29,5) = t (us) / 59

Una vez conocida la distancia al objeto, una sentencia if decide si es menor que el valor threshold. En ese caso se muestra un mensaje y se enciende un LED. Para evitar mensajes repetidos si el objeto permanece delante del sensor, el código incluye una variable cooldown que solo permite nuevos mensajes cuando el objeto que activó el sensor ya ha pasado.

Buscar en nuestro blog

Detección de objetos en movimiento con el sensor ultrasónico HC-SR04
Boot & Work Corp. S.L, Bernat Brunet Pedra 1 de septiembre de 2022
Compartir esta publicación
Etiquetas

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.

Comparativa de PLCs