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

En Electrónica, la mayoría de las veces se utilizan sensores ultrasónicos para medir la distancia de un punto en particular a otro. Es muy fácil escribir un código en la placa 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 receptor y el otro en transmisor. Al hacerlo, podremos medir la distancia entre ellos simplemente localizando la posición del transmisor usando muchos receptores ultrasónicos. La técnica que estamos usando aquí se llama Triangulación.

Medir la distancia con Arduino

La técnica utilizada aquí es útil en sistemas de pequeña escala donde se encuentra una pequeña distancia. Para implementarlo a gran escala, seguramente se necesitan algunas modificaciones. A continuación se comentan todos los desafíos que se enfrentaron durante la realización de este proyecto.



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

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



Paso 1: recopilación de los componentes (hardware)

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



  • Cables de puente
  • Adaptador de 5 V CA a CC (x2)

Paso 2: Recopilación de los componentes (software)

  • Proteus 8 Professional (se puede descargar desde aquí )

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

Paso 3: Funcionamiento del HCR-05

Como ahora conocemos el resumen principal de nuestro proyecto, avancemos y realicemos un breve estudio del funcionamiento de HCR-05 . Puede comprender el funcionamiento principal de este sensor mediante el siguiente diagrama.

Este sensor tiene dos pines, pasador de gatillo, y pin ecológico 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 activación para 10us. Una ráfaga sónica de 8 ondas ultrasónicas se envía 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, contraatacará y será recibida por el receptor integrado en el sensor.



Cuando el receptor reciba la onda ultrasónica después de reflejar el sensor, pondrá el pin ecológico a un estado alto. Este pin permanecerá en el estado alto durante el tiempo que será exactamente igual al tiempo que tarda la onda ultrasónica en viajar desde el transmisor y de regreso al receptor del sensor.

Para hacer tu sensor ultrasónico transmisor solamente, simplemente haga que el pin trigonométrico sea su pin de salida y envíe un pulso alto a este pin por 10us. Se iniciará una ráfaga ultrasónica tan pronto como se haga esto. Por lo tanto, siempre que se transmita la onda, solo se controlará el pin de activación del sensor ultrasónico.

No hay forma de hacer que el sensor ultrasónico sea solo receptor porque la subida del pin ECO no puede ser controlada por el microcontrolador porque está relacionada con el pin de activación del sensor. Pero hay una cosa que podemos hacer es cubrir el transmisor de este sensor ultrasónico con cinta adhesiva para que no salga ninguna onda UV. Entonces el pin ECO de este transmisor no se verá afectado por el transmisor.

Paso 4: funcionamiento del circuito

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

Para solucionar este problema, lo que tenemos que hacer es tener que enviar un ALTO señal al ECO del receptor tan pronto como la onda ultrasónica se transmita por el sensor del transmisor. O en palabras simples, podemos decir que el ECO del receptor y el disparador del transmisor deben enviarse a ALTO al mismo tiempo. Entonces, para lograr esto, de alguna manera haremos que el gatillo del receptor suba tan pronto como el gatillo del transmisor suba. Este disparador del receptor permanecerá alto hasta que el pin ECO se apague. BAJO . Cuando el pin ECO del receptor reciba una señal ultrasónica, pasará a BAJO. Esto significará que el disparador del sensor transmisor acaba de recibir una señal ALTA. Ahora, tan pronto como el ECO baje, esperaremos el retraso conocido y pondremos el gatillo del receptor en ALTO. Al hacerlo, los disparadores de ambos sensores se sincronizarán y la distancia se calculará conociendo el tiempo de retraso del viaje de la onda.

Paso 5: Montaje de los componentes

Aunque solo estamos usando el transmisor de un sensor ultrasónico y el receptor del otro, 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. Lleva dos sensores ultrasónicos. Cubra el receptor del primer sensor y el transmisor del segundo sensor. Use 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 ingrese al receptor del primer sensor.
  2. Conecte dos Arduino en dos protoboards separados y conecte sus respectivos sensores con ellos. Conecte el Pin del disparador al pin9 de Arduino y ecoPin al pin10 del Arduino. Encienda el sensor ultrasónico por los 5V de Arduino y común 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 abra el monitor en serie del lado receptor y observe la distancia que se está midiendo.

El diagrama de circuito de este proyecto se ve así:

Diagrama de circuito

