2021-03-01 05:59 AM
The function VL53L1X_SetROI() of the VL53L1X ultralite driver also sets the optical center if either X or Y is greater than 10.
Is this intended and if so, why ? Neither API description nor header file state anything about this conditional modification of the optical center.
2021-03-01 07:23 AM
The optical center might not be the exact center due to mechanical tollerence when the chip is built. If the lens is not dead perfect the center could be off by a SPAD or two. So when choosing a small FoV one would really like the FoV to be based on the optical center.
But if you choose an FoV thats large, then there is no way to use the optical center and still have the SPADS on the SPAD array. So if the FoV gets larger than the 10, revert we revert to the physical center to guarentee that the FoV is within the SPAD array.
I suppose with some work we could have slowly migrated the 'center' from the optical center to the physical center as the FoV got larger, but the edict was to keep the driver as small as we possibly could. As a practical matter, as the FoV gets bigger the optical center is less important. It was a trade-off.
2021-10-27 11:27 AM
What is the expected value if the device were to be manufactured perfectly? What is it if the optical center is actually half of a SPAD low and to the left at the center of the block marked 7, 7 in the user manual?
Thanks
BoB
2021-10-27 01:50 PM
There is no center Spad. it's a 16x16, so the exact center is dead between 4 SPADs. During manufacture a test is done to see which is best as there might be slight tilt to the lens.
So using a normal numbering scheme, the spads at (7,7) (7,8), (7,8) and (8.8) are all equally close to perfection. Note that when choosing a center point, one up and to the right is the one to pick. In this case (7,8)
But this is spitting hairs a bit. The smallest ROI is 4x4, and that's about as accurate as you are going to get.
2021-10-27 02:21 PM
When I use the VL53L1X API the optical center is filled in by using the ROI center. If I then run with the VL53L1 API I get a values read from the device that have the fraction filled in. They are close to 8. What do these fractional values mean? X = 0x8A, Y= 0x78. Why do the programmed values not read with the VL53L1X API?
Thanks
BoB