激光测距模块

news/2024/11/16 22:54:00/

这次我们聊一聊激光测距模块

我们用的是正点原子的STM32F103ZET6精英版。

一。VL53L0X 简介

1.定义

VL53L0X 是 ToF 激光测距传感器,利用飞行时间(ToF)原理,通过光子的飞行来回时间与光速的计算,实现测距应用。

二。测量模式

1.VL53L0X 传感器提供了 3 种测量模式,单次测量,连续测量,定时测量。

2.三种测量模式

(1) Single ranging(单次测量) ,在该模式下只触发执行一次测距测量,测量结束后,

VL53L0X 传感器会返回待机状态,等待下一次触发。

2Continuous ranging(连续测量) ,在该模式下会以连续的方式执行测距测量。一

旦测量结束,下一次测量就会立即启动,用户必须停止测距才能返回到待机状态,最后的一

次测量在停止前完成。

3Timed ranging(定时测量) ,在该模式下会以连续的方式执行测距测量。测量结

束后,在用户定义的延迟时间之后,才会启动下一次测量。用户必须停止测距才能返回到待

机状态,最后的一次测量在停机前完成。

三。ST 官方提供了 4 种不同的精度模式

注意:

针对不同的精度模式,测量时间也是有所区别的,

测量时间最快为高速模式,只需 20ms 内就可以采样一次,但精度确存在有±5%的误差范围

而在长距离精度模式下,测距距离能达到 2m,测量时间在 33ms 内,

但测量时需在黑暗条件(无红外线)的环境下。

所以在实际的应用中,需根据当前的要求去选择合适的精度模式,以达到最佳的测量效果。

四。工作流程

当上电,VL53L0X会进入Hw Standby状态,这是待机状态,功耗很低。然后拉高XSHUT引脚,让VL53L0X进入Fw Boot状态,开始准备测距。如果不需要待机状态,可以把XSHUT接到AVDD上。VL53L0X处于休眠状态是不能进行通信IIC

     注意:  VL53L0X3种工作模式:

(1)单次模式:收到测距开始命令后,开始进行测量,测量完成后自动退出,进入Sw Standby状态。

(2)连续模式:收到测距开始命令后,就一直进行测量,直到收到测距停止命令。收到测距停止命令时,会把最后一次测量完成才退出。

(3)连续间隔模式:收到测距开始命令后,开始进行测量,完成一次测量后,等待一段时间再进行

下次测量,直到收到测距停止命令。测量等待间隔时间可调。

五。原理图

六。引脚

1.基础

模块自带了 2.8V 超低压差稳压芯片,给 VL53L0X 芯片供电,因此外部供电可以选择: 3.3V/5V 都可以的。

模块通过 P1 排针与外部连接,引出了 VCC、 GND、IIC_SDA、 IIC_SCL、 VL_INT、 VL_XSH 信号。

其中, IIC_SCL、 IIC_SDA、 VL_INT 和 VL_XSH带了 4.7K 上拉电阻,外部可以不用再加上拉电阻了。

2.ATK-VL53L0X 激光测距传感器模块通过一个 1*6 的排针(P1)同外部电路连接,各引脚的详细描述如表 2.1.1 所示:

七。core文件

1.core 文件夹下有四个重点.c 文件,

分别是: vl53l0x_api.c、 vl53l0x_api_calibration.c、vl53l0x_api_core.c 和 vl53l0x_api_strings.c

 

2.这四个 C 文件的关系可以用以下关系图来表示

注释:

  1. vl53l0x_api_core.c 文件,

提供有 vl53l0x 传感器的底层操作核心函数

     2.vl53l0x_api_calibration.c 文件,

提供有 vl53l0x 传感器校准操作的底层函数。

     3 vl53l0x_api_strings.c 文件,

   实现信息内容的获取,提供有获取 vl53l0x 传感器设备 ID信息的底层函数,以及提供根据功能函数返回的状态值去获得其状态信息(字符串)的底层函数

      4.vl53l0x_api.c 文件,

则对以上的底层函数进行封装,提供包括系统初始化、测量模式配置、参数配置、校准功能、状态信息获取、以及中断配置等 API 函数。在一般的使用时,直接调取 vl53l0x_api.c 提供的 API 函数就可以了。

下面是激光测距的API函数部分:

一。常用的API函数有这些

