Motor suggestions for rubiks cube scrambler

Hello everybody! My name is phantomoperator and I just recently joined this forum to see if I could get some advice on how I should approach a very specific problem of mine.

A friend of mine and I are big into solving rubiks cubes and we both can currently solve them in less than 20 seconds. Here is a our dilemma. We hate scrambling the cubes. It takes us longer to scramble than actually solve the thing. What we want to do is a build an arduino powered scrambler where all we have to do is a press a button and have it scramble a cube.

Here is the problem with that. We dont know whether or not it would be best to use servos or stepper motors and even then, how to go about controlling them. We were leaning towards servos since they are small but they would have to be continuous rotation to work with our design.

Any thoughts or input would be greatly appreciated. thanks!

This is an interesting problem, to say the least. You’re going to have to get potentiometers to ensure you are rotating 90 (or 180) degrees, instead of just a timer. You’ll get more consistent results that way.

As for motors…I’m positive you could take apart an RC car and use the motors in them. I don’t know the precise force required to turn a cube, but it isn’t a lot, and a motor found in an electric toy should suffice. \

Best of luck!

If you really want to challenge yourself, you could make a robot that solves the cube :wink:

Already been done, in LEGO–I remember seeing a video several years ago. Incidentally, that means that LEGO motors ought to be powerful enough. So would a heavy-grade hobby servo.

I’d go with a paired system: Stepper motor (which, in code, is simply told to go X steps, I think *) with a servo on whatever holds the cube to actuate jaws or what-have-you. NEMA-17 stepper motors are cheap and if they’re powerful enough to drive a 3D printer, they’re almost certainly powerful enough to drive a cube scrambler. And they’re fairly small.

As far as programming, you’d essentially say: Let X, Y, and Z be random numbers, and let A, B, and C be motors. Drive A to X, B to Y, and C to Z, reset all numbers, repeat n times. Not sure quite how to implement that, though; it’ll depend somewhat on your system.*

Already been done, and then some: http://www.youtube.com/watch?v=X0pFZG7j5cE

As for programming, here is how I would do it:

j = random number between n and m (I’d do 25 and 50)

for (unsigned int i = 0; i < j;i++)
generate a random number 1 to your total number of motors

then turn that motor either 90 or 180 degrees.

I like the stepper motor idea. For our design we would need to control 5 motors. Our designs involves having little fixed jaws that fit around the center piece of the cube. We concluded that in order to fully scramble the cube we must turn 5 of the six faces.

Does any one have suggestions on a controller board?

How about a RAMPS 1.4 like they use for RepRap 3D printers.
That will handle 5.5 steppers…one is a split signal.

That would work. Would I be able to control all of the motors independently?

You have 5 independent drivers so yes.
If you watch any RepRap run you can see steppers moving at the same time independently.

The 0.5 stepper is usually used on dual Z printers like the Prusa.
You put 2 steppers on one driver each at half power but they move at the same time anyway and move the same axis in unison so that is fine. Still the others are independent in that setup.

Awesome. That will work perfectly. Now my last question is how will we go about telling the motors what to do. Whaat we were hoping to do was have this be completely independent of a computer. We wanted to have a button that we could press and it would automatically generate a random scramble and mix up the cube.

Populate RAMPS shield with stepper drivers (Pololu).
Attach Arduino Mega to RAMPS shield.
If you need data storage use SD card shield (maybe boot load from it).
If you want an interface attach an LCD or touch screen shield.

These are all parts often used to build RepRap printers.
When used as a printer you can tether the printer with USB (emulated serial) or use a SD card to standalone.
The Arduino provides the USB connection and the SD card shield is obviously for the SD card.
Program the Arduino yourself instead of using a G/M code interpreter that would usually read the G/M code from the card when this is used to be a RepRap printer control.

The platform is still Arduino underneath.

http://www.makergeeks.com/a4stmodrmo.html
http://reprap.org/wiki/Arduino_Mega_Pololu_Shield
RAMPS 1.4 - RepRap - Test code at the bottom.

Please be aware that the test code uses the Arduino digitalwrite function which is fast enough but there are faster ways to toggle Arduino pins.

In an attempt to help you navigate the thicket of material you will probably find written about this, and similar subjects, I’d like to point out something.

I think I’m correct when I say that “servo” is a use for a motor, not a type of motor.

All sorts of motors (including stepper motors) can be used to implement a servo function.

If you keep this distinction in mind, it will probably save you a lot of grief as you wade through what has been written by folks who didn’t know about the proper use of the term “servo” (and who enthusiastically mix apples with oranges when giving advice (they are trying to be helpful, but …)).

Blake