Tabla de contenido
Proyecto de medición de distancia ultrasónica con Arduino
La búsqueda de rango ultrasónico es una herramienta útil en una variedad de aplicaciones en estos días. Se puede utilizar en diversas aplicaciones, como posicionamiento, posicionamiento, dimensionamiento, selección, medición de nivel, control y perfilado. También puede medir la velocidad y otras dimensiones físicas haciendo cálculos matemáticos con los valores de salida. El dispositivo también tiene aplicaciones en el campo de la robótica.
Por lo tanto, con estas aplicaciones en mente, los sensores ultrasónicos son excelentes herramientas para medir distancias sin contacto físico. Mida la distancia usando el concepto de ECHO. En este proyecto, aprenderá cómo conectar el módulo sensor HC-SR04 a Arduino para medir la distancia y mostrar la distancia en una pantalla LCD de 16×2.
Esquema del proyecto de medición de distancia
La interfaz es muy simple. Solo sigue el esquema. Primero, conecte los pines Trig y Echo del sensor ultrasónico a A4 y A5 en Arduino UNO, y conecte VCC y GND a 5V y GND en Arduino.
Luego muestre la distancia en una pantalla LCD de 16×2 conectada al Arduino. Conecte los pines RS y EN al pin digital 12 de Arduino y al pin digital 11 respectivamente. Conecte D4-D7 de la pantalla LCD a los pines digitales 5-2 del Arduino. También conecté un potenciómetro de 10K para controlar el contraste de la pantalla LCD como se muestra en el esquema.
Componentes necesarios
módulo de sensor ultrasónico
El módulo sensor utilizado esta vez es HC-SR04, es un dispositivo de medición ultrasónica sin contacto. Este pequeño módulo puede medir distancias dentro del rango de 2 cm a 400 cm. Este es un sensor muy preciso y puede medir hasta 3 mm.
El sensor consta de un transmisor ultrasónico y un receptor ultrasónico. El principio de funcionamiento es realmente simple. Primero, el disparador IO envía una señal de alto nivel durante 10 μs. Luego, el módulo del sensor enviará ondas ultrasónicas con un período de 40 kHz 8 veces y detectará si se recibe la señal del pulso. Además, si la señal se recibe alta, el tiempo que el activador de E/S permanece alto es el tiempo desde que se envía la señal hasta que se recibe.
Distancia = (tiempo a alto nivel x velocidad del sonido en el aire (340M/s))/2
diagrama de tiempo
Como se mencionó anteriormente, el módulo actúa sobre el ECHO del sonido. Se envía un pulso de aproximadamente 10 µs para activar el módulo. Después de este proceso, el módulo transmite ocho veces ultrasonidos de 40 kHz y verifica los reflejos. Entonces, si hay un obstáculo, la señal golpea el obstáculo y regresa al receptor. Y ahora la distancia se calcula con la sencilla fórmula explicada anteriormente. Lo dividimos por 2 porque este tiempo es el tiempo total para llegar al obstáculo y volver al receptor, y el tiempo que tarda en llegar al obstáculo es la mitad del tiempo total. El diagrama de tiempo para este sensor se muestra a continuación.
Especificaciones técnicas
- Voltaje de funcionamiento: 5V
- Corriente de trabajo: 15mA
- Frecuencia de funcionamiento: 40Hz
- Ángulo de medición: 15°
- Rango: 2cm a 400cm
Diseño de pines del sensor ultrasónico HC-SR04
- VCC: Fuente de alimentación del módulo (típicamente +5V)
- Trig: Se utiliza para activar el módulo.
- Eco: pin o/p. La señal permanece alta mientras viaja desde el transmisor hasta el obstáculo y de regreso al receptor.
- GND: Conectar a tierra del circuito principal.
Como se mencionó anteriormente, el módulo funciona según el principio de eco de sonido. Entonces, cuando conecta el módulo a cualquier microcontrolador, primero el módulo se activa a través del pin Trig, enviando un pulso de alto nivel por 10us. Luego espere a recibir un ECHO. Un microcontrolador puede calcular el tiempo. Y la distancia se calcula con la fórmula anterior.
Arduino UNO
Arduino es un microcontrolador de código abierto ampliamente utilizado en muchos proyectos integrados pequeños y grandes. El Arduino utilizado en este proyecto es Arduino-UNO. La razón por la que uso este Arduino es porque es barato y fácil de interconectar. Esta placa tiene 14 pines de E/S digitales y 6 pines analógicos. El microcontrolador es de código abierto, por lo que depende de usted cómo lo use. Las placas y el software se pueden cambiar según sea necesario.
Módulo LCD 16×2
Estos módulos se usan comúnmente en muchos lugares en proyectos integrados. Esto se debe a que son silenciosos, económicos y fáciles de interconectar con microcontroladores. Es posible que haya visto este tipo de pantalla en calculadoras, medidores musculares, etc. El módulo LCD utilizado aquí puede mostrar 16 caracteres por línea y tiene dos líneas. Entonces, básicamente, 16 columnas y 2 filas. Cada carácter mostrado consta de 5×8 píxeles (matriz de píxeles).
Si calculamos el número total de píxeles de toda la pantalla LCD, obtenemos 5x8x16x2=1280 píxeles. Este es un gran número. Para mostrar algo en la pantalla LCD, también debe especificar la posición del carácter. Así que es muy difícil. Por lo tanto, se utiliza un IC denominado HD44780 para gestionar el funcionamiento adecuado. Este IC toma los datos y los comandos del microcontrolador y realiza algún procesamiento para que la salida deseada se pueda mostrar en la pantalla LCD. Este IC hace que sea muy fácil interactuar con una pantalla LCD. Muchos proyectos pueden usar una pantalla LCD para mostrar la salida de sensores u otros módulos. Echemos un vistazo a algunas de las especificaciones técnicas de los módulos LCD.
- Voltaje de funcionamiento: 4,7 V a 5,3 V
- Consumo de corriente: 1mA cuando no se usa luz de fondo
- Dos líneas de 16 caracteres cada una.
- Cada carácter consta de una matriz de 5×8 píxeles.
- La pantalla es alfanumérica, por lo que puede mostrar letras y caracteres especiales además de números.
- Hay una variante de retroiluminación verde/azul.
Echemos un vistazo al pinout de la pantalla LCD.
Pinout LCD 16×2 y descripción
número de PIN | nombre | explicación |
1 | VSS | Es tierra y está conectado a la tierra del circuito. |
2 | VDD | Fuente de alimentación LCD (4,7 V a 5,3 V), normalmente 5 V |
3 | VE | Este pin se utiliza para manipular el contraste de la pantalla LCD. Para eso necesitas conectar un potenciómetro a este pin. Por lo tanto, se pueden mostrar diferentes niveles de contraste ajustando la perilla del potenciómetro. |
cuatro | RS | Elección de registro. Este pin se usa para cambiar entre el comando y los registros de datos.Este pin está conectado al microcontrolador. |
Cinco | RW | Lee y escribe. Este pin se utiliza para leer o escribir en la pantalla LCD. Normalmente conectado a tierra para escribir datos. |
6 | ES | Habilitar pin. Este pin está conectado al microcontrolador y se le asigna un 1 o un 0 para verificar los datos. |
7 | Pines de datos (0-7) | Estos pines se utilizan para enviar datos de 8 bits desde el microcontrolador a la pantalla LCD. Esta pantalla LCD también se puede utilizar en modo de 4 bits. Todo lo que tienes que hacer es conectar cuatro pines de datos. |
8 | a | ánodo. Terminal positivo para retroiluminación LCD. El uso de este pin es completamente opcional. Se utiliza cuando se requiere retroiluminación. Como muestran las especificaciones técnicas, el consumo de corriente es muy bajo sin la luz de fondo. |
9 | k | cátodo. Pin negativo para retroiluminación LCD. |
Echemos un vistazo a la interfaz básica entre LCD y Arduino. Escriba un código simple para imprimir texto en la pantalla LCD. Primero conecte los pines RS y EN a los pines digitales 12 y 11 en el Arduino. Conecte los pines D4-D7 de la pantalla LCD a los pines digitales 5-2 de Arduino. Conecte RW, VSS y K a tierra y conecte VDD y A a 5V en el Arduino. Conecte un potenciómetro a VE como se muestra en el esquema para controlar el contraste de la pantalla LCD.
Ahora ven a la parte de codificación. Primero, debemos incluir la biblioteca LiquidCrystal.h para la pantalla LCD.
#incluir
Las siguientes dos líneas definen variables para los pines de datos de la pantalla LCD conectada al Arduino y las pasan como argumentos a la función lcd para que el Arduino pueda enviar datos a la pantalla LCD.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
En la función de configuración, usamos la función lcd.begin() para inicializar la pantalla LCD. El LCD que estoy usando tiene 16 columnas y 2 filas, y estoy usando todo el LCD, así que pasé 16 y 2. Si solo desea una parte de la pantalla LCD, puede pasar los argumentos en consecuencia.
Luego imprima “¡Hola, mundo!” en la línea siguiente. Puede imprimir cualquier mensaje personalizado que desee imprimir, pero tenga en cuenta que los mensajes que excedan el tamaño de su pantalla se imprimirán en la siguiente línea. Por lo tanto, manipule sus mensajes en consecuencia.
lcd.begin(16, 2);
lcd.print(“¡Hola, mundo!”);
En la función de bucle, utilicé la función lcd.setCursor() para colocar el cursor en la posición (0,1). Después de esto estoy imprimiendo la hora en que se está imprimiendo el mensaje.
lcd.setCursor(0, 1);
lcd.imprimir(milis()/1000);
Después de escribir el código, cárguelo en la placa Arduino y verá un mensaje en la pantalla. Puede cambiar el contraste girando la perilla del potenciómetro conectado.
Programación de Arduino para medición de distancia de sensor ultrasónico
La parte de codificación de este proyecto es bastante sencilla. Comience por incluir el archivo de encabezado de LCD.
#include <LiquidCrystal.h>
Las siguientes dos líneas definen macros para los pines Arduino A4 (pin 18) y A5 (pin 19) para que pueda usar estos nombres en lugar de usar números de pin.
#define trig 18
#define echo 19
La siguiente línea define variables para los diversos pines de la pantalla LCD conectados al Arduino y los pasa a la función lcd para que la pantalla LCD pueda inicializarse.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Ahora hemos definido una variable de distancia ‘d’ y una variable de tiempo ‘t’ y las inicializamos a 0.
float t=0,d=0;
Luego vaya a la función de configuración. La primera línea inicializa la pantalla LCD usando lcd.begin(), y las siguientes dos líneas definen los modos de pin para los pines de disparo y eco como salida y entrada respectivamente.
void setup()
{
lcd.begin(16,2);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
}
La siguiente es la función de bucle. Primero, borré la pantalla LCD con la función lcd.clear() para que la salida anterior no afecte la salida actual en cada iteración del bucle. Las siguientes 6 líneas envían un pulso de alto nivel de 10 μs para inicializar el sensor ultrasónico. Y después de esto, el sensor enviará automáticamente un ultrasonido de 40 kHz 8 veces y verificará su reflejo. La siguiente línea obtiene la hora del sensor. Luego calcula la distancia. La velocidad está en metros/segundo, entonces la dividimos por 10000. Así que tienes que convertir a 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;
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(d);
lcd.print(" cm");
delay(1000);
}
Cómo funciona la distancia medición circuito
Una vez que haya escrito el código, cárguelo en Arduino y estará listo para comenzar. Acerque un objeto o una mano al sensor. Compruebe la distancia en la pantalla LCD. Si sigue cambiando la distancia del sensor al objeto, obtendrá la distancia correcta.
Después de inicializar el sensor mediante el envío de un pulso de alto nivel durante 10 μs, el sensor enviará ocho ciclos ultrasónicos de 40 kHz y, si estos ciclos se reflejan en un obstáculo, se reflejarán de vuelta al receptor. Aquí los sensores indican el tiempo que tarda la señal ultrasónica en viajar desde el transmisor hasta el obstáculo y desde el obstáculo hasta el receptor. Así que usa este tiempo para calcular la distancia entre el sensor y el obstáculo.
Artículo relacionado: