0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Adafruit VL53L0X飞行时间距离传感器的使用

454398 来源:网络整理 作者:网络整理 2019-11-28 09:26 次阅读

概述

Adafruit VL53L0X飞行时间距离传感器的使用

VL53L0X是飞行时间距离传感器,与您使用过的其他传感器不同!该传感器包含一个很小的不可见激光源和一个匹配的传感器。 VL53L0X可以检测“飞行时间”,也可以检测光线反射回传感器所花费的时间。由于它使用非常窄的光源,因此仅用于确定直接在其前面的表面的距离是有利的。与反射超声波的声纳不同,感应的“锥体”非常狭窄。与尝试测量反射光量的红外距离传感器不同,VL53L0x精度更高,并且没有线性问题或“双成像”,您无法分辨出物体是很远还是很近。 p》

这是VL6180X ToF传感器的“大姐姐”,可以处理大约50-1200 mm的距离。如果您需要更小/更近的范围,请查看VL6180X,其尺寸为5mm至200mm。

该传感器体积小,易于在任何机器人技术或交互式项目中使用。由于它需要2.8V电源和逻辑,因此我们将这个小家伙放在了一个带有稳压器和电平转换功能的分线板上。您可以将其与任何3-5V电源或逻辑微控制器一起使用,而无需担心。每个订单都带有一小部分标题。

使用ST编写的APII2C上完成与传感器的通讯,因此将其移植到该端口并不难您最喜欢的微控制器。我们已经为Arduino写了一个包装器库,因此您可以将其与任何兼容Arduino的板一起使用。

传感能力

在默认模式下,传感器的尺寸约为50mm至1.2米。

在“远程”模式下,您可以检测到在良好的白色反光表面上1.5至2米。

根据环境照明和距离,您将获得3至12%的测距精度-更好的照明和发亮的表面将为您带来最佳效果。因为如果物体吸收激光,您将无法获得良好的读数。

插脚

VL53L0X是I2C传感器。这意味着它使用了大多数微控制器上可用的两条I2C数据/时钟线,并且可以与其他传感器共享这些引脚,只要它们没有地址冲突即可。

默认I2C供以后参考地址为 0x29 。您可以进行更改,但只能在软件中进行。这意味着您必须连接SHUTDOWN引脚,并在一次重新配置一个传感器时将除一个传感器以外的所有传感器保持复位状态。

电源引脚:

Vin -这是电源引脚。由于该芯片使用2.8 VDC,因此我们在板载了一个稳压器,该稳压器将采用3-5VDC电压并将其安全地转换为低压。要为电路板供电,请为其提供与微控制器逻辑电平相同的功率-例如,对于像Arduino这样的5V微型电池,请使用5V

2v8 -这是稳压器的2.8V输出,如果您愿意,您可以从中获取100mA电流

GND -电源和逻辑的公共接地

I2C逻辑引脚:

SCL -I2C时钟引脚,连接到微控制器的I2C时钟线。

SDA -I2C数据引脚,连接到微控制器的I2C数据线。

控制引脚:

GPIO -这是一个引脚传感器使用它来指示数据已准备就绪。在进行连续感应时很有用。请注意,此引脚上没有电平转换,您可能无法读取5V微控制器上的2.8V逻辑电平电压(我们可以在arduino UNO上读取,但没有保证)。我们的库没有使用此引脚,但对于高级用户来说,它就在这里!

SHDN -传感器的关闭引脚。默认情况下,它被拉高。有一个电平转换二极管,因此您可以在此引脚上使用3-5V逻辑。当该引脚被拉低时,传感器进入关机模式。

组件

别忘了卸下传感器的保护盖,它可能是透明或略带色的塑料!否则您会得到错误的读数

此页面显示VL53L0X或VL6180X传感器-步骤相同!

准备标题栏:

如有必要,将条切成一定长度。如果将其插入面包板,则焊接会更容易-长按针脚

将分线板放在顶部,这样插脚的短端就可以穿过所有焊盘了

焊料!

请务必焊接所有引脚以确保可靠性

(有关焊接的技巧,请务必查看我们的《 优良焊接指南》 )。

