资讯详情

激光测距模块

这次我们来谈谈激光测距模块

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

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

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

2.三种测量模式

(1) (单次测量) ,在此模式下只触发一次测距测量,测量结束后,

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

(连续测量) ,测距测量将在此模式下连续进行。

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

停止前完成次量。

(定时测量) ,测距测量将在该模式下连续进行。

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

最后一次测量在停机前完成。

注意:

测量时间因精度模式而异,

测量时间最快的高速模式,只需 20ms 内部可采样一次,但精确存在

在长距离精度模式下,可以实现测距 2m,测量时间在 33ms 内,

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

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

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

注意:

(1):接到测距命令后,开始测量,测量完成后自动退出,进入Sw Standby状态。

(2):在收到测距开始命令后,一直测量,直到收到测距停止命令。当收到测距停止命令时,最后一次测量将完成。

(3):接到测距开始命令后,开始测量。测量完成后,等待一段时间

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

模块自带了 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 上拉电阻,外部不需要加拉电阻。

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 文件,

     2.vl53l0x_api_calibration.c 文件,

     3 vl53l0x_api_strings.c 文件,

  

vl53l0x_api.c 文件,

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

 

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

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

注意:

 

 

 (2)函数为VL53L0X_StaticInit(VL53L0X_DEV Dev)

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

 (4)

 

 (1)

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

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

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

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

             注意:

 (6)

 (7)

 

 (1)

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

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

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

 (5)

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

 (6)

 

函数

 (1)

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

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

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

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

 (5)

 

函数

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

     

          函数。

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

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

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

 (5)

 

 

函数

 (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)

 

 

函数

 (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 类型变量的作用   设置引脚的触发模式(包含上升沿和下降沿)

 

注意:

 

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

 

 

(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)

(5)

        

(6)

 

 

 (1)

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

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

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

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

 (6)

 

 

 (1)

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

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

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

 (5)

 (6)

 

 (1)

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

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

 (4)

 (5)

 (6)

 (1)

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

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

 (4)

 (5)

 

标签: 6m压差传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台