Controlling 64 stepper motors with arduino

arduinopicstepper motor

I have seen many post on this site for controlling stepper motor with arduino.
And arduino is pretty good at it if provide with good shield/Driver.
My query is How can is use to arduino control more than 2 stepper motors i.e(64 stepper motor). It seems to be a huge project for me.
Each motor will move at same speed but won't have same steps. More like MIT inForm

For now we are just making a prototype.
I have attached the internal structure of or device
where we will be using full stepping mode and only 2 pins for controlling Stepper motor as rest of the 2 pins are just complement of first 2 pins

a  b  a' b'
1  0  0  1
1  1  0  0
0  1  1  0
0  0  1  1

our basic theory/logic is arduino will generate 2 pulse of each motor pass it to serial to parallel converter and this will further send the pulse to PIC that will generate rest of the 2 pulse and pass it to stepper motor. Each pin on arduino will generate pulse for 4 stepper motor
i.e. 8 bit per pin.
I will be using 28BYJ-48 stepper and ULN2003 having configuration of stepper motor as 64:1 ratio
the thing is at what rate I need to send 128 bits(8 words) of data from arduino to shift register. so the motor should run at decent speed
So any one can help us to achieve this and guide us with the project.
All reviews are welcome.

Best Answer

I will preset a differnet approach that i would use if i where you:

1- Use a SPI or I2C based stepper motor driver like NCV70521 , L6470 , DRV8811 or similar ICs , this will save you from writing the commutation software for the stepper motor ( if micro-stepping is needed ) . These also work in full and half step mode.

2- Focus on the protocol of communication :

a- if SPI is choosen (easiest , but you will require 64 pins (chip select) , offcourse you could you decoders / demultiplexer and similar logic ICs to derease the number of needed pins from the microcontroller.

b- if I2C is choosen , then 2 pins of the microcontroller are enough to control all these motors ( SDA and SCL ) but you have to configure different address for each driver.

the advantage of this mode is that the speed or steps are send serially as commands. In your approach you might face some problems in speed , if want to toggle pins at high speed arduino digitalWrite might not be suffcient.