Which Arduino board for stepper motor?

Hi All,

I'm looking for some help on choosing the right board for my project. I've never used Arduino before but am a fairly capable programmer.

My project is to use a programmable board to control a powerful stepped motor that can turn a threaded steel rod to control the rise and fall of a 9kg object. I am hoping that with the pitch of the thread on the screw this will lower the overall torque required for the job but would appreciate some ideas as to what you think might be a powerful enough motor to do it.

I am then looking to have a 4 button interface and when the 4 buttons are pressed they move the object up or down by 1mm+/- or all the way to the top or all the way to the bottom.

I'd really appreciate any help and advice that can be given and links to any products you think suitable.

Thanks in advance!

Any Arduino will do. A single stepper will require at most 4 logic lines, even done simply your buttons take a I/O each, and limit switches (top and bottom) each take one.. and that's with just a switch per input, which is wasteful IMO, but.. total of ten.

You are going to need a stepper driver circuit, which type depends upon if it's a Unipolar or Bipolar stepper.

For each stepper you want to control, depending on your circuit, you will need either two or four logic I/O lines. The four line method provides for finer stepper movement, IIRC.

Here's the thread where we are discussing this at the moment. My current design uses Unipolar steppers, with a stepper driver circuit built from discrete components. UL2003 is another common driver, a google for "stepper driver circuit" will yield quite a few options, most of which will work as long as they accept logic-level input.

http://arduino.cc/forum/index.php/topic,60571.0.html

Get familiar with the stepper library in the playground, most of what you'll need is there!

Thanks Focalist.

I've just started reading that thread.

I will only be needing the one motor. Could you explain what the stepper driver circuit is for and does the power of the stepper motor effect any of it?

Well, the circuit is the switches that energize the proper coils in the motor to make it turn how we want. The transistors in that circuit carry the current that will drive the motors, so the transistors should be able to carry at least as much current as the motors will draw, if not more. The arduino provides logic-level outputs on it's pins, which through the drive circuit provide power to the motor.. because you can't run a motor off the power levels a logic chip can handle. Basically, the transistors are valves, and the Arduino turns the handles. The arduino only cares that it's turning the handle on or off.. it's the transistor that has to be able to handle the "pressure in the pipe".

(Pausing a moment to let the silent rants run dry. Yes, I know it's not a good analogy, but for this purpose it works)

So, the circuit is the same for any stepper, but the transistors should be chosen so that they meet or exceed the current demands of the stepper you choose. My current design actually is bad in that I used 2n3904's, which have a really low current capacity, about 200ma- while my motors can draw substantially more. Though it's working, in time it will burn out the transistors and I'll replace them with something more robust in terms of current.

Note that there are IC's out there that contain the same circuit, or the equivalent.. I made mine of discrete components because I didn't have a stepper controller IC laying around. UL2003 is one that seems pretty popular if you choose that route. As long as your driver circuit can handle at least the draw of the motor rating, you'll be fine.

As for your motor, now you are talking mechanics. Pull out your physics books and do the torque analysis.. that will be your main constraint. How you provide that torque is then a matter of choice: direct drive it from the motor (high speed, high current demand, expensive motor) or use a reducer/gearbox (low speed, low current demand, cheap motor). Even the "low" and "high" speed are relative.. though for the sake of simplicity and cost, I'd stay with Unipolar steppers (six wire) rather than Bipolar (four wire).

Thanks again for that.

So say I bought the uno arduino and this motor:

http://uk.farnell.com/jsp/displayProduct.jsp?sku=1010728&CMP=e-2072-00001000

How do I choose a control board to go along with it?

@Chems,

Lots of good information from Focalist!

Also take a look at "Arduino Power" here: http://arduino-info.wikispaces.com/ArduinoPower
Stepper motor overview here: http://arduino-info.wikispaces.com/StepperMotors
A possible driver board here: http://arduino-direct.com/sunshop/index.php?l=product_detail&p=82
A tiny $4 motor+driver to use to test your software ?? http://arduino-direct.com/sunshop/index.php?l=product_detail&p=126

DISCLAIMER: I mentioned stuff from my own Shop...

Thanks for those links Terry. Really good reading.

I think I've chosen my hardware software combo and it goes like this:

Arduino Uno
EasyStep 1000 - http://www.active-robots.com/products/motorcon/active-stepper.shtml
NEMA23 2.7a stepper - http://cgi.ebay.co.uk/ws/eBayISAPI.dll?ViewItem&item=260785710533&category=42899&_trksid=p5197.c0.m619

I've read as much as I can about it all and am fairly certain these all match up. Am I right will I be able to get that motor going with that hardware and some power?

Ah you've chosen an 8-wire stepper so you can choose whether to wire it unipolar or bipolar - wise precaution! However that specs don't make it clear if the figures are for unipolar / bipolar-series / bipolar-parallel connection. You will have to measure the winding resistance to work that out for certain.

The stepper driver you've gone for is unipolar and doesn't do constant-current driving other than by a series resistance in the motor supply.

The motor has low impedance windings so you'll either have to run a low supply voltage or add series resistors in the supply to the driver board (the latter has the effect of approximating constant current drive and giving faster stepping rates - but at the expense of power loss to the series resistors (which will need the right power rating).

You have the option of upgrading to a bipolar chopper constant current driver later.

You mentioned worries about the torque needed - have you calculated/measured the torque you need?

Thanks for that Mark. I haven't figured out exactly how much torque I need. But if the motor can't turn the standard thread when the time comes I will invest in a ballscrew and nut to reduce the resistance.

Are you saying that that motor board is ok, I couldn't find a bipolar one that did upto 3A that wasn't really expensive?