二。各个API函数的备注

1VL53L0X_Datalnit()函数

 1该函数实现传感器初始化

 (2)函数为 VL53L0X_DataInit(VL53L0X_DEV Dev),

 (3)入口参数类型为 VL53L0X_DEV 结构体,结构体变量为设置传感器的 I2C 地址等重要信息。

注意:在失能传感器设备,到再重新使能设备,需调用该函数进行初始化

 

2VL53L0X_Staticlnit()函数

 1)该函数实现传感器寄存器值恢复默认初值和工作状态切换为待机状态

 (2)函数为VL53L0X_StaticInit(VL53L0X_DEV Dev)

 (3)入口参数为 VL53L0X_DEV 结构体变量,VL53L0X_DEV结构体变量为设置传感器的 I2C 地址等重要信息

 4该函数在初始化时进行调用

 

3VL53L0X_SetDeviceAddress()函数

 (1)该函数实现修改传感器设备的 I2C 地址

 (2)函数为 VL53L0X_SetDeviceAddress(VL53L0X_DEVDev,uint8_t DeviceAddress)

 (3)入口参数为 VL53L0X_DEV 结构体变量和 DeviceAddress 变量

 (4)VL53L0X_DEV 结构体变量为设置传感器 I2C 地址等重要信息

 (5)DeviceAddress 变量为新设置的 I2C 地址

             注意:重新使能设备后,I2C 地址为会恢复为默认的 0x52 地址

 6若修改设备 I2C 地址,需在使能设备后进行调用

 7设置的 I2C 地址必须为偶数,否则会出现通讯出错

 

4VL53L0X_SetDeviceMode()函数

 1该函数实现传感器测量的工作模式配置

 (2)函数为 VL53L0X_SetDeviceMode(VL53L0X_DEVDev,VL53L0X_DeviceModes DeviceMode)

 (3)入口参数为 VL53L0X_DEV 结构体类型变量和VL53L0X_DeviceModes 类型变量

  (4)VL53L0X_DEV 结构体变量为设置传感器 I2C 地址等重要信息

 5VL53L0X_DeviceModes 类型变量为设置的工作模式

      其中包含 SINGLE_RANGING 单次测量、 CONTINUOUS_RANGING 连续测量和 TIMED_RANGING定时器测量                    

 6该函数在测量前初始化进行调用

 

5VL53L0X_PerformSingleMeasurement()函数

 1该函现实现启动传感器一次测量

 (2)函数为VL53L0X_PerformSingleRangingMeasurement(VL53L0X_DEVDev,VL53L0X_RangingMeasurementData_t*pRangingMeasurementData)

 (3)入口参数为 VL53L0X_DEV 结构体类型变量和 VL53L0X_RangingMeasurementData_t 结构体类型变量

  (4)VL53L0X_DEV 结构体变量为设置传感器 I2C 地址等重要信息

VL53L0X_RangingMeasurementData_t 结构体变量为返回测量距离的数据和测量范围状态等数据

 5该函数一般在传感器工作在单次测量模式下进行调用

 

6VL53L0X_StartMeasurement()VL53L0X_StopMeasurement()函数

 (1)该函数分别实现了传感器启动测量和暂停测量

      实现启动测量的是VL53L0X_StartMeasurement()函数,

          实现暂停测量的是VL53L0X_StopMeasurement()函数。

 (2)函数为 VL53L0X_StartMeasurement(VL53L0X_DEV Dev) 和 VL53L0X_StopMeasurement(VL53L0X_DEV Dev)

 (3)入口参数都为VL53L0X_DEV 结构体类型变量

  (4)VL53L0X_DEV 结构体变量为设置传感器 I2C 地址等重要信息

 5这两个函数一般在测量时进行使用

 

 

7VL53L0X_GetRangingMeasurementData()函数

 1该函数实现获取传感器采样的测量数据

 (2)函数为 VL53L0X_PerformSingleRangingMeasurement(VL53L0X_DEV Dev,VL53L0X_Ranging MeasurementData_t *pRangingMeasurementData)

 (3)入口参数为VL53L0X_DEV结构体类型变量和VL53L0X_RangingMeasurementData_t结构体类型变量

  (4)VL53L0X_DEV 结构体变量为设置传感器 I2C 地址等重要信息

  (5)VL53L0X_RangingMeasurementData_t 结构体变量为返回测量距离的数据和测量范围状态等数据

 6该函数一般在传感器工作在连续测量模式下进行使用

 

 