确定!检查工作,然后继续下一步

Arduino代码

您可以轻松地将此分支连接到任何微控制器,我们将使用Arduino。对于另一种微控制器,只需确保它具有I2C,然后移植API代码即可。我们强烈建议您使用Arduino来开始!

将 Vin 连接至电源,则3-5V即可。使用微控制器逻辑所基于的相同电压。对于大多数Arduino,这是5V

将 GND 连接到公共电源/数据地

将 SCL 引脚连接到I2C在Arduino上的时钟 SCL 引脚上。在基于UNO和‘328的Arduino上,这也称为 A5 ,在Mega上也称为 digital 21 ,在Leonardo/Micro上,也称为数字3

将 SDA 引脚连接到Arduino上的I2C数据 SDA 引脚。在基于UNO&’328的Arduino上,这也称为 A4 ,在Mega上也称为 digital 20 ,在Leonardo/Micro上,也称为数字2

VL53L0X的默认I2C地址为 0x29 !

您可以更改它,但只能在软件中更改。这意味着您必须连接SHUTDOWN引脚,并在一次重新配置一个传感器的同时将除一个传感器以外的所有传感器保持复位状态

下载Adafruit_VL53L0X

要开始读取传感器数据,您将需要安装Adafruit_VL53L0X库。

最简单的方法是在Arduino IDE中打开 Manage Libraries 。.. 菜单

然后搜索 Adafruit VL53L0X ,然后单击安装

我们还提供了有关Arduino库安装的出色教程,网址为:

http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use

加载演示

打开演示文件-》示例-》 Adafruit_VL53L0X -》 vl53l0x 并上传到与传感器连接的Arduino

就是这样!现在以115200的速度打开串行终端窗口以开始测试。

上下移动手以读取传感器数据。请注意,如果未检测到任何内容,它将表示读数超出范围

使用前,请不要忘记从传感器上卸下塑料保护盖!

连接多个传感器

I2C仅允许每个设备一个地址,因此您必须确保每个I2C设备都有一个唯一的地址。 VL53L0X的默认地址为 0x29 ,但是您可以 在软件中进行更改。

要设置新地址,可以使用以下两种方法之一。在初始化期间,不调用lox.begin(),而是调用lox.begin(0x30)将地址设置为0x30。或者,您以后可以随时拨打lox.setAddress(0x30)。

好消息是它易于更改,令人讨厌的部分是每个 other 传感器都必须位于关掉。您可以通过将 XSHUT 引脚连接到微控制器引脚来关闭每个传感器。然后执行类似此伪代码的操作:

通过将所有XSHUT引脚的低电平设置为delay(10)来重置所有传感器,然后将所有XSHUT的高电平设置为退出重置

通过将XSHUT引脚保持高电平来保持传感器#1的唤醒状态

通过将XSHUT引脚拉至低电平来将所有其他传感器置于关闭状态

