在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

VL53L1CB TOF開發(fā)(2)----多區(qū)域掃描模式

嵌入式單片機MCU開發(fā) ? 來源:嵌入式單片機MCU開發(fā) ? 作者:嵌入式單片機MCU開 ? 2024-10-09 10:38 ? 次閱讀

概述

多區(qū)域掃描模式是 VL53L1 飛行時間 (Time-of-Flight, ToF) 傳感器的一項高級功能,允許用戶同時對多個區(qū)域進行距離測量。該模式通過劃分視場(Field of View, FoV)為多個感興趣區(qū)域(Region of Interest, ROI),并對每個區(qū)域分別進行測距,為需要廣域監(jiān)控和多目標檢測的應用提供了理想的解決方案。 在多區(qū)域掃描模式下,VL53L1 傳感器可以最多支持 16 個區(qū)域的并行測量,用戶還可以根據(jù)需求將區(qū)域數(shù)量擴展到 169 個。每個區(qū)域的測量結果會獨立報告,這使得該模式特別適合于需要監(jiān)測大面積區(qū)域或精確跟蹤多個目標的場景,例如投影機梯形校正、多點距離檢測和環(huán)境映射等。

該模式支持最多 16 個區(qū)域的并行測量,用戶還可以根據(jù)需求擴展到 169 個區(qū)域。這使得多區(qū)域掃描模式成為投影機梯形校正應用的理想選擇,能夠有效應對復雜的角度調整和多點校正需求。

最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請:615061293 。

視頻教學

