I am building a setup where I want four linear stepper actuators to move at the same speed to the same position. I found some relevant discussion, but I am still confused. The plan is to use a combination of 4 Actuonix stepper motors (Actuonix S20-50-38-B Stepper Actuator) and 4 Stepper Driver Board TIC T825 controlled by Arduino Mega 2560. I have a few questions here:
should I use serial or I2C control? what's the pros and cons?
Can I break out a single control signal output from Arduino into four lines and directly connect them to the actuators, or do I need some transmitters?
is it possible to control four actuators separately but have them synced?
How should I plan out the powering and shields for the circuits?
I2C is a bus using 2 pins. If the drivers have I2C and they can be configured having different addresses I2C can be used. Making the steppers move exactly at the same time will not work. On stepper at the time can be commanded.
Using dir/step the same step output can be connected to all 4 drivers. If direction is the same for all steppers, do the same to the dir line.
What are the demands for "sync"?
Sum up the stepper current needed and get a power supply delivering 25 - 50% more.
thanks! The device is built to evenly stretch a square fabric at the same time toward four (+-x and +-y) directions. It does not to be extremely precise, but it is better to have them start/stop moving at the same time to the preset position.
It seems to me that i'd better use a dir/step and have the same pin directly connected to all four drivers?
That sounds like the best choice.
Do some thinking how You will proceed when setting up the rig the first time. It's not a problem to disconnect 3 drivers/steppers and move one stepper to the desired position. Then do the same to the other ones, one a the time.
Is within a step inside of 10 us or 1us or 0us precise enough? You could use digitalWrites or on AVR you could use low-level port writes like PINB = 0b1111 and reserve flexibility for independent motion.
Here's a sim of an arduino coordinating random vectors of motion for 6 steppers/driverboards with digitalWrite():
They are not used in that simulation. They are connected to the hard-wired limit switch pins on a RUMBA/RAMPS 3d printer controller board that I was playing with with other simulations. There's a link in the comments to a simple g-code interpreter sim.