Controlling many stepper motors? beginner!

My goal is to use a dozen or so stepper motors to move a kinetic sculpture from pro-programmed routines.
I'm not new to steppers or drives and have built several CNC machines over the past few years.

I'm looking for a suggestion on what Arduino to buy to get familiar with the basics, learn the programming language, and integrate with step/dir signals to stepper drives.

Any suggestions for a complete newbie to Arduino?

Thanks in advance everybody and looking forward to participating in the forums!

Here's a a simulation of several coordinated steppers on a mega:

For a dozen or so steppers you might want two dozen or so pins.

A Mega with RAMPS shield will give quick access to 6 steppers, but adding more steppers is really a matter of wiring. In theory a Mega could handle 30 steppers, but depending on processing requirements it might start to run out of steam.

At one time I designed some modular stepper "shields" which could drive many steppers mainly for 3D printers, but for most 3D printers they don't need that many steppers. Kinetic sculptures are perhaps a niche application which require lots of motors.

For practical purposes, if you have a lot of motors it is better to have multiple modules that each handle a few motors. Then the modules are connected in a comms network.

Buy something cheap like an UNO clone.

One good calculation would be to figure out how many steps per second your whole set of motors will require, and to size your uC based on that.

If you need to do 48 steppers at 100RPM and 1/32 microstepping, you would need to manage 512000 steps/sec, which won't fit into a Uno with AccelStepper.

I'll only be controlling 10 or twelve at most for this project.

I'm going to be a bit of a contrarian here and go in the opposite direction :slight_smile:
Since wiring will likely be a serious consideration, and hardware is cheap, maybe it would be simpler to use a dozen separate stepper controllers.

An ESP8266 running AccelStepper library and a a basic stepper driver (e.g., TB6600) is all you need to control one motor and the communication/coordination between motors can then be wireless over Wi-Fi. This means that you now only need to supply power to each node.

Yes, motors and especially drives have gotten cheap. space is no problem as this is a large stationary sculpture with plenty of room for the smarts.

I've built over a dozen CNC machines of various types, Mill, Router, laser, etc so very familiar with the hardware and wiring.
Where I'm weak (nearly non-existent ) is how to get a program on a microcomputer and familiarize myself with writing code that is specific to the machine controller.

Usually, it's a matter of drawing a part in CAD, then generating G-code with a CAM program then loading to Mach 3 (machine control software) and running the file.

I went ahead and ordered this off of Amazon. $35.99 and here tomorrow. I should be able to learn the basics with it?

https://www.amazon.com/gp/product/B01D8KOZF4/ref=ppx_od_dt_b_asin_image_s00?ie=UTF8&psc=1

Here's an example of an ESP32 processor with a 1.2A stepper driver module. ESP32 supports Wi-Fi and BLE (bluetooth): [EOL] ATOM Stepper Motor Driver Development Kit (DRV8825) | m5stack-store

If this could all be done with G-code, then I'd suggest getting an arduino (just about any kind will do I think) and loading grbl onto it, then using a G-code editor to send commands, but the problem with this is how to coordinate 10 such drives. I assume they need to move in a coordinated fashion?

Yes. It has a very basic stepper driver (UNL2003) but you will be able to run motors with it. Just don't expect high performance (super smooth stepping at high speeds, etc.).

However, you can use it to learn how to control stepper motors, and if you decide that you can do what you need with g-code, it will also run grbl.

Yes, most definitely a coordinated movement. I could create a point cloud in CAD and generate G-code from that.
I want to be able to have all the motors running in unison so I can get wave-like motion effects.

The 28BYJ-48 is a good/cheap motor for starting kinetic sculptures, if you're happy with it's low speed (<12RPM). I posted code on this site to drive in theory about 150 of these at full speed with a single classic Nano (Uno R3) and a bunch of TPIC power shift registers (two motors per TPIC). Also on this site is a practical application with 48 of these motors. Use the search field on top of this page. Don't start this before you have gained some experience with Arduino and coding.
Leo..

Typically a stepper moves 1.8 degrees per step.(pulse) direction is determined by a high or low signal to step driver.

LAWRENCE FEIR SCULPTOR
www.lawrencefeir.com
336 274-4846

Not if each axis has its own controller like I'm proposing. Then you're just dripping g-code to the X-axis but sending it to 10 different controllers.

I like the idea so much I may prototype it myself!

I meant that I wondered if the steppers had to turn their shafts back and forth within 180° (100 steps), as on a wall installation pivoting panels, or maybe, looking at that link, joints on a figure through an arc. (360°=200 steps? or 360° geared to be 10000 steps? etc... )

I think the mathematics and synchronization for "wave like motion effects" could possibly be done with a FastLED animation, but with an extra routine after the FastLED.show() step. A routine something like a to-be-written "stepperShow()" could 1:1 translate the 24-bit/16 million color pixel color information from a coordinated leds[NUM_LEDS]; matrix into 0-255/0-65535/0-16777216 stepper positions, or into changes towards those positions.

Then I'd think the 10-axis coordinated movement would have to happen before it gets translated and distributed into the separate controllers' X-axis Gcode receivers.

Yes, the motion would be preplanned and sent out at an appropriate interval. Doing it over wi-fi should be more than fast enough to keep everyone synchronized (guessing here).

currently, the plan is to use geared steppers to run a series of small winches that will reel and unreel on command thus raising and lowering components of the mechanism.

AsI mentioned before I'm well versed on the mechanical side of things and have a shop full of CNC machines I've built over the years.

All of the code I've written in the past 30 years has been for a CNC machine controller (Mach3, 4 )
I'm assuming there is some program run on a PC to write a program and then upload to the Arduino?
A truck bearing a smile will be here with my Uno3 tomorrow. I'm bracing for the learning curve.