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

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

3天内不再提示

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

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2024-06-19 10:49 次阅读

概述

最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:615061293 。

VL53L4CX传感器是一款高性能的飞行时间(Time-of-Flight)传感器,广泛应用于各种距离测量和目标检测场景。其灵活的配置选项使得用户可以根据具体应用需求调整测距范围和测量频率,从而实现最佳性能。本篇文章将介绍如何通过修改VL53L4CX传感器的测距范围和测量频率来满足不同应用场景的需求。

wKgaomZyRuuAJDs4AAvC61woylw153.png

视频教学

https://www.bilibili.com/video/BV19s421g7dR/

样品申请

https://www.wjx.top/vm/OhcKxJk.aspx#

完整代码下载

https://download.csdn.net/download/qq_24312945/89399419

测距范围

VL53L4CX传感器支持多种测距模式,包括短距离、中距离和长距离模式。每种模式针对不同的测量距离进行了优化,用户可以根据目标物体与传感器之间的距离选择合适的测距模式:
● 短距离模式:适用于目标物体距离较近的应用,提供较高的测量精度和响应速度。
● 中距离模式:在一定距离范围内平衡了测量精度和响应速度,适用于多数通用测量应用。
● 长距离模式:适用于目标物体距离较远的应用,能够覆盖更大的测量范围,但响应时间相对较长。

测量频率

测量频率决定了传感器进行测距操作的频次。通过调整测量频率,用户可以在响应速度和功耗之间找到平衡点:
● 高频测量:适用于需要实时监测和快速响应的应用场景,如手势识别和快速移动物体检测。然而,高频测量会增加功耗。
● 低频测量:适用于功耗敏感的应用,如电池供电设备或对响应速度要求较低的场景。低频测量可以显著降低功耗。
本文将详细介绍如何配置VL53L4CX传感器的测距范围和测量频率,包括具体的配置方法、相关代码示例以及在实际应用中的注意事项。通过合理调整这些参数,用户可以充分发挥VL53L4CX传感器的性能优势,满足各种复杂多样的应用需求。

硬件准备

首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。

wKgaomZyRumAJYZxAAObseraVF8960.png


wKgZomZyRumADd1TAAICYmF1mN4269.png

技术规格

wKgaomZyRumAXGwZAAEE_XK62u0756.png

系统框图

wKgaomZyRumAFPG2AAHKV4eNWrM565.png


wKgaomZyRumAFPG2AAHKV4eNWrM565.png

应用示意图

wKgaomZyRuqAWEJFAARfnJsr6oo262.png

生成STM32CUBEMX

选择MCU

测试版所用的MCU为STM32G431CB。

wKgZomZyRMGAdRRoAARB-YbOkK4270.png

串口配置

查看原理图,PA9和PA10设置为开发板的串口。

wKgZomZyRumAdxeeAAG1-hi9O3o158.png

配置串口。

wKgaomZyQ1mAc0EHAAKBhL00-c0246.png

IIC配置

在这个应用中,VL53L4CX模块通过I2C(IIC)接口与主控器通信。具体来说,VL53L4CX模块的I2C引脚连接到主控器的PA8和PB5两个IO口。

wKgZomZyRumAUTR2AAHWyXsrrKk287.png

配置IIC为快速模式,速度为400k。

wKgZomZyRumAE3-DAAJ2SC28P9A806.png

XSHUT

XSHUT引脚是由主机连接和控制的,这种设计优化了功耗,因为设备在不使用时可以被完全关闭,然后通过主机使用XSHUT引脚来唤醒。当AVDD存在且XSHUT为低电平时,设备处于硬件待机模式(HW Standby mode)。如果XSHUT引脚不由主机控制,而是通过上拉电阻连接到AVDD,那么设备在固件启动(FW BOOT)后会自动进入软件待机(SW STANDBY),而不会进入硬件待机。

wKgZomZyRumAdxeeAAG1-hi9O3o158.pngwKgZomZyRumAQLTdAAVJnROoQ-g090.png

GPIO1

当传感器完成一次测距操作时,GPIO1引脚可以被配置为输出中断信号,通知微控制器读取测量结果。
这种方式比持续轮询传感器状态更加高效,尤其在低功耗应用中非常有用。

wKgZomZyRuqAUHhiAAoTNZyms1k160.pngwKgaomZyRumAJEk1AAQ52KTwW-s266.png

X-CUBE-TOF1

