Which Arduino to buy?

Hi all! I have been hatching up a project for a couple months now, but had no idea how to achieve fine motor control. Basically I'm wanting to build a poor man's CNC metalworking machine for a specific job. Then I discovered stepper motors, which in turn lead me to discovering Arduino.

I'm going to need to control 9, possibly 10 stepper motors for this project, all working together in sync. Could someone advise me which Arduino boards can handle that many outputs, and which boards to avoid? Cost is a consideration as well, but I do need a board that can handle the project.

In case it's not blatantly obvious, I'm a complete Arduino novice, so any advice you can offer will be gratefully received.

Thanks!

I bought an Arduino Due because it has analog outputs called DAC0 and DAC1. I found out its RAM is 96 kilobytes, bigger than other Arduinos. I like it. It works as expected.

It sounds like you may been a little extra Go-Juice, so I would agree with AmbiLobe.
In some project, people also use more than one arduino, but I don't think you need to go that far yet. As you progress tho, keep it in mind as an option.

Is it possible to have one Arduino controlling other Arduinos?

Yes, arduinos can communicate with each other.
Here is a test of that:
http://www.instructables.com/id/Test-arduino-to-arduino-serial-using-softwareSeri/#intro

AmbiLobe:
I bought an Arduino Due because it has analog outputs called DAC0 and DAC1. I found out its RAM is 96 kilobytes, bigger than other Arduinos. I like it. It works as expected.

I am new to this stuff as well (I do have a bit of experience in mechanical design) ....

PWM is good to control the motor speed (motor on the head of a lathe or mill for example) but when you are interested in controlling the X,Y,Z axis I believe that you need digital control. Digital output is also what the stepper motors are expecting.

ADC might be used to verify the location on a given axis but I have a feeling using digital input to zero calibrate the stepper motors would be more reliable not to mention more in line with what happens when a 'good' machinist is using a manual mill or lathe.

Unless one is talking about something along the lines of microengraving then relays, servo drivers or power transistors would be needed. Any of the Arduino boards should have an adequate number of digital pins to control 3 axis plus a power head. I think the optimum choice is going to come down to form factor, cpu power and ram. The other though that occurs to me is that using something like the UNO or the Mega that has a number of motor control shields (Adafruit, Sparkfun and SainSmart come to mind) available could be advantageous (no point in reinventing the wheel).

The hardware index lists all the 'official' Arduino boards made and the differences between them.

I think the first thing that I would do is a google (not bing) search for Arduino Shield and see if there was something appropriate. If so then that may control the choice of microcontroller board.

Now my stupid question:

I'm going to need to control 9, possibly 10 stepper motors for this project

Why? I can see three for X,Y,Z; one for turntable and possibly one xy rotation.
With the power head (but I would use straight DC rather than a stepper for that) that brings the count up to six.
Stock feed could add one.
I have no idea what tool change would require. That would depend on whether you are driving the tool (as in a mill) or the work piece (as in a lathe). Of course you could be driving both. If so that is going to be one very complex machine.

Use The EasyDriver Stepper Motor Driver + Arduino
see this URL: http://bildr.org/2011/06/easydriver/
each stepper motor: 1 digital pin for direction, 1 PWM pin for control (1,600 steps per revolution)
(actually I do not believe that has to be a PWM pin ...
I think any digital pin would work depending on the speed you need to drive it)

I will go so far as to make one prediction:
You biggest problem will be minimizing backlash on your drive screws or stretch in the drive cables (depending on you drive choice).

Suggestion:
Use two split nuts on your drive carriage for each axis: one in a fixed position, the second adjustable.
Periodically adjust the nuts so that they ride snuggly against opposite sides of the thread.
The nuts should be a softer metal (brass) than the screw (steel) so you can replace them when wear becomes a problem.

Cardynal:
I'm going to need to control 9, possibly 10 stepper motors for this project, all working together in sync. Could someone advise me which Arduino boards can handle that many outputs, and which boards to avoid? Cost is a consideration as well, but I do need a board that can handle the project.

You will need some driver circuit to take the weak 5V signals from the Arduino to something with more beef. Most of these simplify the driving as well so you only need 2 pins (maybe a 3rd to control "Enable", but it can be common for all motors). 10 x2 is a little too much for vanilla Arduino, so at least the Mega. The Due only has 3.3V so you must find a shield or driver that can take that as input - most are 5V.

The software - The Arduino can control that many signals without problems. I presume the actual convert-fancy-shape-to-steps is done on your pc, the Arduino just being a converter of serial controlinfo (typically Gcode) to moving steppers (typically in straight lines, controlled speed)

And commenting on the others answers: Any pins will do, even the "analog input" (they can be driven as a simple digital I/O, too). You even have pins left over to drive a local LCD display.

If you want the safe solution get Mega 2560 (Une is similar size and price, it's faster and more capable but I believe Mega is sturdier).
But stepper driver circuits are cheap, if you buy few of those you only need 1-2 pins for each stepper (my recommended choice). With inventive programming, circuit skills and knowledge of Binary you can get by with about 5 pins for the whole unit.

If you manage to reduce the motor count (stepper motors are expensive and you should only need 3 steppers for basic CNC metalworking) then Leonardo is a cheap choice.

This recent post has useful information regarding stepper control steppers on arduino - #2 by andsetinn - Project Guidance - Arduino Forum

The reason for so many stepper motors is that I'm using 6 cutting tools plus a feed mechanism, two bump stops, and a way to lock/unlock the stock collet.

Hey, when I dream, I dream big! lol

Sounds interesting .... enjoy.

You have to walk before you can run, the noob learning curve is steep(ish) and the building is time consuming work. I would start with simpler machine and add to it as you gain experience.

Another option since it is specifically CNC would be to check out: www.linuxcnc.org. People have already done a lot of work in this specific area.
They are open source but admittedly they are not as big on building your own hardware as using already made controllers and steppers.