Medición de la distancia con Arduino y un sensor ultrasónico

Medición de distancias por ultrasonidos con Arduino

La medición de distancias por ultrasonidos es una gran herramienta en numerosas funciones hoy en día. Puede utilizarse en numerosas funciones que recuerdan el posicionamiento, la búsqueda, el dimensionamiento, la decisión, la medición de fases, el control y el perfilado. Realizando algunos cálculos matemáticos con los valores de salida, podemos medir además el ritmo y numerosas dimensiones corporales diferentes. La máquina tiene además funciones dentro del tema de la robótica.

Así que, teniendo en cuenta estas funciones, el sensor ultrasónico es un instrumento magnífico para medir distancias sin hacer ningún contacto corporal para distancias pequeñas. Utilizan la idea de ECHO para medir la distancia. En este reto, aprenderemos a medir el hueco mediante la interconexión del módulo sensor HC-SR04 con Arduino y a mostrar el hueco en una pantalla LCD de 16×2.

Diagrama del circuito de medición de distancia de Venture

La interfaz es realmente fácil. Sólo tienes que respetar el esquema del circuito. Así que, en primer lugar, los pines Trig y Echo del sensor ultrasónico están relacionados con A4 y A5 del Arduino UNO y VCC y GND están relacionados con 5V y GND del Arduino.

Ahora, vamos a mostrar el fallo en una pantalla LCD de 16×2 que está relacionada con el Arduino. Une la clavija RS y la clavija EN con la clavija digital 12 y la clavija digital 11 del Arduino, respectivamente. Ahora une D4-D7 del LCD con el pin digital 5-2 del Arduino. Ahora, además, relacionamos un potenciómetro de 10K para gestionar la distinción de la pantalla LCD, como se muestra en el diagrama del circuito.

Elementos necesarios

Módulo de sensor ultrasónico

El módulo sensor utilizado aquí es HC-SR04que es una máquina de medición por ultrasonidos sin contacto. Este pequeño módulo es capaz de medir el espacio en un rango de 2 cm a 400 cm. Es un sensor realmente correcto, posiblemente puede medir hasta 3 mm.

El sensor está formado por un transmisor de ultrasonidos y un receptor de ultrasonidos. El precepto de trabajo es realmente fácil. En primer lugar, la IO emite una señal de sobrecarga durante 10μs. A continuación, el módulo sensor envía ocho ciclos de sonido ultrasónico de 40 kHz y detecta si la señal de latido vuelve a adquirirse o no. Y si la señal se adquiere, por etapa excesiva, el periodo de tiempo que los disparos de la IO permanecen excesivos es el tiempo que transcurre desde el envío hasta la recepción de la señal.

Distancia = (Tiempo de la etapa excesiva x Velocidad del sonido en el aire (340M/s))/2

Diagrama de tiempo

Como ya hemos dicho, el módulo funciona con el ECO del sonido. Para activar el módulo, se envía un impulso durante unos 10μs. Tras este golpe de, el módulo envía ocho ciclos de 40 kHz de sonido ultrasónico y comprueba su reflejo. Entonces, si hay algún impedimento, la señal choca con él y vuelve de nuevo al receptor. Y ahora el alcance se calcula mediante un sistema fácil mencionado anteriormente. Lo dividimos por 2, ya que este tiempo es el tiempo total que tarda en chocar con el impedimento y vuelve a estar disponible para el receptor, por lo que el tiempo que tarda en chocar con el impedimento es la mitad del tiempo total. El diagrama de sincronización de este sensor se indica a continuación:Diagrama de sincronización del sensor de ultrasonidos

Especificaciones técnicas
  • Tensión de trabajo: 5V
  • Presencia de trabajo: 15mA
  • Frecuencia de trabajo: 40Hz
  • Ángulo de medición: 15°
  • Alcance: de 2 cm a 400 cm
Clavijas del sensor ultrasónico HC-SR04
  • VCC: Alimentación del módulo (a veces +5V)
  • Trig: Se utiliza para activar el módulo.
  • Eco: Es una clavija o/p. Sigue siendo excesivo durante el tiempo que la señal pasa del transmisor a la impedancia, tras lo cual vuelve de nuevo al receptor.
  • GND: Se refiere al suelo del circuito principal.

Como ya se ha dicho, el módulo funciona con el precepto del ECO sonoro. Así, una vez que hemos conectado el módulo a cualquier microcontrolador, primero se acciona el módulo mediante el pin Trig y se envía un pulso de sobrecarga durante 10μs. Entonces esperamos a recibir el ECO. El microcontrolador puede calcular el tiempo. Después, el intervalo se calcula mediante el sistema mencionado.

Arduino UNO

