Driving Stepper From Arduino Micro

It appears that stepper motors can be directly driven by the Arduino Micro through Stepper (Steps, Pin1, Pin2, Pin3, Pin4).

Why is it then that everybody uses a separate driver to drive a stepper motor?

And if you have a hybrid bipolar stepper with four wires coming out of it, which wire would you connect to which pin? Is it correct to assume that Pin1 and Pin 2 represent one coil and Pin3 &Pin4 represent the other?

And can micro stepping take place using Arduino program or a driver will be needed?



The Arduino can only supply 20mA or so on the I/O pins and that is not nearly enough to power a motor. The Arduino is used to send pulses to a driver which can manage the current needed by a motor.

If you are using a bipolar stepper motor it makes sense to use a proper stepper motor driver board such as the Pololu A4988. They do all the hard work of figuring out the pulses for the motor. The Arduino just needs to send step and direction signals. Also proper stepper motor driver boards allow the stepper to be driven with a high voltage - up to 35v for an A4988 - for better performance at higher speeds.


Steps, Pin1, Pin2, Pin3, Pin4)

The stepper libraty commands are written for a driver , not a motor. Those pin#s are INPUT pins of a motor driver. The only stepper motor an arduino on board regulator could actually power would be a very small stepper and the digital output pins are limited to 40mA so it would have to be so small that it could run with no more that 40 mA per winding, which is very small. Maybe a micro stepper about 1" dia. In addition, if you could find such a motor, you still could not drive it directly because you would need transistors or mosfets to drive with the pins listed in the statement above. You could use 2N2222 general purpose transistors.
The transistors are necessary to invert the logic so it will work correctly with the library. Without them you would have to modify the *.cpp file to change the logic in the library.