Neato Lidar

Data Diagnostics

Since this is doing a 1D analysis of an optical line. I think I found a comparable sensor. Just add optics. No analog connection required (as for a 1D PSD diode).

Melexis MLX75306

The Neato Lidar uses a rotating platform with optics. Simple enough to 3D print once complete, although I need to find my optics. I may use a red laser instead of an IR one initially.. I think a nice 6 channel slip ring (4 lines for RS485, 2 for power) would work for transiting. This sensor has a 142 pixel line with integrated 8 bit ADC. It can also be set to provide a simple high/in range/low signal or just high/low for extremely low bit rates (or extremely fast imaging). It's got a max 12MHz SPI. Minimum integration time for the sensor is 94 us. So, at 100us, that's 10,000 samples per second. Now, we must interleave scanning and scaling.

Minmum 8 bit readout :159 bytes = 100 us
minimum 1.5 bit readout: 48 bytes = 32 us
minimum 1 bit readout:: 30bytes = 20 us

So, the fastest we can run this, with full data, is 5000 sps. Slowest sampling would be 10 sps, as the data transfer would be irrelevant. Reality falls between these two limits.

The fastest slip rings I can find for a hobbyist price are rated around 300rpm, so 5 rotations per second. This provides an absolute best shot rate of 500 shots/rotation. Neato appears to use a similar RPM on their custom design, but also they take around 90 shots per rotation, with a target of 1000 sps. They'll do 2000 sps. This is approximately what I would expect. Per another web post it looks like they pulse the laser power on for 200us per shot. This means they are using an integration time of 200us, which changes the maximum shot rate to around 3000/second.

Apparently RPM is approximated from a single hall sensor and a magnet. I'd probably use either a custom optical disk or a CUI programmable capacitive encoder to guarantee shots (trigger) even if I get a bad RPM reading. I may also feed it down to the lower drive system for closed loop motor control. This would also make synchronizing multiple unit easier.

Processing: Complex, we'd have to part the 160 bytes of data in 1ms. I would use DMA for the SPI connection, so that's either a dsPIC, PIC32, or ARM processor. Any would work. I'd want an encoder interface. I'd use a multi-megabit serial link if I could. Data packets would be Last Reading, Reading Angle, Current Angle, CRC. This would allow the unit to function like a serial encoder for the motor controller.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License