how to rotate 100 stepper motors simultaneously using a microcontroller

I am new in the electrical engineering domain and I know very basic things about the microcontrollers.
I am going to control 200 stepper motors simultaneously using a microcontroller or microcomputer.

Could you please help me and let me know what product works best for me!?

is it possible to use a microcontroller (i.e. uses python language) and just hock up all stepper motors and run a program to talk with each stepper motors? Is there any easy way to stack microcontrollers so it builds up the potential of connecting more and more stepper motors?

I want each stepper motors to do some steps but it would be different than other steppers. Each stepper motor should step independently and freely based on the values that are come from the Master! I guess I need a 200 GPIO or some tools to be able to operate this for me! do you have any suggestions?
here is an example of a project that I like to do! please check out the link. Daniel Rozin, "Wooden Mirror," 2014 on Vimeo
Here we see that there are 200 stepper motors that each works independently! a camera takes and input and returns it to steps for each stepper independently! How can I control all of these steppers in a project like this?

I appreciate your help in advance.

This sounds like the dream that will never come true, will never be built.
Each stepper, using a necessary stepper driver needs 2 lines. 200 steppers will need a huge power supply.
I don't think You are serious about building this.

Arduino uses C++

Why build your own when you can buy an original for $150,000.00:

You are not the first to think about making your own "Wooden Mirror". The last time I saw this question come up I found this video about how the original was made: https://www.youtube.com/watch?v=kV8v2GKC8WA. The artist says: "Wooden Mirror was made from 875 Servo Motors."

You can get servos in bulk for about $1 each and another $1 per servo for the 16-servo driver boards. Figure a 200-servo array will cost at least $400. Are you still interested in making one? You will need something to process the video so don't forget to add a PC or Raspberry Pi.

The simplest stepper driivers need only a "step" and a "direction" input.
You could drive 100 motors in a logical 10x10 array with 100 such drivers with some added "and" gates (step motor on ROW and COLUMN and STEP. Add a direction flipflop and you can use the same motor addressing with "setDirectionLeft" and "setDirectionRight" outputs.) So, 23 logic pins to drive 100 motors.

You might as well replace the AND gates and flipflop with a small microcontroller (ATtiny104 or similar), at which point you can also think about changing the communications link. Some sort of multi-drop serial where you send commands like "M2SL"...

Thank you everyone for your answers.

Thanks John.

johnwasser:
Why build your own when you can buy an original for $150,000.00:
bitforms gallery | Artists, Art for Sale, and Contact Info | Artsy

I should mention here that I am not going to build Daniel Rozin's mirror.
The Daniel Rozin work is an example of what I am going to do with stepper motors. the only shared part is stepper motors and microcontrollers.

I also found that Adafruit 16-Channel 12-bit PWM/Servo Shield - I2C interface. it can controls 16 servo motors simultaneously and it can be built on that to get 996 servos. If I could find a driver that gets the servo input and turns it to stepper motor output I can use this special board! however, check what I found on the web!

I found this on the web (Daniel Rozin’s interactive sculpture is made of 832 moving tiles - The Verge).
could you please let me know what product is this?
I see that there is a board with 16 stepper motor channels that can control 16 stepper motors simultaneously.
plus I am wondering that what is this stepper motor? brand or name or details?

thanks for the help in advance

I can't find ANY commercial 16-channel stepper controller boards, let alone that specific one. I expect it is a commercial product. Looks like maybe based on an ATmega2560 chip? The 16 steppers need 64 pins so I don't think an Arduino MEGA 2560 would have enough pins on its own.

The steppers look like the common 28BYJ-48, a geared stepper used in many appliances. They are often driven with a ULN2003 transistor array.

Theoretically, the 28BYJ-48 only needs two signals. Haven't tried it myself, bought 7 of them and they came with a ULN2003 board with LEDs, so I just used that.
I have 7 running with a 1284P, and coded up 16 for a Mega just to see if would compile.

https://www.arduino.cc/en/Reference/Stepper
http://www.tigoe.com/pcomp/code/circuits/motors/stepper-motors/

"Wiring Code (for Arduino board):
This example uses the Stepper library for Wiring/Arduino. It was tested using the 2-wire circuit [discussed earlier on the same page]. To change to the 4-wire circuit, just add two more motor pins, and change the line that initalizes the Stepper library"
I don't see anything that limits the number of steppers you can use. Seems to me that only 1 motor is actually being commanded at a time by the micro, so the power supply needed may not actually need to be that big for the group of steppers associated with each motor.

"The 16 steppers need 64 pins so I don't think an Arduino MEGA 2560 would have enough pins on its own."

C'mon John, you know better. The common Mega2560 has 70 IO pins. Leave 0/1 for programming, and you have 68.
Use 2 more for serial to another board to pass commands along, and have 66. Two more for serial to a 3rd board even!

And a 2560 breakout board has 86 IO available:

CrossRoads:
"The 16 steppers need 64 pins so I don't think an Arduino MEGA 2560 would have enough pins on its own."

C'mon John, you know better. The common Mega2560 has 70 IO pins. Leave 0/1 for programming, and you have 68.
Use 2 more for serial to another board to pass commands along, and have 66. Two more for serial to a 3rd board even!