本节介绍在不需要使用样例应用时如何使用STM32CubeMX将X-CUBE-TOF1软件包添加到项目中。有了这样的设置,就只配置了驱动层。

wKgZomZyRumAc-JiAAR1OkKyPBc767.png

app_tof.c

app_tof.c定义了一个静态函数 MX_VL53L4CX_SimpleRanging_Process,用于配置和执行VL53L4CX传感器的简单测距操作。

wKgaomZyRuqAYGj9AAW_oFDOg5Q681.png

详细解释

CUSTOM_RANGING_SENSOR_ReadID(CUSTOM_VL53L4CX, &Id);:
○ 读取传感器的ID,并将其存储在变量 Id 中。

CUSTOM_RANGING_SENSOR_GetCapabilities(CUSTOM_VL53L4CX, &Cap);:
○ 获取传感器的能力,并将其存储在 Cap 结构中。

配置 Profile 结构的参数:
○ Profile.RangingProfile 设置为中距离多目标测距模式。
○ Profile.TimingBudget 设置测量时间预算。
○ Profile.Frequency 设置为0,不用于正常测距。
○ Profile.EnableAmbient 启用环境光测量。
○ Profile.EnableSignal 启用信号测量。

CUSTOM_RANGING_SENSOR_ConfigProfile(CUSTOM_VL53L4CX, &Profile);:
○ 如果配置文件与默认配置不同,则应用新的配置文件。

CUSTOM_RANGING_SENSOR_Start(CUSTOM_VL53L4CX, RS_MODE_BLOCKING_CONTINUOUS);:
○ 启动传感器,设置为阻塞连续测量模式。

while (1) 循环:
○ 在无限循环中,定期读取传感器的距离数据。
○ 如果成功读取距离数据,则调用 print_result(&Result) 打印结果。
○ 使用 HAL_Delay(POLLING_PERIOD) 延迟一段时间,以控制轮询频率。

在main.c种添加头文件。

/* USER CODE BEGIN Includes */
#include "app_tof.h"
#include "custom_ranging_sensor.h"

/* USER CODE END Includes */

添加对应变量。

/* USER CODE BEGIN 0 */
#define TIMING_BUDGET (200U) /* 8 ms < TimingBudget < 200 ms */
#define POLLING_PERIOD (250U) /* refresh rate for polling mode (ms, shall be consistent with TimingBudget value) */


static RANGING_SENSOR_Capabilities_t Cap;
static RANGING_SENSOR_ProfileConfig_t Profile;
static RANGING_SENSOR_Result_t Result;
static int32_t status = 0;

static void print_result(RANGING_SENSOR_Result_t *Result);
static int32_t decimal_part(float_t x);
/* USER CODE END 0 */

测量频率修改

增加计时预算会增加单次测量发射的光子数量。这提高了测量精度和最大测距距离。

wKgZomZyRuuAYS8KAAyu84LR4e4235.png

Profile.TimingBudget 设置测量时间预算,初始化代码如下所示,TIMING_BUDGET设置为200ms。

  /* USER CODE BEGIN 2 */
    uint32_t Id;

    // 读取传感器ID
    CUSTOM_RANGING_SENSOR_ReadID(CUSTOM_VL53L4CX, &Id);
    // 获取传感器的能力
    CUSTOM_RANGING_SENSOR_GetCapabilities(CUSTOM_VL53L4CX, &Cap);

    // 配置测距参数
    Profile.RangingProfile = VL53L4CX_PROFILE_MEDIUM; // 设置测距模式为中距离
    Profile.TimingBudget = TIMING_BUDGET; // 设置时间预算(测量时间)
    Profile.Frequency = 0; // 设置测量频率,这里不用于正常测距(设为0)
    Profile.EnableAmbient = 1; // 启用环境光测量(1:启用,0:禁用)
    Profile.EnableSignal = 1; // 启用信号测量(1:启用,0:禁用)

    // 如果配置文件与默认配置不同,则设置新的配置文件
    CUSTOM_RANGING_SENSOR_ConfigProfile(CUSTOM_VL53L4CX, &Profile);

    // 启动传感器,设置为短距离测量模式
    status = CUSTOM_RANGING_SENSOR_Start(CUSTOM_VL53L4CX, RS_MODE_BLOCKING_CONTINUOUS);
  /* USER CODE END 2 */

