Motor advice for laser harp

Hey!

First, I'm very new to Arduino, and this is my first project. So if I'm just doing something silly please bear with me.

I've been aching to make a laser harp for a while. It just looks like a fun project and I figured once it's finished it'd be fun to open source and see what happens. It looks like this in the hands of someone who's practiced a lot:

I have it largely working. I can stick my hand into a laser and a note plays. Sometimes. :slight_smile: So now I'm working on getting this robust and working reliably.

The biggest issue (I think) is my stepper motor. I'm using this one:

I'm driving it with this shield:

And no matter how I tweak it, I can't get distinct "strings" to show up. You can SORT of see them. But not very distinctly. And that's causing issues with the light detection I think. (Not sure yet. But hey. One issue at a time.) Mostly I see a fan of the laser light with the areas I want to be strings ALMOST looking more distinct.

So is there a motor that would be faster? And would it work with that shield? Any advice would be fantastic! I really want it looking like it does in that video - with distinct strings, and almost no laser light between the strings.

And one addition from reading other threads about motors - attached to the motor drive shaft I have a cork which I just pushed down onto the shaft. The cork is flattened out on one side and has a little mirror on it. That's the only load on this motor.

Codewise, I'm calling this in a loop to step the motor:
myMotor->step(stepSize, directionToStep, DOUBLE);
delay(delayBetweenSteps);

I've got stepsize at 3 and the delay I've varied, normally it's around 3 - frankly I'm tweaking things to try to get this looking spiffy. And the direction to step is because the same routine is called to go forwards and backwards.

Thank you in advance for any advice at all!

Stepper motors have heavy rotors which will oscillate when suddenly brought to a stop.

This behaviour can be improved by adding mechanical damping, but it will still be
quite slow compared with a motor/actualtor with a lightweight rotor.

Commercial laser systems have exactly the right kind of voice-coil mirror driver, which
is basically just a ruggedised mirror-galvanometer I believe. I think closed-loop control
can be used or electromagnetic damping for open-loop. There are specialised fast servo
motors with iron-less rotors designed for very rapid angular acceleration, which might
be a reasonable compromise.

You can also split a laser beam with a diffraction grating, but you then you'll need
a sensor for each "string" since the beam isn't scanned in the time domain at all.

Thank you for the advice!

So if I am understanding you right, then I'm not going to get a fan like I want without a commercial laser motor? I googled, those look like $500 and up, so if I'm looking at the right thing that's probably not the best plan for me!

For the other motor you suggested - I'm not sure what I'm looking for here, but have googled a bit. If it's a servo motor, though, can I control that as well as a stepper motor? To make a "string" I have to get the motor to a specific position repeatedly, can that be done with a normal servo motor?

I'm thinking right now that it might be best to just make some compromises and use the motor I have!

I suppose one possibility that might yield a low-cost unit is to reuse an
old disk-drive head assembly - they are high spec voice-coil servo units
you can get for free with a dead drive, and figure out how to add a low
weight mirror to it (on-axis). Alas the nice closed-loop servo behaviour
relies on reading the servo pulses off the platter, not something that will
work once its opened up and the dust gets in.

For instance: http://hackedgadgets.com/2006/06/01/making-a-hard-drive-laser-oscilloscope/

I'm more interested in how the system detects that the beam is being broken by his hand? Where are the laser sensors located?

The light sensor is located right next to the motor. When I stick my hand in the beam, it can tell a difference in the reflected light.

The other way to do it is to have a mirror on a rapidly rotating motor. Then all you need to do is to turn the laser on and off at the right moment to get the fan. You will need some way of synchronising the laser to the motor, this involves a detector on the motor, normally optical, to give a pulse when the motor is at a specific point.
It is not dissimilar to a POV project.