Adafruit (PID 3316 VL6180X Time of Flight Distance Ranging Sensor (VL6180)
J**.
Good implementation of an easy to use distance sensor
Range sensor designed around a VL6180X. There are a number of sensors built around the VL6180X, differing only in the supporting hardware. This is a mostly well designed, easy to use version.Adafruit adds several nice details to make this easier to use. These include a 2.8V voltage regulator - the VL6180X has a maximum operating voltage range from 2.6 to 3.0 V, which means for nearly all microcontrollers you will need a separate voltage regulator to run it. Having it on the board means you don't have to worry about burning out the device by connecting it to the wrong voltage. Adafruit also adds voltage converters to all the I/O lines on the device, so you also don't need to worry about what voltages you apply to these pins.The only bad part of the Adafruit design is that they add pull-up resistors to the SDA and SCL lines of the I2C bus. The VL6180X is designed so you can run several on the same I2C bus - the I2C address for each VL6180X can be changed by writing the new address to a register on the device. Unfortunately, you can only have one set of pull-up resistors on the I2C bus before you run into problems being able to sink enough current for reliable operation of the bus. If you want to use more than one of these on a single bus, you will need to remove the SDA and SCL pull-up resistors from all but one board.Two of the pins deserve some description - SHDN and GPIO. The SHDN (actually GPIO0) pin is a device reset or shutdown - the device will not boot until this pin is allowed to go high. Adafruit adds a pull-up, so you can ignore this pin if you want. The main benefit is if you need to update the I2C address when you use multiple boards, you can enable them one at a time to update the I2C address before booting the next device. The GPIO (actually GPIO1) pin is an interrupt output. You will need to modify the library if you want to use interrupts, or you can leave it unconnected. The function of both of these pins is adjustable by writing the appropriate registers.Adafruit has a library to operate these devices. It is good enough for testing the device, but has many limitations and is not particularly well written. There are many registers on the VL6180X that allow you to adjust operation, but the library provides no ability to access those registers. The readLux function overwrites the integration time if you do set it. The initialization code does not establish a completely consistent state (the spec sheet states that unless SYSRANGE_EARLY_CONVERGENCE_ESTIMATE is set, ECE must be disabled, but the library does neither). Despite it's problems the library is enough to test and operate the device. If you want more control over operation, you will spend longer reading the spec sheet to learn the registers than it will take you to modify the software, so this is not a truly serious problem.Take the 5 to 200 mm range with a few grains of salt. My device had a minimum range reading of about 15 mm, and a maximum of around 188 mm (above 188 mm, it returns a raw range overflow error). At the low end of the scale (less than 20 mm actual distance) there are linearity problems, but it seems reasonable linear over the rest of the range. Noise in the readings appears to be on the order of 2 mm (one sigma), although I did not directly measure it. There appears to be some correlation between successive values - the noise did not decrease as quickly as expected when multiple values were averaged.FOV for the IR laser used for the distance sensor is 25 degrees (+/- 12.5). This means the spot size (the area over which the sensor reads a distance) is about 0.4 times the distance from the sensor. At a distance of 50 mm, it returns a reading from some point within a 20 mm spot on the object. Good for a proximity detector, not so good if you are trying to find the edge of an object.All in all, the VL6180X is an easy to use distance sensor. The Adafruit version adds several features (2.8V power supply, level shifting on I/O pins) that are nice to have and may make it preferable to other available versions of this sensor.
J**N
Amazing for the price and ease of use
I'm trying to tell whether an object is moving towards or away from the sensor in the range of 30 to 150 mm or so. Roughly, I get 100 Hz updates at 35 mm with a (static sample) standard deviation of 1 mm and 50 Hz at 150 mm with a standard deviation of about 2 mm. The update rates are in line with info in the datasheet; the ancient Arduino Uno is not a factor.I haven't checked the accuracy as I'm mainly interested in the sign of the velocity, but it seems very reasonable.The only reason I don't love it is that I have to do a lot of smoothing which imposes time lags that degrade real-time control. Maybe there's some mathematical magic that will improve this; that's another learning opportunity.
B**.
Good breakout board, Not just for Arduino
Works as a breakout board should. Unlike what the other reviewer stated, while Adafruit supplied an Arduino library to interface with the sensor on this board, this breakout board is not specific to the Arduino.The ST VL6180X is a proximity sensor that communicates using the I2C protocol and Adafruit designed and packaged this breakout board for it so you do not have to design and breadboard a similar circuit yourself in order to get it to work (the circuit is relatively simple with a few transistors, capacitors and a voltage regulator--the schematic is freely available on Adafruit's website)--a few extra dollars for a relatively professional setup is worth it in my opinion.You can use any microcontroller, computer, etc. that supports I2C communications and write the necessary commands to interface with the ST VL6180X sensor. Yes, doing the I2C communications yourself takes a little more work that it takes to get it working with an Arduino, but it is still a relatively easy task if you have played with an I2C-based sensor in the past using your microcontroller/computer of choice.Keep up the good work, Adafruit!
J**N
Good proximity sensor.
Board works well out of the box with demo software on a Teensy4.0 controller with Teensyduino. Was able to quickly adapt the code to create a proximity based speed controller in an hour or less. Distances under good lighting were up to about 8 inches. Low lighting seemed to cause too much noise in the measurement.
R**H
Great short range sensor
I was initially disappointed because the first unit was defective. The seller was very helpful in troubleshooting and replaced the part quickly. The replacement works great. Very satisfied. I am going to use it to autofocus my laser cutter.
B**5
Communicates but does not work
After buying a serial package decoder to monitor the communication, I verified that I can actually talk to the sensor unit and it does respond back but the sensor does not send a range measurement. I downloaded several libraries, made sure the code is fine and the unit is initialized, but I still get a zero for my range measurements. For 15$ I am not happy and I can't return it since I soldered a header pin to its ports.
D**N
Accurately sense small distances with millimeter resolution.
Works very well with the Adafruit library software, good instructions are given on the website. The sensor accurately measures 1 mm resolution distance out to about 200 mm. This sensor is very small and difficult to hand solder. This module makes it easy to work with the VL6180X as it also contains a voltage regulator and I2C level shifters on board.
P**B
5 stars for Adafruit documentation and support. sensor is +/- 1mm accuracy. Meh.
5 stars for Adafruit documentation and support. sensor is +/- 1mm accuracy. Meh.
Trustpilot
1 week ago
1 week ago