¿Cómo medir la distancia entre dos puntos usando Arduino?

En la electrónica, la mayoría de las veces los sensores ultrasónicos se utilizan para medir la distancia de un punto en particular a otro. Es muy fácil escribir un código en la placa de Arduino e integrar un sensor ultrasónico para llevar a cabo esta tarea. Pero en este artículo, vamos a adoptar un enfoque diferente. Vamos a utilizar dos sensores ultrasónicos separados que se integrarán con dos Arduino separados. Estos dos módulos se colocarán en dos puntos diferentes entre los que se medirá la distancia. Un sensor se convertirá en un receptor y el otro en un transmisor. De esta manera, podremos medir la distancia entre ellos con sólo localizar la posición del transmisor mediante el uso de muchos receptores ultrasónicos. La técnica que estamos usando aquí se llama Triangulación.

Medición de la distancia con Arduino

La técnica utilizada aquí es sólo útil en sistemas de pequeña escala donde se encuentra una pequeña distancia. Para implementarla a gran escala, seguramente se necesitan algunas modificaciones. Todos los desafíos que se enfrentaron al llevar a cabo este proyecto se discuten a continuación.

¿Cómo usar el Arduino y el sensor ultrasónico para medir la distancia?

Como conocemos el resumen que hay detrás del proyecto, sigamos adelante y recopilemos más información para iniciar el proyecto.

Paso 1: Reunir los componentes (hardware)

Si se quiere evitar cualquier inconveniente en medio de cualquier proyecto, lo mejor es hacer una lista completa de todos los componentes que vamos a utilizar. El segundo paso, antes de empezar a hacer el circuito, es hacer un breve estudio de todos estos componentes. A continuación se presenta una lista de todos los componentes que necesitamos en este proyecto.

Paso 2: Reunir los componentes (software)

  • Proteus 8 Professional (Puede ser descargado desde aquí)

Después de descargar el Proteus 8 Professional, diseñe el circuito en él. He incluido aquí simulaciones de software para que sea conveniente para los principiantes diseñar el circuito y hacer las conexiones apropiadas en el hardware.

Paso 3: Funcionamiento del HCR-05

Como ya conocemos el resumen principal de nuestro proyecto, sigamos adelante y hagamos un breve estudio del funcionamiento del HCR-05. Pueden entender el funcionamiento principal de este sensor por el siguiente diagrama.

Este sensor tiene dos clavijas, clavija de disparo, y clavija eco que se utilizan para medir la distancia entre dos puntos particulares. El proceso se inicia enviando una onda ultrasónica desde el sensor. Esta tarea se realiza activando el pin de disparo para 10us. Una ráfaga sónica de 8 ondas ultrasónicas es enviada desde el transmisor tan pronto como se realiza esta tarea. esta onda viajará en el aire y tan pronto como golpee un objeto en su camino, devolverá el golpe y será recibida por el receptor incorporado en el sensor.

Cuando la onda ultrasónica sea recibida por el receptor después de reflejar el sensor, pondrá el eco pin en un estado alto. Esta clavija permanecerá en el estado alto durante un tiempo que será exactamente igual al tiempo que tarda la onda ultrasónica en viajar desde el transmisor y volver al receptor del sensor.

También te puede interesar:  ¿Qué es un implante coclear y cómo funciona?

Para hacer que tu sensor ultrasónico sea sólo un transmisor, sólo haz el pin de disparo como tu pin de salida y envía un pulso alto a este pin por 10us. Una ráfaga ultrasónica se iniciará tan pronto como esto se haga. Así que, siempre que la onda vaya a ser transmitida, sólo se controlará el pin de disparo del sensor ultrasónico.

No hay manera de hacer que el sensor ultrasónico sea sólo un receptor porque la subida de la clavija ECO no puede ser controlada por el microcontrolador porque está relacionada con la clavija de disparo del sensor. Pero hay una cosa que podemos hacer, podemos cubrir el transmisor de este sensor ultrasónico con cinta adhesiva s que no salga ninguna onda UV. Entonces la clavija ECO de este transmisor no se verá afectada por el transmisor.

Paso 4: Funcionamiento del circuito

Ahora, como hemos hecho que ambos sensores funcionen por separado como un transmisor y un receptor, hay un gran problema que se enfrenta aquí. El receptor no sabrá el tiempo que tarda la onda ultrasónica en viajar del transmisor al receptor porque no sabe exactamente cuándo se transmitió esta onda.

