I am currently building a 3D scanner turntable and I can't figure out what stepper motor I should buy.

Here are some things to consider:

  • The plate will be made out of 3/4" MDF and will be 2' wide (diameter);
  • The plate's weight will be supported by a ball bearings system (just like a lazy susan);
  • I need to support objects with a weight up to 5 pounds;
  • The motor's shaft will be placed directly in the middle of the plate (no gears system, for maximum precision and simplicity);
  • I need a motor accurate enough to be able to calculate/simulate camera angle;
  • The turntable will turn at a very slow RPM (1 RPM or less);
  • I will be programming everything in a C/C++ program.

Here are my questions:

  • NEMA-17 or NEMA-23 (and why)?
  • What controller would I need? How can I communicate with the motor from a C/C++ program (Arduino or not)?

I was considering these:


  • Arduino UNO with Adafruit Motorshield V2
  • A NEMA-17 stepper motor with a 0.9° step angle



  • 1
    \$\begingroup\$ "no gears system, for maximum precision..." Oh... oh my... \$\endgroup\$ – Ignacio Vazquez-Abrams Jul 18 '15 at 3:52
  • \$\begingroup\$ Well what do you suggest then? \$\endgroup\$ – Golitan11 Jul 18 '15 at 5:35
  • \$\begingroup\$ A decent pair of aluminum gears can get fantastic precision from almost any junky stepper motor. \$\endgroup\$ – Ignacio Vazquez-Abrams Jul 18 '15 at 5:46
  • \$\begingroup\$ Do you have any link I can look at? \$\endgroup\$ – Golitan11 Jul 18 '15 at 5:47
  • 1
    \$\begingroup\$ or a worm and pinion could give good precision too. just use a brake and drive in one direction only to eliminate backllash. \$\endgroup\$ – Jasen Jul 18 '15 at 9:54

As Ignacio Vasquez-Williams so elegantly put it, "Oh my."

You are going about your motor/drive selection backwards. The very first thing you need to do is figure out just exactly what angular resolution you need. "accurate enough to be able to calculate/simulate camera angle" does not cut it. You assumed a motor with a nominal 0.9 degrees/step (+/- 5%). Is this enough? Note that, at the edge of your table, this corresponds to a step of 12 x sin(0.9 degrees), or 0.19 inches. Is this close enough, or do you need better resolution? Since you seem to be worried about precision, I suspect not. Let's say, just as a starting point, that you need 10 times better resolution, or .09 degrees/step. Well, first of all, you can't get that - the intrinsic motor position accuracy is .09 degrees, and you simply cannot do better than that - for direct drive. I'll get back to that.

I notice you've looked at a microstepping driver, and it might well have occurred to you that you can use this to get finer steps than the standard spec allows. Well, yes you can, but there are two costs. First, as you go to finer steps you get increasingly concerned with the actual accuracy of the drive/motor combination, and that is not as good as you think it is. Second, as you increase the number of steps you decrease the torque available at each step. Since the friction resisting each step is not uniform (you don't really think a lazy susan bearing is really high-quality and uniform, do you?) the amount the table will move at each step will vary. See http://www.euclidres.com/apps/stepper_motor/stepper.html, for instance, and do some googling on "stepper motor microstep performance". Particularly at low speed, the tendency of the table to stop and start at each step gets you into the problems of static friction and stiction, which are really inconsistent. You may be OK if you are willing to keep the table moving, and 0.9 degrees is 400 steps/minute, or about 7 steps/second, and if you microstep to smooth the motion you will tend to override small local variations in motor/bearing performance (that's actually what microstepping is good for) but you will not get accuracy better than the motor allows.

This means that you would have to take your pictures on the fly, and I doubt you want to do that.

So let's assume you want better performance, AND you want static locations: move, stop, picture, move, stop, picture, etc. What can you do?

Well, you can put a reduction gear between your motor and your table. As both Ignacio and Jasen have suggested, this can give excellent results. Gears, especially worm/pinion gears, will also cost you, both in the gears themselves and in the mounting assembly you'll need to hold them in place.

For what you're doing, the classic cheap approach is the timing belt/pulley setup. It's still not cheap though (in light of the fact that you're having trouble with the cost of your possible controller). You should be able to get a 10:1 reduction without too much trouble, and that will give you both a 10x increase in angular resolution and a 10x increase in available torque on your table. You'll want a precision pulley/belt system, not something scrounged from a car. You'll also need to provide constant tension on the belt, and while that's not difficult it does need to be considered.

If you go this route, and if you decide you don't want microstepping, be aware that the motor you've selected is too big for a ULN2003, no matter how much their low price attracts you.

Another thing you'll need to keep in mind is that, to get high accuracy, you'll need to put the axis of your table drive very precisely at the center of your lazy susan. You can do this quite simply, but you need to pay attention to what you're doing.

Whatever approach you use, since you're using a stepper keeping track of position is pretty straightforward. You put an optical sensor on the rim of your table and detect when a particular spot goes by, then count motor pulses to tell you how far you've gone. It's called "indexing", and it's easy and effective - as long as you remember to run an index cycle before you start working, and as long as the detector reliably distinguishes between two successive steps, and as long as nothing happens to make you lose count.

| improve this answer | |
  • \$\begingroup\$ Do you have any products in mind (gear or belt/pulley)? \$\endgroup\$ – Golitan11 Jul 19 '15 at 3:45
  • \$\begingroup\$ B B Manufacturing (bbman.com) makes a wide variety of pulleys and belts. There are lots of other companies, though. \$\endgroup\$ – WhatRoughBeast Jul 19 '15 at 3:55
  • \$\begingroup\$ Just to be sure, are you talking about a timing belt (like you said) or a flat belt? What is the benefit of one over the other in my situation? \$\endgroup\$ – Golitan11 Jul 20 '15 at 6:13
  • \$\begingroup\$ A timing belt (one with ribs on it) which meshes with a timing pulley (looks sort of like a gear wheel, but wider and often with a rim on either end) is critical. A smooth belt on a smooth pulley will slip. And you don't want that. Timing belts aren't as precise as a good set of gears, but they are much easier to set up, and if you go with a belt with many ribs per unit length you can do quite well. \$\endgroup\$ – WhatRoughBeast Jul 20 '15 at 12:36
  • \$\begingroup\$ Excellent. Finally, how would I make this using a reduction system (let's say 10:1 like you said)? In other words, if I have a small Adafruit timing pulley on my stepper motor (with a 6mm wide GT2 timing belt), how would I setup the other way (the turntable) to make this a 10:1 reduction system? Would I have to glue another belt around the table to simulate a big gear or there are much better options? \$\endgroup\$ – Golitan11 Jul 20 '15 at 16:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.