Stepper Motor Speed and Direction Control Without a Microcontroller




In one of my previous Instructables, I showed you how to control a stepper motor's speed using a 555 timer. This project is an upgrade of that one and you will get to know how to control the motor's direction using another 555 timer IC. So, without any further ado, let's get started!

Step 1: Get All the Stuff!

Here is what you will need:

An A4988 stepper motor driver

2 555 timer ICs

A prototype breadboard

A 12-volt power supply

A 5-volt power supply(Conversely, you can also use a voltage regulator with 5-volt output such as an LC805CV)

A 1kΩ resistor

2 10kΩ resistors

3 LEDs(Optional)

3 330Ω resistors(Optional, for the LEDs)

A capacitor(0.3uF to 10uF, try experimenting with different capacitors in this range. Capacitors above this range will cause the stepper motor to move very slowly and ones below the range will not allow the motor to move at all. Make sure the capacitors are rated for voltages above 10 volts.)

A 100kΩ potentiometer

2 push-buttons(normally open ones)

A lot of male to male jumper wires

Step 2: Start by Plugging on the A4988 Motor Driver on the Breadboard

After plugging on the motor driver, connect the VDD(or VCC) pin to +5vols, GND to, obviously GND and, VMOT to 12 volts. Don't forget to connect the SLP and RST pins together! I used a small jumper for that.

Step 3: Get Help From the Circuit Schematic

Please move to the next step before starting making the circuit.

Step 4: Wire Up and Test the Speed Controller

Set up and wire only the speed controller. Connect the DIR pin of the motor driver to either GND or +5 volts while testing. Power up your circuit and check whether it is working properly. If there is any problem, the troubleshooting will be easier than it would be after wiring the direction controller.

Step 5: Wire Up and Test the Direction Controller

Step 6: It's DONE!

I hope you enjoyed making this project. I would like to see your what you built. Suggestions are welcome!



    • Trash to Treasure

      Trash to Treasure
    • Arduino Contest 2019

      Arduino Contest 2019
    • Tape Contest

      Tape Contest

    8 Discussions


    9 months ago

    You may be able to d it with two single pole double throw switches like are used to turn lights on and off from two ends of a hallway.

    2 replies

    Reply 5 months ago

    Absolutely correct. But, in my project, I wanted to push buttons instead of flicking switches.


    Reply 9 months ago

    The problem I have is to invert the current so the motor can change in two directions.


    Question 9 months ago

    I will like to ask you if you can explain how to change direction for a 12V DC motor that I will use to open and close a door. The motor has to run in one direction when pressing a button and stop when door is completely open, then run in opposite direction and stop when door is completely closed when pressing another button, or same button. I cannot solve that problem :(

    4 answers

    Answer 9 months ago

    Here's an old circuit that I did that uses relays.Where I use a changeover switch at the bottom, that can be two separate pushbuttons.

    Hen door.jpg

    Reply 9 months ago

    Thanks for the diagram. I am not good at calculating resistance and capacitor values but it is a great start!


    Reply 9 months ago

    Sorry, the R is 100 Ohms, the C is 100nF or 0.1 uF, its a noise filter, you could even leave it out


    Answer 9 months ago

    I think this old drawing in my library shows it done with relays, its better than routing large currents through switches.

    Copy of Motor door.png