How to run 8 nema 17 motors on one program.

Hey everyone,

I am new to to using arduino. I started with the arduino uno, cnc shield v3, and a DRV8825 drivers. I was able to run all 4 motors on the same program independently. the only reason I got this setup was for learning how to program. I am now looking to control 6 nema motors and 12 pistons. sounds wild I know but it gets simplified. I am moving 3 separate plates each plate will have 2 nema 17 motors driving them up and down. On a stationary plate I will have 4 12v pistons that will all actuate at the same time and same speed. I will have another plate with 8 12v pistons on it that will actuate at the same time and same speed.

so an easier way to look at it is like this

Plate 1: 2 nema 17 motors both drive the plate up (step-1)

plate 2: 2 nema 17 motors both drive the plate down (step-2)

plate 3: 2 nema motors both drive the plate up (step-3)

Plate 4: actuates 4 12v pistons at the same time (step-4)

plate 5: actuates 8 pistons at the same time (step-5)

Any help would be awesome if this is unclear I can make a drawing of the plates and how everything is moving. My big issue is trying to figure out how to drive all the components with one controller. Again I knew the cnc shield would not be able to do what I wanted I was using it just for a learning tool.

You can just about connect 8 x DRV8825 drivers to an Uno - that will require 16 I/O pins and you can use the analog pins as digital pins. However it might be better to use a Mega which has a lot more I/O pins.

If you need a high step rate for all of the motors at the same time you may find that a 16MHz Arduino struggles to keep up.

Stepper Motor Basics
Simple Stepper Code

You can wire several steppers to a single stepper driver if the A windings are in series and the B windings
are in series.

Since stepper drivers control the current this will give each motor full drive (assuming enough supply

Of course I'm assuming you want the pairs of motors you mention in steps 1..3 are meant to move in

Why not stick with a motor driver for each motor, and just wire the control signals in parallel to the motors that move in parallel?
Unless you need them separately controllable for fine calibration or leveling alignment or something.
Or you could arrange some DIP switches to allow individual motor control, or parallel motors control.