Controlling 8 stepper motors from one Arduino 328

I have been considering a new project for a small/simple/cheap lighting system

essentially one Arduino 328 could control 8 stepper motors and 8 lights/ledpanels/mirrors (to be decided)

  • using shiftout, the Arduino would write to 5 8-bit shift registers (hc595)
  • the first 4 shift registers would drive darlington outputs (ULN2803) which then drive the steppers directly
  • the last shift register would drive the 8 light channels corresponding to the motors

DMX will be included but is not an issue as I have written lots of software based on MattHertels absolutely brilliant DMX library

I have experimented with "accelstepper" and it is a really well written library
I want to make the improvement to add the serial>stepper software section

Has anyone else had any experience with writing to stepper motors in a serial fashion rather than directly pin2pin ?

:@)

I am sure you could write some software and build some electronics to accomplish the task, however, here is a solution that will allow you to use servos without a headache. It has 16 servo channels and a small well written library.

Headroom:
that will allow you to use servos without a headache.

Continous rotation may be a requirement - servos dont have that, and if they do they have lost the positioning ability.

mcnobby:
I have been considering a new project for a small/simple/cheap lighting system
essentially one Arduino 328 could control 8 stepper motors and 8 lights/ledpanels/mirrors (to be decided)

when I have looked into such stagelighting stuff, the insides are very simple - just like you describe. Apart from the profit stuff, the price for the bought units includes the development to get the mechanics sturdy and reliable and simple interfacing/cascading. (And that is not so easy as one would like to think)

Still it is ALWAYS great fun to do your own :slight_smile:

Has anyone else had any experience with writing to stepper motors in a serial fashion

Well, sorry, not me personally no. But I have tried "homegrown" drivers (like you propose, assumes you have unipolar steppers) and ready bought ones, and the latter is easier/faster with just step&dir pin, and microstepping comes included.

I see no obvious reason for your design not to work, as long as your step rate is "low enough". There may be software complications (or nice puzzle/challenges to solve :wink: ) for steppers to move smoothly at different rates. I would consider using two 1-16 decoders into the driver Step/Dir instead of a shift register. Pros and Cons.

Headroom:
I am sure you could write some software and build some electronics to accomplish the task, however, here is a solution that will allow you to use servos without a headache. It has 16 servo channels and a small well written library.

Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface [PCA9685] : ID 815 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits

I am really looking at using Stepper motors rather than servos, although I have used servos to control mirrors in a lighting unit, the mirror movement was fast, but the deadband associated with servos made it all look a bit jumpy !!

Msquare, thanks for your input, perhaps I should consider other methods of driving the steppers, 1-16 is good, but It could work with 8 x 4bit parallel latches too, I was thinking perhaps the serial bit loading could be a bit slow of uP hungry :@)