主程序如下所示,可以通过判断GPIO1来判定信号是否已经准备好。

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	if(HAL_GPIO_ReadPin  ( GPIOB, GPIO_PIN_15) ==0)		
	{		
    /* polling mode */
    status = CUSTOM_RANGING_SENSOR_GetDistance(CUSTOM_VL53L4CX, &Result);

    if (status == BSP_ERROR_NONE)
    {
      print_result(&Result);
    }
	}
    /* USER CODE END WHILE */

//  MX_TOF_Process();
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

若无法正常打印,需要修改堆栈。

wKgaomZyRumATqg5AAJIWryhJ_4811.png

此时时间为200ms输出一次,频率为5Hz。

wKgaomZyRuqALnUgAAo0_oGec5s674.png

修改测距范围

VL53L4CX最大可以测量6M距离,可以通过 Profile.RangingProfile 设置为测距模式。

RS_MULTI_TARGET_SHORT_RANGE (VL53L4CX_PROFILE_SHORT):
○ 短距离多目标模式:
■ 此模式下,传感器优化用于较近距离的测量。
■ 适用于需要高精度但测量距离较短的应用。
■ 在短距离测量时,传感器可以提供更快的响应时间和更高的测量频率。

RS_MULTI_TARGET_MEDIUM_RANGE (VL53L4CX_PROFILE_MEDIUM):
○ 中距离多目标模式:
■ 此模式下,传感器在中等距离范围内工作。
■ 适用于需要在中等距离内进行测量的应用。
■ 提供了距离和精度之间的平衡。

RS_MULTI_TARGET_LONG_RANGE (VL53L4CX_PROFILE_LONG):
○ 长距离多目标模式:
■ 此模式下,传感器优化用于较远距离的测量。
■ 适用于需要测量更远距离的应用。
■ 在长距离测量时,响应时间可能会更长,但可以覆盖更大的测量范围。

此时 Profile.RangingProfile = VL53L4CX_PROFILE_MEDIUM; // 设置测距模式为中距离
若测量长距离,可能出现如下测量失败情况,TIMING_BUDGET修改为200。

wKgZomZyRuqAECHDAAfnE3v1OwU156.png

Status状态位如下所示。
在使用VL53L4CX传感器时,返回的状态码(status)为4通常表示特定的错误类型。根据VL53L4CX传感器的文档,状态码4对应的具体错误类型是 VL53L4CX_RANGESTATUS_OUTOFBOUNDS_FAIL。
VL53L4CX_RANGESTATUS_OUTOFBOUNDS_FAIL:
● 状态码4:此状态码表示测距过程中发生了超出边界失败(out of bounds fail)的错误。
● 含义:传感器在测量过程中检测到目标物体距离超出了其测量范围,或者接收到的信号不在预期的范围内。

修改测量范围为长范围。

Profile.RangingProfile = RS_MULTI_TARGET_LONG_RANGE;

此时测距可以测量长距离范围。

wKgaomZyRuuAG426AAp_3ZnL9G8798.png

审核编辑 黄宇

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

    关注

    2551

    文章

    51084

    浏览量

    753415
  • 频率
    +关注

    关注

    4

    文章

    1499

    浏览量

    59226
  • TOF
    TOF
    +关注

    关注

    9

    文章

    483

    浏览量

    36337
  • stm32cubemx
    +关注

    关注

    5

    文章

    283

    浏览量

    14804
