I searched google for some time on this issue and it looks like the L293D and ULN2003 drivers won't work for a 4-wire stepper motor and I'm not planning on using an Arduino so the Arduino motor shield won't work. The only feasible option I've found is the easydriver ( EasyDriver - Stepper Motor Driver - ROB-12779 - SparkFun Electronics ), the only problem with this driver is that you can only run 1 stepper motor on it, so I would need 2 easydrivers to drive my 2 stepper motors (~ $30 just for the 2 drivers). I am working with a very limited budget unfortunately.
Any advice or help figuring out other options would really be appreciated!
Do NOT use a h-bridge such as an L293 / L298 or ULN2003 to drive your motors. You need a proper stepper driver board such as the Easydriver, the BigEasydriver or Pololu A4988. The Pololu A4988 webpage has good info about using them.
Cheaper clones of these can be found on Ebay. Make sure that the board can comfortably handle the current required by your motor. The maximum Amp claims for the boards are generally very optimistic.
It is also a good idea to drive the motors with a high voltage - the proper stepper drivers can limit the current to protect the motor. The 12volts mentioned in the motor specs is largely irrelevant the current is the important quantity.
The motors linked to are 30 ohm motors, ie high impedance windings and CAN
be driven from dual-H-bridge motor shield because of this.
Most bipolars are low impedance (0.2 to 5 ohms) and need constant current
chopper drive to work. This means though that reasonably high speeds are
possible from as little as 24 or 36V supply.
With 12V 0.4A windings H-bridges will work, however you won't get much
speed out of such motors, because they are high impedance (theoretically
you could with 200V chopper drive, but that will exceed the safe working
voltage of the insulation of the motor).
There are two, related, limiting factors to stepper motor speed, motional
back-EMF and inductive back-EMF, both of which increase with motor speed.
MarkT:
This means though that reasonably high speeds are
possible from as little as 24 or 36V supply.
What do you mean by "reasonably high speeds"?
I have some Sparkfun 12v 0.33amp motors that seem to work happily at about 1000 full steps per second on 24v using a Pololu A4988. I have not yet tried them with 30v.
I bought them because, together with the drivers they were an economical option for the torque they provide. That speed is sufficient, even if more might be nicer.
Its rare to need anything like such speeds for a belt-driven 3-D printer or camera slide,
but for a CNC machine with stepper-driven leadscrews 1500 rpm is slower than one
would like... Big CNC machines often run at 2000 to 3000rpm with high-voltage
motor drivers (80V...150V).
For completeness my calcs suggest a leadscrew system might get 50mm/s for 1000 rpm,
a belt-drive RepRap might get 50mm/s for 250rpm...
I plan on using the two motors for a xy table (much like the ones in a cnc), which is for a chess robot. Even 200 rpm should be fine for this project. Thanks for all the advice and suggestions guys!
Hi there, I am pretty new to Arduino and driving motors and am searching through threads to get ahead a bit. Would it be possible to drive the two above linked motors with an Arduino motor shield or is easydriver by far the better solution? Similar to madcow213 I will need to make two stepper go at the same time, with speeds of around 200rpm maximum speed. I currently have the step motor 28byj48 but was told that these would only give me around 10rpm.
Thanks for your help already!
francis24:
Hi there, I am pretty new to Arduino and driving motors and am searching through threads to get ahead a bit. Would it be possible to drive the two above linked motors with an Arduino motor shield or is easydriver by far the better solution?
See Reply #2 - the motor shield is just a conveniently packaged h-bridge.
Similar to madcow213 I will need to make two stepper go at the same time, with speeds of around 200rpm maximum speed. I currently have the step motor 28byj48 but was told that these would only give me around 10rpm.
I think the 28byj48 is a unipolar stepper. You should use a bipolar motor. Wikipedia explains the difference well. The driver boards such as the Easydriver do not work with unipolar motors.
First thing you need to figure out is how much torque you need from your motor. The quoted "holding torque" applies when the motor is stationary and the available running torque will be much lower. Some of the motor datasheets show this on a graph.
When you have identified a motor with sufficient torque then you need to identify a driver board that can comfortably supply the current the motor requires.
Thanks for your reply! I understand the concept but do not have experience with judging how much torque I need.What I need from my motors is sufficient torque that they do not loose speed when brushing lightly over a rough surface with a soft painting brush. From your experience, would the following model be suitable for an application like that ?
That seems very similar to the Sparkfun motors I have
They CERTAINLY don't have a holding torque of 200N-M as Farnell claim. That is probably too high by a factor of 1000!
In as much as I understand your description of the load my motors should be plenty powerful. But remember that the holding torque is the value when the motor is stationary and the torque decreases with speed. Maybe you could make some sort of crude test rig to measure the torque. The bristles of a paintbrush exert a lot more torque if the "handle" is 1 metre long compared to 10cm long.
Those motors have a high resistance coil which means they may not go as fast as you want. Mine seem to do about 300RPM when powered with a 24v supply and using a Pololu A4988 stepper driver.
200 N-m is the spec of a motor capable of ripping your arm out of its socket,
its clearly a mistake - indeed going to the Adafruit site its described as
20 N-cm (ie 0.2 N-m).
NEMA17 steppers generally go upto about 0.4 N-m, NEMA23 to about 3 N-m.
francis24:
What I need from my motors is sufficient torque that they do not loose speed when brushing lightly over a rough surface with a soft painting brush.
You can see they're using NEMA 17 size motors and judging by the axial length they're probably about the same torque as what you have linked on the Farnell site.
Check eBay for "A4988" drivers which are as low as $2 now. Your "Big Easy" driver is based on the A4983; slightly older version of the A4988. Couple those drivers with a RAMPS board and then you're just left with connecting the motors, limit switches, power, etc.
You don't need a separate power supply for each motor.
Thanks! Can that setup then be controlled with the Accel Stepper library? Also, the description for the big easy driver states that "The Big Easy Driver is based on the Allegro A4988 stepper driver chip". I am aware that it is more expensive than the ones one ebay but I need something relatively easy to set up and have found most advice on the big easy so far. I am trying to go the easiest way, so would this version of the big easy driver be an option and -while more expensive - be just as suitable as the RAMPS+ A4988 setup you suggested?
This website says the BigEasydriver uses the A4988 chips - same as the Pololu A4988.
The AccelStepper library will work with them. Use the DRIVER option when defining an instance of AccelStepper.
You haven't said what you want to do with the two motors. The AccelStepper library (and the much simpler Stepper library) are not suitable for the coordinated movement of multiple motors - for example to move one motor 79 steps in the same time that it takes the other to move 133 steps.
However if you are using a proper stepper driver board it is is very easy to control a motor without using either library.
Ah ok, sorry. My goal: I want to move the motors either simultaneously with the same speed, or simultaneously but with differing speeds (e.g. Motor A: 100 rpm, Motor B: 60 rpm). Would you count the Big Easy as a "proper stepper driver board" (once again sorry for my lack of knowledge, it is babysteps for me) which I could use for running the stepper motors as just described? If Accel Stepper is not suitable- I suppose suitable codes have been developed in the Arduino community which I could look up?