Arduino UNO R4 - Sensor ultrasónico

Este tutorial explica cómo usar el sensor ultrasónico y Arduino UNO R4 para medir la distancia a un objeto. En detalle, aprenderemos:

Sensor ultrasónico para Arduino UNO R4

Acerca del sensor ultrasónico

El sensor ultrasónico HC-SR04 mide la distancia a los objetos utilizando ondas sonoras. Emite una onda sonora que los humanos no pueden oír y luego escucha el eco cuando la onda sonora rebota en un objeto. Al medir el tiempo que tarda la onda sonora en regresar, el sensor puede calcular qué tan lejos está el objeto.

Diagrama de pines

El sensor ultrasónico HC-SR04 viene con cuatro pines:

  • Pin VCC: Conecte este pin a VCC (5V).
  • Pin GND: Conecte este pin a GND (0V).
  • Pin TRIG: Conecte este pin al Arduino UNO R4 para enviar señales de control (pulsos).
  • Pin ECHO: Este pin envía señales (pulsos) de vuelta al Arduino UNO R4. El Arduino UNO R4 entonces calcula la duración de estos pulsos para determinar la distancia.
Diagrama de pines del sensor ultrasónico
image source: diyables.io

Diagrama de Cableado

Diagrama de cableado del sensor ultrasónico Arduino UNO R4

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Uno R4 y otros componentes.

Código de Arduino UNO R4

#define TRIG_PIN 9 // The Arduino UNO R4 pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino UNO R4 pin connected to the ultrasonic sensor's ECHO pin float duration_us, distance_cm; void setup() { // begin serial port Serial.begin (9600); // configure the trigger pin to output mode pinMode(TRIG_PIN, OUTPUT); // configure the echo pin to input mode pinMode(ECHO_PIN, INPUT); } void loop() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance distance_cm = 0.017 * duration_us; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance_cm); Serial.println(" cm"); delay(500); }

Pasos R\u00e1pidos

Siga estas instrucciones paso a paso:

  • Si es la primera vez que usa el Arduino Uno R4 WiFi/Minima, consulte el tutorial sobre configurar el entorno para Arduino Uno R4 WiFi/Minima en el IDE de Arduino.
  • Conecte los componentes de acuerdo con el diagrama proporcionado.
  • Conecte la placa Arduino Uno R4 a su ordenador mediante un cable USB.
  • Inicie el IDE de Arduino en su ordenador.
  • Seleccione la placa Arduino Uno R4 adecuada (p. ej., Arduino Uno R4 WiFi) y el puerto COM.
  • Copie el código anterior y ábralo con el IDE de Arduino
  • Haga clic en el botón Subir en el IDE de Arduino para enviar el código a Arduino UNO R4
Arduino IDE - Cómo subir código
  • Abre el Monitor Serial.
  • Mueve la mano frente al sensor ultrasónico.
  • Comprueba la distancia entre tu mano y el sensor en el Monitor Serial.
COM6
Send
distance: 29.4 cm distance: 27.6 cm distance: 26.9 cm distance: 17.4 cm distance: 16.9 cm distance: 14.3 cm distance: 15.6 cm distance: 13.1 cm
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Explicación del código

La explicación está en los comentarios del código de Arduino anterior.

Cómo filtrar el ruido de las mediciones de distancia del sensor ultrasónico

La lectura del sensor ultrasónico contiene ruido. En algunos casos, estos datos ruidosos pueden provocar un funcionamiento incorrecto. Podemos eliminar el ruido usando este método:

  • Tome varias mediciones y guárdelas en un arreglo.
  • Ordene el arreglo de menor a mayor.
  • Elimine el ruido de los datos:
    • Descarte los valores más pequeños ya que son ruido.
    • Descarte los valores más grandes ya que son ruido.
    • Calcule el promedio usando los valores centrales restantes.

    El código de ejemplo a continuación toma 20 mediciones.

    • Ignora las cinco muestras más pequeñas y las cinco muestras más grandes, ya que se consideran ruido. Calcula el promedio de las diez muestras centrales, desde la 5ª hasta la 14ª.
    /* * Este código de Arduino UNO R4 fue desarrollado por es.newbiely.com * Este código de Arduino UNO R4 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-ultrasonic-sensor */ #define TRIG_PIN 9 // The Arduino UNO R4 pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino UNO R4 pin connected to the ultrasonic sensor's ECHO pin float filterArray[20]; // array to store data samples from sensor float distance; // store the distance from sensor void setup() { // begin serial port Serial.begin (9600); // configure the trigger and echo pins to output mode pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); } void loop() { // 1. TAKING MULTIPLE MEASUREMENTS AND STORE IN AN ARRAY for (int sample = 0; sample < 20; sample++) { filterArray[sample] = ultrasonicMeasure(); delay(30); // to avoid untrasonic interfering } // 2. SORTING THE ARRAY IN ASCENDING ORDER for (int i = 0; i < 19; i++) { for (int j = i + 1; j < 20; j++) { if (filterArray[i] > filterArray[j]) { float swap = filterArray[i]; filterArray[i] = filterArray[j]; filterArray[j] = swap; } } } // 3. FILTERING NOISE // + the five smallest samples are considered as noise -> ignore it // + the five biggest samples are considered as noise -> ignore it // ---------------------------------------------------------------- // => get average of the 10 middle samples (from 5th to 14th) double sum = 0; for (int sample = 5; sample < 15; sample++) { sum += filterArray[sample]; } distance = sum / 10; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance); Serial.println(" cm"); } float ultrasonicMeasure() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin float duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance float distance_cm = 0.017 * duration_us; return distance_cm; }

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Aplicaciones de sensores ultrasónicos

  • Evitar colisiones
  • Detección de llenado
  • Medición de nivel
  • Detección de proximidad

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!