Introduction: DIY Stepper Motor Controller

About: Being a science student i love to indulge in projects related to engineering as i love to learn things practically...

Remember those DC motors, all you need too do is to hook up the positive and negative leads to a battery and holla it starts running. But as we started doing more complex projects those DC motors doesn't seems to deliver what you need.... yes I mean efficiency, precision and above all torque without any gear reduction.

Well the story started as I planned to built a semi automatic drill press which can help you drill through objects like a usual drill press but with the help of a foot pedal so that you can hold the object with both your hands without the need of a helping hand. Long story short I need a motor that can move the drilling head up and down precisely and also offers a good amount of torque.

Failing to get all those from a simple DC motor I decided to use a stepper motor. Yes the one that has four wires and thats all I knew about them.So I in this instructables we are going to make a controller for these four wire stepper motors that enables us to control the speed and direction of the motor without using a micro controller.

Step 1: Concept and Schematic

The goal of this project is to simplify the use of a stepper motor by making a modular controller that can easily drive the stepper motor without the need of incorporating a micro controller to do the job.

The controller we are going to built is based around A4988 stepper motor driver.Its a relatively cheap and can easily be found on any online electronics store.Now before we get into more details have a look at the data sheet of the stepper driver.

The driver needs a PWM input on the step pin to operate the motor. Increase in frequency of the PWM signal results in higher RPM and vice versa. To control the direction of motor the Dir pin of the driver can be toggled between the VCC and ground terminal.

The driver operates on 5v (VDD) and the VMOT represents the voltage for the motor which can range from 8-35VDC. The coils of the motor is going to be connected to the 1A,2A,1B,2B connections respectively.

Now to generate the desired PWM signal we are going to use a 555 timer IC. Here we are going to use a 10k potentiometer to change the output frequency of the PWM signal which will help us to control the speed of rotation. The rest of them are a bunch of complimentary components.

Step 2: Designing the PCB

After finalising the schematic I have done initial testing over breadboard and everything seems to work flawlessly. The motor precise, efficient and have good amount of torque. But the problem is that its a mess on a breadboard and doing this thing on a perfboard is not going to be an option.

So, I have decided to design the PCB for this controller which took some time but I have made sure that all the connections are correct plus I have also added all the complimentary components to make using this controller as easy to use as possible.

Now with the design of the PCB finalised I headed upto PCBWAY and uploaded my Gerber files to get my PCBs. After going through a bunch of options I have ordered my PCBs. They are offering great quality PCBs at amazing prices. A big thanks to PCBWAY for making this project possible so make sure you checkout their website to order your customised printed circuit boards.

The link to the PCBs and the Gerber files for the circuit boards is:


Step 3: Tools and Components

The list of tools and component for this project is given below:


  • Soldering Iron
  • Soldering Wire
  • Pliers



Step 4: Assembling the Boards

The PCBs arrived within just a week and the quality is flawless. Now as I get my hands on the boards I gathered all the components and started assembling them as indicated on the boards.

The best thing about putting up so much time designing the boards is that now you can produce as many copies as needed and all you need to do is to drop the components as shown on the boards.

Step 5: Setting Up Everything

Once the boards is ready I have inserted the 555 timer and the stepper motor driver in place and connected the motor to the board. After that I have connected the 12v battery by using pair of alligator clips to power the board.

Step 6: End Results

Once the controller is connected to the 12v battery. The motor started to rotate. Everything seems to run as expected. The direction of rotation can be changed by toggling the switch and the speed of rotation can be controlled by turning the knob of the potentiometer.