Skip to main content
dlux
Associate II
April 27, 2021
Question

VL53L1CB Low Ranging Performance and Flickering

  • April 27, 2021
  • 11 replies
  • 3166 views

Hi,

I designed a sensor array containing multiple VL53L1CB sensors. They are configured to scan a 3x3 grid inside its view with multizone scanning. That works great at small distances but suffer a distances above ~1,5m.

Experimentation shows that the sensor never yield reliable results (even with 16x16 zone, 550ms budget, completely dark room with covers down, target is a white wall which should cover the entire FoV) above 2m.

Another issue is the flickering of datapoints. The video shows the issue: VL53L1CB Flickering issue - YouTube

Points in green are valid ranging results (RangeStatus = 0), cyan means RangeStatus = 14 and black is RangeStatus = 7.

The issue is that ranging results cycle through "Not Present", "VL53L1_RANGESTATUS_WRAP_TARGET_FAIL" and "VL53L1_RANGESTATUS_RANGE_INVALID"

even though the RANGE_INVALID is not realy invalid. It is exactly where i think it should measure.

I hope that someone can help me with that issue.

Sincerely

Daniel

This topic has been closed for replies.

11 replies

John E KVAM
ST Employee
April 28, 2021

When you cut down the ROI, you reduce the number of SPADs (Single Photon Avalanche Diodes) that can gather the light. So it does cut down on the distance one can range. Try overlapping ROIs to get a bit more distaces, but perhpas that the expence of resolution.

As far as your experimentation that shows unreliable results above 2m, I'm confused. You have ideal conditions, and in those conditions you should get 8M.

So clearly there is something wrong.

Try with only one sensor running. In ideal conditions like yours it will work.

My guess is that if you have lots of sensors pointing the same direction, they will affect each other. Each sensor sees the others as ambient light. And too much ambient light will reduce the ability of the sensor to range. You can get the ambient light value from your range information. Figure out what it is per SPAD and know how many SPADs are used. That's useful information.

If you truely have 500ms to take a range, run each sensor for less time, and run them sequentially - or in pairs or triplets. Just not all at once.

The rule of thumb is that the accuracy doubles as the timeing budget goes up by four, but there are diminishing returns.

Give me some hard data on how many sensors are running at the same time, the number of SPADS you are using and the ambient light, and I can perhaps give you more ideas.

  • john

dlux
dluxAuthor
Associate II
April 28, 2021

Thank you for your quick reply.

Here is the physical sensor layout, there are 14 sensors in a circle, so they are not overlapping that much.

0693W00000AMmdPQAT.jpgThe flickering and ranging issue persist, even if there is only one sensor ranging. The ROI setup is like this, they are overlapping. In the example video they are all ranging simultaneously, but only running one does not make a difference.

sensor_configs[k].roicount = 9;
 
sensor_configs[k].minx[ 0 ] = 0 ;
sensor_configs[k].maxy[ 0 ] = 7 ;
sensor_configs[k].maxx[ 0 ] = 7 ;
sensor_configs[k].miny[ 0 ] = 0 ;
 
sensor_configs[k].minx[ 1 ] = 0 ;
sensor_configs[k].maxy[ 1 ] = 11 ;
sensor_configs[k].maxx[ 1 ] = 7 ;
sensor_configs[k].miny[ 1 ] = 4 ;
 
sensor_configs[k].minx[ 2 ] = 0 ;
sensor_configs[k].maxy[ 2 ] = 15 ;
sensor_configs[k].maxx[ 2 ] = 7 ;
sensor_configs[k].miny[ 2 ] = 8 ;
 
sensor_configs[k].minx[ 3 ] = 4 ;
sensor_configs[k].maxy[ 3 ] = 7 ;
sensor_configs[k].maxx[ 3 ] = 11 ;
sensor_configs[k].miny[ 3 ] = 0 ;
 
sensor_configs[k].minx[ 4 ] = 4 ;
sensor_configs[k].maxy[ 4 ] = 11 ;
sensor_configs[k].maxx[ 4 ] = 11 ;
sensor_configs[k].miny[ 4 ] = 4 ;
 
sensor_configs[k].minx[ 5 ] = 4 ;
sensor_configs[k].maxy[ 5 ] = 15 ;
sensor_configs[k].maxx[ 5 ] = 11 ;
sensor_configs[k].miny[ 5 ] = 8 ;
 