[https://www.bilibili.com/video/BV1aJHveYEA3/]

樣品申請

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

源碼下載

[https://download.csdn.net/download/qq_24312945/89703992]

硬件準備

首先需要準備一個開發(fā)板,這里我準備的是自己繪制的開發(fā)板,需要的可以進行申請。
主控為STM32WB55RGV6,TOF為VL53L1。

主要特點

● 多區(qū)域檢測:支持對投影圖像的多個區(qū)域進行獨立測距,有助于精確的梯形校正。
高精度與靈活性:用戶可以根據(jù)投影需求自定義 ROI 的數(shù)量和大小,實現(xiàn)更精細的圖像調整。
● 應用場景:除了投影機梯形校正,該模式還適用于需要多點距離測量的其他應用,如機器人導航和環(huán)境映射。

生成STM32CUBEMX

用STM32CUBEMX生成例程,這里使用MCU為STM32WB55RG。

配置時鐘樹,配置時鐘為32M。

串口配置

查看原理圖,PB6和PB7設置為開發(fā)板的串口。

配置串口。

IIC配置

在這個應用中,VL53L1模塊通過I2C(IIC)接口與主控器通信。具體來說,VL53L1模塊的I2C引腳連接到主控器的PB8和PB9兩個IO口。

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

XSHUT

XSHUT引腳是由主機連接和控制的,這種設計優(yōu)化了功耗,因為設備在不使用時可以被完全關閉,然后通過主機使用XSHUT引腳來喚醒。當AVDD存在且XSHUT為低電平時,設備處于硬件待機模式(HW Standby mode)。如果XSHUT引腳不由主機控制,而是通過上拉電阻連接到AVDD,那么設備在固件啟動(FW BOOT)后會自動進入軟件待機(SW STANDBY),而不會進入硬件待機。

GPIO1

在VL53L1X傳感器中,GPIO1(通用輸入輸出引腳1)通常用于中斷信號輸出。

配置如下所示。

X-CUBE-TOF1

本節(jié)介紹在不需要使用樣例應用時如何使用STM32CubeMX將X-CUBE-TOF1軟件包添加到項目中。有了這樣的設置,就只配置了驅動層。

堆棧設置

若無法正常運行需要修改優(yōu)化等級。

函數(shù)說明

[https://docs.ros.org/en/melodic/api/vl53l1x/html/group__VL53L1__parameters__group.html]

初始化設置

UM2371文檔是關于使用X-CUBE-53L1A1軟件擴展包在STM32Cube平臺上實現(xiàn)VL53L1X傳感器應用的入門指南。它詳細介紹了如何配置和使用VL53L1X傳感器進行測距,并將測量數(shù)據(jù)傳輸?shù)絇C。

預設模式 (Preset mode)

在 UM2133 文檔的第 3.2.4 節(jié)中,描述了 VL53L1 傳感器的預設模式選擇功能。以下是該部分的主要內容:
● 功能: VL53L1_SetPresetMode() 函數(shù)用于選擇一個預設的測距模式。使用當前的驅動程序版本,可以選擇以下幾種預設模式:
● VL53L1_PRESETMODE_RANGING: 標準測距模式,用于獲取單個或多個(最多 4 個)目標的測距數(shù)據(jù)。
● VL53L1_PRESETMODE_MULTIZONES_SCANNING: 多區(qū)域掃描模式,允許用戶定義的多個感興趣區(qū)域(ROI)進行連續(xù)掃描,并逐一報告每個區(qū)域的測距值。默認最多支持 16 個區(qū)域,最高可擴展到 169 個區(qū)域。
● VL53L1_PRESETMODE_LITE_RANGING: 簡化測距模式(已廢棄),最初設計用于降低主機的處理負擔。
● VL53L1_PRESETMODE_AUTONOMOUS: 自主測距模式,在該模式下,傳感器可以定期進行測量,而無需主機干預,適合低功耗應用。
● 默認模式: 默認的預設模式為 VL53L1_PRESETMODE_RANGING。

VL53L1_SetPresetMode

VL53L1_SetPresetMode() 是 VL53L1 傳感器的一個API函數(shù),用于將設備設置為一個新的預設模式(Preset Mode)。該函數(shù)定義了傳感器的工作模式,比如高速測距或多目標檢測。
函數(shù)描述:
● 作用: 這個函數(shù)設置設備的操作模式,比如高速測距或多對象檢測等。它通過修改測量的時間預算和測量間隔來實現(xiàn)不同的模式。
● 注意事項:
○ 這個函數(shù)并不會直接訪問設備,而是修改了相關的配置參數(shù)
○ 使用該函數(shù)后,時間預算會被設定為 16 ms,測量間隔被設定為 1000 ms,且距離模式被設定為 VL53L1_DISTANCEMODE_LONG。

將 VL53L1 傳感器的預設模式設置為 VL53L1_PRESETMODE_MULTIZONES_SCANNING(多區(qū)域掃描模式)。

/*VL53L1_SetPresetMode function is mandatory to be called even if default PresetMode is the VL53L1_PRESETMODE_RANGING */
  status = VL53L1_SetPresetMode(&VL53L1CBObj1, VL53L1_PRESETMODE_MULTIZONES_SCANNING);

VL53L1_SetDistanceMode

VL53L1_SetDistanceMode() 是 VL53L1 傳感器的一個API函數(shù),用于設置傳感器的測距模式。該函數(shù)允許用戶選擇適合具體應用場景的測距范圍,以優(yōu)化測量精度。不同的測距模式在不同的距離范圍內提供最佳的測量結果。

根據(jù)不同的預設模式(Preset mode),用戶可以選擇適合的距離模式來優(yōu)化測量的準確性和設備的性能。表格中的內容解釋了每種距離模式的可能選項及其優(yōu)點或注意事項。

status = VL53L1_SetDistanceMode(&VL53L1CBObj1, VL53L1_DISTANCEMODE_LONG);

時間預算

VL53L1_SetMeasurementTimingBudgetMicroSeconds() 是一個用于設置 VL53L1 傳感器測距時間預算的 API 函數(shù)。通過這個函數(shù),用戶可以定義設備在當前模式下(如測距、直方圖模式等)完成一次完整測距序列所允許的最大時間。

VL53L1_ERROR_INVALID_PARAMS: 如果傳入的時間參數(shù)不被支持,會返回此錯誤。計算出的時間預算最大值為10秒,最小值則取決于所選擇的預設模式。
時間預算值(表格): 表格中列出了不同預設模式下的時間預算的最小值、典型值和最大值:
● Ranging(測距模式):
○ 最小值: 8毫秒
○ 典型值: 16毫秒
○ 最大值: 500毫秒
● MultiZone scanning(多區(qū)域掃描模式):
○ 最小值: 8毫秒
○ 典型值: 16毫秒
○ 最大值: 500毫秒
● Autonomous(自主模式):
○ 最小值: 20毫秒
○ 典型值: 40毫秒
○ 最大值: 1000毫秒

status = VL53L1_SetMeasurementTimingBudgetMicroSeconds(&VL53L1CBObj1, 500000);

單個ROI(Single ROI)設置

● 默認設置: VL53L1傳感器的默認ROI大小是16x16 SPAD(單光子雪崩二極管)矩陣。
● 自定義ROI: 用戶可以調用 VL53L1_SetROI() 函數(shù)來設置與默認16x16不同的ROI。ROI是由兩個角點(左上角和右下角)定義的正方形或矩形區(qū)域。
● 四個坐標:
● TopLeftX: 左上角X坐標。
● TopLeftY: 左上角Y坐標。
● BotRightX: 右下角X坐標。
● BotRightY: 右下角Y坐標。
● 結構體: 這些坐標是 VL53L1_UserROI_t 類型的結構體的一部分。用戶需要在結構體中定義這些ROI坐標值,然后調用驅動函數(shù)應用ROI更改。
● 最小ROI尺寸: 最小的ROI尺寸是4x4 SPAD矩陣。

設置完畢之后使用 VL53L1_StartMeasurement 啟動測量。

VL53L1_MultiRangingData_t MultiRangingData;
    VL53L1_MultiRangingData_t *pMultiRangingData = &MultiRangingData;
    uint8_t NewDataReady = 0;
    uint8_t NumROI = 16, RoiNumber=0, RoiStatus=0;
    int no_of_object_found = 0, j, k;
    VL53L1_RoiConfig_t pRoiConfig;

    pRoiConfig.NumberOfRoi=NumROI;

  printf("Start set Roi");
  for(k=0;k< 4;k++)
      for(j=0;j< 4;j++)
      {
          pRoiConfig.UserRois[k*4+j].TopLeftX=j*4;
          pRoiConfig.UserRois[k*4+j].TopLeftY=k*4+3;
          pRoiConfig.UserRois[k*4+j].BotRightX=j*4+3;
          pRoiConfig.UserRois[k*4+j].BotRightY=k*4;
          printf("set Roi %dnrx: %d-%d    y: %d-%dnr",k*4+j,j*4,j*4+3,k*4,k*4+3);
      }    

  /* VL53L1_SetROI must be called after VL53L1_SetPresetMode */
  status = VL53L1_SetROI(&VL53L1CBObj1, &pRoiConfig);
  if (!status){
    status = VL53L1_StartMeasurement(&VL53L1CBObj1);
  }
  else{
    printf("VL53L1_SetROI failed: error =%dnr", status);
    while(1){};
  };    
  if(status){
    printf("VL53L1_StartMeasurement failed: error = %d nr", status);
    while(1);
  }

主程序

● 數(shù)據(jù)檢查:
● VL53L1_GetMeasurementDataReady(&VL53L1CBObj1, &NewDataReady);:這個函數(shù)檢查傳感器的測量數(shù)據(jù)是否準備好。如果有數(shù)據(jù)可用,NewDataReady 會被設置為非零值。
● HAL_Delay(1);:插入一個1毫秒的延遲,避免在輪詢過程中占用過多的CPU時間。
● 數(shù)據(jù)獲取:
● 如果測量數(shù)據(jù)已經(jīng)準備好,代碼會調用 VL53L1_GetMultiRangingData(&VL53L1CBObj1, pMultiRangingData); 獲取多區(qū)域測距數(shù)據(jù)。
● RoiNumber 和 RoiStatus 從 pMultiRangingData 中提取,表示當前ROI的編號和狀態(tài)。
● RangeMilliMeter 是從 pMultiRangingData->RangeData[0] 中提取的測量距離(以毫米為單位)。
● 數(shù)據(jù)輸出:
● printf 語句將獲取到的數(shù)據(jù)(ROI編號、狀態(tài)、測量距離)輸出到控制臺或串口。
● 數(shù)據(jù)格式為:RoiNumber, RoiStatus, RangeMilliMeter,每次測量后輸出一行。
● 中斷清除與新測量開始:
● 如果成功獲取到數(shù)據(jù)并處理完,代碼調用 VL53L1_ClearInterruptAndStartMeasurement(&VL53L1CBObj1); 清除中斷并啟動新的測量。

do{ // polling mode
      status = VL53L1_GetMeasurementDataReady(&VL53L1CBObj1, &NewDataReady);
      HAL_Delay(1);
      if((!status)&&(NewDataReady!=0)){
        status = VL53L1_GetMultiRangingData(&VL53L1CBObj1, pMultiRangingData);
        RoiNumber=pMultiRangingData- >RoiNumber;
        RoiStatus=pMultiRangingData- >RoiStatus;

        printf("%1d,", RoiNumber);
        printf("%1d,", RoiStatus);
        printf("%d", pMultiRangingData- >RangeData[0].RangeMilliMeter);
        printf ("nr");
        if (status==0){
          status = VL53L1_ClearInterruptAndStartMeasurement(&VL53L1CBObj1);
        }
      }
    }
    while (1);

數(shù)據(jù)說明

RoiNumber: 8 位整數(shù),表示與該測量數(shù)據(jù)相關的ROI編號。

RoiStatus: 當前ROI的狀態(tài),可能的值為 0, 1 或 2,分別表示“無效ROI”、“有效ROI”和“最后一個ROI”。

如果未檢測到目標且測量有效,所有的距離值會被強制設置為最大值,并且其他返回值會設置為默認值(如0或8191)。

測試結果

VL53L1對著天花板測量數(shù)據(jù)如下所示,2個數(shù)據(jù)之間相處時間約為500ms。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2551

    文章

    51097

    瀏覽量

    753528
  • 掃描
    +關注

    關注

    0

    文章

    197

    瀏覽量

    24805
  • TOF
    TOF
    +關注

    關注

    9

    文章

    483

    瀏覽量

    36349
收藏 人收藏

    評論

    相關推薦

    VL53L5CX驅動開發(fā)(1)----驅動TOF進行區(qū)域檢測

    VL53L5CX是一款先進的飛行感應(FlightSense)產品系列的飛行時間(ToF區(qū)間測距傳感器。封裝在微型的可回流焊盤封裝內,它集成了SPAD陣列、物理紅外濾光片和衍射光學元件(DOE),以在不同的環(huán)境光照條件和各種
    的頭像 發(fā)表于 12-01 16:26 ?796次閱讀
    <b class='flag-5'>VL53L</b>5CX驅動<b class='flag-5'>開發(fā)</b>(<b class='flag-5'>1</b>)----驅動<b class='flag-5'>TOF</b>進行<b class='flag-5'>區(qū)域</b>檢測

    VL53L4CD TOF開發(fā)(1)----驅動TOF進行測距

    VL53L4CD適用于接近測量和短距離測量,可實現(xiàn)從僅僅1 mm到1300 mm的超精準距離測量。新一代激光發(fā)射器具有18°視場 (FoV),提高了環(huán)境光下的性能,其測距速度高達100Hz
    的頭像 發(fā)表于 05-17 14:54 ?939次閱讀
    <b class='flag-5'>VL53L</b>4CD <b class='flag-5'>TOF</b><b class='flag-5'>開發(fā)</b>(<b class='flag-5'>1</b>)----驅動<b class='flag-5'>TOF</b>進行測距

    VL53L8CX TOF開發(fā)(1)----驅動TOF進行區(qū)域檢測

    VL53L8CX是一款8x8區(qū)域ToF測距傳感器,它在環(huán)境光下能夠在降低功耗的同時增強性能。該傳感器基于意法半導體的FlightSense技術設計,能夠提供最高400 cm的精確測距
    的頭像 發(fā)表于 05-20 09:42 ?881次閱讀
    <b class='flag-5'>VL53L</b>8CX <b class='flag-5'>TOF</b><b class='flag-5'>開發(fā)</b>(<b class='flag-5'>1</b>)----驅動<b class='flag-5'>TOF</b>進行<b class='flag-5'>區(qū)域</b>檢測

    VL53L4CD TOF開發(fā)(2)----修改測量頻率

    VL53L4CD是一款高度集成的飛行時間(ToF)傳感器,廣泛應用于距離測量和接近檢測。為了滿足不同應用場景的需求,合理調整傳感器的測量頻率至關重要。本文旨在介紹如何在VL53L4CD傳感器上修改
    的頭像 發(fā)表于 06-19 14:50 ?1154次閱讀
    <b class='flag-5'>VL53L</b>4CD <b class='flag-5'>TOF</b><b class='flag-5'>開發(fā)</b>(<b class='flag-5'>2</b>)----修改測量頻率

    VL53L1CB TOF開發(fā)(1)----驅動TOF進行測距

    VL53L1傳感器,可以實現(xiàn)對物體的快速、準確測距,最高測量距離可達800厘米。該傳感器支持I2C接口,具備多種預設模式(如測距模式
    的頭像 發(fā)表于 10-09 10:16 ?1437次閱讀
    <b class='flag-5'>VL53L1CB</b> <b class='flag-5'>TOF</b><b class='flag-5'>開發(fā)</b>(<b class='flag-5'>1</b>)----驅動<b class='flag-5'>TOF</b>進行測距

    新一代ToF 激光測距模塊VL53L0X

    距離可長達 2 m,精度高達 3%,具體取決于所選功耗與精度的平衡。圖 1VL53L0X 框圖。如圖 1 所示,VL53L0X 集成了人眼
    發(fā)表于 04-06 14:03

    VL53L1X簡介

    一、VL53L1X簡介VL53L1X屬于STMicroelectronics即常說的意法半導體(ST)公司推出的FlightSense? 產品系列ToF(Time of flight)激光測距傳感器
    發(fā)表于 08-06 07:54

    VL53L5CX #高達 8x8 區(qū)域測距和 63°對角線寬視場 飛行時間區(qū)域測距傳感器

    意法半導體 – VL53L5CX 飛行時間傳感器高達 8x8 區(qū)域測距和 63°對角線寬視場意法半導體VL53L5CX是一款先進的飛行時間 (To
    發(fā)表于 09-01 10:10

    RT-Thread VL53L0X TOF傳感器驅動設計資料實現(xiàn)

    1、RT-Thread VL53L0X TOF傳感器驅動實現(xiàn)  Time of flight(TOF),中文翻譯為“飛行時間”。飛行時間技術在廣義上可理解為通過測量物體、粒子或波在固定
    發(fā)表于 09-15 17:08

    ST的飛行時間傳感器產品以及哪些傳感器具有哪些功能

    0x - 25o FOV,測距傳感器中的基本型號。單一區(qū)域,單一目標vl53l1 - 27o FOV,區(qū)域(可調 FoV)vl53l1x
    發(fā)表于 12-07 11:55

    VL53L1的門傳感器的功耗有低?

    不清楚基于 VL53L1 的門傳感器的功耗有低,例如,所以我可以確定電池壽命?此外,哪種模式、設置和采樣方法等可以理想地提供中斷驅動的連續(xù)門感應功能,同時功耗最低?
    發(fā)表于 12-09 06:38

    我可以使用API VL53LX去支持VL53L1CB嗎?

    使用 STM32CubeMX 重新制定項目。但是我找不到合適的軟件支持,無論是在 X-CUBE-TOF1 庫還是 X-CUBE-53L1A2 中,它似乎不支持自定義硬件的裸驅動程序 API。您認為我可以使用 VL53L3 父 A
    發(fā)表于 12-16 06:24

    如何區(qū)分VL53L1CBVL53L1CX?

    VL53L1 數(shù)據(jù)表中報告并且無法與 VL53L1X 值進行比較。要將已處于生產階段的產品從 VL53L1CX 切換到 VL53L1CB,這是一個需要了解的關鍵要素。
    發(fā)表于 12-30 08:11

    為什么無法在VL53L1上進行測距和區(qū)域掃描

    我有一個傳感器部件號 VL53L1CBV0FY/1 我使用驅動程序版本 6.6.1。GetDeviceInfo 報告:名稱:VL53L1 cut1.0型號:VL53L1產品類型:0主要
    發(fā)表于 01-11 07:35

    區(qū)飛行時間(ToF)傳感器的特點

    ???????? VL53L5、VL53L7、VL53L8都是基于ST的FlightSense技術的區(qū)飛行時間(ToF)傳感器。
    的頭像 發(fā)表于 02-25 09:41 ?1151次閱讀
    <b class='flag-5'>多</b>區(qū)飛行時間(<b class='flag-5'>ToF</b>)傳感器的特點
    主站蜘蛛池模板: 国产精品欧美一区二区三区| 校园春色亚洲欧美| 特黄一级| 人人射人人爽| 青草久| 中文字幕第15页| 日日噜噜爽爽狠狠视频| 啪啪黄色片| 天天爽夜夜爽人人爽曰喷水| 欧美一级第一免费高清| 深夜看片在线观看18| 一级做a爰片久久毛片一| 深夜偷偷看视频在线观看| 玖玖国产| 久久夜夜视频| 一级片在线免费播放| 国产亚洲视频在线| 五月天婷婷精品视频| 性满足久久久久久久久| 欧美视频精品一区二区三区| 天天爱天天干天天操| 我被黑人巨大开嫩苞在线观看| 色黄网站| 久久综合九色综合98一99久久99久| 免费一级毛片在级播放| 中文字幕亚洲天堂| 国产美女免费观看| 精品免费视在线视频观看| 亚洲春色www| 久久精品国产精品亚洲毛片| 午夜视频1000部免费看| 免费黄视频在线观看| 日本欧美一级| 欧美午夜视频| 五月开心六月伊人色婷婷| 国外免费一级| 国产小视频在线观看www| 特级黄毛片| 天天舔| 亚洲综合成人在线| 夜夜爽66|