Laser and IR LED Targeting

The ThreeSeek system uses three photodiodes/lock-in amplifiers to locate and point towards a laser spot or IR beacon.  

Its design was optimised to detect weak signals at long ranges, using low cost components.

ThreeSeek has two modes of operation. Firstly, it can remain static and return an XY coordinate for an observed laser spot, or secondly, it can gimbal towards the target to stay pointed at it.

The device is highly sensitive. It has detected and tracked an IR laser spot that was measured at 0.06 miliwatts, at a range of 2m.




The sensor is designed to spatially locate a pulsed optical signal, from significant background noise and light. 

There are two modes of operation. 

  1. A static mode, where the sensor does not move, but tracks the target across it's field of view. This has a high accuracy and sensitivity, but narrow field of view. 
  2. A gimballed mode, which rotates the sensor towards the target to stay pointed at it. This  has reduced accuracy due to the mechanical instability of the gimbal, and reduced sensitivity due to noise induced by the gimbal servo motors. However, it's field of view is much more sizeable, and it can actively search for the target when no signal is detected.

The board is a high quality, four layer PCB.

A pulsed IR laser, at a know frequency, is used as a target.  Due to safety concerns with IR lasers, testing is performed with very low power output lasers, while using laser safety goggles. Light from a shielded IR LED, focused into a beam can also be used as a target.

Electronics and Signal processing


 A series of amplifiers and demodulators, detect a modulated signal from the three photodiodes. The preamps are designed to cancel any DC signal on the photodiodes from background sources such as sunlight.


The digital electronics are mostly reproduced from my other project, HippoFly.

The three analogue channels are read by an internal ADC on a 50Mhz 32bit Atmel AVR UC3 microcontroller.

Two I2C orientation sensors return a precise target vector relative to the mounting, while the board is pointed towards the light source via a gimbal mount. These are an I2C accelerometer/magnetometer, and an I2C gyroscope.

The board is gimballed towards the laser spot via two hobby servos. These are controlled by a PWM input. Varying the duty cycle of the PWM will adjust the position of the servo arm. 

Digital components are isolated from analogue ones via a split ground plane. 


Each of the three photodiodes has an individual reflector, arranged in a triangle, to collect light directed towards it. A large biconvex lens in front of these reflectors directs incoming light. Light coming in at an angle to the detector will be focused onto one of the reflectors more than the others. If the light is angled perpendicularly, each reflector will receive the same quantity of light. Thus an XY coordinate for the laser spot can be extrapolated from the relative intensities on the three photodiodes.



All mathematical operations to triangulate the laser spot, are performed on the microcontroller. Software is written in C, and using some C++ libraries.

Sensor fusion from the orientation sensors was performed using Madgwicks DCM filter.

A Kalman Filter was written to return a smooth X-Y coordinate of the laser spot, it has a variable measurement noise parameter which is linked to the signal intensity from the lock in. Thus it is able to respond to large changes in signal quality.



X-Y coordinates of a laser spot, tracked across the static sensor. The signal intensity is increased in the bottom half of the laser track, hence the noise on the raw (blue) points is reduced. The Kalman filter responds accordingly.