Skip to main content
Visitor II
October 23, 2018
Question

Out of range readings of VL53L1X

  • October 23, 2018
  • 13 replies
  • 7052 views

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?

    This topic has been closed for replies.

    13 replies

    Visitor II
    October 23, 2018

    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...

    Visitor II
    October 23, 2018

    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...

    TSuraAuthor
    Visitor II
    October 23, 2018

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

    Visitor II
    October 23, 2018

    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.

    Visitor II
    November 7, 2018

    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

    Visitor II
    December 24, 2018

    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.........

    Visitor II
    January 7, 2019

    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

    Visitor II
    January 7, 2019

    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.

    Visitor II
    January 7, 2019

    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

    Visitor II
    January 7, 2019

    I do not think that interrupt would work with my application as since it is giving me a distance of 60cm, I think it will assume that there is a target within the 4m as the interrupt will make decision based on the distance reading.

    Variation in sigma might make it to complex to tune it for different environments I think.

    Also to make things a bit more precise I am using the VL53L1X on a pcb that has a microcontroller that does the basic settings for me and only transmits me the data via UART. Its called GY-53 for VL53L1X. So i only have the basic options for the parameter setting which include time budget and measurement mode.

    The RangeStatus number is defined like this in the GY-53 datasheet:

    0: indicates that the distance value is reliable;

    1: indicates the ambient light effect;

    2: indicates that the returned signal is weak;

    4: indicates that the measurement range is exceeded;

    5: indicates a hardware failure;

    7: Indicates that there is interference noise in the surrounding environment;

    8: overflow or overflow of internal algorithms;

    14: Invalid measurement.

    Attached document is a translated version of the orignal in Chinese. If you would suspect the readings from the controller are wrong I even did it with a raw I2C and had somewhat similar results in VL53L0X. Also to note is that the indicators in the GY-53 have been proved reliable in the practical tests that I have done.

    Let me know if you need any other kind of information.