Para resolver este problema, lo que tenemos que hacer es tener que enviar una señal ALTA al ECO del receptor tan pronto como la onda ultrasónica sea transmitida por el sensor transmisor. O en palabras simples, podemos decir que el ECO del receptor y el disparador del transmisor deben ser enviados a HIGH al mismo tiempo. Así, para lograr esto, de alguna manera haremos que el disparador del receptor llegue alto tan pronto como el disparador del transmisor llegue alto. Este disparador del receptor permanecerá alto hasta que el pin de ECO vaya BAJO . Cuando una señal ultrasónica sea recibida por el ECO pin del receptor, se pondrá BAJA. Esto significará que el disparador del sensor del transmisor acaba de recibir una señal ALTA. Ahora, tan pronto como el ECO baje, esperaremos el retraso conocido y pondremos el disparador del receptor en ALTO. Al hacerlo, los disparos de ambos sensores se sincronizarán y la distancia se calculará conociendo el retardo de tiempo del viaje de la onda.

Paso 5: Ensamblar los componentes

Aunque sólo utilizamos el transmisor de un sensor ultrasónico y el receptor del otro, pero es obligatorio conectar los cuatro pines del sensor ultrasónico al Arduino. Para conectar el circuito, siga los pasos que se indican a continuación:

  1. Tome dos sensores ultrasónicos. Cubra el receptor del primer sensor y el transmisor del segundo sensor. Utilice cinta adhesiva blanca para este propósito y asegúrese de que estos dos estén completamente cubiertos para que ninguna señal salga del transmisor del segundo sensor y ninguna señal llegue al receptor del primer sensor.
  2. Conecta dos Arduino en dos tableros separados y conecta sus respectivos sensores con ellos. Conecta el pin de disparo al pin9 de Arduino y el ecoPin al pin10 de Arduino. Enciende el sensor ultrasónico por los 5V de Arduino y comparte todos los terrenos.
  3. Sube el código del receptor al Arduino del receptor y el código del transmisor al Arduino del transmisor.
  4. Ahora abre el monitor de serie del lado receptor y anota la distancia que se está midiendo.
También te puede interesar:  ¿Cómo encontrar solicitudes de mensajes ocultos y filtrados en Facebook?

El diagrama de circuitos de este proyecto se parece a:

Diagrama de circuito

Paso 6: Empezar con Arduino

Si no está familiarizado con el IDE de Arduino, no se preocupe porque a continuación se explica un procedimiento paso a paso para configurar y utilizar el IDE de Arduino con una placa de microcontrolador.

  1. Descargue la última versión de Arduino IDE de Arduino.
  2. Conecta tu placa Arduino Nano a tu portátil y abre el panel de control. en el panel de control, haz clic en Hardware y Sonido . Ahora haga clic en Dispositivos e Impresoras. Aquí, encuentra el puerto al que está conectada tu placa de microcontrolador. En mi caso es COM14 pero es diferente en diferentes computadoras.Encontrar el puerto
  3. Haz clic en el menú de herramientas. y configura el tablero a Arduino Nano desde el menú desplegable.Tablero de configuración
  4. En el mismo menú de herramientas, ajuste el puerto al número de puerto que observó antes en el Dispositivos e impresoras .Ajuste del puerto
  5. En el mismo menú de herramientas, ajuste el procesador a ATmega328P (Old Bootloader).Procesador
  6. Descargue el código adjunto y péguelo en su IDE de Arduino. Haga clic en el botón upload para grabar el código en su placa de microcontrolador.Upload

Para descargar el código, haga clic aquí.

Paso 7: Entendiendo el código

El código utilizado en este proyecto es muy simple y bastante bien comentado. Hay dos archivos de códigos en la carpeta adjunta. El código para el transmisor y un código para el lado del receptor, ambos se dan por separado. Subiremos estos códigos en las dos tablas de Arduino respectivas. Aunque se explica por sí mismo, se describe brevemente a continuación.

Código para el lado del transmisor

1. Al principio, se inicializan los pines del tablero de Arduino que se conectarán al sensor ultrasónico. Luego se declaran las variables que se utilizarán para almacenar los valores para el cálculo del tiempo y la distancia durante el tiempo de ejecución del código.

// define los números de los pines
Const int trigPin = 9; // Conecta el trigPin del sensor ultrasónico al pin9 de Arduino
const int echoPin = 10; // Conecta el eco pin del sensor ultrasónico al pin10 de Arduino
// define las variables
de larga duración; // variable para almacenar el tiempo que tarda la onda ultrasónica t en viajar
int distancia; // variable para almacenar la distancia calculada

