[原创] VL53L0测距芯片试用【ST主题月】

lb8820265   2016-7-28 16:19 楼主
   还记得上次的VL6180评估板的试用吗?现在VL53L0面世了,这次让我们开始VL53L0评估板的试用吧,板子是X-NUCLEO-53L0A1组合板是NUCLEO-F401RE,将两块板子插在一起,用USB连接电脑,会多一个F401盘符,然后下载X-CUBE-53L0A1固件,解压后找到Projects\Multi\Applications\VL53L0X\GestureDetect\Binary\VL53L0X_GestureDetect_F401.bin,这是手势检测的固件,将bin文件复制到F401盘符中,这样程序就烧录好了,不断的按板子上蓝色的用户按钮可以切换功能,功能展示如下:
   手势高低移动检测:
上下.gif
  手势前后移动检测:
前后.gif
  手势左右滑动检测:
左右.gif
   接下来将Projects\Multi\Examples\VL53L0X\RangingWithSatellites\Binary\VL53L0X_Ranging_F401.bin文件复制到盘符中,这是芯片测距和多VL53L0通信的固件,功能展示如下:
   一路I2C与多芯片通信:
多传感器.gif
   高精度模式,测距达1.2M
高精度.gif
   高速度模式,测距达2M
高速度.gif
   除此之外VL53L0还有专门GUI软件,这是配置和显示相关数据的软件,方便开发者快速了解芯片性能,可将距离在示波器中显示出来,更多功能详见手册。软件界面如下:
捕获.PNG

   总结:VL53L0较上一代VL6180最大的特色就是测距距离达到了2m,这样芯片的应用范围就扩大了不少,实测在精确测距模式下误差不超过1CM,却有些滞后;高速模式下1.2m以内测距误差也不超过1CM,超过1.2m准确度就有点扯了,数值跳动且偏小,最远可达到2米;算法上和VL6180一样具有姿态检测,实测还是比较准的,在一些简单的场合中说不定可以用得到;上手方面较上一代多了桌面版的GUI,方便配置和了解芯片性能,相关的API函数和例程也是齐全;功能上VL53L0阉割掉了亮度检测功能。
   总的来说这款芯片还是相当不错的,低功耗、小体积、高精度、高速度、IIC总线模式这些特点在短距离测距的市场定会杀出一片天地。听说ST还有计划推出VL53L1VL53L2测距距离将会达到300cm400cm,真是非常期待呀!


QQ:252669569

回复评论 (50)

2推荐 爱人同志 

你好,看了你的测评,很详细;有个问题请教,手势的左右、前后移动是通过两个VL53L0实现的么?还是一个VL53L0就可以完成呢?
点赞  2017-5-17 11:36
请问:
VL53L0是激光测距的,那它是仅能实现一路检测,还是可以范围检测?
比如,我想在一个平面上的0-90度范围内检测物体的距离,它可以吗?
点赞  2016-11-20 15:49
是一路检测,如果需要这样在一个范围内扫描距离的话可以旋转,不过不能使用VL53L0旋转,这个传感器是测的一个角度内的物体的平均距离,并不是点对点的,如果想不动检测一个面可以采用Kinect或者realsence或者小米扫地机器人的LDS激光测距传感。
QQ:252669569
点赞  2016-11-20 21:17
你好,有驱动程序吗?
点赞  2017-2-17 17:37
引用: chenjiwang 发表于 2017-2-17 17:37
你好,有驱动程序吗?

驱动程序在官网的固件里面就有,还有很多例程。
QQ:252669569
点赞  2017-2-18 16:42
引用: lb8820265 发表于 2016-11-20 21:17
是一路检测,如果需要这样在一个范围内扫描距离的话可以旋转,不过不能使用VL53L0旋转,这个传感器是测的一 ...

请问一下,VL53L0X只能测出一个距离吗?能拿到多个数据吗?比如16*16范围的距离?
点赞  2017-3-29 14:53
请问版主,手势前后移动检测:手势高低检测:这个调用哪个api来完成的?我看它的文档没有提到这个东西啊!还望版主指点一下
点赞  2017-3-29 16:30
引用: chaoswosting 发表于 2017-3-29 14:53
请问一下,VL53L0X只能测出一个距离吗?能拿到多个数据吗?比如16*16范围的距离?

