概述
當(dāng)使用VL6180傳感器進(jìn)行測(cè)距時(shí),可以通過(guò)修改縮放因子來(lái)改變可測(cè)量的距離范圍。VL6180是一種基于飛行時(shí)間原理的傳感器,通過(guò)測(cè)量光信號(hào)的往返時(shí)間來(lái)確定物體與傳感器之間的距離。
最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請(qǐng):615061293 。
默認(rèn)情況下,VL6180傳感器的測(cè)距范圍約為0至200毫米。然而,通過(guò)調(diào)整縮放因子,您可以擴(kuò)展或縮小該范圍,以適應(yīng)不同的應(yīng)用需求。
縮放因子是一個(gè)乘法因子,用于調(diào)整傳感器的測(cè)量范圍。較小的縮放因子可以擴(kuò)展測(cè)距范圍,使傳感器能夠測(cè)量更遠(yuǎn)的距離,而較大的縮放因子可以縮小測(cè)距范圍,使傳感器適用于更近的測(cè)量。
要修改縮放因子,需要使用VL6180傳感器的控制接口與其進(jìn)行通信。通過(guò)發(fā)送適當(dāng)?shù)拿詈蛥?shù),您可以設(shè)置所需的縮放因子值。具體的命令和參數(shù)取決于您使用的特定控制接口和驅(qū)動(dòng)程序。
下面溫度可以得知,主要有3種縮放,測(cè)量距離分別到20cm、40cm、60cm。
視頻教程
https://www.bilibili.com/video/BV1Mj411S7p3/
樣品申請(qǐng)
https://www.wjx.top/vm/OhcKxJk.aspx#
完整代碼下載
[https://download.csdn.net/download/qq_24312945/87945856
修改縮放因子
在ST提供的en.STSW-IMG003.zip壓縮包中,可以找到一個(gè)名為CodeSamples_UM.pdf的文檔。在該文檔中,有一個(gè)案例展示了如何修改縮放方式。通過(guò)調(diào)用函數(shù)VL6180x_UpscaleSetScaling(myDev, 2),您可以將縮放因子設(shè)置為2,實(shí)現(xiàn)將測(cè)量范圍擴(kuò)大兩倍的效果。這個(gè)案例為您提供了一個(gè)具體的示例,可以幫助您了解如何在編程中使用該函數(shù)來(lái)修改縮放因子。
VL6180x_UpscaleSetScaling
在ST提供的en.STSW-IMG003.zip壓縮包中,vl6180x_api.c文件包含了VL6180x_UpscaleSetScaling函數(shù),這個(gè)函數(shù)是用來(lái)設(shè)置設(shè)備的測(cè)距縮放因子的。
當(dāng)設(shè)備進(jìn)行測(cè)量時(shí),測(cè)距縮放因子會(huì)應(yīng)用于設(shè)備測(cè)得的原始距離,以擴(kuò)大測(cè)量范圍,但會(huì)犧牲一定的精度。
需要注意的是,在設(shè)備處于固件待機(jī)狀態(tài)(自由運(yùn)行)以外的狀態(tài)下修改縮放因子是不安全的。這可能導(dǎo)致誤報(bào)中斷、測(cè)距范圍錯(cuò)誤等問(wèn)題。
為了簡(jiǎn)化和優(yōu)化原始函數(shù),并提供更清晰和易于理解的代碼結(jié)構(gòu)。去除不相關(guān)的部分,由于原始函數(shù)中的某些操作在新的函數(shù)中沒(méi)有被使用到,這些部分被去除以提高代碼的清晰度和可讀性。
修改后的代碼具有更簡(jiǎn)潔、易讀和易于維護(hù)的結(jié)構(gòu),同時(shí)仍然保留了修改縮放因子所需的核心操作。這種修改的目的是使代碼更易于理解和實(shí)現(xiàn),并提供更好的可擴(kuò)展性和可重用性。
修改為所需要的函數(shù),如下所示:
uint8_t scaling;
// RANGE_SCALER values for 1x, 2x, 3x scaling - see STSW-IMG003 core/src/vl6180x_api.c (ScalerLookUP[])
static uint16_t const ScalerValues[] = {0, 253, 127, 84};
void VL6180x_UpscaleSetScaling(uint8_t add,uint8_t new_scaling)
{
uint8_t const DefaultCrosstalkValidHeight = 20; // default value of SYSRANGE__CROSSTALK_VALID_HEIGHT
// do nothing if scaling value is invalid
if (new_scaling < 1 || new_scaling > 3)
{ return; }
scaling = new_scaling;
VL6180X_WriteByte_16Bit(add,RANGE_SCALER,ScalerValues[scaling]);
// apply scaling on part-to-part offset
VL6180X_WriteByte(add,SYSRANGE__PART_TO_PART_RANGE_OFFSET,ptp_offset / scaling);
// apply scaling on CrossTalkValidHeight
// writeReg(VL6180X::SYSRANGE__CROSSTALK_VALID_HEIGHT, DefaultCrosstalkValidHeight / scaling);
VL6180X_WriteByte(add,SYSRANGE__CROSSTALK_VALID_HEIGHT, DefaultCrosstalkValidHeight / scaling);
// This function does not apply scaling to RANGE_IGNORE_VALID_HEIGHT.
// enable early convergence estimate only at 1x scaling
// uint8_t rce = readReg(VL6180X::SYSRANGE__RANGE_CHECK_ENABLES);
// writeReg(VL6180X::SYSRANGE__RANGE_CHECK_ENABLES, (rce & 0xFE) | (scaling == 1));
uint8_t rce=VL6180X_ReadByte(add,SYSRANGE__RANGE_CHECK_ENABLES);
VL6180X_WriteByte(add,SYSRANGE__CROSSTALK_VALID_HEIGHT, DefaultCrosstalkValidHeight / scaling);
}
主函數(shù)
修改后的函數(shù)如下所示,修改縮放因子為x2。
/* USER CODE BEGIN 2 */
printf("111");
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
//VL6180_4
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);
HAL_Delay(1);
VL6180X_Init(VL6180X_DEFAULT_I2C_ADDR1);
VL6180x_UpscaleSetScaling(VL6180X_DEFAULT_I2C_ADDR1,2);//縮放x2
uint8_t id=VL6180X_Read_ID(VL6180X_DEFAULT_I2C_ADDR1);
printf("id=%d",id);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
VL6180_L1=VL6180X_Read_Range(VL6180X_DEFAULT_I2C_ADDR1);
printf("VL6180_L1=%dmmn",VL6180_L1*2);
HAL_Delay(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
測(cè)試結(jié)果
測(cè)試距離為20cm結(jié)果如下所示。
審核編輯:湯梓紅
-
傳感器
+關(guān)注
關(guān)注
2561文章
52198瀏覽量
761715 -
測(cè)距
+關(guān)注
關(guān)注
2文章
106瀏覽量
20005 -
TOF
+關(guān)注
關(guān)注
9文章
493瀏覽量
36978 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
286瀏覽量
15851
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于STM32CUBEMX驅(qū)動(dòng)TOF模塊VL6180與VL6180X(3)----修改設(shè)備地址

基于STM32CUBEMX驅(qū)動(dòng)TOF模塊VL6180與VL6180X(4)----測(cè)量環(huán)境光

基于STM32CUBEMX驅(qū)動(dòng)TOF模塊VL6180與VL6180X(5)----驅(qū)動(dòng)多個(gè)VL6180X

VL6180x單次測(cè)量范圍測(cè)量后的系統(tǒng)錯(cuò)誤代碼
尋找手冊(cè)中引用的F401和VL6180板的mbed資源
VL6180X包含多少個(gè)傳感器?
VL6180X操作如何測(cè)量距離
VL6180X:什么是線性誤差率?
VL6180X范圍偏移怎么更改
VL6180X增加了范圍
近距離測(cè)量VL6180X錯(cuò)誤
請(qǐng)問(wèn)VL6180X的基本功能有哪些?
Vl6180x 官方蓋玻片模型的使用
使用VL6180X ToF傳感器與Particle Argon控制伺服器

基于STM32CUBEMX驅(qū)動(dòng)TOF模塊VL6180與VL6180X(1)----單模塊距離獲取的最佳實(shí)踐

評(píng)論