2. void setup() es una función que se ejecuta una sola vez en el arranque cuando se enciende la placa o se pulsa el botón de habilitación. Aquí se declaran los dos pines de Arduino como INPUT y OUTPUT . La velocidad de transmisión se establece en esta función. La tasa de baudios es la velocidad en bits por segundo con la que el microcontrolador se comunica con el sensor ultrasónico.

evitar la configuración() {
 pinMode(trigPin, OUTPUT); // Establece el trigPin como una salida
 pinMode(echoPin, INPUT); // Establece el echoPin como una entrada
 Serial.begin(9600); // Inicia la comunicación en serie
}

3. void loop() es una función que se ejecuta una y otra vez en un bucle. Aquí hemos codificado el microcontrolador para que envíe una señal ALTA a la clavija de disparo del sensor ultrasónico, espere 20 microsegundos y le envíe una señal BAJA.

void loop() {
// Establece el trigPin en estado ALTO durante 10 micro segundos
digitalWrite(trigPin, HIGH); // enviar una señal HIGH en el disparador del primer sensor
retrasoMicrosegundos(10); // espera 10 micro segundos
digitalWrite(trigPin, LOW); // enviar una señal LOW al disparador del primer sensor
retraso(2); // espera 0,2 segundos
}

Código para el lado del receptor

1. Al principio, se inicializan los pines del tablero de Arduino que se conectarán al sensor ultrasónico. Luego se declaran las variables que se utilizarán para almacenar los valores para el cálculo del tiempo y la distancia durante el tiempo de ejecución del código.

// define los números de los pines
Const int trigPin = 9; // Conecta el trigPin del sensor ultrasónico al pin9 de Arduino
const int echoPin = 10; // Conecta el eco pin del sensor ultrasónico al pin10 de Arduino
// define las variables
de larga duración; // variable para almacenar el tiempo que tarda la onda ultrasónica t en viajar
int distancia; // variable para almacenar la distancia calculada

2. void setup() es una función que se ejecuta una sola vez en el arranque cuando se enciende la placa o se pulsa el botón de habilitación. Aquí se declaran ambos pines de Arduino para ser usados como INPUT y OUTPUT. La velocidad de transmisión se establece en esta función. La tasa de baudios es la velocidad en bits por segundo con la que el microcontrolador se comunica con el sensor ultrasónico.

evitar la configuración() {
 pinMode(trigPin, OUTPUT); // Establece el trigPin como una salida
 pinMode(echoPin, INPUT); // Establece el echoPin como una entrada
 Serial.begin(9600); // Inicia la comunicación en serie
}

3. void Trigger_US() es una función que se llamará para el falso disparo de la clavija de disparo del segundo sensor ultrasónico. Sincronizaremos el tiempo de disparo de la clavija de disparo de ambos sensores.

evitar Trigger_US()
{
 // Falsos disparos del sensor de EE.UU.
 digitalWrite(trigPin, HIGH); // Envía una señal HIGH al pin de disparo del segundo sensor
 retrasoMicrosegundos(10); // espera 10 microsegundos
 digitalWrite(trigPin, LOW); // enviar una señal LOW al segundo emisor del pin de disparo
}

4. void Calc() es una función que se utiliza para calcular el tiempo que tarda la señal ultrasónica en viajar del primer sensor al segundo.

evitar la función Calc() // para calcular el tiempo que tarda la onda ultrasónica en viajar
{
 duración=0; // duración inicialmente fijada en cero
 Trigger_US(); // llamar a la función Trigger_US
 while (digitalRead(echoPin)==ALTA); // while the status of eo pin in high
 retraso(2); // poner un retraso de 0,2 segundos
 Trigger_US(); // llamar a la función Trigger_US
 duración = pulseIn(echoPin, HIGH); // calcule el tiempo tomado
}
También te puede interesar:  ¿Cómo se mide la frecuencia cardíaca con el sensor de latidos del corazón?

5. Aquí, en la función void loop() , estamos calculando la distancia utilizando el tiempo que tarda la señal ultrasónica en viajar del primer sensor al segundo.

void loop() {
Distancia = distancia;
Calc(); // llama a la función Calc()
distancia= duración*0,034; // calificando la distancia cubierta por la onda ultrasónica
si (Distancia==distancia || Distancia==distancia+1 || Distancia==distancia-1 )
{
Serial.print("Distancia medida: "); // print on serial monitor
Serial.println(distancia/2); // imprimir en el monitor serial
}
//Serial.print("Distancia: ");
//Serial.println(distancia/2);
retraso(500); // espera 0.5 segundos
}

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.