MEDICION DE DISTANCIA CON SENSOR DE ULTRASONIDO

INTRODUCCIÓN

El funcionamiento del siguiente circuito está relacionado a la medición de la distancia expresada en centímetros de algún objeto, persona, que se encuentre en frente de los sensores. Su despliegue es súper sencillo, como se podrá ver a continuación en los siguientes incisos.

El código del sensor es HC-SR04, más conocido como sensor de ultrasonido, ya que este usa transductores de ultrasonido para la detección de objetos.

El funcionamiento del sensor está relacionado en la emisión de un sonido ultrasónico por uno de sus transductores, y esperar que éste ejecute un salto o rebote en algún objeto presente y este eco podrá ser detectado por el segundo transductor. La distancia es proporcional al tiempo que demora en llegar el eco.

La aplicación de este sensor puede estar relacionado con varios casos de uso, como medición de distancia para detección de personas, medición de contenedores, y mucho más.

MOMENTO DE HACER EL CIRCUITO…

Para la puesta en marcha de este circuito, se necesitará los siguientes componentes:

  • Arduino UNO
  • Sensor de Ultrasonido HC-SR04
  • Cables Jumper Male – Male
  • Cable para conexión de Arduino UNO – USB
  • IDE Arduino

Se muestra a continuación, el diagrama de posición y función de cada uno de los pines del Arduino UNO y del sensor HC-SR04

  • Diagrama Pinout de Arduino UNO
PINOUT DE ARDUINO UNO'
  • Diagrama Pinout del sensor HC-SR04
PINOUT HC-SR04

Ahora se muestra el diagrama de conexiones del circuito presentado:

CIRCUITO

El orden para las conexiones es el siguiente:

SENSOR HC-SR04ARDUINO UNO
VCC5V
GNDGND
Pin TRIGGERD8
Pin ECHOD9

Explicación:

El pin Vcc del sensor es el pin de alimentación del mismo, y se debe alimentar con 5V. El pin Gnd del sensor es el pin de Tierra, por lo que lo conectamos al pin GND del Arduino UNO. El pin Trigger es el encargado de enviar el pulso de ultrasonido, y lo conectamos al pin digital 8; el pin Echo es el encargado de recibir el pulso de ultrasonido emitido, y lo conectamos al pin digital 9.

HORA DE PROGRAMAR NUESTRA TARJETA…

Para realizar la programación del microcontrolador, usaremos el Arduino IDE, por la facilidad y lo sencillo que es programar con dicho programa.

El código a cargar en Arduino UNO es el siguiente:

/*
 * El ejemplo de esta semana es una medición de distancia con sensor de Ultrasonido
 * 
 * Para esta semana, necesitamos lo siguiente:
 * Arduino UNO
 * Sensor HC -SR04
 * Cables Jumper Male-Male
 * Realizado por: Sebastian Carranza C. - TodoMaker
 */

/*Definimos la conexión de los pin del Sensor con el Arduino UNO*/
const int Echo = 9;
const int Trigger= 8;
void setup() {
  /*Iniciamos el terminal Serial*/
  Serial.begin(9600);
  /*El modo de operación de Trigger se define como una SALIDA*/
  pinMode(Trigger, OUTPUT);
  /*El modo de operación de Echo se define como una ENTRADA*/
  pinMode(Echo, INPUT);
  /*El pin Trigger se inicia en un estado BAJO, con un 0 lógico, sin operar por el momento*/
  digitalWrite(Trigger,LOW);
  /*Imprimimos en el terminal Serial*/
  Serial.print("Iniciando la medición de distancia con sensor HC-04");
  Serial.println("");
}

void loop() {
  /*Definimos la variable "t" como el tiempo que demora el eco en llegar de retorno al sensor*/
  long t;
  /*Definimos la variable "d" como la distancia que mide el sensor, en centímetros*/
  long d;
  /*Se realiza un pulso de 10 microsegundos, para poder tener información del mismo*/
  digitalWrite(Trigger, HIGH);
  delayMicroseconds(10);
  digitalWrite(Trigger, LOW);
  /*La variable "t" toma como valor, el ancho del pulso de 10 microsegundos que se implementó*/
  t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
  /*La variable "d" toma el valor del cociente entre el tiempo (en microsegundos) y 59 (ambos se explican en el post)*/
  d = t/59;
  /*Se imprime en el monitor Serial el valor de la Distancia, y añadimos un retardo de aproximadamente 5 segundos*/
  Serial.print("Distancia medida: ");
  Serial.println(d);
  delay(5000);
}

El funcionamiento del código se muestra a continuación:

  • Definimos los pines a usar para la conexión del sensor HC-SR04 con el Arduino UNO; en este caso, el pin Echo está conectado al pin digital 9, y el pin Trigger está conectado al pin digital 8.
