Arduino Laser Range Finder

Building the Circuit Boards

There are three PCBs that need assembling - the Arduino Laser controller board, the laser driver board and the receiver board. These are going to be soldered by hand, even though they mostly have surface mount components on them. I've avoided QFN and BGA packages so this should be no problem.

The first board is the laser driver. In the picture below you can see that it has an FFC cable header on the left and the laser component on the right. The mounting holes match up with the optical alignment parts which will be discussed later. The laser board was tested by connecting it to a DS00 kit (it's pin-for-pin compatible). The outgoing laser light is invisible to the human eye (IR at 850nm) so to see it I used a florescent card but it is also visible on a webcam or mobile phone camera. Even though the laser light is made up of very short pulses, a camera integrates these pulses over the exposure time so it looks like a steady beam.


Laser board assembly.

The Arduino Laser shield is now complete. Communication between the Laser shield and the Arduino uses the SPI port, a CS line and a Data_ReadyN signal. This leaves the other Arduino ports available for another shield. Along one edge of the Arduino Laser shield there is a row of test points that can be configured to show the laser pulses (outgoing and return). There is also a trigger (falling edge) to synchronize an oscilloscope to the firing of the laser. Without getting into any detail on how the DS00VQ100A chip works, the signals that appear on these test points can easily be seen with a conventional, 10MHz oscilloscope.


Arduino Laser Shield completed.

The most important component on the Arduino Laser Shield is the DS00VQ100A timer/controller chip. This takes care of all the real-time and high speed activities of the laser range finder including: firing the laser, adjusting the APD bias voltage, timing the instant that the laser pulse leaves on its way to a target, timing the instant that the laser pulse returns from the target (the time-of-flight) as well as some housekeeping like adjusting the gain of the amplifier, measuring the noise in the system so that it can be controlled and communicating with the Arduino. The only problem is that this particular chip doesn't exist yet! I'll take an off-the-shelf DS00VQ100 chip and re-map the port pins and some of the internal functions to suit the Arduino Shield. This new version will be called the DS00VQ100A with the A standing for Arduino and I'll try to squeeze it all into an Actel FPGA (update - the chip reconfiguration has gone well and all internal functions test out OK).

The next board is the receiver that carries the APD along with a trans-impedance pre-amplifier (TIA). The APD picks up the weak return flash from the target and converts it into a small current. This is fed into the TIA to be amplified and converted into a voltage signal. For a target at about 10m away, the signal amplitude after the TIA is only a few millivolts so it needs to be further amplified by the main controller board. The most important design consideration for the receiver board is the speed of response to the short laser pulses that get amplified. Full gain bandwidths of more than 200MHz are necessary to preserve accurately the shape and edge steepness of the signals. There are a few layout tricks that help to achieve this goal. For example, most of the signal lines are differential to reduce pickup and minimize high speed oscillations. Also, stray capacitance is kept to a minimum by selectively removing the ground plain around some of the APD and TIA pins.


Receiver board assembly.

All the boards are now finished and the picture below shows them connected together using FFC cables. The cables are to allow the optical section (still to be added) to be "scanned" using a stepper motor whilst the Arduino and its shields remain stationary. All the electronics has been tested and found to be functional - amplifiers, timers etc. Once the optical parts have arrived it will (hopefully) take just a few minutes to assemble the whole thing, after which performance testing can be done. Looking forward to it... :slight_smile:


AL01 Arduino Laser Shield without optics.