Arduino es un microcontrolador de suministro abierto, ampliamente utilizado en muchas iniciativas incorporadas a pequeña y gran escala. El Arduino que se utiliza en este reto es el Arduino-UNO. La explicación para utilizar este Arduino es que es más barato y más sencillo de interconectar. La placa cuenta con 14 pines de E/S digitales y 6 pines analógicos. El microcontrolador es de código abierto, por lo que depende del consumidor que quiera utilizarlo. Podrás modificar el tablero y el programa informático en función de tus deseos.

módulo LCD 16×2

Estos módulos se utilizan generalmente en muchos lugares de las iniciativas embebidas, ya que son silenciosamente más baratos y más sencillos de interactuar con los microcontroladores. Habrás visto este tipo de programa en calculadoras, musímetros y muchos otros. El módulo LCD utilizado aquí puede mostrar 16 caracteres en una fila y tiene dos filas. Así que principalmente tiene 16 columnas y un par de filas. Cada carácter mostrado consta de 5×8 píxeles (matriz de píxeles).

Si calculas los píxeles enteros de la pantalla completa, el resultado es 5x8x16x2=1280 píxeles. Lo cual es una gran cantidad. Ahora, para mostrar una cosa en la pantalla LCD también tenemos que especificar la ubicación de los caracteres. Así que en realidad es un factor difícil de hacer. Por eso, para realizar el trabajo correctamente, se utiliza un CI con el nombre de HD44780. Este CI recoge la información y las instrucciones del microcontrolador, tras lo cual realiza algún tipo de procesamiento para que la salida especificada se imprima en la pantalla LCD. Este CI hace que la interfaz del LCD sea muy sencilla. Podemos utilizar la pantalla LCD en muchas de nuestras iniciativas para mostrar la salida de los sensores o de todos los demás módulos. Echemos un vistazo a las especificaciones técnicas del módulo LCD.

  • Tensión de trabajo: 4,7V a 5,3V
  • Consumo actual: 1mA con la luz de fondo apagada
  • 2 alineaciones con 16 caracteres en cada línea.
  • Cada carácter está compuesto por una matriz de 5×8 píxeles.
  • El programa es alfanumérico, por lo que posiblemente muestre números además de alfabetos y caracteres particulares.
  • Está disponible en la variante de retroiluminación verde/azul.

Nos permite ver la configuración de los pines del LCD.

descripción y configuración de las clavijas de la pantalla LCD 16×2

Número de clavijasIdentificaDescripción
1VSSEs el suelo y está relacionado con el suelo del circuito.
2VDDAlimentación del LCD (4,7V a 5,3V), a veces 5V
3VEEste pin se utiliza para controlar la distinción de la pantalla LCD. Para actuar, tenemos que acoplar un potenciómetro con este pin. Así, ajustando el mando del potenciómetro podemos obtener rangos de distinción totalmente diferentes en la pantalla.
4RSRegistración Escoge. Este pin se utiliza para cambiar entre la información de comandos y la de registros. Este pin está relacionado con el microcontrolador
5RWAprende/escribe. Este pin se utiliza para aprender o escribir en la pantalla LCD. Normalmente, la información se pone por escrito.
6ESClavija de activación. Este pin está relacionado con el microcontrolador y recibe un 1 o un 0 para confirmar la información.
7Clavijas de conocimiento (0-7)Estos pines se utilizan para enviar información de 8 bits al LCD desde el microcontrolador. Este LCD también puede utilizarse en modo de 4 bits. Para ello, sólo tienes que colocar 4 clavijas de información.
8AÁnodo. Este pin es un pin optimista para la retroiluminación del LCD. Es totalmente no obligatorio hacer uso de este pin. Utilízalo si quieres la luz de fondo. El consumo real es mucho menor si no utilizas la luz de fondo, como se demuestra en las especificaciones técnicas.
9OkCátodo. Este pin es destructivo para la luz de fondo de la pantalla.

Nos permite ver una interfaz fundamental del LCD con el Arduino. Vamos a imprimir algún contenido textual en la pantalla LCD escribiendo un código sencillo. Primero unes el pin RS y EN al pin digital 12 y 11 del Arduino. Ahora une los pines D4-D7 del LCD con los pines digitales 5-2 del Arduino. Ahora une RW, VSS y Ok con tierra y VDD y A con 5V del Arduino. Une un potenciómetro con VE como se demuestra en el esquema del circuito para gestionar la distinción del LCD.

Ahora llega la mitad de la codificación. En primer lugar, tenemos que incorporar la biblioteca LiquidCrystal.h para el LCD.

#embody

Ahora, dentro de las dos cepas siguientes, hemos esbozado variables para los pines de información de la pantalla LCD relacionados con Arduino, tras lo cual las hemos entregado como argumento dentro de la pantalla de cristal líquido para que podamos enviar la información desde el Arduino a la pantalla LCD.

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

LiquidCrystal LiquidCrystal(rs, es, d4, d5, d6, d7) pantalla;

