VL6180X距离、光线传感器上手体验

本文主要介绍VL6180X距离、光线传感器模块的一些基本特点、参数及简单的上手Demo,新手上路,老司 机谨防追尾。

文章的章节编写按照如下顺序进行:

VL6180X开箱体验

基本功能概述

功能简介及说明

Demo上手测试

结语

参考资料

VL6180X开箱体验

VL6180X是一款比较迷你的传感器模块,拿到手后就是这样的,如图1所示:

12121221.jpg

图1. 开箱图

包装中一共两个,其中一个已经被我强拆了,外包装采用了ST评估板的惯用包装设计,因此还是备有 亲切感的。取出模块后跟一角硬币对比了一下,还是非常短小的,如图2所示:

222222.jpg

图2. 模块尺寸对比图

即使如此,该模块还是可以进一步变小,翻看其背面可以看到,VL6180X芯片的供电要求是2.8v,因 此上半身是3.3v->2.8v降压电路,如果不需要电压转换的话,可以从中间一排小孔处将其掰歪,不对,是掰 断。。。 基本功能概述

讲了这么多废话,读者可能还是一脸蒙B:这TM什么玩意?借用ST官方的话说:The VL6180X is a proximity, gesture and ambient light sensor based on ST’s patented FlightSense™ technology. 简单的 说就是:这是一款传感器,它能检测距离及光强度,甚至还有姿态。

因此它的基本特性如下:

1. 距离测量,提供三种量程选择:

a. 量程:20CM,精度:1MM ;

b. 量程:40CM,精度:2MM;

c. 量程:60CM,精度:3MM;

2. 环境光测量,多种采样增益及测量范围调节;

3. 环绕滤波器,滤除强反射物体所带来的测量错误;

4. 偏移校准,保证设备在不同的环境下的准确度。

5. 串扰补偿,使用盖玻片进一步提高距离检测的精确度;

6. 三种采样方式:

a. 轮询下的单次距离测量

b. 非轮询下的单次距离测量

c. 硬件中断下的持续距离测量

功能简介及说明

典型的距离输出特性

理论上来讲,VL6180X的输出值应该与目标物体之间的距离呈线性关系,但实际上并不是酱紫。在黑 暗环境中,测试VL6180X与不同反射率的物体之间的距离,真实距离与实际测量距离的输出对比关系如图3

所示:

123123.PNG

图3. 原始测量值与实际值对比

从图3中可知,测量数据的实际输出存在偏移错误,且数据抖动剧烈,其中偏移错误可通过偏移校准 来修正。而为了进一步提高VL6180X的输出精度及稳定性,官方推荐使用盖玻片来增加串扰信号,并在之 后进行串扰补偿来修正盖玻片带来的距离错误。如图4所示:在使用了盖玻片并做了串扰补偿修正后,真实 距离与实际测量距离的误差减少稳定性也进一步增强。

捕获222.PNG

图4. 串扰补偿后的测量值与实际距离对比

捕获收敛时间

需要注意的是,VL6180X计算与物体之间的距离所需要的时间花费并不是固定的,它与测量距离及目 标物体的光反射率有关。如图5所示:在10MM内,模块测量的距离值是无意义的,所花费的转换时间也较 长;而当测量距离逐渐增大后,所花费的时间也逐渐增大,反射率越低,消耗的时间越长。

捕获333.PNG

图5. 收敛时间与测量距离及物体反射率之间的关系

由于收敛时间与物体反射率及无标物体的实际距离有关,因此可以使用简单的收敛估计(Early convergence estimate, ECE)来降低模块的功耗。例如,判断0.5ms内VL6180X模块所接收到的反馈信号 数,当其低于某个理想中的阈值时,可认定在设定的量程内,周围没有检测到有效物体,因此可中止接下 来的测量以节省功耗,如图6所示。反之,当接收到的反馈信号数高于设定的理想阈值时,系统才启动测 量,在这种情况下,只有高反射率的金属物体靠近VL6180X模块时,系统才会开始工作,达到了降低功耗 的效果,如图7所示。