Paso 6: Empezando con Arduino

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

  1. Descargue la última versión de Arduino IDE de Arduino.
  2. Conecte su placa Arduino Nano a su computadora portátil y abra el panel de control. en el panel de control, haga clic en Hardware y sonido . Ahora haga clic en Dispositivos e impresoras. Aquí, busque el puerto al que está conectada su placa de microcontrolador. En mi caso es COM14 pero es diferente en diferentes computadoras.

    Encontrar puerto

  3. Haga clic en el menú de herramientas. y coloque el tablero en Arduino Nano en el menú desplegable.

    Tablero de ajuste

  4. En el mismo menú de herramientas, establezca el puerto en el número de puerto que observó antes en el Dispositivos e impresoras .

    Puerto de configuración

  5. En el mismo menú de herramientas, configure el procesador ATmega328P (antiguo Cargador de arranque ).

    Procesador

  6. Descargue el código adjunto a continuación y péguelo en su IDE de Arduino. Clickea en el subir para grabar el código en la placa del microcontrolador.

    Subir

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

Paso 7: Comprensión del código

El código utilizado en este proyecto es muy sencillo y bastante bien comentado. Hay dos archivos de códigos en la carpeta adjunta. El código para el transmisor y el código para el lado del receptor se dan por separado. Cargaremos estos códigos en ambas placas 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 de la placa Arduino que se conectarán al sensor ultrasónico. Luego se declaran las variables que se utilizarán para almacenar valores para el cálculo de tiempo y distancia durante el tiempo de ejecución del código.

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

2. configuración vacía () es una función que se ejecuta solo una vez al inicio cuando la placa se enciende o se presiona el botón de habilitación. Aquí ambos pines de Arduino se declaran para ser usados ​​como ENTRADA y SALIDA . La velocidad en baudios se establece en esta función. La tasa de baudios es la velocidad en bits por segundo a la que el microcontrolador se comunica con el sensor ultrasónico.

configuración vacía () {pinMode (trigPin, SALIDA); // Establece el trigPin como un PinMode de salida (echoPin, INPUT); // Establece echoPin como Input Serial.begin (9600); // Inicia la comunicación en serie}

3. bucle vacío () 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 al pin Trigger del sensor ultrasónico, se activa durante 20 microsegundos y le envía una señal BAJA.

void loop () {// Establece trigPin en estado ALTO durante 10 microsegundos digitalWrite (trigPin, HIGH); // envía una señal ALTA en el disparo del primer sensor delayMicroseconds (10); // espere 10 microsegundos digitalWrite (trigPin, LOW); // envía una señal BAJA al disparador del primer retardo del sensor (2); // espera 0,2 segundos}

Código para el lado del receptor

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

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

2. configuración vacía () es una función que se ejecuta solo una vez al inicio cuando la placa se enciende o se presiona el botón de habilitación. Aquí ambos pines de Arduino se declaran para ser utilizados como ENTRADA y SALIDA. La velocidad en baudios se establece en esta función. La tasa de baudios es la velocidad en bits por segundo a la que el microcontrolador se comunica con el sensor ultrasónico.

configuración vacía () {pinMode (trigPin, SALIDA); // Establece el trigPin como un PinMode de salida (echoPin, INPUT); // Establece echoPin como Input Serial.begin (9600); // Inicia la comunicación en serie}

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

void Trigger_US () {// Activación falsa del sensor estadounidense digitalWrite (trigPin, HIGH); // Envía una señal ALTA al pin de disparo del segundo sensor delayMicroseconds (10); // esperar 10 microsegundos digitalWrite (trigPin, LOW); // envía una señal BAJA al segundo emisor del pin de disparo}

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

void Calc () // función para calcular el tiempo que tarda la onda ultrasónica en viajar {duración = 0; // duración inicialmente establecida en cero Trigger_US (); // llamar a la función Trigger_US while (digitalRead (echoPin) == HIGH); // mientras el estado del pin eo está en alto retardo (2); // pone un retraso de 0,2 segundos Trigger_US (); // llamar a la función Trigger_US duration = pulseIn (echoPin, HIGH); // calcula el tiempo necesario}

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

bucle vacío () {Pdistancia = distancia; Calc (); // llamar a la función Calc () distancia = duración * 0.034; // calculando la distancia cubierta por la onda ultrasónica if (Pdistance == distancia || Pdistance == distancia + 1 || Pdistance == distancia-1) {Serial.print ('Distancia medida:'); // imprimir en el monitor de serie Serial.println (distancia / 2); // imprimir en el monitor serial} //Serial.print('Distance: '); //Serial.println(distance/2); retraso (500); // espera 0,5 segundos}