Design consulting - controlling large number of steppers using minimum hardware

This topic relates to controlling up to 10 stepper motors, each at a time, from single Arduino (additional electronics as required) and over minimum number of wires running in parallel between all motors.

As shown in the attached schema, I am designing a blast gate control system for my workshop and need to open/close a blast gate depending on the machine I am working on. There are T’s in the dust collectors pipes so I may need to open/close more than one blast gate but this can be done in serial.

I was looking at the BOT-06640 http://www.geeetech.com/5v-4phase-5wire-stepper-motor-p-368.html stepper motor as an option but it can be any other small motor.

My questions:

  1. Can you control more than one motor with single driver? Can it be done with some sort of relays matrix that connects the target motor to the driver?

If not possible to use one driver for multiple steppers:
2. What add-on is recommended to expand the number of pins coming out the Arduino?
3. Is it possible to place the drivers near the motors and control all of this using 2-3 wires cable?

Thanks a lot!
Nino

ninor: I am designing a blast gate control system for my workshop and need to open/close a blast gate depending on the machine I am working on.

This suggests to me that the blast gates are small "doors" that open through 90 degrees or so.

If I'm right stepper motors seem to be gross overkill. Servos would seem to be much simpler both mechanically and software-wise and probably cheaper.

...R

I guess you are right but with such deals http://www.amazon.com/URgreat-Stepper-28BYJ-48-4-Phase-ULN2003/dp/B00JB22IQC/ it doesn't really matter (5 motors + 5 drivers for $16). Any idea bout the other issues?

ninor: I guess you are right but with such deals http://www.amazon.com/URgreat-Stepper-28BYJ-48-4-Phase-ULN2003/dp/B00JB22IQC/ it doesn't really matter (5 motors + 5 drivers for $16). Any idea bout the other issues?

Those little motors each require 4 pins on an Arduino whereas bipolar (4 wire) steppers can use stepper motor driver boards that only need 2 pins (step and direction). However each servo only needs 1 pin ad all the driver electronics are inside the servo. (All, of course, also need a GND connection)

Servos are really easy to to control and are very simple to connect mechanically. The Arduino command to move a servo is as simple as*servo.write(90)* which will move the arm to 90 degrees.

Stepper motors can move in precise steps but there is no way to know where they are at startup or if they miss steps. Usually that problem is solved by adding limit switches - more complication.

...R

ninor: My questions:

  1. Can you control more than one motor with single driver? Can it be done with some sort of relays matrix that connects the target motor to the driver?

Steppers are continuously powered up. Trying to switch them with relays will probably blow up the driver(s) since the windings are highly inductive (pulling the plug on a stepper while it is powered up is a no-no).

When not powered up they can lose position, so basically if you use steppers expect to use one driver per stepper and a lot of power. Servos make more sense here, but can also use a lot of power if pushing against an endstop since current depends on the force needed to hold position.

MarkT:

ninor: 1. Can you control more than one motor with single driver? Can it be done with some sort of relays matrix that connects the target motor to the driver?

Steppers are continuously powered up. Trying to switch them with relays will probably blow up the driver(s) since the windings are highly inductive (pulling the plug on a stepper while it is powered up is a no-no).

He's linking to the little 28BYJ-48 unipolar motors that are driven with a ULN2003 transistor array. Those motors are actually designed to be used for duct vent control and they'll have no problem holding their position without constant power.

Example gate: http://www.amazon.com/Woodstock-D4224-2-Inch-Blast-Gate/dp/B00AX5I7RK

I agree with Robin that if you can find a way to use RC servos instead that they would be much easier to control. There are a number of ways that you could multiplex or address multiple 28BYJ-48 motors, but I can't think of any that wouldn't require a custom circuit be built for each motor owing to the fact that you'd also need to add limit switches to each gate when using those steppers.

The winding resistance is only 200R on that motor, but the 2003 is a pig giving away 1.4V of your voltage. Plus, sequencing the windings isn't fun either.

If you're bound and determined to use the stepper, look at something like a http://www.pololu.com/product/2134 where the gruntwork is done for you, you give it step and direction, no need to sequence the winidings, more efficient than the ULN2003.

rmetzner49: The winding resistance is only 200R on that motor, but the 2003 is a pig giving away 1.4V of your voltage. Plus, sequencing the windings isn't fun either.

If you're bound and determined to use the stepper, look at something like a http://www.pololu.com/product/2134 where the gruntwork is done for you, you give it step and direction, no need to sequence the winidings, more efficient than the ULN2003.

28BYJ-48 motors are unipolar; the DRV8834 drivers are for bipolar motors. They're not compatible.

OK, no more steppers in this project, switching to servos.

What about controlling multiple motors from one location? Would it make sense to use relays matrix?

Any idea about minimum wiring / how to identify each location on 2-3 wires?

Otherwise, what about adding multiple outputs to Arduino?

ninor:
OK, no more steppers in this project, switching to servos.
What about controlling multiple motors from one location? Would it make sense to use relays matrix?
Any idea about minimum wiring / how to identify each location on 2-3 wires?
Otherwise, what about adding multiple outputs to Arduino?

I don’t understand what concept you have in mind.

Each servo needs one signal connection to the Arduino. An Uno can control 10 (I think) servos and a Mega can control many more.

I can’t think of any role for relays or “adding multiple outputs”

…R

28BYJ-48 motors are unipolar; the DRV8834 drivers are for bipolar motors. They're not compatible.

My bad ... I didn't notice the center tap of both coils are tied together. Sheesh for the price of a wire! FYI, if the windings aren't commoned (six leads) you [u]CAN[/u] drive a unipolar stepper with a bipolar drive. You drive between the center-tap and either lead, leave the other disconnected.

Robin2: I don't understand what concept you have in mind. Each servo needs one signal connection to the Arduino. An Uno can control 10 (I think) servos and a Mega can control many more. I can't think of any role for relays or "adding multiple outputs" ...R

Ok, got the idea, I am working in this direction. Thanks.

Robin2: Each servo needs one signal connection to the Arduino. An Uno can control 10 (I think) servos

I think the standard Servo library is limited to 12, but SofwareServo has no (practical) limit.