El sensor VL53L0X es un sensor de distancia de Tiempo de Vuelo como ningún otro que haya usado! El sensor contiene una muy pequeña fuente láser invisible y un sensor de coincidencia. El VL53L0X puede detectar el “tiempo de vuelo”, o cuánto tiempo ha tomado la luz para regresar al sensor. Ya que utiliza una fuente de luz muy estrecha, es bueno para determinar la distancia de sólo la superficie directamente en frente de ella. A diferencia de los sonares que rebotan ondas ultrasónicas, el “cono” de detección es muy estrecho. A diferencia de los sensores de distancia IR que intentan medir la cantidad de luz rebotada, el VL53L0x es mucho más preciso y no tiene problemas de linealidad o “doble imagen” donde no se puede saber si un objeto está muy lejos o muy cerca.
Este es el “hermano mayor” del sensor VL6180X ToF, y puede manejar alrededor de 50 mm a 1200 mm de distancia de alcance.
El sensor es pequeño y fácil de usar en cualquier proyecto robótico o interactivo. Dado que necesita alimentación y lógica de 2,8V, se incluye un regulador y convertidor de niveles en la placa, así que se puede utilizar con cualquier voltaje de 3-5V sin preocupaciones. Requiere soldadura para la conexión del puerto de pines.
La comunicación con el sensor se realiza sobre I2C con una API escrita por ST, por lo que no es demasiado difícil de portar a su microcontrolador favorito. Hemos escrito una librería para Arduino para que pueda utilizarla con cualquiera de sus board compatibles con Arduino.
Capacidades de detección
El sensor puede medir aproximadamente 30 mm a 1,2 metros en modo predeterminado.
En el modo de ‘largo alcance’ puede detectar hasta 1,5 a 2 metros sobre una superficie reflectante blanca.
Dependiendo de la iluminación ambiental y la distancia, obtendrá de 3 a 12% de precisión – mejor iluminación y superficies brillantes le dará mejores resultados. Algún tipo de experimentación será necesaria si el objeto absorbe la luz láser no obtendrá buenas lecturas.
Especificaciones
Dimensiones del producto: 21.0mm x 18.0mm x 2.8mm / 0.8″ x 0.7″ x 0.1″
Peso: 1.3g / 0.0oz
CONEXIÓN CON ARDUINO:
CÓDIGO DE PRUEBA:
VL53L0X sensor;
// Uncomment this line to use long range mode. This
// increases the sensitivity of the sensor and extends its
// potential range, but increases the likelihood of getting
// an inaccurate reading because of reflections from objects
// other than the intended target. It works best in dark
// conditions.
//#define LONG_RANGE
// Uncomment ONE of these two lines to get
// - higher speed at the cost of lower accuracy OR
// - higher accuracy at the cost of lower speed
//#define HIGH_SPEED
//#define HIGH_ACCURACY
void setup()
{
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
#if defined LONG_RANGE
// lower the return signal rate limit (default is 0.25 MCPS)
sensor.setSignalRateLimit(0.1);
// increase laser pulse periods (defaults are 14 and 10 PCLKs)
sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
#endif
#if defined HIGH_SPEED
// reduce timing budget to 20 ms (default is about 33 ms)
sensor.setMeasurementTimingBudget(20000);
#elif defined HIGH_ACCURACY
// increase timing budget to 200 ms
sensor.setMeasurementTimingBudget(200000);
#endif
}
void loop()
{
Serial.print(sensor.readRangeSingleMillimeters());
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
}