OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5609|回复: 9

关于VL53L0X测距的一点分享

[复制链接]

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4584
金钱
4584
注册时间
2015-1-10
在线时间
573 小时
发表于 2020-6-19 10:56:40 | 显示全部楼层 |阅读模式
        前段时间用VL53L0X做个项目,目前项目已经结了,看到论坛里很多有对于这个sensor测距会有很多问题,这里跟大家分享一点我在实际使用过程中的经验
        先说说项目概况吧,这个项目就是个3天定时测距的项目,没有复杂的设计,VL53L0X(测距)、MMA8451Q(加速度计)、NB(数据上传)、MCU(STM32L1)、按钮、LED。项目大部分实际都花在VL53L0X上面,项目初期是要求测量液面以下的固体,这在理论上就是行不通的,跟leader反复了好几次,做了一大堆实验,各种数据分析后leader终于明白了,需求改为了测量液面上固体的距离。低功耗要求,用了L1的片子,L0的flash太小了,VL53L0X的api编译完都20多K了。其他模块没什么好说的,资料一堆。
       VL53L0X这个sensor在国内没有原厂的技术支持,分销商的FE就呵呵了,所以对这个sensor的整体认知是非常有限的。后来美国的同事找到了原厂,这个是后话了。

VL53L0X的应用环境要求
       黑暗无红外,目标为白色,且被测物面积要覆盖整个测量区域,这些非常重要,因为我看到论坛里很多人说测不准,首先很多人在室内裸露测量,环境内的红外光会影响测量精度;其次不是随便找个物体就能测的,目标为白色时误差最小,颜色越深误差越大;datasheet上注明了测量角度是25°,1m远的白色物体要求面积在0.45m2以上才能保证测量精度,当然面积不够也能测,就是误差大一点,在被测区域内最好没有其他物体干扰。

VL53L0X的校准
       很多朋友问要不要校准,用出厂的参数能不能测,答案肯定是能啊,不然ST出厂以后我们怎么验证呢,当然人家出厂的时候用的是datasheet上的标准靶面校准的,在实际应用时我们的靶面是不可能那么完美的,可能表面反射率不够,可能表面颜色不行,可能面积不够,这些都会影响测量;很多人说400mm以内或是多少mm内是准的,再远就不准了,那就是没有进行被测物的校准。而且在每次sensor上电后都需要把你的校准参数写到sensor里面,不然用的就是ST出厂的校准参数。还有一点,不是说用原子哥的例程在暗室下用白色物体做100mm校准后测量就准了,要是你的靶面在远距离下不满足被测区域面积的要求依旧是不准的,对于单一靶面这种应用,我的建议是校准后做实际距离和sensor测量距离的软件拟合校准。

VL53L0X的测量盲区
      每个sensor都是有测量盲区的,在实际应用中发现我的盲区是40mm以内,有些朋友的应用场合下盲区可能更小,反正我在40mm内测量要么偏差特别大,要么就直接返回0了


       ST的API有些注释还是挺有用的,我后面传个VL53L0X的中文datasheet上来,写的比较简单,也可以参考一下,美国同事那边评估这个sensor比较细,回头我可以把文件传上来大家看看,毕竟他们有原厂的支持,我就自己在玩,还不把跟原厂的邮件share给我,干他妈的,先写到这儿吧,要去搬砖了


VL53L0X中文资料.pdf

1.86 MB, 下载次数: 259

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3280

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8182
金钱
8182
注册时间
2020-5-11
在线时间
3694 小时
发表于 2020-6-19 11:06:43 | 显示全部楼层

顶一下
我的用法比较简单,没用API。
  1. //------------------------------------------------
  2. //读取数据,并启动转换
  3. //------------------------------------------------
  4. U16 VL53L0X_GetDist(void)
  5. {
  6.         U8 buf[3];
  7.         U16 dist;
  8.         IICDEV_RStr(0x14+10, 2,buf);
  9.         IICDEV_WByte(VL53L0X_REG_SYSRANGE_START, 0x01);//启动
  10.         dist=MAKE16(buf[0], buf[1]);
  11.         return dist;
  12. }
复制代码
专治疑难杂症
回复 支持 1 反对 0

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4584
金钱
4584
注册时间
2015-1-10
在线时间
573 小时
 楼主| 发表于 2020-6-19 11:18:50 | 显示全部楼层
https://blog.csdn.net/qlexcel/article/details/106154743
这里再分享一篇另一个哥们儿的blog,写得很细,非常适合初学者,但是那会儿我项目都结了,不然也不用搞这么久
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2019-8-30
在线时间
12 小时
发表于 2021-1-19 10:30:43 | 显示全部楼层
所以是中断模式快还是轮询模式快
回复 支持 反对

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4584
金钱
4584
注册时间
2015-1-10
在线时间
573 小时
 楼主| 发表于 2021-1-19 15:49:23 | 显示全部楼层
yeezy 发表于 2021-1-19 10:30
所以是中断模式快还是轮询模式快

不存在那种方式快,只有哪种效率高,中断等待的时间可以干别的,效率高
回复 支持 反对

使用道具 举报

0

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2020-12-31
在线时间
22 小时
发表于 2021-1-19 16:42:36 | 显示全部楼层
mark!!
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-2-7
在线时间
26 小时
发表于 2021-3-7 16:32:32 | 显示全部楼层
LcwSwust 发表于 2020-6-19 11:06
顶一下
我的用法比较简单,没用API。

大佬可以发一下源码吗,谢谢了
回复 支持 反对

使用道具 举报

10

主题

3280

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8182
金钱
8182
注册时间
2020-5-11
在线时间
3694 小时
发表于 2021-3-7 16:58:39 | 显示全部楼层
W932751196 发表于 2021-3-7 16:32
大佬可以发一下源码吗,谢谢了

VL53L0Xtest - 副本.rar (71.78 KB, 下载次数: 149)
专治疑难杂症
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-2-7
在线时间
26 小时
发表于 2021-3-8 10:28:10 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2020-9-4
在线时间
46 小时
发表于 2021-8-16 10:08:37 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-21 18:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表