Icono del sitio AranaCorp

Medición de distancia con el sensor HC-SR04

distance sensor hcsr04 arduino wiring
5
(3)

El HC-SR04 es un sensor ultrasónico que mide la distancia con ondas de ultrasonido. Utiliza el mismo principio que un sonar que envía una onda de sonido y mide el tiempo entre la transmisión y la recepción de su eco.

Material

Principio de funcionamiento

El módulo HC-SR04 consta de un transmisor y un receptor de ultrasonidos. El transmisor envía ondas sonoras cuando recibe una señal del mando de disparo. Estas ondas se reflejan cuando encuentran un obstáculo. El transmisor detecta estas ondas reflejadas y envía una señal de vuelta a la clavija de Eco.

N.B.: Algunas superficies reflejan mejor las ondas sonoras. Elija cuidadosamente su sensor en función de su aplicación.

Diagrama de conexión del sensor HC-SR04

Código

Según las especificationes del sensor, el HC-SR04 tiene un rango de 2 a 400 cm. Para medir una distancia, debe enviarse un pulso de 10 µs al pin de disparo (al menos cada 60 ms) y la duración del pulso de salida debe medirse desde el pin de eco. Esta duración dividida por 58 debería dar el valor en centímetros. Una función útil para medir la duración de un pulso es la función pulseIn().

#define trigPin 3 
#define echoPin 2

long distance;

void setup() { 
  
#define trigPin 3 
#define echoPin 2

long distance;
long duration; 

void setup() { 
  Serial.begin(9600); 
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  } 
  
  void loop() { 
    distance=readUltrasonicSensor();
    if (distance >= 400 || distance <= 0){ 
      Serial.println("Unknown value"); } 
    else { 
      Serial.print(distance); 
      Serial.println(" cm"); 
      } 
      delay(500);// delay in milliseconds 
 } 

long readUltrasonicSensor(){ 
  // Send 10µs pulse 
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW); 
  // Read pulse duration 
  duration = pulseIn(echoPin, HIGH); 
  Serial.println(duration); //Convert and return value 
  return duration/ 58; 
}

N.B. : Dependiendo de dónde haya comprado su sensor y su versión, el rango y el valor de conversión pueden diferir un poco. Verifique las especificaciones de su sensor.

Biblioteca

Para simplificar el código, puede crear o descargar la biblioteca SR04.h (by mrRobot62). El código se puede volver a escribir de la siguiente manera:

#include "SR04.h"
#define TRIG_PIN 3
#define ECHO_PIN 2
#define LOOPDELAY 1000

SR04 hcsr04 = SR04(ECHO_PIN,TRIG_PIN);
long distance;

void setup() {
   Serial.begin(9600);
   delay(LOOPDELAY);
}

void loop() {
   distance=hcsr04.Distance();
   Serial.print(distance);
   Serial.println("cm");
   delay(LOOPDELAY);
}

Solicitud

Fuente

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 5 / 5. Recuento de votos: 3

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Salir de la versión móvil