/*Definimos la conexión de los pin del Sensor con el Arduino UNO*/
const int Echo = 9;
const int Trigger= 8;
  • Usamos el Setup () para configurar parámetros y/o acciones que se realizarán una sola vez; en este caso, iniciamos nuestro terminal Serial, con una velocidad de 9600 baudios; definimos que el pin digital 8 (Trigger) está definido para ser una salida (en nuestro ejemplo, emite el pulso ultrasónico), y el pin digital 9 (Echo) está definido para ser una entrada (en nuestro ejemplo, recibe el pulso enviado).
void setup() {
  /*Iniciamos el terminal Serial*/
  Serial.begin(9600);
  /*El modo de operación de Trigger se define como una SALIDA*/
  pinMode(Trigger, OUTPUT);
  /*El modo de operación de Echo se define como una ENTRADA*/
  pinMode(Echo, INPUT);
  • Además, definimos que el pin digital 8 está apagado (estado LOW es 0); e imprimimos en el Serial la frase “Iniciando la medición de distancia con sensor HC-04”, junto a un salto de línea. Luego de definir estos puntos, cerramos el Setup para pasar al Loop ().
  /*El pin Trigger se inicia en un estado BAJO, con un 0 lógico, sin operar por el momento*/
  digitalWrite(Trigger,LOW);
  /*Imprimimos en el terminal Serial*/
  Serial.print("Iniciando la medición de distancia con sensor HC-04");
  Serial.println("");
}
  • En Loop (), indicamos variables y/o acciones que se realizarán o actuarán en un ciclo infinito. En nuestro ejemplo, iniciamos definiendo 2 variables muy importantes. La variable “t” la definimos como el tiempo que demora el eco en llegar de retorno al sensor. La variable “d” la definimos como la distancia que mide el sensor, en centímetros.
void loop() {
  /*Definimos la variable "t" como el tiempo que demora el eco en llegar de retorno al sensor*/
  long t;
  /*Definimos la variable "d" como la distancia que mide el sensor, en centímetros*/
  long d;
  • Entramos a la parte interesante. Aquí iniciará el trabajo del sensor. Primero, iniciamos el pin digital 8 (HIGH = 1 lógico), por un tiempo de 10 microsegundos, para luego apagar el pin digital. Esto se realiza para que el sensor pueda emitir el pulso de ultrasonido por un tiempo de 10 microsegundos.
  /*Se realiza un pulso de 10 microsegundos, para poder tener información del mismo*/
  digitalWrite(Trigger, HIGH);
  delayMicroseconds(10);
  digitalWrite(Trigger, LOW);
  • Ahora, el pin digital (Echo) recibe el pulso que fue enviado por el pin Trigger; usamos la función pulseIn () para la medición del ancho del pulso.
  /*La variable "t" toma como valor, el ancho del pulso de 10 microsegundos que se implementó*/
  t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
  • Ahora, en el código se incluye una fórmula para la obtención de la distancia, por medio del tiempo que demoró el pin Echo en recibir el pulso de ultrasonido enviado anteriormente.

Sabemos que: VELOCIDAD = DISTANCIA / TIEMPO

Sabemos también que VELOCIDAD DEL SONIDO = 340 m/s

Pero como necesitamos la velocidad en cm/us, hacemos esa conversión; además, también mencionar que la distancia recorrida por el pulso emitido por el sensor, es 2 veces la distancia del sensor con respecto al objeto, por lo que nuestra fórmula pasaría a tomar esa forma:

FORMULA

Incluimos esta fórmula en nuestro código para poder hallar la distancia.

 /*La variable "d" toma el valor del cociente entre el tiempo (en microsegundos) y 59 (ambos se explican en el post)*/
  d = t/59;
  • Como última línea, imprimimos en el terminal Serial, la distancia medida por el sensor; y cerramos el Loop ().
  /*Se imprime en el monitor Serial el valor de la Distancia, y añadimos un retardo de aproximadamente 5 segundos*/
  Serial.print("Distancia medida: ");
  Serial.println(d);
  delay(5000);
}

HORA DE LAS PRUEBAS DEL CIRCUITO

Se muestra a continuación, imágenes tanto del circuito en físico como del código implementado.

CIRCUITO FISICO
CODIGO ULTRASONIDO

HORA DE PROBAR NUESTRO PROYECTO…

Se muestra a continuación, fotos y video del proyecto en funcionamiento.

TERMINAL DE ARDUINO UNO

CONCLUSIONES

Terminando el ejercicio de esta semana, se concluye que usando un solo sensor y un microcontrolador, podemos realizar un ejercicio bastante interesante como lo es la medición de distancia. Con este parámetro medido, se puede desarrollar distintos casos de uso y proyectos, como medición de contenedores, alarmas con detección de movimiento, etc.

Queremos terminar este blog, mencionando que en el mundo del Internet de las Cosas, la imaginación y creatividad toman un papel importante al momento de desarrollar proyectos, ejercicios, etc.

Te invitamos a tomar el curso de Introducción al ESP32: Introducción al ESP32 | TodoMaker’s School

Previous Post
Next Post