
Arduino Connecting Easy Driver Stepper Motor Controller
EasyDriver by Brian Schmalz is licensed under a Creative Commons Attribution 3.0 United States License. Based on a work at www.schmalzhaus.com/EasyDriver. Built on the Allegro A3967 it was a replacement for the UCN5804B stepper motor driver chip. I'm using it as a replacement for the equally hard to find and costly MC3479 stepper motor controller.
This really consists of a circuit board with a surface mount integrated circuit. The board costs between $10 to $15. While designed to operate low-power bipolar stepper motors with a current limit of about 700 mA, we can do a lot more.

- More YouTube Videos October 17, 2013:
- Easy Driver with Arduino Unipolar Stepper Motor
- Using Easy Driver with L298N - Arduino
- Serial Shift Register with a LCD Display
The four outputs for two motor windings (A and B) can drive power MOSFETs or bipolar transistors to operate in the unipolar mode. The power can be boosted by using the four outputs to drive a L298N bipolar type driver board.
Note that with the logic levels on MS1 and MS2 we can select from full step to one-eighth step. In the case of my test motor it was 1.8 degrees per step or 200 steps for 360 degrees of rotation. That same motor in half-step mode requires 400 steps; in quarter-step mode 800 steps; and in eighth-step mode requires 1600 step.
Each "step" requires a positive going pulse on the step pin. Direction is determined by a LOW or HIGH on the direction pin. Note that to reverse direction of rotation swap the wire pairs between A and B.
The advantage is the advanced hardware control simplifies programming and interfacing.
Sparkfun (www.sparkfun.com) a seller of Easy Driver says,
The EasyDriver is a simple to use stepper motor driver, compatible with anything that can output a digital 0 to 5V pulse (or 0 to 3.3V pulse if you solder SJ2 closed on the EasyDriver). EasyDriver requires a 7V to 30V supply to power the motor and can power any voltage of stepper motor. The EasyDriver has an on board voltage regulator for the digital interface that can be set to 5V or 3.3V.
Connect a 4-wire stepper motor and a micro-controller and you've got precision motor control! EasyDriver drives bipolar motors, and motors wired as bipolar. I.e. 4,6, or 8 wire stepper motors.
A3967 microstepping driver.
MS1 and MS2 pins broken out to change microstepping resolution to full, half, quarter and eighth steps (defaults to eighth).
Compatible with 4, 6, and 8 wire stepper motors of any voltage.
Adjustable current control from 150mA/phase to 750mA/phase.
Power supply range from 7V to 30V. The higher the voltage, the higher the torque at high speeds.
Enable Input (ENABLE). This active-low input enables all of the outputs. When logic high the outputs are disabled. Inputs to the translator (STEP, DIRECTION, Ms1, Ms2) are all active independent of the ENABLE input state.
Sleep Mode (SLEEP). An active-low control input used to minimize power consumption when not in use. This disables much of the internal circuitry including the outputs. A logic high allows normal operation and startup of the device in the home position.

VM is the motor voltage. R1 - R4 are 1000-2200 ohms. While the module has a built in 5-volt regular don't use it to power other circuits because it gets hot.
If one decides to operate a unipolar (six wire) stepper motor in the bipolar (four wire) mode DOUBLE the winding voltage.
Sample Code
Download sample Arduino code stepper_easy_arduino.txt.
Related Stepper motor Pages:
- Arduino Stepper Motor Coil Winder
- Considerations for Using Stepper Motors
- How to Connect Easy Driver Micro-Stepper Controller to Arduino
- Using a Unipolar Stepper Motor with a Arduino
- Using the MC3479 Stepper Motor Controller with Arduino
- Connecting the Arduino to a L298N H-Bridge
- L298N Motor Controller Theory and Projects
- Comparator Theory Circuits Tutorial
- Analog Solar Panel Battery Charge Controller
- Better Arduino Rotary Encoder Sensor
- Simple 3-Wire MAX6675 Thermocouple ADC Arduino Interface
- Arduino Projects Revisited Revised
- Schematic for Following Projects
- Programming ADS1115 4-Channel I2C ADC with Arduino
- Arduino uses ADS1115 with TMP37 to Measure Temperature
- Connect Arduino to I2C Liquid Crystal Display
- Arduino Reads Temperature Sensor Displays Temperature on LCD Display
- Arduino with MCP4725 12-bit Digital-to-Analog Converter Demo
- Videos
- Arduino with ADS1115 4-Channel 16-bit Analog-to-Digital Converter
- Arduino with MCP4725 12-Bit DAC
- Videos:
- My YouTube Videos on Electronics
- Introduction to the Arduino Microcontroller
- Part 1: Programming Arduino Output
- Part 2: Programming Arduino Input
- Part 3: Arduino Analog to Digital Conversion
- Part 4: Using Arduino Pulse-Width-Modulation
- Arduino DC-AC Power Inverter
- Testing the Keyes IR Sensor Module with Arduino
- PCA9555 32-Bit GPIO Expander with Arduino
- Repost Arduino AC Power Control
- Arduino with a DHT11 and DS18B20 Temperature Sensors
- Arduino with the HEDS-9000 Rotary Encoder
- Arduino RTC Clock with MAX7219 8-Digit LED Display
- Using Easy Driver Microstepper with L298N and Arduino
- Easy Driver with Arduino and Unipolar Stepper Motor
- Arduino Stepper Motor Control
- MC3479 stepper motor controller with Arduino Pt 1
- MC3479 Stepper motor controller with Arduino Pt. 2
- Using a SN74164 Serial Shift Register with a LCD Display and Arduino
- 74C164 shift register with Microchip PIC Part 1
- 74C164 shift register with Arduino Part 2