Project: Stabilisation of a laserlight

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 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 :slight_smile:

Was my English too bad?

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

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.

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.

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 :slight_smile:

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! :slight_smile:

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

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.

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...

:slight_smile:

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. :wink:
http://fabitosh.bplaced.net/arduino/beamstabilisation/Pin5empty.jpg
How can that be?

I just think that steppers don't have small enough step size to do what Fabitosh is proposing.

Couldn't you implement a "micro-stepping" scheme, either by using a driver chip that implements it, or by building a custom driver that can output a varying voltage to the coils (instead of the regular on/off scheme), to allow you to position the rotor between coils...?

:slight_smile:

Nice looking experiment. Good show!

Thanks! :slight_smile:

You talk about photo-transistors, but the devices in your photo look like photo-voltaic cells?

True, sorry they are kind of solar cells. The datasheet to it you can find on this link:

On my screenshot you can just see the values which I did without beaming on the solar cells. But the result is almost the same when I beam on them too. (Laserlight wavelength: 650 to 680 nM (10^(-9)M))
The strange thing is that I tried out three of them and could clearly read from the values when the beam was on them.

Couldn't you implement a "micro-stepping" scheme, either by using a driver chip that implements it, or by building a custom driver that can output a varying voltage to the coils (instead of the regular on/off scheme), to allow you to position the rotor between coils...?

Sounds promising and complex. :wink: I will try to finish the project first with the Servos I got (Continuous Rotation Servo [FeeTech FS5103R] : ID 154 : $11.95 : Adafruit Industries, Unique & fun DIY electronics and kits) and see if it would already work when I move the laser slowly. If that works I will maybe try to improve other things. But first I need to come to reach a finish (deadline next Monday).

Yes, but that would quadruple the complexity of the project and Fabitosh seems to have his hands full already.

Very true. But I'm still having fun :slight_smile: My written part will be on German, but I will link it here too when I've finished for the ones who are intersted and having a bit German reading skills.

I will try to connect an other 5th resistor (40k[ch937]) and just try to find the error. But if you already know it I'd be glad if you telled me :wink:
Thanks for your effort!

I used a 5th 33k[ch937]-resistor now, but it's still the same. The input values jump around and I can't read a difference when the laser is beaming on a solar cell.
I did a wiring diagramme, maybe this shows the error:
http://fabitosh.bplaced.net/arduino/schaltplaene/
Choose either the .eps or the .pdf-file.

I'd be really glad if you could help me, I got no clue.

You seem to have these connected as if they were photo-sensitive resistors. Aren't they photo-voltaic cells? They should generate some small voltage upon exposure to light. What happens if you just connect the - side directly to ground and the + side directly to an Arduino analog input pin?

:-[
You're my hero! :slight_smile: That was exactly my fault. Thank you very much, I will remember to think about the wiring better before I start to set up everything.
Will update the topic when I got a new error or when the project reached its finish (It will hopefully be the 2nd).

Hey guys
I finished the written part and can completely focus on the model now. The written part is in German. But for the ones which are interested I uploaded it here:
http://fabitosh.bplaced.net/arduino/Der%20kontrollierte%20Weg%20des%20Lichts.pdf

Now to the more serious part. After having the Arduino Duemilanove connected with the computer for about an hour and experimenting a bit I couldn't upload the new program anymore. The serial port isn't found anymore.

The voltage regulator (http://wiki.elphel.com/images/7/70/ArduinoDiecimilaComponents.jpg) was extremely warm. I unplugged the USB-cable and waited around an hour. It still didn't work, but the voltage regulator is getting warm again. May it be that the Arduino has too much power because of the photovoltaic cells and overheated?
I also realized that the engines often did some short moves without the order to do so.

And an other question. What would be the easiest way to get more analog in pins?

You know, as I read this, one possible solution for his need for an ultra-fast pan/tilt mirror would be to use "galvanometers", but not hacked speakers- I would think the best solution would be pivoting the mirror with a selenoid vs. a spring in each axis.

Selenoids and springs are available for cheap money, and not too much is going to be faster without huge expense... PWM driving the selenoids would give you very precise control...

Since the device's purpose is aiming, calibration isn't needed- even if the resilience of the springs or the pull of the selenoid (brownout?) changes, you're correcting it on the other end. You could easily wind the selenoid coils yourself, and even use rubber bands (or even a couterweight, if you want to be downright medeival) instead of springs. The whole idea is that the selenoids are constantly pulling against an opposing force- pick your own poison.

I would think a design like this would be a LOT faster than any servo.. and potentially more accurate if you tweaked it right...

Last but not least, I'd been wondering how hard it would be to play around with one of those DLP chips they used for rear-projection TV's for a while there... all they are is aimable mirror arrays..

Ah, could solve my Arduino problem now. Seems as if I connected my 2-axis joystick wrong. It's wiring caused the problem.
Fortunately the board is still fine.

Thanks for the tip with the 4051 multiplexer. That's exactly the thing I am looking for.
Today I went to the 'Conrad' (electronics seller) and bought new servos where you can set the angle and not the velocity via Arduinoprogram. Unfortunatelly the salesman had no clue of the 4051 multiplexer, so I need to order them from the internet.

focialist: Sounds like a promising way. Thanks for sharing. Might try it out after finishing it with the current one. :slight_smile:
But I hope you understand that I won't give up the way I already worked on for many hours. I'm currently just looking for a working possibility, not for the perfect one. :wink: