cancel
Showing results for 
Search instead for 
Did you mean: 

VL6180 can not range longer than 300mm

Jhern.1
Associate II

Hello,

It seems the API does not allow to range up to 600mm, why?

I am ranging ok up to ~350mm.

I have tried to use x3 upscaling, but error is returned when doing so by:

VL6180Dev_t    myDevLong;

VL6180_UpscaleSetScaling(myDevLong, 3);

It seems as upScaling it is not allowed, but it is enabled in vl6180_cfg.h:

0693W00000HrhAYQAZ.png 

Can you please advice if I am doing anything wrong.

Regards, Ramon.

5 REPLIES 5
John E KVAM
ST Employee

Ramon -

A great question, but you are probably not doing anything wrong.

The light goes out in a cone of 27 degrees. So at 600mm the circle of illumination is about 300mm in diameter. But the intensity of the light goes down as a square of the distance.

The sensor works by sending out a flash and when the photons return, the arrival time is noted and we work out the distance from there. But it takes a lot of photons to do this.

If you have a nice bright sheet of paper filling the entire Field of View, you will find you can range quite far. But if you have a smaller object, or one not as reflective, you will find yourself not ranging nearly as far.

But I have a solution for you. ST just announced the VL53L4CD. It ranges to 1.3M in ideal conditions, so it should have no issues going out to 600mm with smaller, darker targets.

I don't think the evaluation kits are out yet, but by mid February you should see them at Mouser or Digikey. And I hear Sparkfun might have some sooner.

-john


If this or any post solves your issue, please mark them as 'Accept as Solution' It really helps. And if you notice anything wrong do not hesitate to 'Report Inappropriate Content'. Someone will review it.
Jhern.1
Associate II

Hi John,

Thanks for your answer.

I understand what you say, but I am not sure what is going on with th upscaling.

Note the Upscaling is giving me an error ¿Is this normal?

0693W00000JMApKQAX.pngBy the way, I have tried larger surfaces. In spite of detecting further objects it can not detect futher than 350mm.

Regards, Ramon.

John E KVAM
ST Employee

the up-scaling is not giving you the error. Upscaling only occurs because the chip designers use an 8-bit byte to return the distance, never imagining anyone would want to range beyond 255mm. But it clearly works farther than that. So upscaling is simply dividing the range result by 2 (or 3) and retuning that value - then multiplying the result back up on the MCU end.

It's still the lack of photons that is giving you that error. The Max convergence says that you did not get enough photons before the timer ran out. You can increase your Max Convergence time and allow the sensor to gather more photons. Or use a mirror (or other really bright target) to reflect more photons.

The sensor is rated to 600mm, but that is the best it can do in ideal conditions. Realistically as you have seen, normal targets are good to about what you are getting.

So the problem is physics. The light decreases as a square of the distance, so at the longer distances one really has to work to get the required number of photons.

  • john

If this or any post solves your issue, please mark them as 'Accept as Solution' It really helps. And if you notice anything wrong do not hesitate to 'Report Inappropriate Content'. Someone will review it.
Jhern.1
Associate II

Hi John,

Thanks for your detailed answer.

I understand the range error is due to lack of photons back. I will try increasing convergence time.

I was trying to understand why the upScaling function is not returning 0 when set to x2 or x3. It returns 3 instead.

I am using VL6180 and VL6180X, but I am using only the range part (not the ALS). My question is: Is there any difference in terms of ranging?

Regards, Ramon

John E KVAM
ST Employee

The VL6180V1 and VL6180X use identical silicon. We simply plugged the ALS hole. This saves us one filter element and the calibration step. So the V1 sensor is a bit cheaper - especially in quantity.

But the sensor range exactly the same.

I'm not sure why the upscaling function is not returning the 0 as you expect.

Might have to dig through the code for that. But you can do it.

  • john

If this or any post solves your issue, please mark them as 'Accept as Solution' It really helps. And if you notice anything wrong do not hesitate to 'Report Inappropriate Content'. Someone will review it.