Go Down

Topic: Project: Stabilisation of a laserlight (Read 9089 times) previous topic - next topic



My first real Arduino project is to stabilise a laser beam by controlling a stepper motor on which a mirror is attached (1 dimension to start with). The laserlight changes the position where it beams from respectively the direction and the stepper motor should change the mirror in a position so that the reflected beam goes to the same position.
The reflectet laser beam points on a quadrant photodiode which realizes the movement of the beam respectively the movement of the laser and gives that information to the Arduino which calculates the needed movement of the stepper motor.
On the second stage I could add a second mirror for the second dimension.

For that I found a stepper motor with an angle cut of 0.45 degrees ( http://www.ec-motion.com/index.php?id=12&L=1 ).
Is it possible to run it with this shield ( )?
And where should I order this stepper motor? Unfortunatelly I didn't find a marchant. Is it the best solution to phone EC Motion?

My second problem is that I have no clue on what specifications I should check by the quadrant photodiode. How can I adapt it to the Arduino and use the signal?

I'd be glad if you helped me :) Already thanks for reading it. I hope my English was more or less understandable.


Was my English too bad?
I'd be happy if you could confirm that the combination of the stepper motor and the Arduino shield fit together and every tip to the usage of the quadrant photodiode.


Was my English too bad?

No it was understandable. However personally I didn't think the project was achievable, certainly not running a stepping motor with steps it is too coarse.
I did see a laser control somewhere (maybe an instructables) that used a motor as a servo feeding analogue voltages into a bi polar stepping motor.
However, I am not convinced that you would get enough discrimination from a quadrant photo diode to allow you to control what you want.

As I was so negative I didn't post anything and I thought I would see if anyone else came up with anything, but apparently not.


Thanks for your clear words. The combination of a coarse stepping motor and a small quadrant photodiode doesen't fit together, because the motor wouldn't always be able to direct the beam exactly on the mirror.
I didn't understand how the servo motor was connected to the stepping motor in your example, sorry. I thought of using a servomotor instead of the stepping motor which would have the possibility to direct the laserbeam always on the quadrant photodiode. Could that be accurate enough?
The other idea I had was the usage of a selfmade panel of photosensors (those were as close together as possible) instead of the quadrant photodiode. Then the stabilisation would not have to be perfect (the beam wouldn't always hit the 'main photosensor') but it wouldn't let it spread as much as it would normally.

Is one of those possibilities better?


They use two small DC motors to slowly move the mirror platform. It seems to me like this would be more suitable for accurately positioning a laser beam (although even that device may not have enough accuracy?)

There used to be a company (not sure if they still exist) named "Airband" (or something like that), whose initial product used similar positioners (they touted this in their promo material); their product was a system of laser repeaters and detectors for free-air optical networking over long distances. They used the devices for setup and maintenance of laser positioning and tracking for their service.

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.


I didn't understand how the servo motor was connected to the stepping motor in your example,

Well that's me being not clear.    :-[

It was a bipolar stepping motor but it was connected up as if it were a servo motor by sending two signals through D/A converters and then into the coils. This allowed you to move the motor through a single step with the resolution of the D/A. A sort of extrema example of micro stepping you need that for the fine control.
The problem with the quadrant detector is that as the laser is a very small point there is little space for it to spread over the quadrants and give any sort of accurate pointing information. A much better approach would be to use a sensor array from a web cam or CCD sensor to get the feedback.


Sorry I didn't know you need the information where I'm coming from. I updated that now. The two examples you gave would have also been a nice way to achieve my aim, thanks for sharing.
But the way using stepping (/servo) - motors seems to be a cheaper way for me in Switzerland and also attracts me a liddle more.  

Thanks for your explanations Mike, it's a bit more clear. Due to my lack of expirience with this domain I'm still not completely sure if I understood right. Do you have an example from it's usage? But it seems as if it would be enough to order the Stepping Motor and the Adafruit Motor/Stepper/Servo Shield. Maybe I'd get it easially with the components in my hands.

I will google for the keywords you gave me. Thanks guys you're really helping me getting ahead with my plannings and avoiding mistakes :)

Ran Talbott

Was my English too bad?

No. But my problem is that there's not enough of it  :)

It's not very clear what you're trying to do.  How much do you need to move the beam?  Are you trying to make minor corrections (say, 1 or 2 degrees)?  To move it over many degrees to follow a moving target?

That mirror-adjusting mechanism Richard mentioned sounds promising.  To get a finer, smoother adjustment than a direct mount to a stepper,  you could mount a cam to the stepper (or a servo),  and use that to tilt a pivoting laser mount.  Or use the stepper to drive a screw (or even a micrometer, for really fine control).


I agree that what you want to do isn't very clear. As to fine adjustment I've found a standard hobby servo can make ~426 discrete movements with in its ~190 deg rotation range. One could use one servo to move a rotating platform ~190 deg, and on that platform mount another servo that is geared down such that in the servo's ~190 deg rotation, the mirror only rotates ~10 deg. In this setup the first servo gets the laser in the general ball park, then the second servo does the final position tweeking.
Google forum search: Use Google Search box in upper right side of this page.
Why I like my 2005 Rio Yellow Honda S2000  https://www.youtube.com/watch?v=pWjMvrkUqX0



I will google for the keywords you gave me.

Try:- laser light show

As these projects include X/Y control of motors to a fine degree.


Jul 22, 2010, 03:14 pm Last Edit: Jul 22, 2010, 03:22 pm by Fabitosh Reason: 1
Picutes say more than words. I did a liddle sketch.
That's what I'm thinking of actually. I already tried a prototype of the trail: http://fabitosh.bplaced.net/arduino/beamstabilisation/legotrail.jpg
I hope it's more clear now :)
To get a finer, smoother adjustment than a direct mount to a stepper,  you could mount a cam to the stepper (or a servo),  and use that to tilt a pivoting laser mount.  Or use the stepper to drive a screw (or even a micrometer, for really fine control).

This sounds great! Can you show me a project where it was used or an explanation how it's done? It's hard to imagine that just from those words (as beginner as I am).

hobby servo can make ~426 discrete movements with in its ~190 deg rotation range

If I calculated right this would give a step angle of 0.446 degrees.
The 'best' stepping motor I found should also be able to make steps 0.45 degrees. (http://www.ec-motion.com/index.php?id=12&L=1) So the servo wouldn't be a serious advantage (especially because it's normally more expensive). I'm confused  :-?

Your main idea sounds very interesting. I'm not sure if I understood the other comments right, but if it is possible to make the motors more precise and still having the angle of 180 degrees I'd prefer that way (less mirrors and places to make mistakes). Otherwise I could try this out.

Okay, summarised:
  • How do I 'make' the motor finer than the step of 0.45 degree? Is this possible?
  • Which lightsensor should I use? (not too expensive and avaible in Europe if possible)

Thanks again for your effort! :)


OK it is clear what you are trying to do. The only question is why?


Jul 22, 2010, 08:04 pm Last Edit: Jul 22, 2010, 08:10 pm by Fabitosh Reason: 1
The only question is why?

In our school we could choose a topic we like and make a big work about it. I liked to create a small CSP-Tower (http://upload.wikimedia.org/wikipedia/commons/5/50/PS10_solar_power_tower_2.jpg). But for the creation of an heliostat would have meant much work and many hours for a friend who could have done those heliostats.
We decided to track a laser beam instead of the sun and we did those changes. I hope to get some expirience out of this project that I can realize later other maybe more complex things.

Isn't my project just a galvanometer (just without the lenses)? If I bought that I almost had no work. So I could call my aim 'Make your own galvanometer'.

Unless you have an uneven track, not clear why you need a vertical-axis mirror, unless that is part of the experiment?

It was mainly an option to develop the system if I achieved the first aim.

Unfortunatelly (bad time) I go to holiday on Saturday. I'd like to order the needed components tomorrow so that I can start shortly after my vacation.
  • 2 * 800-step motor (http://www.ec-motion.com/fileadmin/ecm/pdf/ecm232n_d.pdf).
  • 1*Adafruit Board (
  • Which lightsensor?
  • What else?


The closest thing to a computer-controlled galvanometer is a hobby servo motor.

Maybe for the world's slowest galvo; real galvanometers are low mass, high-speed, and very accurate positioning devices.

They're also fairly expensive (if you find cheap galvos, you're still going to spend money on the drivers) and close to impossible (just this side of it) to replicate at a hobbyist level.

What would be closer would be a pair of speakers (with most of the cone removed, and a small, low-mass front-surface mirror glued to the center of the drive coil) angled properly to scan/position a laser in an X/Y fashion. The problem with this method, though, is lack of feedback, plus the coils on speakers will fail if driven with a constant voltage/current.

A pair of small stepper motors with mirrors on the shaft and some form of rotary encoder position feedback might be better...

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.


Okay again thanks for your help.
I finished the constructing part yesterday and got my hardware ready. A small impression:

I just wanted to test all the phototransistors. I connected them the same way as I found it on the website (-> see Screenshot). The outcome and the programming code is also shown on it. http://fabitosh.bplaced.net/arduino/screenshots/phototransistor_inputs.jpg
Even tough the light intensity was stable the inputs jumped around extremely from ~400 to ~550. What could be the reason for that? I used 33k[ch937] resistors.
An other strange thing is that I get values from Pin 5, even if I absolutely didn't connect anything to this Pin (need to organize one more 33k[ch937]-resistor). Because it sounds so strange I felt like I had to make a photo of it as proof.  ;)
How can that be?

Go Up