捕获121.PNG

图6. 量程范围内无目标时的阈值设置

123123.PNG

 

图7. 检测金属物体时的阈值设置

环境光传感器模式

VL6180X模块可以在一个相当宽泛的范围内测量所接收到的环境光,其测量的原理为计算单位时间 (100ms)内光孔所接收到的光量,至于为啥是100ms,因为大多数应用都是这么设置的(嗯,手册上说 的)。因此,若要测量不同的光强度,推荐设置模块的测量量程,而不是修改采样时间。

此外模块接收到的实际光量值会受模块光孔的角度影响,如图8所示:模块接收光量的最佳范围在一个 圆锥体内,超过该圆锥体,测量的实际值也会受到较大的影响,整体的值也呈现一个正态分布的效果。

QQ截图20160826194953.png

图8. 光孔位置及接收角度示意图

对于偏移校准及串扰补偿方法,此处不再过多详述,始终铭记这是评测,这是评测,不是教程,打住。

Demo上手测试

为试验VL6180X的实际测量效果,此处使用STM32F0308-Discovery开发板驱动该模块,如图9所示:

123456.jpg

图9. 评估板测试准备

选好板子连好线后,首先需要建立一个新工程,因此需要去ST官网下载STM32F0308-Discovery的软 件支持包en.stm32cubef0.zip及VL6180X模块的软件支持包ja.STSW-IMG003。为加快测试效率,可以直接 把STM32F0308-Discovery的I2C例程搬过来修改,这样就不用从零开始配置环境了。

完成第一步之后将VL6180X软件支持包中的相关文件导入进工程,这里我们需要添加的文件如图10所示:

234143.PNG

图10. 工程文件结构

其中vl6180x_app.x、vl6180x_i2c.x及vl6180x_gpio.x是额外创建的新文件,这几个文件与平台有关, 针对不同的处理器,需要做对应的移植修改。将相应文件添加进来后,再配置工程的头文件路径,完成后 的工程如图xx所示:

接下来要做的就是移植vl6180x到f0308平台,这也是测试过程中的主要工作,描述代码的过程始终觉 得是比较蛋疼的一件事,简单的说,就是:1. 照着例程依葫芦画瓢的修改了I2C的底层驱动代码以及引脚配 置的一些代码;2. 额外增加了一个vl6180x_app.c文件,用于实现4个小demo中的一些打印信息函数及模 块初始化函数。感兴趣的同学可以直接访问我的代码库获取该工程:测试Demo URL

完成上述工作后,编译-烧写-调试-打印,距离测试的打印结果如下:

log1.png

图11. 距离测试打印

在图11测试过程中,系统上电时用手遮住了传感器,返回错误6,表示没有检测到有效物体(太 近);之后慢慢将手拿开,返回有错误11、13、16,表示模块在量程内未识别有效物体或者目标过多(太 远)。更多的错误详情可查阅模块用户手册。

log2.png

图12. 光照强度测试打印

在图12的测试中可知,系统上电后检测到了周围的环境光强度,用手遮住后检测值立马下降,模块的 光照强度减弱。

结语

VL6180X是一款专业、精准的传感器模块,不论是距离检测还是环境光检测,其稳定、可靠性要远远 高于普通的超声波模块及光传感器)。因此,其上手难度也高于一般的传感器模块。感兴趣的话,读者不 妨购买回来研究一下,用在自己的玩具小车、飞行器等智能硬件领域也是极好的。

参考资料

本文的编写主要参考了以下相关文档:

1. 《VL6180X-SATEL》:产品描述

2. 《UM1983 User manual》:用户手册

3. 《VL6180X》:数据手册

4. 《VL6180X API Integration Guide》:API编程手册

并参考了以下软件资源:

1. ja.STSW-IMG003 : VL6180X软件支持包

2. en.stm32cubef0.zip:STM32F0308-Discovery软件支持包

STM32单片机中文官网

STM32单片机官方开发工具

STM32单片机参考设计

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值