是的,只能测出一个距离,他测出的是一个小角度扇形里面的平均距离,不知你听懂没。
QQ:252669569
点赞  2017-3-29 17:07
引用: chaoswosting 发表于 2017-3-29 16:30
请问版主,手势前后移动检测:手势高低检测:这个调用哪个api来完成的?我看它的文档没有提到这个东西啊! ...

这个前后手势检测使用的是它的库文件,应该不开源,不过API接口还是有的,你可以在代码里面找找。
QQ:252669569
点赞  2017-3-29 17:09
引用: lb8820265 发表于 2017-3-29 17:07
是的,只能测出一个距离,他测出的是一个小角度扇形里面的平均距离,不知你听懂没。

我大概知道了,就是它发射的激光是扇形圆锥状的,给我们的结果只是一个整形数值,这样理解对吗?
点赞  2017-3-29 19:02
引用: lb8820265 发表于 2017-3-29 17:09
这个前后手势检测使用的是它的库文件,应该不开源,不过API接口还是有的,你可以在代码里面找找。

我看了它的api文档,没看到这种函数,要再找找
点赞  2017-3-29 19:04
引用: chaoswosting 发表于 2017-3-29 19:02
我大概知道了,就是它发射的激光是扇形圆锥状的,给我们的结果只是一个整形数值,这样理解对吗?

嗯,是的,给出的大约是一个平均数
QQ:252669569
点赞  2017-3-29 19:47
引用: lb8820265 发表于 2017-3-29 19:47
嗯,是的,给出的大约是一个平均数

评估版可以给个购买地址吗?
点赞  2017-3-31 17:48
引用: chaoswosting 发表于 2017-3-31 17:48
评估版可以给个购买地址吗?

贸泽电子,德捷,利源芯城
QQ:252669569
点赞  2017-4-2 12:41
刚入手 咨询几个问题,望解惑:
1.datasheet里面给的I2C地址是0x52,例程里面为什么是0x29?
2.这个芯片有寄存器说明吗?比如那几个寄存器读出来的是距离?数值与距离是怎么对应的?
点赞  2017-5-4 21:02
比如例程里面这个,怎么知道这12个数代表什么意思呢?
read_block_data_at(0x14, 12);
  uint16_t acnt = makeuint16(gbuf[7], gbuf[6]);
  uint16_t scnt = makeuint16(gbuf[9], gbuf[8]);
  uint16_t dist = makeuint16(gbuf[11], gbuf[10]);
  byte DeviceRangeStatusInternal = ((gbuf[0] & 0x78) >> 3);
点赞  2017-5-4 21:07
引用: zzqnysafe 发表于 2017-5-4 21:02
刚入手 咨询几个问题,望解惑:
1.datasheet里面给的I2C地址是0x52,例程里面为什么是0x29?
2.这个芯片有 ...

1. 这个你可以了解下IIC读写地址的关系,通常有下面的关系:
     I2C设备的写地址 = I2C设备地址 << 1
     I2C设备的读地址 = (I2C设备地址 << 1) + 1
2. 这个芯片没有寄存器说明了,他的上一代VL6180是有的,现在ST提倡使用库函数了,只提供了API接口函数,从某种程度上来说也是简化了开发。所以你说的哪个寄存器读出距离这个是找不到的,只能找到测距的API函数,你可以参考例程找出对应的API使用就好了,ST的软件结构层次是写相当不错的,只需要根据不同的MCU修改IIC的接口,就可以使用了。
QQ:252669569
点赞  2017-5-5 16:03
引用: zzqnysafe 发表于 2017-5-4 21:07
比如例程里面这个,怎么知道这12个数代表什么意思呢?
read_block_data_at(0x14, 12);
  uint16_t acnt = ...

恩,他的所有的底层函数的寄存器都是用的数字了,也完全不知道含义,不过作为用户来讲,只要能得出距离值就好,管他什么寄存器呢。
QQ:252669569
点赞  2017-5-5 16:07
你好,看了你的测评,很详细。有个问题请教,手势的左右、前后移动检测,是通过两个VL53L0完成的么?还是一个VL53L0就可以实现呢?
点赞  2017-5-17 11:31
123下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复