Showing results for 
Search instead for 
Did you mean: 

VL6180X -- Unexplained "Waves" in Time of Flight Data

Associate II

Hi there, 

My team and I have noticed an irregularity in our VL6180X sensor data that we do not understand. Despite having a stationary target (~75mm away), the calculated range values from the VL6 appear to "wave" over time, and do not settle into a steady state (see screenshots). When running as expected, the sensor typically reads a consistent range value with a variance of +/-3.5mm between readings. Please note that we have eliminated all sources of cross talk as well and are conducting our experiments in a closed, dark tube that is not exposed to direct light. What could be the issue here? Is this normal behaviour for the sensor? 



Thank you in advance!


Have capacitors on AVDD and AVDD_VCSEL been placed? How is the PCB layout?

The datasheet recommends: "Capacitors on AVDD and AVDD_VCSEL should be placed as close as possible to the supply pads" which could be an indication that it doesn't have good noise immunity for the power supply.


Associate II

Hi RhSilicon, thank you for your reply!

Yes, we do have capacitors, but it looks like the Farad ratings are slightly lower than the recommended spec. Do you think that the difference is large enough to have an impact on noise stability? Our capacitors are less than 2mm away from the supply pads, too.


In these cases it is recommended to use low ESR capacitors. How is the layout?

- (From the schematic it is possible to notice that the importance of the decoupling informed in the datasheet may not have been observed, the capacitors are close together and far from the pins)

And about the power supply circuit, are you using a switched or linear regulator?

About layout, here are some tips:

Low frequency noise decoupling generally requires electrolytic capacitors (typically 1 μF to 100 μF) that act as charge reservoirs to low frequency transient currents. High frequency power supply noise is best reduced with low inductance, surface-mount ceramic capacitors connected directly to the power supply pins of the IC (typically 0.01 μF to 0.1 μF). All decoupling capacitors must connect directly to a low impedance ground plane in order to be effective. Short traces or vias are required for this connection to minimize additional series inductance.


See full text here:


Is the X scale accurate? We're looking at an entire day's worth of samples in that first screenshot?

Really doesn't seem like a decoupling capacitor issue given the slow time scale.

My guess is the reading is affected by temperature swings and the HVAC cycling on/off causes the oscillations. Raise/lower the thermostat a few degrees and see if it has an effect.

If you feel a post has answered your question, please click "Accept as Solution".

Is the X scale accurate?

Good note about the timescale :magnifying_glass_tilted_right:

Thank you @TDK for the suggestion about ambient temperature. Yes, the timescale is accurate -- we are running our VL6 24/7 at the moment. I'll conduct some temperature tests and report back. I'm hoping the VHV calibration should be able to account for temperature variations.

Edit: As it turns out, I am already using auto-VHV calibration every 255 samples via the `VL6180x_RangeStaticInit` function.


Manual/autoVHV calibration
Manual/auto VHV not yet implemented in API.
SPAD(e) sensitivity is temperature dependent so VHV(f) calibration is used to regulate SPAD
sensitivity over temperature in order to minimize signal rate variation. VHV calibration is
performed either manually by the host processor or automatically by internal firmware.
Execution time is typically 200 μs so has no impact on normal operation.
A VHV calibration is run once at power-up and then automatically after every N range
measurements defined by the SYSRANGE__VHV_REPEAT_RATE{0x31} register. AutoVHV
calibration is disabled by setting this register to 0. Default is 255. If autoVHV is disabled it is
recommended to run a manual VHV calibration periodically to recalibrate for any significant
temperature variation. A manual VHV calibration is performed by setting
SYSRANGE__VHV_RECALBRATE{0x2E} to 1. This register auto-clears. This operation
should only be performed in software standby


ST Employee

Very interesting data. I don't think it's a layout issue. The sensor is not very sensitive to voltage changes. It's more digital than that.

If it were temp related, I would expect a slow ramp up as the device heated, then a sharp decline as the VHV Calibration adjusted. (It adjusts one 'count' every 2 degrees C.) So you would end up in more of a saw tooth. 

Could you add some details of the how much that wave is varying over time? It's kind of hard to tell from the plot. 

I'd like to send that to the chip designers and see if they had any thoughts.

- john

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question. It helps the next guy.