Rotary Laser Level Receiver Circuit

Thread Starter


Joined Aug 4, 2018

I already own several Rotary Laser Levels which provide a red beam. Their wavelengths range from 630nm and up.

I want to design and make my own laser receiver/detector. I already own several Rotary Laser Levels which provide a red beam.

I also own several receivers one of which I would like to copy. The receivers signal whether the receiver is higher or lower than the beam with a buzzer and an LCD display. Some receivers only signal whether it is high or low and some signal how high or low it is.

My goal is to build a receiver that tells an Arduino how high or low it is and then control a motor. I don't need the buzzer or LCD screen output and I cannot use the receivers I have.

I have been researching this for a while and have found a bit of info but I am still a little uncertain.

Additional info:
  • Just about every forum I have read said that an optical filter would be needed. My receiver has a red transparent filter on it but when I took the receiver apart and tried it without the filter it would still only be triggered by the laser beam.
  • I tested across the component of interest when it was turned on but not detecting and it read 3.3v. Not sure if that is helpful.
  • The receivers I have can detect the laser in daylight from 100-200 meters plus.

Attached are images of the PCB for the receiver I wish to copy.

Overview.jpg Close Up.jpg

I would like to know...

1. Are the sensors in the image photodiodes? (Or possibly phototransistors or photoresistors)
2. As I haven't been able to find the components in the image would any of the following linked components do the same job?
3. Any suggestions as to circuit design, other components (eg. resistors, micro-controller) and programming I should use.

Possible Component Candidates:

Any help would be greatly appreciated

Thanks in advance.


Joined Aug 7, 2008
How much up & down range do you need. Longest linear detector that I have made was about 1 cm with about 5 SM photo transistors.
Do you know the rotational speed ? Might use AC amplification if necessary but that would be a bunch of amplifiers. What is spot size at 100 m ?
Last edited:

Thread Starter


Joined Aug 4, 2018
Hi Bernard thanks for the reply
  • I need at least 5cm range but was hoping for 20-30cm.
  • The rotation is approx 500rpm.
  • The spot size within a 10cm looks just under 5mm and at about 20m it is the same. At 100m it is not visible to my eyes at least not in daylight. Receivers like the one I want to copy can work to an accuracy of 0.5mm with this beam. The spacing of the components in the picture I attached is 4mm. I would like an accuracy of 2-3mm.
Cheaper receivers only signal high or low and start at around $50+
More expensive receivers signal how high or low start at $200+
More expensive still are receivers used to control machinery and they start at $1000's+

The latter is basically what I am trying to make so I imagine it won't be cheap. But I am not interested in the LCD/LED and buzzer signals these receivers send out. I only need an analog/logic signal that can be read by my Arduino.

I have found very little info on how these receivers work. There was a guy back in 2012 on this forum and others that was trying to do there same thing but he never posted if he was successful. What I am trying to do has been done but I'm guessing it must be a very specialised part of design.

Thanks again Bernard


Joined Aug 7, 2008
I simulated your red laser with a 555 driving a 2 mW laser module with 19 us pulses, rep period .12 s.
Output was detected with a silicon photo transistor, LT9593-0125, as an emitter follower with 1k load.
Rise time about 5 us, fall about 10us. Transistor is 5 mm flat top. Probably can find a SM small Si transistor on Digi-Key ? I can't find my string of 5 photo transistors.
Really used 19 us & 100 us so beam was still visable.


Joined Aug 27, 2015
I made a receiver post with a number of detectors that produced a tone and when the beam was on the central detector, the tone turned into a beep. Much easier to use than the others.


Joined Aug 7, 2008
Sensor selection of 3. Top , photo diode, $ .55 / 50 may be OK; 2nd may be too far into IR; 3rd, to costly.
Other possible choices: VEMT2520X01TR, gull wing transistor, 2.3 mm wide, broad spectrum pk. 850 nm,
$ .44 / 100 at Mouser, $ .38 / 100 at Arrow Electronics.
KDT00030ATR; TEMT7000X01, ALS-PR204-6C/L177, $.42, T1 3/4; QSD123 - ND Digi Key.
I partially remember a similar project around 2012 when I discovered that a laser could be detected at 100 m.
in daylight. But designing an operating system is way beyond me.
A red filter does help in daylight.
Last edited:


Joined Dec 13, 2015
One possible method would be to use a TIA to convert the photo-current to a voltage. You will need a photo-diode with a fast response time as the diode will be illuminated for about 1.4 us (assuming a distance of 100 m, 500 RPM and the active area is 5mm x 5mm with a 5 mm spot size). Fortunately the time between pulses (120 ms) is so long that all of the calculations may be done before another pulse is sent. You can use an SR latch to "save" the pulsed position which is fed into an IO expander that can be connected to the Arduino via I2C, SPI, or whatever protocol you want. Open-drain buffers can make a wired OR active low signal to tell the Arduino when information is available (or you can poll the expander). When the data is read from the expander into the Arduino you can send a global reset to each of the latches for the next set of information to come in. The data that you receive will tell you which diode(s) has been illuminated and you can calculate the distance from which can even use a look up table if you wanted. I would recommend using a red filter as well.

One draw back would be that the accuracy will be highly dependent on how far the diodes are separated. There may also be issues where other sources of red light will cause false positives.