Welcome to Micro Ohm Electronics!
010 3033 2568
Our Location

5V Small Stepper Motor Driver & ULN2003 Driver Board

20.00 EGP

SKU: ULN2003Mod Categories: ,


ULN2003 Stepper Motor Driver Board is to use the ULN2003 DARLINGTON ARRAYS to drive the 4-phase 5-wire stepper motor (5v-12v). It?s easy to use Arduino or other development platform to drive the stepper motor by this diver board.

Getting started with?ULN2003 Motor Driver Board

In this tutorial we will learn about the most commonly/cheaply available stepper motor?28-BYJ48?and how to interface it with?Arduino?using?ULN2003 Motor Driver Board.

Stepper Motors:

Let us take a look at this?28-BYJ48 Stepper motor.

Okay, so unlike a normal DC motor this one has five wires of all fancy colors coming out of it and why is it so? To understand this we should first know how a stepper works and what its specialty is. First of all?steppers motors do not rotate, they step and so they also known as?step motors. Meaning, they will move only one step at a time. These motors have a sequence of coils present in them and these coils have to be energized in a particular fashion to make the motor rotate. When each coil is being energized the motor takes a step and a sequence of energization will make the motor take continuous steps, thus making it to rotate. Let us take a look at the coils present inside the motor to know exactly know from where these wires come from.

As you can see the motor has Unipolar 5-lead coil arrangement. There are four coils which have to be energized in a particular sequence. The Red wires will be supplied with 5V and the remaining four wires will be pulled to ground for triggering the respective coil. We use a microcontroller like Arduino energize these coils in a particular sequence and make the motor perform the required number of steps.
Let us look at some of the important technical data obtained from the datasheet of this motor in the picture below.

That is a head full of information, but we need to look at few important ones to know what type of stepper we are using so that we can program it efficiently. First we know that it is a 5V Stepper motor since we energize the Red wire with 5V. Then, we also know that it is a four phase stepper motor since it had four coils in it. Now, the gear ratio is given to be 1:64. This means the shaft that you see outside will make one complete rotation only if the motor inside rotates for 64 times. This is because of the gears that are connected between the motor and output shaft, these gears help in increasing the torque.

Another important data to notice is the?Stride Angle: 5.625?/64.?This means that the motor when operates in 8-step sequence will move 5.625 degree for each step and it will take 64 steps (5.625*64=360) to complete one full rotation.

Calculating the Steps per Revolution for Stepper Motor:

It is important to know how to calculate the steps per Revolution for your stepper motor because only then you can program it effectively.

In Arduino we will be operating the motor in 4-step sequence so the stride angle will be 11.25? since it is 5.625?(given in datasheet) for 8 step? sequence it will be 11.25? (5.625*2=11.25).

???? Steps per revolution = 360/step angle

Here, 360/11.25 =?32 steps per revolution.

Parts required

  • Arduino Uno
  • ULN2003 motor driver
  • Jumper wires

Connecting the Hardware

The circuit Diagram for the?arduino?stepper motor control project?is shown above. We have used the 28BYJ-48 Stepper motor and the ULN2003 Driver module. To energise the four coils of the stepper motor we are using the digital pins 8,9,10 and 11. The driver module is powered by the 5V pin of the Arduino Board.

But, power the driver with External Power supply when you are connecting some load to the steppe motor. Since I am just using the motor for demonstration purpose I have used the 5V rail of the Arduino Board. Also remember to connect the Ground of the Arduino with the ground of the Diver module.

Code for?Arduino Board:

Before we start programming with our Arduino, let us understand what should actually happen inside the program. As said earlier we will be using 4-step sequence method so we will have four steps to perform for making one complete rotation.


Pin Energized

Coils Energized

Step 1

8 and 9

A and B

Step 2

9 and 10

B and C

Step 3

10 and 11

C and D

Step 4

11 and 8

D and A

The Driver module will have four LED using which we can check which coil is being energised at any given time.

In this tutorial we are going to write the?arduino stepper motor code?and for that we will?program the Arduino?in such a way that we can enter the number of steps to be taken by the stepper motor through the serial monitor of the Arduino. The complete program can be found at the end of the tutorial few important lines are explained below.

The number of steps per revolution for our stepper motor was calculated to be 32; hence we enter that as shown in the line below

#define STEPS 32

Next you have to create instances in which we specify the pins to which we have connected the Stepper motor.

Stepper stepper (STEPS, 8, 10, 9, 11);

Note:?The pins number are disordered as 8,10,9,11 on purpose. You have to follow the same pattern even if you change the pins to which your motor is connected.

Since we are using the Arduino stepper library, we can set the speed of the motor using the below line. The speed can range between 0 to 200 for 28-BYJ48 stepper motors.


Now, to make the motor move one step we can use the following line.


The number of steps to be moved will be provided by the variable ?val?. Since we have 32 steps and 64 as the gear ratio we need to move 2048 (32*64=2048), to make one complete rotation.

The value of the variable ?val? can be entered by the user using the serial monitor.

Working of Stepper Motor with Arduino:

Once the connection is made the hardware should look something like this in the picture below.


? ? ? ??

Now, upload the below program in your Arduino UNO and open the serial monitor. As discussed earlier we will have to make 2048 steps to make one complete rotation, so when we enter 2048 the motor will make one complete rotation in clockwise direction by making 2048 steps. To rotate in anti-clockwise just enter the number with ???negative sign. So, entering? -1024 will make the motor to rotate half the way in anti-clock wise direction. You can enter any desired values, like entering 1will make the motor to take only one step.
// Arduino stepper motor control code
#include <Stepper.h> // Include the header file
// change this to the number of steps on your motor
#define STEPS 32
// create an instance of the stepper class using the steps and pins
Stepper stepper(STEPS, 8, 10, 9, 11);
int val = 0;
void setup() {
void loop() {
if (Serial.available()>0)
val = Serial.parseInt();
Serial.println(val); //for debugging

Shopping cart
Sign in

No account yet?

Create an Account

5V Small Stepper Motor Driver & ULN2003 Driver Board

20.00 EGP