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.
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?
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 asservo.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.
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.
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.
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 Pololu - DRV8834 Low-Voltage Stepper Motor Driver Carrier 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.
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"
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 CAN 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.