This is my first time using Arduino, and I am trying to use a number of stepper motors to raise and lower dangling pendant lights in a theatrical production. Ideally, we would like to be able to use DMX-512 (the stage lighting communication protocol) to individually control each motor, in order to move 15 hanging light sockets.
The plan so far is to use one Arduino Uno with 8 Adafruit Stepper Shields stacked on top of it to drive the 15 5.4v NEMA-17 steppers (SKU 17HM15-0904S). We would provide a power supply to each shield.
For control, we would ideally like to be able to give each motor a DMX address that would correspond to a number of revolutions, so we could program how far the pendants descend from the light board, without having to reprogram the Arduino once we've calibrated it. I've been looking at the Tinkerkit DMX Master Shield to accomplish this.
As I am designing this system, I've run into a few questions that I haven't been able to answer myself:
We want to have the ability to run all 15 motors simultaneously, as well as separately. Would we run into any issues with too much current running through the boards (the Uno itself, or any of the shields)?
We want to treat each motor as a separate DMX device, each with a separate DMX address. Could one Tinkerkit DMX Master Shield do this, and if not, is there another solution?
For the sake of mechanical simplicity, we'd like to place each motor directly over each pendant light. This means a motor might be up to 15 feet away from the Arduino. Is this feasible, or would we run into issues like voltage drop or enough noise induction from 120v lighting power cables to interfere with the operation of the motors?
If we are going to run into major issues, we could probably afford to run each pair of pendants off of an individual Arduino if we bought knock-offs, like the Inland Uno R3. Are these boards any different from a true Arduino? Are they less reliable, to the point that we might run into big problems with them?
I couldn't find a datasheet for the full stepper control shield, but the store page is here
I am waiting to hear back from my designer as to how fast the lights need to descend, but my guesstimate calculations came out to be 1680 steps/second/motor. I see your essay says most steppers operate at 1000-4000 steps/second, so hopefully that will work. If it helps, we don't foresee having to wind the lights back up during the performance, so they would only be descending, with the weight of the lights working to our advantage. Of course, having the option to retract them during the performance (or even after the performance, to reset the show) would not hurt, but it is not a requirement.
The datasheet for the chip says, right at the top "Driver IC for Dual DC motor". It can be made to control a stepper motor but it would be completely unsuitable for what you want, A specialized stepper driver like the Sparkfun BigEasydriver or Pololu A4988 or Pololu DRV8825 takes a lot of the computation load off the Arduino. That will be essential when you need to control a lot of motors. The specialized drivers also allow you to use higher voltages for higher motor speeds.
You can get a GRBL shield (intended for driving CNC machines and 3D printers) that can control 4 motors using 4 x A4988 drivers. But you can't stack them.
You say 1680 steps per second per motor. For 15 motors that becomes 25,200 steps per second or a step every 39 microseconds (assuming, which is unlikely, the steps can be evenly spaced). I don't think it is practical to think of a single Arduno doing that reliably and also doing the other stuff it will need to so - such as receive instructions.
I reckon the simplest solution is to use a number of Arduinos each controlling some of the motors. The convenience of the GRBL shield (this sort of thing) suggests 4 per Arduino. However if you don't need a shield you could probably connect 5 or 6 A4988s to one Arduino.
Hello Dear,
I saw your post about connecting nema 17 stepper motors to dmx desk.
Did you manage? I am having trouble finding the code to upload on arduino!
Please if you have it can you send it to me ?
Thanks a lot!