收藏 人收藏

    评论

    相关推荐

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

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

    VL53L5CX驱动开发(1)----驱动TOF进行区域检测

    VL53L5CX是一款先进的飞行感应(FlightSense)产品系列的飞行时间(ToF)多区间测距传感器。封装在微型的可回流焊盘封装内,它集成了SPAD阵列、物理红外滤光片和衍射光学元件(DOE),以在不同的环境光照条件和各种
    的头像 发表于 12-01 16:26 789次阅读
    <b class='flag-5'>VL53L5CX</b>驱动<b class='flag-5'>开发</b>(1)----驱动<b class='flag-5'>TOF</b>进行区域检测

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

    VL53L4CD适用于接近测量和短距离测量,可实现从仅仅1 mm到1300 mm的超精准距离测量。新一代激光发射器具有18°视场 (FoV),提高了环境光下的性能,其
    的头像 发表于 05-17 14:54 934次阅读
    <b class='flag-5'>VL53L4</b>CD <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(1)----驱动<b class='flag-5'>TOF</b>进行<b class='flag-5'>测距</b>

    VL53L8CX TOF开发(1)----驱动TOF进行区域检测

    VL53L8CX是一款8x8多区域ToF测距传感器,它在环境光下能够在降低功耗的同时增强性能。该传感器基于意法半导体的FlightSense技术设计,能够提供最高400 cm的精确测距
    的头像 发表于 05-20 09:42 876次阅读
    <b class='flag-5'>VL53L8CX</b> <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(1)----驱动<b class='flag-5'>TOF</b>进行区域检测

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

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

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

    了如何基于VL53L4CD传感器实现连续测距,并通过配置检测阈值来优化系统的响应能力。 我们将详细讲解如何初始化VL53L4CD传感器,设置其测量参数和检测阈值,并实现中断配置以
    的头像 发表于 06-19 10:56 1330次阅读
    <b class='flag-5'>VL53L4</b>CD <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(3)----检测阈值

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

    了如何基于VL53L4CD传感器实现连续测距,并通过配置检测阈值来优化系统的响应能力。 我们将详细讲解如何初始化VL53L4CD传感器,设置其测量参数和检测阈值,并实现中断配置以
    的头像 发表于 06-19 10:58 1451次阅读
    <b class='flag-5'>VL53L4</b>CD <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(<b class='flag-5'>4</b>)----单次<b class='flag-5'>测量</b>(One-Shot)模式

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

    VL53L1传感器,可以实现对物体的快速、准确测距,最高测量距离可达800厘米。该传感器支持I2C接口,具备多种预设模式(如测距模式、多区域
    的头像 发表于 10-09 10:16 1427次阅读
    <b class='flag-5'>VL53L</b>1CB <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(1)----驱动<b class='flag-5'>TOF</b>进行<b class='flag-5'>测距</b>

    新一代ToF 激光测距模块VL53L0X

    ,所以回程距离的计算公式也很简单,即“光速” x “时间延迟”。VL53L0X 是新一代 ToF 激光测距模块,采用目前市场上最小型的封装,可基于各种目标物颜色和反射特性进行精确测距
    发表于 04-06 14:03

    VL53L1X简介

    VL53L1X是目前市场上最快的微型ToF传感器,精确测距能力达4米,测距频率快至50 Hz。
    发表于 08-06 07:54

    VL53L5CX #高达 8x8 多区域测距和 63°对角线宽视场 飞行时间多区域测距传感器

    意法半导体 – VL53L5CX 飞行时间传感器高达 8x8 多区域测距和 63°对角线宽视场意法半导体VL53L5CX是一款先进的飞行时间 (ToF) 多区域
    发表于 09-01 10:10

    微雪电子VL53L1X测距传感器4VL53L1X测距模块简介

    VL53L1X 飞行时间 测距传感器模块 4米 I2C接口 测距频率可达50Hz,低功耗,抗干
    的头像 发表于 01-06 08:48 1.4w次阅读
    微雪电子<b class='flag-5'>VL53L</b>1X<b class='flag-5'>测距</b>传感器<b class='flag-5'>4</b>米<b class='flag-5'>VL53L</b>1X<b class='flag-5'>测距</b>模块简介

    dfrobotVL53L0X ToF激光测距传感器简介

    VL53L0X激光测距传感器是一款基于意法半导体(STMicroelectronics)新出的基于飞行时间测距 (ToF) 原理设计的高精度测距
    的头像 发表于 01-02 08:42 7322次阅读
    dfrobotVL<b class='flag-5'>53L</b>0X <b class='flag-5'>ToF</b>激光<b class='flag-5'>测距</b>传感器简介

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

    VL53L4CX 是一款先进的激光距离传感器,专为长距离和多目标测量设计,能够在最长6米的范围内提供非常精确的距离测量,尤其在短距离上效果显著,这得益于新一代18°视场角的激光发射器和
    的头像 发表于 12-28 10:08 811次阅读
    <b class='flag-5'>VL53L4CX</b> <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(1)----驱动<b class='flag-5'>TOF</b>进行<b class='flag-5'>测距</b>

    VL53L4CD液位监测(1)----驱动TOF进行测距

    VL53L4CD适用于接近测量和短距离测量,可实现从仅仅1 mm到1300 mm的超精准距离测量。新一代激光发射器具有18°视场 (FoV),提高了环境光下的性能,其
    的头像 发表于 11-25 14:38 199次阅读
    <b class='flag-5'>VL53L4</b>CD液位监测(1)----驱动<b class='flag-5'>TOF</b>进行<b class='flag-5'>测距</b>