Dentro de los trabajos de configuración, ahora inicializamos la pantalla LCD utilizando la función display.start() de liquidcrystal. Ahora hemos dado 16 y un par de como resultado de la LCD que estamos utilizando tiene 16 columnas y un par de filas y de la misma manera estamos utilizando toda la LCD. Si sólo quieres una parte de la pantalla LCD, puedes acudir a los argumentos correspondientes.

A continuación, imprimimos «¡Hola, mundo!» dentro de la siguiente línea. Podrás imprimir cualquier mensaje personalizado que desees, pero ten en cuenta que los mensajes que superen las dimensiones del programa se imprimirán en la línea siguiente. Por tanto, manipula tu mensaje en consecuencia.

pantalla de cristal líquido.start(16, 2);

pantalla de cristal líquido.print(«¡Hola, mundo!»);

Dentro del bucle operamos el cursor para fijar (0,1), utilizando display.setCursor(). Después de esto, imprimimos la hora para la que se imprime el mensaje.

pantalla de cristal líquido.setCursor(0, 1);

pantalla de cristal líquido.print(millis() / 1000);

Después de escribir el código añádelo a la placa Arduino y también verás que el mensaje se imprimirá en el programa. Puedes cambiar la distinción girando el mando del potenciómetro correspondiente.

Programación de Arduino para medir la distancia con un sensor ultrasónico

La mitad de la codificación es realmente muy sencilla para este reto. Comienza junto con el archivo de cabecera para el LCD.

#embody <LiquidCrystal.h>

En las dos líneas siguientes, hemos descrito las macros para A4 (clavija 18) y A5 (clavija 19) de Arduino, para que podamos utilizar estos nombres en lugar de los números de las clavijas.

#outline trig 18
#outline echo 19

Ahora, dentro de las siguientes líneas, hemos esbozado las variables para varios pines de la pantalla LCD relacionados con Arduino, tras lo cual las hemos entregado a la pantalla de cristal líquido para que podamos inicializar la pantalla LCD.

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal liquid crystal display(rs, en, d4, d5, d6, d7);

Ahora hemos perfilado la variable de hueco «d» y la variable de tiempo «t» y las hemos inicializado con 0.

float t=0,d=0;

Ahora viene la configuración para trabajar. Dentro de la primera línea, inicializamos la pantalla LCD utilizando liquid crystal display.start(), después de lo cual, dentro de las dos cepas siguientes, esbozamos los modos de los pines de apagado y eco como salida y entrada respectivamente.

void setup()
{
 liquid crystal display.start(16,2);
 pinMode(trig,OUTPUT);
 pinMode(echo,INPUT);
}

Luego viene el funcionamiento del bucle. En primer lugar, borramos la pantalla LCD operando display.clear() para que después de cada iteración del bucle la salida anterior no tenga efecto sobre la salida actual. Ahora, dentro de las seis tensiones siguientes, estamos inicializando nuestro sensor ultrasónico enviando el pulso de sobrefase a 10μs. Y como todos sabemos, después de esto, el sensor envía mecánicamente ocho ciclos de 40kHz de sonido ultrasónico y comprueba su reflejo. Así, dentro de la siguiente línea, hemos obtenido la hora del sensor. Entonces calculamos el intervalo. Ahora lo dividimos por 10000 ya que la velocidad está en metros/segundo, así que tenemos que convertirlo en centímetros.

void loop() 
{
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  t = pulseIn(echo, HIGH);
  d = t * 0.0340 / 2;
  d = t * 0.01330 / 2;
  liquid crystal display.setCursor(0, 0);
  liquid crystal display.print("Distance: ");
  liquid crystal display.print(d);
  liquid crystal display.print(" cm");
  delay(1000); 
}

Trabajo a distancia Midiendo Circuito

Después de escribir el código, añádelo al Arduino y ya está todo listo. Ahora presiona cualquier objeto o tu mano sobre la entrada del sensor. Comprueba el espacio en la pantalla. Sujétalo cambiando el hueco del elemento en el sensor y también obtendrás una distancia muy buena y correcta.

Después de inicializar el sensor enviando el pulso de la etapa excesiva durante 10μs, el sensor envía ocho ciclos ultrasónicos de 40kHz y si estos ciclos son reflejados por algún impedimento, entonces se vuelven a reflejar en el receptor. Ahora, el sensor proporciona el tiempo que tarda en viajar la señal ultrasónica desde el transmisor hasta el impedimento y desde el impedimento hasta el receptor. Por tanto, utilizamos este tiempo para calcular el intervalo entre el sensor y el impedimento.

Funcionamiento del circuito de medición de la distancia y resultado final en la pantalla LCD

Mensajes asociados:

Lee:  Potenciómetro
Javired
Javired

Deja una respuesta

Tu dirección de correo electrónico no será publicada.