cancel
Showing results for 
Search instead for 
Did you mean: 

Out of range readings of VL53L1X

TSura
Associate

Though the maximum range of the VL53L1X is 400cm, it gives random readings within 400cm when it is directed to open space. The VL53L0X gives a value about 8.1m for out of range measurements so that we can filter out them. But in VL53L1X there is no way to identify out of range readings. Here are some readings I got when it is directed to the free space. (4.156,3.568,1.240,3.568,1.165). Any idea to fix this issue?

13 REPLIES 13
T J
Lead

I would be looking for some stability.

How often are you reading ?

do you know your speed ?

If the readings are not within cooey of each other then fail the reading...

Retain the last 4 -16 readings,

check this new reading is within 2% of the last 2/4/8 average...

or else its a bad reading...

T J
Lead

I would be looking for some stability.

How often are you reading ?

do you know your speed ?

If the readings are not within cooey of each other then fail the reading...

Retain the last 4 -16 readings,

check this new reading is within 2% of the last 2/4/8 average...

or else its a bad reading...

TSura
Associate

Every 20ms. What do you mean by the speed?

T J
Lead

20mS means there shouldn't be much jitter,

So you know what the next reading should be... You can detect >4000mm by that.

anyhow, you should be able to track an object up close and then follow it as it reaches the boundary, you will see the limit and then the noise...

If the sensor is moving, there is a speed... a speed of changing distances,

the next distance is predictable, if you know the speed.

ToolV
Associate II

Hi Suraj,

1) from UM2356 API manual 2.5.2 - "The minimum and maximum timing budgets are [20 ms, 1000 ms]" and 2.2 - "The minimum inter-measurement period must be longer than the timing budget + 4 ms". => I think that the fastes reading shouldn't be smaller then 24 ms, if you want to hold apropriate timing.

2) from DS12385 Datasheet, 2.5.2 Timing budget (TB): " 20 ms is the minimum timing budget and can be used only in Short distance mode." => 3.5.2 Short distance mode Table 8: Max distance 130cm +/- 20mm

I think you need other settings =)

Regards

AKhan.15
Associate II

I would like to reiterate the question as I am having the same problem. In open space or if there is an object at 5m the readings I get in long measurement mode with 300ms timing budget are jittering between 410cm and 150cm and sometimes dips of 90cm. Because of this I am unable to decide whether there is an object or not when there is nothing in front of the sensor. Does anybody know why this is happening, or from my testing the sensor has a huge limitation.........

ToolV
Associate II

Hi Ameer,

i could imagine, that TOF Sensor operates in multi-pulse operation mode. In such mode the measurement signal is modulated sinusoidally. For the distance measurement, the phase shift between the transmitted and received modulated light pulses is considered. The unique distance is limited by the modulation frequency. For example when your distance 4m for 2*pi modulated sinus, the 6m would be at 3*pi and it would be the same as 1*pi. So the sensor can't differentiate between 6m and 2m. These are only a guess-work.

Can you look in your RangeStatus if you get RangeStatus = 4 (Raised when phase is out of bounds). You can try to set the distance detection mode, based on thresholds. There are 4 modes in UM2356, p. 12, 2.5.5. Also you could try to set "No target" (IntrNoTarget to 0).

Regards

AKhan.15
Associate II

Hello ToolV :)

(I am very grateful someone approached my concern, I had given up all hope :P)

I think your guess about the signal modulation might be accurate as there is another problem that if there is an object at approx 500cm the reading i get is 60cm (RangeStatus = 3) , so it might be due to the theory you hvae proposed. (this distance being given to me as 60cm whereas object is at 500cm is a major problem for me or even anyone else)

Yes i also have the indication of the range status which i get as 3 (which is weak return signal) and the problem is that i can not discard Weak return signal (RangeStatus = 3) and only accept reliable signals (RangeStatus = 0) because there are a lot of Weak return signal (RangeStatus = 3) with accurate readings. And i cannot only select Reliable (RangeStatus =0) as I would lose a lot of readings given to me by RangeStatus = 3 putting me into a indecisive state.

Also you could try to set "No target" (IntrNoTarget to 0). -- Can you elaborate this point.

ToolV
Associate II

Hi Ameer,

as i pointed in UM2356, 2.5.5, p. 12:

" No target

This is an alternate detection mode. In the standard use case, if no target is detected, no

ranging is reported. Using no target detection mode (setting IntrNoTarget to 1) allows an

interrupt to be generated when no target is present."

As i understood you would like to ignore measurements above 4m, so if you set IntNoTarget = 0 you should not get any Interrupts outside your threshold mode.

There is an example UM2356, 2.5.5, p.13.

I think the chapter 2.5.4 could be also interesting for you. You could overwrite the default value for Signal limit value and set it lower. After that you could ignore measurements with low signal and / or big sigma.

P.S. Can you varify that you have ReturnStatus = 3 (which is weak return signal) ? in vl53l1_def.h stands 3 for "Target is below minimum detection threshold."

/** @defgroup VL53L1_define_RangeStatus_group Defines the Range Status

 *   @{

 */

#define   VL53L1_RANGESTATUS_RANGE_VALID            0

/*!<The Range is valid. */

#define   VL53L1_RANGESTATUS_SIGMA_FAIL            1

/*!<Sigma Fail. */

#define   VL53L1_RANGESTATUS_SIGNAL_FAIL            2

/*!<Signal fail. */

#define   VL53L1_RANGESTATUS_RANGE_VALID_MIN_RANGE_CLIPPED   3

/*!<Target is below minimum detection threshold. */

Regards