Oops... I forgot the 54 'data' pins did not include the 16 Analog Input pins which can also do digital I/O. After 2 for Serial that still leaves 4 pins for a high-speed serial communications channel like SPI or Serial1.

The ClockClock art objects are quite a bit cheaper than Daniel Rozin's mirror art, and they appear to have two independent stepper shafts per station.

Maybe you can buy the basic bits from the creators.

I found this on the web (Daniel Rozin’s interactive sculpture is made of 832 moving tiles - The Verge).
could you please let me know what product is this?

Why do you think it's a "product" ? If you're building multiple art projects that use hundreds of steppers at a time, you can afford to design your own PCB and have them built...

I have to say I find this a very reasonable and interesting question. And I do have some input.

First, forget steppers, although easy to drive, you also have to consider how to index them and thats a complication you dont want with upwards of 800 motors.

Servos are certainly the way to go, and the PCA9685 16 Channel servo board can have up to 62 chained on one I2C interface, theorectically. Thats 992 servos.

But thats not all, an ESP8266 can run several I2C interfaces, which could each run many servo boards.

I think some great art could be made from here, and the wooden mirror is just the start, if we can solve the technical problems.

Yes, something of this scope will cost serious money, it will not be less than £10 a servo by the time you have factored in boards , power supply and other hardware, so a 1000 servo drive capability will be more than £10000. But could be worth it - by that I mean could you sell such a thing at a profit? Maybe!

Now the next thing to consider is data bandwidth. A servo motor may be able to move full scale in say 0.1 seconds, and this could be caused by a single i2c command, lets say that's 6 bytes. so to move all the servos once persecond needs 6kbytes transmission. This does not seem much and is likely to be overshadowed by other processing needs. But don't forget that as well as multiple servo boards, multiple i2c interfaces, you can also have many ESP8266 boards, perhaps delegting control to a smaller number of servos to each.

Power supply? A 10 Amp supply can be brought for about £10 and may be sufficient for 16 servos depending on movement demand. So you'll need about 60 of those, or a 600amp supply. You may or may not be able to run this from a household plug as its about 3kw!

In terms of engineering I'd say start small, make a single ESP9266 control a "reasonable number" of servosperhaps 30 or 60 and once this is working, duplicate the power supply, processor and servo drivers at each location in the hardware. Scale it gradually as you get more pieces working and funds allow.

I think anyone seeing such a thing operating would find it a fascinating thing to see.

You are going to need competent engineering, funding, and fabrication, as well as safety to get this working, don't understimate the difficulty of that. But doable? Certainly.

Servos are certainly the way to go

Except that they are cheaply built, not intended for long term continuous use, fail with high certainty and so require frequent replacement. As Daniel Rozin learned the hard way.

westfw I like it. I was thinking to order a customize board! what I think I would need on these customized boards are the following components.

  • I want to code in python so I need microcontrollers that are compatible with that instead of Arduino microcontrollers (do you have any suggestions?).

  • I want each board to control 8 (for starting a prototype). so I need 8 stepper motor outputs on board. same as what Daniel Rozin had on his boards.

  • I want 8 microcontrollers onboard for each stepper motors. Plus I want to have all stepper motors drivers included on board too. is it possible? I don't want to challenge myself with wiring and other stuff. I like to focus on programming and modeling part.

  • each of these customized boards should be able to be connected to the i2c bus. I want to have this potential ability to rotate all steppers simultaneously if needed. can I do this by i2c bus?

  • is it possible to have a module on boards so I connect through wifi or Bluetooth?

Do you think can I order it to be manufactured online? How much that cost me if such a board is possible to be manufactured?

what about the other limitation and components on board. resistors.... I have no idea if I need to have prepared a whole map of details and components or not.

Thanks once again everyone for your helpful comments

atash3712:
I like it. I was thinking to order a customize board! what I think I would need on these customized boards are the following components.

You stated your are new to electrical engineering and now you are creating a custom PCB. That is a pretty ambitious goal unless you are planning on hiring someone to design/build it for you.

Not that you can’t do it, but I’d start much smaller and, as you learn, build it up.

blh64:
You stated you are new to electrical engineering and now you are creating a custom PCB. That is a pretty ambitious goal unless you are planning on hiring someone to design/build it for you.

Not that you can't do it, but I'd start much smaller and, as you learn, build it up.

You are right. I am a beginner in this domain but I am good at programming and mathematical modeling. The only limiting factor for me is to get all stepper motors to work together smoothly through boards. Once I figure it out then the second part is programming which is very exciting for me.

I am thinking about hiring someone probably but in a year maybe. I will try to build my knowledge in this domain as much as I can. I like to have some knowledge.

So far it seems to me that the customize PCB is the best solution.

Thank you for your answer.

westfw:
Why do you think it's a "product" ? If you're building multiple art projects that use hundreds of steppers at a time, you can afford to design your own PCB and have them built...

I think about this. Thanks

sparkmarkyme:
But don't forget that as well as multiple servo boards, multiple i2c interfaces, you can also have many ESP8266 boards, perhaps delegting control to a smaller number of servos to each.

I like ESP9266 idea. Need to do some research about it. Thanks