sensor_configs[k].minx[ 6 ] = 8 ;
sensor_configs[k].maxy[ 6 ] = 7 ;
sensor_configs[k].maxx[ 6 ] = 15 ;
sensor_configs[k].miny[ 6 ] = 0 ;
 
sensor_configs[k].minx[ 7 ] = 8 ;
sensor_configs[k].maxy[ 7 ] = 11 ;
sensor_configs[k].maxx[ 7 ] = 15 ;
sensor_configs[k].miny[ 7 ] = 4 ;
 
sensor_configs[k].minx[ 8 ] = 8 ;
sensor_configs[k].maxy[ 8 ] = 15 ;
sensor_configs[k].maxx[ 8 ] = 15 ;
sensor_configs[k].miny[ 8 ] = 8 ;
 
sensor_configs[k].minx[ 9 ] = 0 ;
sensor_configs[k].maxy[ 9 ] = 15 ;
sensor_configs[k].maxx[ 9 ] = 15 ;
sensor_configs[k].miny[ 9 ] = 0 ;
 
sensor_configs[k].delay = 33;

As soon as i get home i will make more measurements with more data (the raw values that are included in the multiranging, espacially ambient light and so on).

When i have time i will try my codebase against a dev board and a single VL53L1 breakout eval boars (SATEL).

Thank you for your help.

John E KVAM
ST Employee
April 28, 2021

I don't think the vl53L1CB will automaticly do 9 zones, I thought it's max was 4. Am I wrong? Better double check that.

I have an example of using 9 sensors with 13 zones,

have a look at

STSW-IMG017

2D LIDAR using multiple VL53L1X Time-of-Flight long distance ranging sensors

It uses the VL53L1X sensors - but a L1CB is completely backward compatible.

You can even watch a video of the sensor in action.

Go to youtube and search for 'VL53L1 2D Lidar'.

dlux
dluxAuthor
Associate II
April 28, 2021

according to UM2133 the VL53L1_MAX_USER_ZONES defines the maximum number of zones (stated in 5.3 Note 1 default = 16, maximum 169).

i saw the video but the VL53L1X is not capable of doing multizone scanning. The VL53L1X requires the roi to be programmed after every measurement which is not an option timingwise.

dlux
dluxAuthor
Associate II
April 29, 2021

Here are the "raw" values of the measurements, i hope that helps:

Sensor: 0 ROI: 8 Ambient: [15872, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [3059, 65535, 65535, 65535] Status: [12, 255, 255, 255]
Sensor: 1 ROI: 8 Ambient: [9728, 4294967295, 4294967295, 4294967295] EffectiveSpad: 5.0 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 2 ROI: 0 Ambient: [11264, 4294967295, 4294967295, 4294967295] EffectiveSpad: 50.3125 Range: [3722, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 3 ROI: 0 Ambient: [319488, 319488, 320000, 319488] EffectiveSpad: 52.3125 Range: [355, 1605, 2659, 3640] Status: [12, 1, 12, 4]
Sensor: 4 ROI: 0 Ambient: [80896, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [819, 65535, 65535, 65535] Status: [12, 255, 255, 255]
Sensor: 5 ROI: 0 Ambient: [125440, 125440, 125440, 4294967295] EffectiveSpad: 51.75 Range: [591, 1616, 3786, 65535] Status: [7, 7, 4, 255]
Sensor: 6 ROI: 0 Ambient: [10752, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.53125 Range: [1103, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 7 ROI: 0 Ambient: [12800, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [1269, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 8 ROI: 0 Ambient: [15872, 4294967295, 4294967295, 4294967295] EffectiveSpad: 55.3125 Range: [1089, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 9 ROI: 0 Ambient: [12800, 4294967295, 4294967295, 4294967295] EffectiveSpad: 54.53125 Range: [1082, 65535, 65535, 65535] Status: [11, 255, 255, 255]
Sensor: 10 ROI: 0 Ambient: [16896, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [586, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 11 ROI: 0 Ambient: [15360, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [1857, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 12 ROI: 0 Ambient: [12800, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [1663, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 13 ROI: 0 Ambient: [7680, 4294967295, 4294967295, 4294967295] EffectiveSpad: 51.75 Range: [15, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 0 ROI: 0 Ambient: [12288, 12288, 4294967295, 4294967295] EffectiveSpad: 48.75 Range: [998, 2046, 65535, 65535] Status: [0, 0, 255, 255]
Sensor: 1 ROI: 0 Ambient: [13824, 4294967295, 4294967295, 4294967295] EffectiveSpad: 0.0 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 2 ROI: 1 Ambient: [12288, 4294967295, 4294967295, 4294967295] EffectiveSpad: 1.0 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 3 ROI: 1 Ambient: [427520, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.3125 Range: [465, 65535, 65535, 65535] Status: [1, 255, 255, 255]
Sensor: 4 ROI: 1 Ambient: [76800, 76800, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [807, 4099, 65535, 65535] Status: [12, 4, 255, 255]
Sensor: 5 ROI: 1 Ambient: [110592, 110592, 110592, 110592] EffectiveSpad: 46.75 Range: [631, 1428, 2352, 3808] Status: [7, 7, 7, 4]
Sensor: 6 ROI: 1 Ambient: [8704, 8704, 4294967295, 4294967295] EffectiveSpad: 49.09375 Range: [1118, 2086, 65535, 65535] Status: [0, 11, 255, 255]
Sensor: 7 ROI: 1 Ambient: [11776, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [1284, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 8 ROI: 1 Ambient: [14336, 4294967295, 4294967295, 4294967295] EffectiveSpad: 56.53125 Range: [1071, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 9 ROI: 1 Ambient: [12288, 4294967295, 4294967295, 4294967295] EffectiveSpad: 55.53125 Range: [1114, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 10 ROI: 1 Ambient: [12288, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [518, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 11 ROI: 1 Ambient: [14336, 14336, 4294967295, 4294967295] EffectiveSpad: 51.75 Range: [112, 1855, 65535, 65535] Status: [0, 0, 255, 255]
Sensor: 12 ROI: 1 Ambient: [13824, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [1708, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 13 ROI: 1 Ambient: [8192, 4294967295, 4294967295, 4294967295] EffectiveSpad: 51.3125 Range: [20, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 0 ROI: 1 Ambient: [11776, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [1987, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 1 ROI: 1 Ambient: [13824, 4294967295, 4294967295, 4294967295] EffectiveSpad: 56.3125 Range: [2672, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 2 ROI: 2 Ambient: [12800, 12800, 4294967295, 4294967295] EffectiveSpad: 55.75 Range: [49, 3693, 65535, 65535] Status: [1, 4, 255, 255]
Sensor: 3 ROI: 2 Ambient: [471040, 470528, 470528, 471040] EffectiveSpad: 53.09375 Range: [510, 1399, 1791, 3792] Status: [12, 12, 12, 4]
Sensor: 4 ROI: 2 Ambient: [83456, 83456, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [826, 4092, 65535, 65535] Status: [12, 4, 255, 255]
Sensor: 5 ROI: 2 Ambient: [117760, 117760, 4294967295, 4294967295] EffectiveSpad: 51.75 Range: [602, 3764, 65535, 65535] Status: [7, 4, 255, 255]
Sensor: 6 ROI: 2 Ambient: [12288, 4294967295, 4294967295, 4294967295] EffectiveSpad: 49.09375 Range: [2061, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 7 ROI: 2 Ambient: [24576, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [1309, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 8 ROI: 2 Ambient: [29696, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [1098, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 9 ROI: 2 Ambient: [13312, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [1138, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 10 ROI: 2 Ambient: [10752, 4294967295, 4294967295, 4294967295] EffectiveSpad: 54.75 Range: [500, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 11 ROI: 2 Ambient: [13824, 13824, 4294967295, 4294967295] EffectiveSpad: 51.53125 Range: [103, 1860, 65535, 65535] Status: [1, 0, 255, 255]
Sensor: 12 ROI: 2 Ambient: [11264, 4294967295, 4294967295, 4294967295] EffectiveSpad: 50.75 Range: [1738, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 13 ROI: 2 Ambient: [7680, 4294967295, 4294967295, 4294967295] EffectiveSpad: 6.21875 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 0 ROI: 2 Ambient: [12800, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.3125 Range: [1909, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 1 ROI: 2 Ambient: [13824, 4294967295, 4294967295, 4294967295] EffectiveSpad: 6.21875 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 2 ROI: 3 Ambient: [15872, 4294967295, 4294967295, 4294967295] EffectiveSpad: 15.21875 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 3 ROI: 3 Ambient: [428544, 428032, 4294967295, 4294967295] EffectiveSpad: 53.53125 Range: [355, 2545, 65535, 65535] Status: [12, 1, 255, 255]
Sensor: 4 ROI: 3 Ambient: [80896, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.53125 Range: [805, 65535, 65535, 65535] Status: [12, 255, 255, 255]
Sensor: 5 ROI: 3 Ambient: [123904, 123904, 123904, 4294967295] EffectiveSpad: 50.75 Range: [676, 1603, 3720, 65535] Status: [7, 7, 4, 255]
Sensor: 6 ROI: 3 Ambient: [10240, 4294967295, 4294967295, 4294967295] EffectiveSpad: 55.53125 Range: [1241, 65535, 65535, 65535] Status: [11, 255, 255, 255]
Sensor: 7 ROI: 3 Ambient: [15360, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [1246, 65535, 65535, 65535] Status: [0, 255, 255, 255]
Sensor: 8 ROI: 3 Ambient: [30208, 4294967295, 4294967295, 4294967295] EffectiveSpad: 54.3125 Range: [1099, 65535, 65535, 65535] Status: [0, 255, 255, 255]

thank you

dlux
dluxAuthor
Associate II
April 29, 2021

letting only one sensor range i get the following data:

Sensor: 7 ROI: 0 Ambient: [9216, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [3635, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 1 Ambient: [7680, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [3654, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 2 Ambient: [16896, 4294967295, 4294967295, 4294967295] EffectiveSpad: 6.21875 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 7 ROI: 3 Ambient: [16384, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [3668, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 4 Ambient: [27136, 4294967295, 4294967295, 4294967295] EffectiveSpad: 0.0 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 7 ROI: 5 Ambient: [25088, 4294967295, 4294967295, 4294967295] EffectiveSpad: 6.21875 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 7 ROI: 6 Ambient: [17920, 4294967295, 4294967295, 4294967295] EffectiveSpad: 49.53125 Range: [3720, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 7 Ambient: [11776, 4294967295, 4294967295, 4294967295] EffectiveSpad: 51.53125 Range: [3709, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 8 Ambient: [11264, 11264, 4294967295, 4294967295] EffectiveSpad: 50.53125 Range: [706, 3421, 65535, 65535] Status: [1, 4, 255, 255]
Sensor: 7 ROI: 0 Ambient: [6656, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [65295, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 1 Ambient: [9728, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [65338, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 2 Ambient: [7680, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [65341, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 3 Ambient: [8192, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [65359, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 4 Ambient: [9728, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [65331, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 5 Ambient: [8704, 4294967295, 4294967295, 4294967295] EffectiveSpad: 50.53125 Range: [65367, 65535, 65535, 65535] Status: [12, 255, 255, 255]
Sensor: 7 ROI: 6 Ambient: [19456, 4294967295, 4294967295, 4294967295] EffectiveSpad: 49.53125 Range: [65371, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 7 Ambient: [15872, 4294967295, 4294967295, 4294967295] EffectiveSpad: 51.53125 Range: [65395, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 8 Ambient: [9216, 4294967295, 4294967295, 4294967295] EffectiveSpad: 50.53125 Range: [65389, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 0 Ambient: [6656, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [3619, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 1 Ambient: [9216, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [3680, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 2 Ambient: [7680, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [3697, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 3 Ambient: [8704, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [3638, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 4 Ambient: [9728, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [3624, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 5 Ambient: [9216, 4294967295, 4294967295, 4294967295] EffectiveSpad: 50.53125 Range: [3728, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 6 Ambient: [19968, 4294967295, 4294967295, 4294967295] EffectiveSpad: 49.53125 Range: [3681, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 7 Ambient: [15872, 4294967295, 4294967295, 4294967295] EffectiveSpad: 51.53125 Range: [3727, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 8 Ambient: [9216, 4294967295, 4294967295, 4294967295] EffectiveSpad: 50.53125 Range: [3684, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 0 Ambient: [7680, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [65314, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 1 Ambient: [8704, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [65353, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 2 Ambient: [14336, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [65335, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 3 Ambient: [16896, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [65356, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 4 Ambient: [24064, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [65334, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 5 Ambient: [24064, 4294967295, 4294967295, 4294967295] EffectiveSpad: 50.53125 Range: [65329, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 6 Ambient: [18944, 4294967295, 4294967295, 4294967295] EffectiveSpad: 49.53125 Range: [65371, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 7 Ambient: [14848, 4294967295, 4294967295, 4294967295] EffectiveSpad: 51.53125 Range: [65427, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 8 Ambient: [11776, 4294967295, 4294967295, 4294967295] EffectiveSpad: 50.53125 Range: [65425, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 0 Ambient: [7680, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [3637, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 1 Ambient: [9216, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [3651, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 2 Ambient: [13824, 4294967295, 4294967295, 4294967295] EffectiveSpad: 6.21875 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 7 ROI: 3 Ambient: [16896, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [3693, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 4 Ambient: [24064, 4294967295, 4294967295, 4294967295] EffectiveSpad: 0.0 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 7 ROI: 5 Ambient: [24064, 4294967295, 4294967295, 4294967295] EffectiveSpad: 6.21875 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 7 ROI: 6 Ambient: [18944, 4294967295, 4294967295, 4294967295] EffectiveSpad: 49.53125 Range: [3745, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 7 Ambient: [15360, 4294967295, 4294967295, 4294967295] EffectiveSpad: 51.53125 Range: [3689, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 8 Ambient: [11776, 11776, 11776, 4294967295] EffectiveSpad: 50.53125 Range: [704, 1989, 3665, 65535] Status: [7, 1, 4, 255]
Sensor: 7 ROI: 0 Ambient: [8704, 4294967295, 4294967295, 4294967295] EffectiveSpad: 53.75 Range: [65303, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 1 Ambient: [8704, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [65358, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 2 Ambient: [7168, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.75 Range: [65376, 65535, 65535, 65535] Status: [12, 255, 255, 255]
Sensor: 7 ROI: 3 Ambient: [10752, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [65341, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 4 Ambient: [8192, 4294967295, 4294967295, 4294967295] EffectiveSpad: 52.53125 Range: [65321, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 5 Ambient: [7680, 4294967295, 4294967295, 4294967295] EffectiveSpad: 50.53125 Range: [65372, 65535, 65535, 65535] Status: [12, 255, 255, 255]
Sensor: 7 ROI: 6 Ambient: [19968, 4294967295, 4294967295, 4294967295] EffectiveSpad: 49.53125 Range: [65395, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 7 Ambient: [14336, 4294967295, 4294967295, 4294967295] EffectiveSpad: 51.53125 Range: [65410, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 8 Ambient: [13824, 4294967295, 4294967295, 4294967295] EffectiveSpad: 5.0 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]

ambient noise seems a bit better but still no valid range measurement. The target is indeed approx 3,5m as shown in some readings (white wall), but the datat points flicker as well (like in the video)

John E KVAM
ST Employee
April 29, 2021

It is odd that your SPAD count goes form 51 to 5.

Do you get 'flicker' if you only consider the ranges that have a RangeStatus = 0?

Knowning the RangeStatus is the best way to figuring out what is going wrong.

With a target a 3.5M, you will never see anything with only 5 effetive SPADS. - So use the RangeStatus to discard that data point. It's not valid.

status =255 means "no chance of a target".

status=7 says we think you have "Radar Aliasing" - which you have to google. It's very interesting.

Range 4 means the phase is out of bounds.

But basically we don't have enough photons to give you a reliable answer.

But here's what is going on.

We claim we can see 4M in pretty ideal conditions with all the SPADS turned on. But by limiting the number of SPADS you will limit the max distance.

Somewhere in the data sheet it talks about 8M - but for that you need a very reflective target - like a projector screen.

You've pretty much proven by experiment that given your number of SPADS, the max distance is about 3M - maybe a touch less.

there are about 200 effective SPADs. (256 real SPADS, but some are deliberately occuluded so we can handle extremely high light conditions), and you've limited them to about 1/4. it stands to reason that you are not going to get the max distance.

So I believe you are simply beyond the max capabiities of the device.

dlux
dluxAuthor
Associate II
April 29, 2021

Perhaps i get something wrong but the numbrr of spads should not be changing when ​using the same ROI. About 50 spads for a 8x8 seems reasonable when there are 200 spads in total.

But periodic changing to 5 spads is very odd.

Do you know any reason why there are sometimes only 5 spads?

The flickering behaves the same when only using​ rangestatus = 0 readings. The video shows the rangestatus (indicated by color, green is RangeStatus = 0, cyan means RangeStatus = 14 and black is RangeStatus = 7. Other colors represent other RangeStatus values but they are not part of the flickering issue.

Dont get me wrong, i did not expect a range results up to 8m using when using a smaller ROI, but i kind of expected stable results < 4m for things like walls.

I can arrange myself with the "low" distance, but no reliable results (espacially such flickering/waving motion, indication that every second measurement is invalid) seems very odd to me.

dlux
dluxAuthor
Associate II
April 30, 2021

Another follow up with more measurements:

I filtered the measurements to show only the largest roi from one sensor (facing to the wall). Using 500ms budget now.

Sensor: 7 ROI: 9 Ambient: [31744, 4294967295, 4294967295, 4294967295] EffectiveSpad: 16.4375 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]
Sensor: 7 ROI: 9 Ambient: [33792, 4294967295, 4294967295, 4294967295] EffectiveSpad: 206.5625 Range: [65419, 65535, 65535, 65535] Status: [12, 255, 255, 255]
Sensor: 7 ROI: 9 Ambient: [33792, 4294967295, 4294967295, 4294967295] EffectiveSpad: 206.5625 Range: [3729, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 9 Ambient: [33280, 4294967295, 4294967295, 4294967295] EffectiveSpad: 206.5625 Range: [65419, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 9 Ambient: [33280, 4294967295, 4294967295, 4294967295] EffectiveSpad: 206.5625 Range: [3733, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 9 Ambient: [34304, 4294967295, 4294967295, 4294967295] EffectiveSpad: 206.5625 Range: [65425, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 9 Ambient: [34304, 4294967295, 4294967295, 4294967295] EffectiveSpad: 206.5625 Range: [3726, 65535, 65535, 65535] Status: [4, 255, 255, 255]
Sensor: 7 ROI: 9 Ambient: [34304, 4294967295, 4294967295, 4294967295] EffectiveSpad: 206.5625 Range: [65418, 65535, 65535, 65535] Status: [7, 255, 255, 255]
Sensor: 7 ROI: 9 Ambient: [34304, 4294967295, 4294967295, 4294967295] EffectiveSpad: 206.5625 Range: [3736, 65535, 65535, 65535] Status: [4, 255, 255, 255]

Ambient seems rather low (its the raw value, not divided by anything). EffectiveSpad count seems also okay (like you mentioned about 200 spads with full roi).

The measurements cycle between RangeStatus 4 and 7. 7 Gives a pretty accurate result with about 3.7m, but i dont get why every second measurement is considered "VL53L1_RANGESTATUS_OUTOFBOUNDS_FAIL".

Another video of the issue that every second measurement of a ROI is not valid: Flickering 2 - YouTube

there you clearly see the 3x3 + 1 Grid appearing slowly and then vanishing again. I don't think that this is an expected behaviour. At least i can't think of a reason.

John E KVAM
ST Employee
May 3, 2021

I think what you are seeing is just the limits of the sensor. We claim 4M in ideal conditions with an 88% reflective target. And I think your wall is just under 88% reflective to mean the limits are about 3.7M.

In order to fight the "Radar Aliasing" problem, we range with different internal timings. So that the cause of your 7,4 cycle.

  • The range status 7 is the wrap around. It means that there is a mismatch between the 2 consecutive ranges
  • The range status 4 is the phase out of bounds, it means that the events are returned after a too long time

These can be treated as warnings that there is something wrong with the data, but you can choose to accept the range info it if you know something about your system that leads you to believe the distance might be right.

The ambient can be pretty low - if you are using LED lighting and are not near a window - as LED lights produce absolutely no 940nm light.

What I really don't like about your results is the first line:

  1. Sensor: 7 ROI: 9 Ambient: [31744, 4294967295, 4294967295, 4294967295] EffectiveSpad: 16.4375 Range: [8191, 65535, 65535, 65535] Status: [255, 255, 255, 255]

There is no reason that I can think of that would cause the sensor to decide 16 SPADS was a good idea.

dlux
dluxAuthor
Associate II
May 3, 2021

The different internal timings might be the issue then. Is it possible to get the used timing from for example the sequence number? Then i could join 2 measurements with different timings.

Thank you for the response.

I heard that you are releasing a new sensor (vl53l5) in the middle of the year. Is it possible to aquire some samples to test them against my current setup?