top of page
image.png

SENSOR ULTRASÓNICO - ARDUINO Y USOS (HC-SR04)

  • Foto del escritor: Mr T
    Mr T
  • 7 ago 2024
  • 3 Min. de lectura

¡Hola a todos! El día de hoy revisaremos el funcionamiento del sensor ultrasónico y como utilizarlo junto a nuestro Arduino.


Primero que nada, el sensor ultrasónico es un tipo de sensor, que tal como su nombre sugiere, funciona a partir del ultrasonido, El sensor envía un pulso ultrasónico a través de un emisor, la onda del pulso choca contra el objeto más cercano y regresa, siendo recibida por un receptor, y de esta manera el sensor puede calcular el tiempo que demoró el pulso en salir y regresar al sensor, lo cual permite entre muchas cosas, calcular la distancia entre el sensor y dicho objeto, por ejemplo.


SENSOR ULTRASÓNICO HC-SR04:

Uno de los sensores más comunes y populares es el HC-SR04, este se compone de 4 patitas o pines, los de los extremos entrada y salida de energía, y los de en medio los que envian y reciben los pulsos.


Sensor ultrasónico HC-SR04 y sus pines:

ree

Cada pin cumple las siguientes funciones:


VCC: Conectado al positivo de la fuente de energía (Tensión de funcionamiento 5v)

GND: Conexión a Tierra o al negativo

TRIG: Se encarga de enviar los pulsos

ECHO: se encarga de recibir los pulsos


IMPORTANTE:

Por favor, por lo que más quieran, eviten conectar mal este dispositivo, suele ser sensible y en una conexión incorrecta puede resultar en un cortocircuito dañandolo permanentemente.


Tampoco excedan las capacidades de tensión máximos (5V DC).


Procuren asegurarse de que este correctamente polarizado (VCC con positivo y GND con negativo a 5v).


DIAGRAMA Y CONEXIONES:

Para este ejemplo, vamos a conectar de la siguiente manera:


VCC: será conectado al pin de 5v de nuestro Arduino

GND: Sera conectado al pin de tierra

TRIG: será conectado al pin D12

ECHO: será conectado al pin D11


Imagen de ejemplo:

ree
ree

CÓDIGO:

A continuación, voy a presentar un código para que puedan probar este sensor:

//c++
int trig = 12; //con esto definimos cual pin del arduino se conectará al trig en el sensor

int echo = 11; //con esto definimos cual pin del arduino se conectará al echo en el sensor (el que recibe la señal)

//ahora para los datos

int duracion; //variable para guardar la duracion desde que el pulso fue enviado, rebotó en una superficie y volvió al sensor

int distancia; //para guardar el valor de la distancia despues de calcular posteriormente

void setup() {
  pinMode(trig, OUTPUT); //envia la señal
  pinMode(echo, INPUT); //recibe la señal o pulso
  Serial.begin(9600); //para que el puerto serial 9600 (definido por defecto en la configuración del monitor serial en el Arduino IDE) pueda leer las mediciones
}

void loop() {
  digitalWrite(trig, LOW); 
  delay(5);
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);

  //parte para calcular distancia

  duracion = pulseIn(echo, HIGH); //recibir los pulsos enviados

  distancia = duracion * (0.03432 / 2); //fórmula para calcular la distancia: D = V * T

  //visualizar en el monitor serial

  Serial.print("Dist: ");
  Serial.print(distancia);
  Serial.println(" cm");

  delay(500); //para obtener medidas cada cierto periodo de tiempo, puedes ajustarlo a tu gusto

}

Esta resultaría ser la función básica del sensor, pero podemos utilizar para que cumpla diversas otras funciones dentro de nuestro Arduino, como el controlar componentes, para eso por ejemplo podríamos hacer una excepcion con "if" en la que si la distancia medida supera cierto número, un led se prenda:

//c++
int trig = 12; 
int echo = 11; 
int led = 2; //variable para el led

int duracion; 
int distancia; 

void setup() {

  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

void loop() {

  digitalWrite(trig, LOW);
  delay(5);
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);

  //parte para calcular distancia
  duracion = pulseIn(echo, HIGH);

  distancia = duracion * (0.03432 / 2);

  //visualizar en consola

  Serial.print("Dist: ");
  Serial.print(distancia);
  Serial.println(" cm");

  //parte extra
  if (distancia < 30 && distancia > 20)  {
    digitalWrite(led, HIGH); //el led se prenderá si la distancia es menor a 30 pero mayor a 20
  } else {
    digitalWrite(led, LOW); //si la distancia no corresponde, se apagará
  }

  delay(500); 

}

Imagen de este ejemplo:

ree

Pueden ser creativos a su manera sobre como usarán ese código, sin embargo, también cuenta con sus limitaciones, en caso de que pongan acciones largas dentro de los comandos If y else, (como una canción a través de un piezoeléctrico) El Arduino esperará a que aquella acción se acabe para ir a la siguiente medición.


Pero con este código pueden hacer diferentes cosas básicas como, por ejemplo, una Alarma, un sensor de proximidad indicador con leds o mas.


VIDEO DEMOSTRATIVO:


[INSERTAR LINK]


Este fué Mr. T para POWER TO THE BUZZER, hasta la próxima, cualquier duda, no olvides preguntar.

Comentarios


POWER TO THE BUZZER

bottom of page