8VL53L0X_SetGpioConfig()函数

 1该函数实现测量中断模式的配置功能

 (2)函数为 VL53L0X_SetGpioConfig(VL53L0X_DEV Dev,uint8_t Pin,VL53L0X_DeviceModes DeviceMode, VL53L0X_GpioFunctionality Functionality,VL53L0X_InterruptPolarity Polarity)

 

 3入口参数为 VL53L0X_DEV 结构体类型变量、 Pin 变量、VL53L0X_DeviceModes 类型变量VL53L0X_GpioFunctionality 类型变量 和VL53L0X_InterruptPolarity 类型变量。

 

其中五个变量的作用:

VL53L0X_DEV 结构体变量作用             设置传感器 I2C 地址等重要信息

VL53L0X_DeviceModes 类型变量的作用     设置的测量工作模式(单次测量、连续测量、定时测量)

Pin 变量的作用                         设置 GPIO 引脚口(使用时默认配置为 0)

VL53L0X_DeviceModes类型变量的作用      设置测量触发中断模式的

VL53L0X_InterruptPolarity 类型变量的作用   设置引脚的触发模式(包含上升沿和下降沿)

 

注意:

VL53L0X_DeviceModes类型变量包含以下三种模式

CROSSED_LOW(采样距离<下限值)

CROSSED_HIGH(采样距离>上限值)

CROSSED_OUT(采样距离<下限值或采样距离>上限值)

 

(5)函数一般在传感器工作在连续测量模式初始化配置时进行使用。

 

 

9、VL53L0X_SetlnterruptThresholds()函数

(1)该函数实现测量中断模式上下限距离值的设置

(2)函数为 VL53L0X_SetInterruptThresholds (VL53L0X_DEV Dev,VL53L0X_DeviceModes DeviceMode, FixPoint1616_t ThresholdLow,FixPoint1616_t ThresholdHigh)

(3)入口参数 VL53L0X_DEV 结构体类型变量、VL53L0X_DeviceModes 类 型变量、ThresholdLow 和 ThresholdHigh 变量,VL53L0X_DEV 结构体变量为设置传感器 I2C 地址等重要信息,

(4) VL53L0X_DeviceModes 类型变量为设置的测量工作模式(单次测量、连续测量、定时测量等)

(5) ThresholdLow为中断触发的下限距离值

         ThresholdHigh为设置中断触发的上限距离值

(6)该函数一般在传感器工作在连续测量模式初始化配置时进行使用

 

 

10、VL53L0X_ClearInterruptMask()函数

 (1)该函数实现清除测量中断模式的中断标志位

 (2)函数为 VL53L0X_ClearInterruptMask(VL53L0X_DEV Dev,uint32_t InterruptMask)

 (3)入口参数为 VL53L0X_DEV 结构体类型变量, InterruptMask 变量

 (4) VL53L0X_DEV 结构体变量为设置传感器 I2C 地址等重要信息

 (5) InterruptMask 变量为设置中断清除,默认设置为 0

 (6)该函数在传感器触发中断后时进行使用

 

 

11、VL53L0X_SetMeasurementTimingBudgetMicroSeconds()函数

 (1)该函数实现配置测量工作模式的周期采样时间的功能

 (2)函数为 VL53L0X_SetMeasure mentTimingBudgetMicroSeconds(VL53L0X_DEV Dev, uint32_t MeasurementTimingBudget MicroSeconds)

 (3)入口参数为 VL53L0X_DEV 结构体类型变量、MeasurementTimingBudget MicroSeconds 变量

 (4) VL53L0X_DEV 结构体变量为设置传感器 I2C 地址等重要信息

 (5) MeasurementTimingBudgetMicroSeconds 变量为设置测量工作模式的周期采样时间,单位为 ms

 (6)该函数在工作模式初始化配置时进行使用

 

