苏州网站推广工具,桂林在线交流,ppt免费模板在哪下载,金溪做网站文章目录 一.概要二.VL53L0X测距原理三.VL53L0X主要特性四.VL53L0X硬件参考设计五.模块接线说明六.模块通讯协议介绍七.光学盖玻片介绍八.STM32单片机与VL53L0模块实现距离测量实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 九.小结 一.概要
VL53L0X是一款由ST#xff0… 文章目录 一.概要二.VL53L0X测距原理三.VL53L0X主要特性四.VL53L0X硬件参考设计五.模块接线说明六.模块通讯协议介绍七.光学盖玻片介绍八.STM32单片机与VL53L0模块实现距离测量实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 九.小结 一.概要
VL53L0X是一款由ST意法半导体生产的红外传感器通常用于测量物体与传感器之间的距离。 VL53L0X是ST推出的第二代FlightSense技术的飞行时间传感器与传统的测距传感器不同它使用时飞行时间Time-of-FlightTOF测量原理可以实现精确、快速的非接触式测量。无论目标颜色和反射率如何都可以进行距离测量抗干扰能力更强。 二.VL53L0X测距原理
VL53L0X激光测距模块的原理是利用激光脉冲的飞行时间来测量距离。该模块通过发射一束激光脉冲,并测量该激光脉冲从发射到被接收的时间来计算出物体与传感器之间的距离。
VL53L0X传感器的测距视场角(FOV)为25°这个视场角决定了传感器在测距时所能覆盖的区域大小。
三.VL53L0X主要特性
尺寸VL53L0的尺寸非常小具体为4.4 x 2.4 x 1.0mm这使得它成为市场上最小的飞行时间ToF测距传感器之一。 测距范围该传感器的测距范围为30mm到2000mm具体参数为30 ~ 2000mm。 最大测距VL53L0的最大测距为2米2000mm。 工作电压工作电压范围为2.6V到3.5V通常使用3.3V或5V供电。 通信方式采用I2C通信协议设备地址为0x52支持读写操作。 激光波长使用940nm的VCSEL垂直腔面发射激光器这种激光器完全不可见且对人眼安全。 工作环境工作温度范围为-20°C到70°C适合各种环境使用。 测距精度在高速模式下精度为±5%高精度模式下为±3%(室内1.2米以内的白色物体)。 测距时间高速模式下测距时间为20ms高精度模式下为200ms。
测量距离客观因素室内/室外/被测物体偏白/北侧物体偏灰 由下表可以看出传感器能够测量的最大距离和在室内环境或在户外强光环境有关系也和被测物体是偏白还是偏灰有关系。可以看出最佳的测量环境是在室内测量白色障碍物的距离。
测量精度客观因素测量的距离远近/被测物体偏白/北侧物体偏灰 33ms列为Default模式HighAccuracy模式为200ms在室内默认模式下测量1.2米之内白色的物体精度为4%测量灰色物体精度为7%。
为啥测量灰色或者黑色的物体测量的最大距离会减少以及测量精度会降低因为黑色或者灰色的物体能吸收大量的光子能量导致反射回传感器的光子比较少从而影响测量距离以及精度。
四.VL53L0X硬件参考设计
芯片引脚定义从芯片底部角度观看 参考原理图设计
五.模块接线说明
模块引脚说明 5根杜邦线可以实现模块与开发板相连 板子3.3----模块VIN 板子A11----模块SCL 板子A12----模块SDA 板子B7-----模块XSHUT 板子G------模块GND
六.模块通讯协议介绍
IIC数据写
IIC数据读
VL53L0X芯片的寄存器手册厂家是没提供的提供了API函数直接调用就可以实现数据读取。
操作流程 模块上电VL53L0X会进入Hw Standby状态这是待机状态功耗很低。然后拉高XSHUT引脚让VL53L0X进入初始化启动状态开始准备测距。
然后根据配置进入测距模式有三种测距模式: 单次模式收到测距开始命令后开始进行测量测量完成后自动退出进入待机。 连续模式收到测距开始命令后就一直进行测量直到收到测距停止命令。收到测距停止命令时进入待机。 连续间隔模式收到测距开始命令后开始进行测量完成一次测量后等待一段时间再进行下次测量直到收到测距停止命令测量等待间隔时间可调。
七.光学盖玻片介绍
VL53L0X一般会和光学盖玻片一起结合使用。盖玻片有两个作用提供物理保护防止灰尘对光进行滤波如果只是个人实验评估使用一般不需要加盖片。盖片如下图所示刚好盖住整个传感器。 八.STM32单片机与VL53L0模块实现距离测量实验
1.硬件准备
STLINK接STM32F103C8T6开发板STLINK接电脑USB口。
用5根杜邦线把模块与开发板相连 板子3.3----模块VIN 板子A11----模块SCL 板子A12----模块SDA 板子B7-----模块XSHUT 板子G------模块GND 2.软件工程
打开STM32CubeMX软件,新建工程 Part Number处输入STM32F103C8再双击就创建新的工程 配置下载口引脚 配置外部晶振引脚IIC采用GPIO模拟所以IIC外设没有配置
配置系统主频
配置工程文件名保存路径KEIL5工程输出方式 生成工程 用Keil5打开工程
添加代码
添加VL53L0驱动文件以及OLED显示驱动文件
VL53L0复位引脚配置
VL53L0模拟IIC引脚配置 添加应用相关代码 3.软件主要代码
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();//8M外部晶振72M主频/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */OLED_Init();//OLED初始化 OLED_Clear();//清屏while(vl53l0x_init(vl53l0x_dev))//vl53l0x初始化{ HAL_Delay(500);}/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */vl53l0x_general_test(vl53l0x_dev,Default_Mode);//默认模式测试}/* USER CODE END 3 */
}//初始化vl53l0x
//dev:设备I2C参数结构体
VL53L0X_Error vl53l0x_init(VL53L0X_Dev_t *dev)
{GPIO_InitTypeDef GPIO_Initure;VL53L0X_Error Status VL53L0X_ERROR_NONE;VL53L0X_Dev_t *pMyDevice dev;__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟pMyDevice-I2cDevAddr VL53L0X_Addr;//I2C地址(上电默认0x52)pMyDevice-comms_type 1; //I2C通信模式pMyDevice-comms_speed_khz 400; //I2C通信速率VL53L0X_i2c_init();//初始化IIC总线HAL_GPIO_WritePin(VL53L0X_XshutPort, VL53L0X_XshutPin, GPIO_PIN_RESET);//失能VL53L0Xdelay_ms(30);HAL_GPIO_WritePin(VL53L0X_XshutPort, VL53L0X_XshutPin, GPIO_PIN_SET);//使能VL53L0X,让传感器处于工作delay_ms(30);vl53l0x_Addr_set(pMyDevice,0x54);//设置VL53L0X传感器I2C地址if(Status!VL53L0X_ERROR_NONE) goto error;Status VL53L0X_DataInit(pMyDevice);//设备初始化if(Status!VL53L0X_ERROR_NONE) goto error;delay_ms(2);Status VL53L0X_GetDeviceInfo(pMyDevice,vl53l0x_dev_info);//获取设备ID信息if(Status!VL53L0X_ERROR_NONE) goto error;if(Vl53l0x_data.adjustok0xAA)//已校准AjustOK1; else //没校准 AjustOK0;error:if(Status!VL53L0X_ERROR_NONE){print_pal_error(Status);//打印错误信息return Status;}return Status;
}
//启动普通测量
//dev设备I2C参数结构体
//mode模式配置 0:默认;1:高精度;2:长距离;3:高速
void vl53l0x_general_start(VL53L0X_Dev_t *dev,u8 mode)
{static char buf[VL53L0X_MAX_STRING_LENGTH];//测试模式字符串字符缓冲区VL53L0X_Error StatusVL53L0X_ERROR_NONE;//工作状态OLED_Init(); //初始化OLED OLED_Clear(); //清屏OLED_ShowCHinese(18,0,0);//光OLED_ShowCHinese(36,0,1);//子OLED_ShowCHinese(54,0,2);//物OLED_ShowCHinese(72,0,3);//联OLED_ShowCHinese(90,0,4);//网OLED_ShowString(6,3,VL53L0X Test);OLED_ShowString(80,6,mm); vl53l0x_set_mode(dev,mode);//配置测量模式while(1){if(StatusVL53L0X_ERROR_NONE){Status vl53l0x_start_single_test(dev,vl53l0x_data,buf);//执行一次测量if(vl53l0x_data.RangeMilliMeter2000){OLED_ShowNum(30,6,vl53l0x_data.RangeMilliMeter,4,16);//显示距离值} }delay_ms(200);//等待200ms }
}4.实验效果 九.小结
VL53L0X在激光自动对焦测距和接近检测深度映射和AR/VR中有广泛的应用学会VL53L0X可以在这些应用场景可以发挥作用。