使用lox.begin(初始化传感器#1 new_i2c_address ),请选择除0x29以外的任何数字,且该数字必须在0x7F以下。可以将0x30设置为0x3F。

保持传感器#1处于唤醒状态,现在通过将其XSHUT引脚设置为高电平使传感器#2退出复位状态。

使用以下命令初始化传感器#2 lox.begin( new_i2c_address )选择0x29以外的任何数字,以及将第一个传感器设置为的第一个传感器

为每个传感器重复,打开每个传感器,并设置唯一的地址。

请注意,每次打开电源时,必须每次执行此操作,地址不是永久性的!

Python和CircuitPython

将VL53L0X传感器与Python和CircuitPython以及Adafruit CircuitPython VL53L0X模块一起使用很容易。通过该模块,您可以轻松编写从传感器读取范围的Python代码。

您可以在任何CircuitPython微控制器板或具有GPIO和Python的计算机上使用此传感器,这要归功于我们的CircuitPython-for Adafruit_Blinka -Python兼容性库。

CircuitPython微控制器接线

首先,将VL53L0X完全连接到Arduino的前几页,将其连接到板上。以下是通过I2C连接将Feather M0连接到传感器的示例:

板3V 至传感器VIN

板GND 到传感器GND

板载SCL 到 sensorSCL

板载SDA 到传感器SDA

Python计算机接线

由于有数十种Linux计算机/主板可以使用我们将展示Raspberry Pi的接线。对于其他平台,请访问Linux上的CircuitPython指南,以了解您的平台是否受支持。

以下是与I2C相连的Raspberry Pi:

Pi 3V3 至传感器VIN

Pi GND 到传感器GND

Pi SCL 到传感器SCL

Pi SDA 到传感器SDA

CircuitPython安装VL53L0X库 》

您需要在CircuitPython板上安装Adafruit CircuitPython VL53L0X库。

首先请确保您正在为板运行最新版本的Adafruit CircuitPython。

下一步,您将需要安装必要的库才能使用硬件-请认真按照以下步骤从Adafruit的CircuitPython库捆绑包中查找和安装这些库。我们的简介指南上有一个很棒的页面,介绍如何为快速和非表达板安装库包。

请记住非表达板,例如,您需要从束中手动安装必要的库:

adafruit_vl53l0x.mpy

adafruit_bus_device

您还可以从其发布页面下载 adafruit_vl53l0x.mpy 。

在继续之前,请确保您开发板的lib文件夹或根文件系统具有 adafruit_vl53l0x.mpy ,然后 adafruit_bus_device 文件和文件夹 已复制。

下一步连接到开发板的串行REPL,因此您在CircuitPython上》 》》 提示。

VL53L0X库的Python安装

您需要安装Adafruit_Blinka库,该库在Python中提供了CircuitPython支持。这可能还需要在您的平台上启用I2C并验证您正在运行Python3。由于每个平台都略有不同,并且Linux经常更改,请访问Linux上的CircuitPython指南以准备好您的计算机!

完成后,从命令行运行以下命令:

sudo pip3 install adafruit-circuitpython-vl53l0x

如果您的默认Python是版本3,则可能需要改为运行“ pip”。只要确保您不尝试在Python 2.x上使用CircuitPython,就不支持它!

CircuitPython和Python用法

为演示传感器的用法,我们将对其进行初始化,并从开发板的Python REPL中读取范围以及更多内容。

运行以下代码以导入必要的模块,并初始化与传感器的I2C连接:

下载:文件

复制代码

import board

import busio

import adafruit_vl53l0x

i2c = busio.I2C(board.SCL, board.SDA)

sensor = adafruit_vl53l0x.VL53L0X(i2c) import board

import busio

import adafruit_vl53l0x

i2c = busio.I2C(board.SCL, board.SDA)

sensor = adafruit_vl53l0x.VL53L0X(i2c)

现在您可以从中读取值了

range -传感器到物体前面的物体的距离(以毫米为单位)。

下载:文件

复制代码

print(‘Range: {}mm’.format(sensor.range)) print(‘Range: {}mm’.format(sensor.range))

可以调整测量时间预算以更改传感器的速度和准确性。获取并设置 measurement_timing_budget 属性,该属性的值以纳秒为单位。例如,将计时预算增加到更准确但更慢的200ms值:

下载:文件

复制代码

sensor.measurement_timing_budget = 200000 sensor.measurement_timing_budget = 200000

有关每秒打印范围的完整演示,请参见simpletest.py示例。将其保存为板上的 code.py 并检查REPL输出以查看每秒打印的范围。

带有CircuitPython的VL53L0X!

完整示例代码

下载:Project Zip 或 vl53l0x_simpletest.py | 在Github上查看

复制代码

# Simple demo of the VL53L0X distance sensor.

# Will print the sensed range/distance every second.

import time

import board

import busio

import adafruit_vl53l0x

# Initialize I2C bus and sensor.

i2c = busio.I2C(board.SCL, board.SDA)

vl53 = adafruit_vl53l0x.VL53L0X(i2c)

# Optionally adjust the measurement timing budget to change speed and accuracy.

# See the example here for more details:

# https://github.com/pololu/vl53l0x-arduino/blob/master/examples/Single/Single.ino

# For example a higher speed but less accurate timing budget of 20ms:

#vl53.measurement_timing_budget = 20000

# Or a slower but more accurate timing budget of 200ms:

#vl53.measurement_timing_budget = 200000

# The default timing budget is 33ms, a good compromise of speed and accuracy.

# Main loop will read the range and print it every second.

while True:

print(‘Range: {0}mm’.format(vl53.range))

time.sleep(1.0)

# Simple demo of the VL53L0X distance sensor.

# Will print the sensed range/distance every second.

import time

import board

import busio

import adafruit_vl53l0x

# Initialize I2C bus and sensor.

i2c = busio.I2C(board.SCL, board.SDA)

vl53 = adafruit_vl53l0x.VL53L0X(i2c)

# Optionally adjust the measurement timing budget to change speed and accuracy.

# See the example here for more details:

# https://github.com/pololu/vl53l0x-arduino/blob/master/examples/Single/Single.ino

# For example a higher speed but less accurate timing budget of 20ms:

#vl53.measurement_timing_budget = 20000

# Or a slower but more accurate timing budget of 200ms:

#vl53.measurement_timing_budget = 200000

# The default timing budget is 33ms, a good compromise of speed and accuracy.

# Main loop will read the range and print it every second.

while True:

print(‘Range: {0}mm’.format(vl53.range))

time.sleep(1.0)

下载

文件和数据表

数据表

ST产品页面,其中包括API下载

Adafruit Fritzing库中的Fritzing对象

EagleCAD PCB GitHub中的文件

Adafruit VL53L0X库

Pololu Vl53L0X库

示意图和构造打印

使用M2.5或#2-56螺钉安装

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 距离传感器
    +关注

    关注

    3

    文章

    74

    浏览量

    15105
收藏 人收藏

    评论

    相关推荐

    VL53L1CB TOF开发(1)----驱动TOF进行测距

    TOF(飞行时间传感器是一种利用光的飞行时间原理来测量物体与传感器间距离的技术。VL53L1
    的头像 发表于 10-09 10:16 1150次阅读
    <b class='flag-5'>VL53L</b>1CB TOF开发(1)----驱动TOF进行测距

    意法半导体发布单区直接ToF传感器VL53L4ED

    ‍‍‍‍‍‍‍意法半导体推出了工作温度范围扩展至-40°C至105°C的单区飞行时间 (ToF) 传感器VL53L4ED。VL53L4ED适用于工业设备、智能工厂设备、机器人引导系统、
    的头像 发表于 07-26 14:27 602次阅读

    VL53L4CD TOF开发(2)----修改测量频率

    VL53L4CD是一款高度集成的飞行时间(ToF)传感器,广泛应用于距离测量和接近检测。为了满足不同应用场景的需求,合理调整传感器的测量频率
    的头像 发表于 06-19 14:50 1080次阅读
    <b class='flag-5'>VL53L</b>4CD TOF开发(2)----修改测量频率

    VL53L4CD TOF开发(4)----单次测量(One-Shot)模式

    在现代嵌入式系统中,精确的距离测量和实时响应能力对于许多应用场景至关重要。VL53L4CD 是一款先进的飞行时间(Time-of-Flight, ToF)传感器,能够提供高精度的
    的头像 发表于 06-19 10:58 1354次阅读
    <b class='flag-5'>VL53L</b>4CD TOF开发(4)----单次测量(One-Shot)模式

    VL53L4CD TOF开发(3)----检测阈值

    在现代嵌入式系统中,精确的距离测量和实时响应能力对于许多应用场景至关重要。VL53L4CD 是一款先进的飞行时间(Time-of-Flight, ToF)传感器,能够提供高精度的
    的头像 发表于 06-19 10:56 1214次阅读
    <b class='flag-5'>VL53L</b>4CD TOF开发(3)----检测阈值

    VL53L4CX TOF开发(2)----修改测距范围及测量频率

    VL53L4CX传感器是一款高性能的飞行时间(Time-of-Flight)传感器,广泛应用于各种距离测量和目标检测场景。其灵活的配置选项使
    的头像 发表于 06-19 10:49 854次阅读
    <b class='flag-5'>VL53L</b>4CX TOF开发(2)----修改测距范围及测量频率

    贸泽开售适用于存在检测和系统激活应用的STMicroelectronics VL53L4ED飞行时间接近传感器

    VL53L4ED飞行时间 (ToF) 高精度接近传感器VL53L4ED专为机器人、存在检测、工业自动化和系统激活应用而设计,能满足在扩展级温度范围下进行高精度、短
    发表于 05-16 14:11 510次阅读

    VL53L0X TOF测距传感器的报错几个疑问求解

    看看!救救我! 补充:需求相当于是: 寄存0x13:VL53LOX REG RESULT INTERRUPT STATUS需要中间两位为低,因为要跟0x18 一下。 寄存
    发表于 03-12 06:56

    意法半导体的多区飞行时间(ToF)传感器系列介绍

    VL53L5、VL53L7、VL53L8都是基于意法半导体(ST)的FlightSense技术的多区飞行时间(ToF)传感器
    的头像 发表于 02-28 09:53 811次阅读
    意法半导体的多区<b class='flag-5'>飞行时间</b>(ToF)<b class='flag-5'>传感器</b>系列介绍

    多区飞行时间(ToF)传感器的特点

    ‍‍‍‍‍‍‍‍ VL53L5、VL53L7、VL53L8都是基于ST的FlightSense技术的多区飞行时间(ToF)传感器
    的头像 发表于 02-25 09:41 1072次阅读
    多区<b class='flag-5'>飞行时间</b>(ToF)<b class='flag-5'>传感器</b>的特点

    飞行时间传感器:技术原理与多元应用

    回来时,我们停止计时,获得光飞行时长,借此确定物体与我们之间的距离(以毫米为单位)。这项技术被称为光飞行时间距离测量(flightsense),该技术功耗相对较低,远
    的头像 发表于 02-19 12:23 773次阅读
    <b class='flag-5'>飞行时间</b><b class='flag-5'>传感器</b>:技术原理与多元应用

    意法半导体推出新一代8 x 8多区飞行时间测距传感器VL53L8CX

    据麦姆斯咨询介绍,意法半导体的最新一代8 x 8多区飞行时间(ToF)测距传感器VL53L8CX实现了一系列改进,包括更强的抗环境光干扰能力、更低的功耗和更强的光学性能。
    的头像 发表于 12-27 09:23 1340次阅读
    意法半导体推出新一代8 <b class='flag-5'>x</b> 8多区<b class='flag-5'>飞行时间</b>测距<b class='flag-5'>传感器</b><b class='flag-5'>VL53L</b>8CX

    基于STM32CUBEMX驱动TOF模块VL53l0x(3)----驱动多个VL53L0X

    在本章中,我们将探讨如何同时驱动多个VL53L0X传感器进行距离测量。我们将介绍如何有效地管理多个传感器之间的通信和控制,以确保它们能够同时进行准确的
    的头像 发表于 12-01 15:47 963次阅读
    基于STM32CUBEMX驱动TOF模块<b class='flag-5'>VL53l0x</b>(3)----驱动多个<b class='flag-5'>VL53L0X</b>

    基于STM32CUBEMX驱动TOF模块VL53l0x(2)----修改设备地址

    本章主要介绍如何修改VL53L0X传感器的I2C地址,并成功驱动设备以使用新的地址。VL53L0X是一种多功能、高性能的接近和环境光传感器,常用于测量物体与
    的头像 发表于 12-01 15:46 1283次阅读
    基于STM32CUBEMX驱动TOF模块<b class='flag-5'>VL53l0x</b>(2)----修改设备地址

    基于STM32CUBEMX驱动TOF模块VL53l0x(1)----单模块距离获取的最佳实践

    VL53L0X是新一代飞行时间(ToF)激光测距模块(不同于传统技术),采用目前市场上最小的封装,无论目标反射率如何,都能提供精确的距离测量。它可以测量2m的绝对距离,为测距性能等级设
    的头像 发表于 12-01 15:45 2167次阅读
    基于STM32CUBEMX驱动TOF模块<b class='flag-5'>VL53l0x</b>(1)----单模块<b class='flag-5'>距离</b>获取的最佳实践