12、VL53L0X_PerformOffsetCalibration()函数

 (1)该函数实现距离偏移的校准的功能

 (2)函数为 VL53L0X_PerformOffsetCalibration VL53L0X_ DEV Dev,FixPoint1616_t CalDistanceMilliMeter, int32_t *pOffsetMicroMeter)

 (3)入口参数为 VL53L0X_DEV 结构体类型变量、CalDistanceMilliMeter 变量和 pOffsetMicroMeter 指针变量,     VL53L0X_DEV 结构体变量为设置传感器 I2C 地址等重要信息

 (4) CalDistanceMilliMeter变量为设置校准时与传感器设备的相对距离值,单位为 mm

 (5) pOffsetMicroMeter指针变量为相对距离校准后传感器返回的修正距离变量的指针

 (6)该函数在校准时进行使用

13、VL53L0X_SetOffsetCalibrationDataMicroMeter()函数

 (1)该函数实现设置距离补偿值的功能

 (2)函数为 VL53L0X_SetOffsetCalibrationDataMicro Meter(VL53L0X_DEV Dev, int32_t OffsetCalibrationDataMicroMeter)

 (3)入口参数为 VL53L0X_DEV 结构体类型变量和 OffsetCalibrationDataMicroMeter 变量,VL53L0X_DEV 结构体变量为设置传 感器 I2C 地址等重要信息

 (4)OffsetCalibrationDataMicroMeter 变量为设置的距离补偿值

 (5)该函数在补偿时进行使用

 


http://www.ppmy.cn/news/252880.html

相关文章

20230606夏新(Amoi)的4K显示器D320B2000的亮点检测

20230606夏新&#xff08;Amoi&#xff09;的4K显示器D320B2000的亮点检测 2023/6/7 0:14 https://item.jd.com/63690000655.html 夏新&#xff08;Amoi&#xff09;电脑显示器高清家用办公电竞吃鸡游戏液晶监控直播大屏便携显示屏幕 32英寸【直面 4k/144hz双模式 全面屏】黑 …

c语言的一些小题目(初阶),持续分享......

文章目录 1.打印杨辉三角形 2.打印X形图案 3.打印菱形 4.字符串左旋 5.倒置字符串 文章内容 1.杨辉三角形是一道非常经典的题目&#xff0c;观察下面的图片中红色与蓝色方块的关系我们不难发现&#xff0c;两个红色方框里的数字相加等于蓝色方框里的数字&#xff0c;找到…

编译原理 | 课程设计 — Lex 和 Yacc的使用

第1关 — 碱基序列里特定碱基比例的计算 1、任务描述 双链DNA分子中&#xff0c;G、C碱基对所占比例越高&#xff0c;其稳定性越强。编写一个lex描述文件&#xff0c;计算指定碱基序列里G、C碱基的比例。 2、编程要求 完成上述编程任务&#xff0c;将C语言源程序复制粘贴到右侧…

java设计模式(十五)责任链模式

目录 定义模式结构角色职责代码实现适用场景优缺点 定义 责任链模式(Chain of Responsibility) 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象能够处理…

主板的简介

主板的另一特点&#xff0c;是采用了开放式结构。主板上大都有6-8个扩展插槽&#xff0c;供PC机外围设备的控制卡(适配器)插接。通过更换这些插卡&#xff0c;可以对微机的相应子系统进行局部升级&#xff0c;使厂家和用户在配置机型方面有更大的灵活性。 总之&#xff0c;主板…

主板结构

主板结构 百科名片 简略主板结构 主板作为其他硬件运行的平台&#xff0c;为电脑的运行发挥联通和纽带的作用。 目录 概念 一、主板板型分类 1、PCAT主板 2、Baby AT主板 3、ATX结构主板 4、MATX结构主板 5、BTX具有如下特点&#xff1a; 6、Mini-ITX结构主板&#xff1a; 二、…

主板类型

主板类型 什么是主板 主板&#xff0c;又叫主机板(mainboard)、系统板(systembourd)和母板(motherboard)&#xff1b;它安装在机箱内&#xff0c;是微机最基本的也是最重要的部件之一。 主板一般为矩形电路板&#xff0c;上面安装了组成计算机的主要电路系统&#xff0c;一般有…

主板bios

目前市面上较流行的主板BIOS主要有 Award BIOS、AMI BIOS、Phoenix BIOS三种类型。 通过Intel授权的全球一共有四家&#xff0c;除了上面说的三家还有一家国产BIOS--Byosoft BIOS。 早期的286、386大多采用AMI BIOS&#xff0c;它对各种软、硬件的适应性好&#xff0c;能保证系…