跳到主要内容

VL53L0X激光测距

一、本例程实现功能

通过VL53L0X激光测距传感器模块测量障碍物离传感器的距离,通过 print() 函数在电脑串口调试终端打印输出距离(单位:毫米)。

二、VL53L0X传感器介绍

VL53L0X是世界上体积最小的高精度激光测距传感器,基于"飞行时间(TOF)"原理测距,最大测量距离可达到两米。VL53L0X内部的激光发射器对肉眼不可见,并且符合“CLASS 1”激光类产品的安全标准。

VL53L0X传感器的测距视场角(FOV)为25°,如下图所示:

angle

三、传感器性能描述

以下两个摘自官方资料的表格分别从测量距离和测量精度两个方面描述了传感器在不同外界环境下的性能表现:

  • 测量距离(客观因素:室内/室外/被测物体偏白/北侧物体偏灰)

    由下表可以看出传感器能够测量的最大距离和在室内环境或在户外强光环境有关系,也和被测物体是偏白还是偏灰有关系。可以看出最佳的测量环境是在室内测量白色障碍物的距离。

distance_tab

  • 测量精度(客观因素:测量的距离远近/被测物体偏白/北侧物体偏灰)

    由下表可以看出传感器的测量精度和被测物体的远近、以及被测物体偏白还是偏灰有一定的关系。

    注意:下表中的33ms列为"Default"模式,"HighAccuracy"模式为200ms,"HighSpeed"为20ms,表中的66ms的模式不在Core的支持中,可以忽略。

accuracy_tab

四、 传感器工作模式配置说明

Core的LIB函数提供四种模式供开发者根据自己的实际需求来初始化传感器的配置,每种模式的描述如下表:

模式每次测量耗时(毫秒)测距范围(米)精度应用场景
"Default"301.23% ~ 12%通用场景
"HighAccuracy"2001.23%以内精确测量场景
"LongRange"3323% ~ 12%远距离,但仅适合暗光场景
"HighSpeed"201.25%左右要求测量速度快,但精度不追求太高的场景

五、接线图

layout

六、材料清单

名称推荐购买链接(或者您可以自己制作)模块/芯片硬件资料下载
VL53L0X传感器模块VL53L0X传感器模块购买链接下载地址
声明:这里推荐的购买链接仅供参考,您完全可以去其他商家或渠道购买,只要功能相似即可,如果需要更低的成本建议自己开发硬件模块或定制。

product1

product2

七、完整代码

--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出
LIB_UsbConfig("CDC")
--配置VL53L0X激光传感器开始工作,占用core的IIC0引脚,以高精度模式工作
--高精度模式下,精度在3%以内,测量范围在1.2米以内
LIB_VL53L0XConfig("IIC0", "HighAccuracy")
--开始大循环
while(true)
do
--每隔200ms查询一次传感器是否出数
LIB_DelayMs(200)
flag, distance = LIB_VL53L0XGetDistance()
if flag == 1 then
--打印测量距离(mm)
print(string.format("distance:%03dmm", distance))
end
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

八、代码运行结果

电脑串口调试终端上显示测距结果如下图(传感器距离白色墙面31厘米):

result

result1

九、关于校准

开发者每次在设备上电调用LIB_VL53L0XConfig()函数配置VL53L0X传感器时,Core会自动对传感器自动进行温度校准,以避免温度的变化影响传感器的测量精度。

但如果开发者给传感器外部再加一个透明的外罩或保护壳时,就需要更多的校准流程了,主要涉及SPAD校准,OFFSET(偏移)校准,以及Cross Talk(串扰)校准。目前Core暂时不支持这些校准,所以尽量不要在传感器外部增加其他可能干扰测量结果的物理屏障。未来如有需求,Core会增加这些校准功能。