在某些项目中,您将需要测量距离。 好吧,你应该知道 VL53L0X是可以高精度测量的设备。 此外,它的小尺寸和低价格使其非常适合您的DIY项目,尤其是与Arduino集成时。
有很多可以测量距离的设备,其中一些是基于超声波的测距仪,它发出声音,当与物体弹跳时,它可以足够精确地知道存在的距离。 但是,如果要获得最高的精度,则需要 光学测距仪。 这种类型的测量设备 基于激光,与VL53L0X一样。
什么是ToF?
飞行时间或ToF(飞行时间)相机 它是一种用于测量距离的技术。 它基于光学原理,测量从光束发射到接收之间的时间。 它们可以是CCD,CMOS传感器,脉冲可以是红外,激光等。 当脉冲被触发时,系统将被同步以开始时间测量,而当它们接收到来自传感器的反弹时,系统将停止计数器。
以这种方式 距离可以很准确地计算出来。 从发射光束的那一刻到接收到光束,仅需集成到芯片中的附加逻辑电路即可执行计算,从而确定距离。 原理很简单。
这种类型的设备用于 机器人 允许机器人或无人驾驶飞机避开障碍物,知道它们距目标有多远,检测移动或接近,用于不同应用的汽车传感器,实现电子仪表(例如执行器),以便Arduino在它可以检测到物体的一定距离等。
什么是VL53L0X和数据表
El VL53L0X使用此原理通过激光红外测量距离。 上一代。 与像Arduino这样的处理器一起使用,它可以成为强大的测量工具。 具体而言,芯片可以捕获50mm至2000mm之间的距离,即5厘米至2米之间的距离。
为了测量更近的距离,您可能需要该芯片的变体VL6180X,该变体允许您测量5到200毫米之间的范围,即在半厘米到20厘米之间。 如果出于任何技术原因想要找到类似的但基于超声波的设备,则应查看HC-SR04,这是另一种在制造商中颇为便宜的模块。
El VL53L0X芯片 旨在 即使周围光线很高也可以工作。 请记住,以光学方式工作时,环境的光“污染”越大,充分捕获信号反射的难度就越大。 但是在这种情况下,它不会带来太多问题。 此外,它集成的补偿系统即使在保护玻璃后面使用它也可以进行测量。
那使它成为一个 最佳距离传感器 您会在市场上找到的。 与基于超声波或红外(IR)的传感器相比,其精度要高得多。 如此精确的原因是,激光不会像其他情况一样受到物体回波或反射率的影响。
目前,您可以将其集成到integrated子中,并附有一些额外的配件,价格约为16欧元,或者在其他情况下,也可以将其集成在价格略高于1欧元或3欧元的简单盘子中。 您已经知道可以在eBay,AliExpress,Amazon等商店中找到它。 这些设备的制造商各不相同,因此,如果您需要了解所购买型号的详细信息,最好检查一下 制造商的数据表 您选择的。 例如:
El VL53L0X 它在芯片内具有激光脉冲的发射器和用于捕获返回光束的传感器。 在这种情况下,发射器是940nm波长的激光器和VCSEL型(垂直腔表面发射激光器)。 至于捕获传感器,它是SPAD(单光子雪崩二极管)。 它还集成了称为FlightSenseTM的内部电子设备,可以计算距离。
El 测量角度或FOV(视场) 在这种情况下为25º。 这意味着在0,44m的距离处直径为1m的测量区域。 尽管测量范围将取决于周围条件。 如果在室内完成,则比在室外完成的要高一些。 它还将取决于您所指向的对象的反射率:
目标反射率 | 条款 | 室内情况 | 外墙 |
---|---|---|---|
白靶 | 典型的 | 200cm | 80cm |
模仿 | 120cm | 60cm | |
灰色目标 | 典型的 | 80cm | 50cm |
最低限度 | 70cm | 40cm |
此外,VL53L0X还具有多个 操作模式 这可能会改变结果。 下表总结了这些模式:
摩多 | 定时 | 范围 | 精确 |
---|---|---|---|
默认值 | 30ms | 1.2 m | 见下表 |
精度高 | 200ms | 1.2 m | + / - 3% |
长距离 | 33ms | 2m | 见下表 |
高速 | 20ms | 1.2 m | + / - 5% |
根据这些模式,我们有几种 标准和远程精度 您在此表中拥有的:
室内情况 | 外墙 | |||||
---|---|---|---|---|---|---|
目标反射率 | 距离 | 33ms | 66ms | 距离 | 33ms | 66ms |
白靶 | 120厘米 | 4% | 3% | 60厘米 | 7% | 6% |
灰色目标 | 70厘米 | 7% | 6% | 40厘米 | 12% | 9% |
引脚排列和连接
为了使所有这些正常工作,您需要 与外界的接口。 这是通过一些引脚或连接来实现的。 VL53L0X的引脚排列非常简单,只有6个引脚。 为了与Arduino集成,可以通过I2C进行通信。
要喂它,你可以 连接引脚 所以:
- Arduino的VCC至5v
- Arduino的GND至GND
- SCL到Arduino模拟引脚。 例如A5
- SDA连接到另一个模拟引脚。 例如A4
- 目前无需使用GPI01和XSHUT引脚。
与Arduino集成
至于其他许多模块,对于VL53L0X,您还具有库(例如,用于 Adafruit的)可用于编写某些功能的可用代码 在Arduino IDE中处理项目的源代码。 如果这是您第一次使用Arduino,我建议 我们的编程手册.
一个例子 简单的代码,您可以通过串行端口进行测量并显示测量值 因此,当您连接Arduino板时,可以从PC屏幕上看到它:
#include "Adafruit_VL53L0X.h" Adafruit_VL53L0X lox = Adafruit_VL53L0X(); void setup() { Serial.begin(9600); // Iniciar sensor Serial.println("VL53L0X test"); if (!lox.begin()) { Serial.println(F("Error al iniciar VL53L0X")); while(1); } } void loop() { VL53L0X_RangingMeasurementData_t measure; Serial.print("Leyendo sensor... "); lox.rangingTest(&measure, false); // si se pasa true como parametro, muestra por puerto serie datos de debug if (measure.RangeStatus != 4) { Serial.print("Distancia (mm): "); Serial.println(measure.RangeMilliMeter); } else { Serial.println(" Fuera de rango "); } delay(100); }
在Adafruit自己的库中,如果需要,您可以使用更多示例...