色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

VL53L1CB TOF開發(2)----多區域掃描模式

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

概述

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

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

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

視頻教學

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

樣品申請

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

源碼下載

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

硬件準備

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

主要特點

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

生成STM32CUBEMX

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

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

串口配置

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

配置串口。

IIC配置

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

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

XSHUT

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

GPIO1

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

配置如下所示。

X-CUBE-TOF1

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

堆棧設置

若無法正常運行需要修改優化等級。

函數說明

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

初始化設置

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

預設模式 (Preset mode)

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

VL53L1_SetPresetMode

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

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

/*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函數,用于設置傳感器的測距模式。該函數允許用戶選擇適合具體應用場景的測距范圍,以優化測量精度。不同的測距模式在不同的距離范圍內提供最佳的測量結果。

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

status = VL53L1_SetDistanceMode(&VL53L1CBObj1, VL53L1_DISTANCEMODE_LONG);

時間預算

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

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

status = VL53L1_SetMeasurementTimingBudgetMicroSeconds(&VL53L1CBObj1, 500000);

單個ROI(Single ROI)設置

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

主程序

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

數據說明

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

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

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

測試結果

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

審核編輯 黃宇

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

    關注

    2550

    文章

    51035

    瀏覽量

    753067
  • 掃描
    +關注

    關注

    0

    文章

    197

    瀏覽量

    24800
  • TOF
    TOF
    +關注

    關注

    9

    文章

    482

    瀏覽量

    36331
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

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

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

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

    新一代ToF 激光測距模塊VL53L0X

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

    VL53L1X簡介

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

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

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

    RT-Thread VL53L0X TOF傳感器驅動設計資料實現

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

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

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

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

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

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

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

    如何區分VL53L1CBVL53L1CX?

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

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

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

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

    ???????? VL53L5、VL53L7、VL53L8都是基于ST的FlightSense技術的區飛行時間(ToF)傳感器。
    的頭像 發表于 02-25 09:41 ?1133次閱讀
    <b class='flag-5'>多</b>區飛行時間(<b class='flag-5'>ToF</b>)傳感器的特點
    主站蜘蛛池模板: 久久无码人妻AV精品一区| 538久久视频在线| 色尼玛亚洲综合| 你是淫荡的我的女王| 久久强奷乱码老熟女| 精品亚洲欧美中文字幕在线看| 国产乱国产乱老熟300部视频 | 区久久AAA片69亚洲| 免费韩国伦理2017最新| 空姐内射出白浆10p| 久久久擼擼擼麻豆| 久久青草费线频观看国产| 精品水蜜桃久久久久久久| 狠狠撸亚洲视频| 好姑娘BD高清在线观看免费| 国内精品自线在拍2020不卡| 国产亚洲精品久久无码98| 国产一区二区青青精品久久| 国产一区二区精品视频| 国产亚洲精品久久久999蜜臀| 国产午夜精品一区二区| 国产在线高清视频无码| 激情综合色| 久久精品熟一区二区三区| 巨胸美女狂喷奶水www网麻豆| 老太脱裤子让老头玩xxxxx| 暖暖视频在线观看高清...| 欧美gay老头互吃| 人妻久久久精品99系列AV| 日本理伦片午夜理伦片| 吻嘴胸全身好爽床大全| 亚洲国产精品线在线观看| 亚洲欧洲精品成人久久曰影片 | 美女丝袜夹b| 欧美尤物射精集锦| 熟女人妻水多爽中文字幕| 性刺激欧美三级在线现看中文| 亚洲人成人毛片无遮挡| 专干老肥熟女视频网站300部| 99在线免费观看| 国产精品99久久免费黑人人妻|