- Sensor de telémetro de tiempo de vuelo (ToF) VL6180X
- Diagrama de circuito
- Adición de bibliotecas necesarias para el sensor ToF VL6180
- Programación y explicación de trabajo
TOF o tiempo de vuelo es un método comúnmente utilizado para medir la distancia de objetos distantes mediante varios sensores de medición de distancia como el sensor ultrasónico. La medición del tiempo que tarda una partícula, una onda o un objeto en recorrer una distancia a través de un medio se denomina tiempo de vuelo (TOF). Esta medición se puede utilizar para calcular la velocidad o la longitud de la trayectoria. También se puede utilizar para conocer las partículas o propiedades del medio, como la composición o el caudal. El objeto en movimiento puede detectarse directa o indirectamente.
Los dispositivos de medición de distancia por ultrasonidos son uno de los primeros dispositivos que utilizan el principio del tiempo de vuelo. Estos dispositivos emiten un pulso ultrasónico y miden la distancia a un material sólido en función del tiempo que tarda la onda en rebotar hasta el emisor. Usamos un sensor ultrasónico en muchas de nuestras aplicaciones para medir la distancia:
- Medición de distancia basada en sensores Arduino y ultrasónicos
- Mida la distancia con el sensor ultrasónico Raspberry Pi y HCSR04
- Cómo medir la distancia entre dos sensores ultrasónicos
El método del tiempo de vuelo también se puede utilizar para estimar la movilidad de los electrones. En realidad, fue diseñado para la medición de películas delgadas de baja conductividad, luego se ajustó para semiconductores comunes. Esta técnica se utiliza para transistores de efecto de campo orgánico, así como para estructuras de metal-dieléctrico-metal. Mediante la aplicación del láser o pulso de voltaje, se generan las cargas en exceso.
El principio TOF se utiliza para medir la distancia entre un sensor y un objeto. Se mide el tiempo que tarda la señal en volver al sensor después de reflejarse en un objeto y se utiliza para calcular la distancia. Se pueden usar varios tipos de señales (portadoras) como sonido, luz con el principio TOF. Cuando se usa TOF para encontrar el rango, es muy poderoso cuando emite luz en lugar de sonido. En comparación con el ultrasonido, proporciona una lectura más rápida, mayor precisión y mayor alcance, manteniendo sus características de bajo peso, tamaño pequeño y bajo consumo de energía.
Aquí en este tutorial usaremos un sensor de buscador de rango TOF VL6180X con Arduino para calcular la distancia entre el sensor y el objeto. Este sensor también indica el valor de intensidad de la luz en LUX.
Sensor de telémetro de tiempo de vuelo (ToF) VL6180X
El VL6180 se diferencia de otros sensores de distancia en que utiliza un reloj preciso para medir el tiempo que tarda la luz en reflejarse desde cualquier superficie. Esto le da al VL6180 un beneficio sobre otros sensores porque es más preciso e inmune al ruido.
VL6180 es un paquete 3 en 1 que incluye un emisor de infrarrojos, un sensor de luz ambiental y un sensor de rango. Se comunica a través de una interfaz I 2 C. Tiene un regulador integrado de 2.8V. Entonces, incluso si conectamos un voltaje superior a 2.8 V, se reducirá automáticamente sin dañar la placa. Se mide una distancia de hasta 25 cm. Se proporcionan dos GPIO programables.
Diagrama de circuito
Aquí, la pantalla LCD del Nokia 5110 se utiliza para mostrar el nivel de luz y la distancia. El Nokia 5110 LCD funciona a 3,3 V, por lo que no se puede conectar directamente con los pines digitales Arduino Nano. Por lo tanto, agregue resistencias de 10k en serie con las señales de datos para proteger las líneas de 3.3V de los pines digitales de 5V. Obtenga más información sobre el uso de Nokia 5110 LCD con Arduino.
El sensor VL6180 se puede conectar directamente al Arduino. La comunicación entre el VL6180 y Arduino es I2C. En realidad, el protocolo de comunicación I2C combina las mejores características de SPI y UART. Aquí podemos conectar múltiples esclavos a un solo maestro y podemos tener múltiples maestros controlando uno o varios esclavos. Al igual que la comunicación UART, I2C utiliza dos cables para la comunicación SDA (datos en serie) y SCL (reloj en serie), una línea de datos y una línea de reloj.
A continuación se muestra el diagrama de circuito para conectar el sensor de buscador de rango VL6180 ToF con Arduino :
- Conecte el pin RST de la pantalla LCD al pin 6 de Arduino a través de la resistencia de 10K.
- Conecte el Pin CE de LCD al pin 7 de Arduino a través de la resistencia de 10K.
- Conecte el pin DC de la pantalla LCD al pin 5 de Arduino a través de la resistencia de 10K.
- Conecte el pin DIN de la pantalla LCD al pin 4 de Arduino a través de la resistencia de 10K.
- Conecte el pin CLK de la pantalla LCD al pin 3 de Arduino a través de la resistencia de 10K.
- Conecte el pin VCC de la pantalla LCD al pin de 3.3V de Arduino.
- Conecte el pin GND del LCD al GND de Arduino.
- Conecte el pin SCL de VL6180 al pin A5 de Arduino
- Conecte el pin SDA de VL6180 al pin A4 de Arduino
- Conecte el pin VCC de VL6180 al pin 5V de Arduino
- Conecte el pin GND de VL6180 al pin GND de Arduino
Adición de bibliotecas necesarias para el sensor ToF VL6180
Se utilizarán tres bibliotecas para conectar el sensor VL6180 con Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 es una biblioteca para las pantallas LCD monocromáticas Nokia 5110. Estas pantallas usan SPI para comunicarse. Se requieren cuatro o cinco pines para conectar esta pantalla LCD. El enlace para descargar esta biblioteca se proporciona a continuación:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
La biblioteca Adafruit_GFX para Arduino es la biblioteca de gráficos principal para pantallas LCD, que proporciona una sintaxis común y un conjunto de primitivas gráficas (puntos, líneas, círculos, etc.). Debe combinarse con una biblioteca específica de hardware para cada dispositivo de visualización que usemos (para manejar las funciones de nivel inferior). El enlace para descargar esta biblioteca se proporciona a continuación:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 es la biblioteca Arduino con funcionalidad básica del sensor VL6180. El VL6180 consta de un emisor de infrarrojos, un sensor de rango y un sensor de luz ambiental que se comunican a través de una interfaz I2C. Esta biblioteca le permite leer las salidas de luz y distancia del sensor, y envía los datos a través de una conexión en serie. El enlace para descargar esta biblioteca se proporciona a continuación:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Agregue todas las bibliotecas una por una yendo a Sketch >> Incluir biblioteca >> Agregar biblioteca.ZIP en Arduino IDE. Luego cargue la biblioteca que descargó de los enlaces anteriores.
A veces no necesitará agregar bibliotecas de cables y SPI, pero si recibe un error, descárguelas y agréguelas a su Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programación y explicación de trabajo
El código completo con un video funcional se da al final de este tutorial, aquí estamos explicando el programa completo para entender el funcionamiento del proyecto.
En este programa, la mayoría de las partes son manejadas por las bibliotecas que agregamos, por lo que no tiene que preocuparse por eso.
En la parte de configuración, establezca la velocidad en baudios como 115200 e inicialice la biblioteca Wire para I2C. Luego verifique si el sensor VL6180 está funcionando correctamente o no, si no está funcionando, muestre un mensaje de error.
En la siguiente parte, estamos configurando la pantalla, puede cambiar el contraste al valor deseado aquí, lo estoy configurando como 50
configuración vacía () { Serial.begin (115200); // Iniciar serial en 115200bps Wire.begin (); // Iniciar la biblioteca I2C delay (100); // retraso. if (sensor.VL6180xInit ()! = 0) { Serial.println ("NO SE PUEDE INITALIZAR"); // Inicializa el dispositivo y busca errores }; sensor.VL6180xDefautSettings (); // Cargue la configuración predeterminada para comenzar. retraso (1000); // demora 1 s display.begin (); // init hecho // puedes cambiar el contraste para adaptar la pantalla // ¡para una mejor visualización! display.setContrast (50); display.display (); // muestra la pantalla de bienvenida display.clearDisplay (); }
En la configuración de la parte de bucle vacío, las instrucciones para mostrar los valores en la pantalla LCD. Aquí mostramos dos valores, uno es el "Nivel de luz ambiental en Lux" (un lux es en realidad un lumen por metro cuadrado de área) y el segundo es "Distancia medida en mm". Para mostrar diferentes valores en una pantalla LCD, defina la posición de cada texto que debe aparecer en la pantalla LCD usando “display.setCursor (0,0);”.
bucle vacío () { display.clearDisplay (); // Obtenga el nivel de luz ambiental e informe en LUX Serial.print ("Nivel de luz ambiental (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (NEGRO); display.setCursor (0,0); display.println ("Nivel de luz"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Obtener la distancia e informar en mm Serial.print ("Distancia medida (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (NEGRO); display.setCursor (0, 24); display.println ("Distancia (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); retraso (500); }
Después de cargar el programa, abra el monitor en serie y debería mostrar la salida como se muestra a continuación.
Los telémetros TOF VL6180 se utilizan en teléfonos inteligentes, dispositivos portátiles con pantalla táctil, tabletas, portátiles, dispositivos de juego y electrodomésticos / dispositivos industriales.
Aquí mostramos el nivel de luz ambiental en Lux y la distancia en mm.
Encuentre el programa completo y el video de demostración a continuación. También verifique cómo medir la distancia usando el sensor ultrasónico y el nivel de luz usando el sensor de luz ambiental BH1750.