Simple, Cheap Motor Driver Board for Arduino





Introduction: Simple, Cheap Motor Driver Board for Arduino

Many projects with Arduino often need motors, whether it is a car or a vacuum cleaner or anything else. But the problem is that you cannot connect a motor directly to Arduino as the output current is very low. So, you can use an H-bridge circuit to operate the motors. The H-bridge circuit can operate the motors in both directions (clockwise and anti clockwise), but in many projects you don't need a motor to turn in both directions (e.g. fan). In such cases, it is a waste of money to buy an H-bridge circuit. So, in this instructable I'm going to show you how to make a motor driver board using transistors which can power two motors. This motor driver board will be able to operate the motors only in one direction, but would be cheaper than an H-bridge (E.g. For me, H-bridge would cost about Rs 150+ , whereas I could make this board in about Rs 30); and more importantly it's fun to do it.

Step 1: Components and Tools Needed


2* BC-547 Transistor (NPN)

2* 1k Ohm resistor

2* capacitor (between 1 and 5 uF) (I used 2.2 uF)

Stack headers

Perf board (Any size you like, you can cut it later)

Bread Board (for prototyping)

Single stranded wire


Soldering iron


Arduino (Any will do)

9v Battery

Step 2: The Circuit

Now, for the circuit. There are two transistors which do the same thing, have the same connections except the motors they power are two different ones, and their bases are connected to two different pins on Arduino, one is connected to pin 10 and the other 11 (refer to first picture).

When either of the transistor's base goes HIGH, it forms connectivity between the collector an the emitter (refer to the second picture) . As +9v is connected the collector and the motor is connected to the emitter the motor starts spinning (refer to the first picture). The capacitor is connected to protect the Arduino from noise created by the motor.

Now assemble the circuit on your breadboard, as it is not a good idea to do it on the perf board before making sure that your circuit is working (diagram shown in first picture). To make sure that your circuit is working upload the sketch given below. Connect the battery as shown in the first picture.

If your circuit works, then the motor would be stationary at the beginning then will gradually increase its speed then stop again (the same thing would keep repeating).

Step 3: Perf Board It!!

If your circuit works then it's ready for perf boarding. I haven't made it as a shield because it uses very few pins of the Arduino so, it is much harder to make it as a shield. Instead I have made it as a separate board with wires sticking out of it which you have to connect to the Arduino. But if you like, you can make it as a shield (here is a link to help you on how to make shields - .

To create a circuit board, solder all components shown in the fritzing image above to your perf board (except for the Arduino, of course). If you don't know how to solder on perf board watch the video below (This is not my video, of course).

After you have finished soldering on the perf board, test it out and your motor driver is ready!



  • Trash to Treasure

    Trash to Treasure
  • Pocket-Sized Contest

    Pocket-Sized Contest
  • Pro Tips Challenge

    Pro Tips Challenge

We have a be nice policy.
Please be positive and constructive.




Another remark: in your circuit you first put your load, and then your transistor or mosfet. Otherwise you won't have 9V over your motors as you can see in the link below

Thanks for telling me. I saw the simulation but I did not understand why that happens and how it makes a difference. Could you tell me?


The voltage at the emitter can maximum be 0.7V below the voltage at the base. So in the case where the load is connected to the emitter, the load only sees 4.3V approx. Over a 1k resistor, you have 4.3mA. The transistor is a current amplifier (x100 approx.) So the current flowing thru the base is 4.3/100 = 43µA. Over the 1k resistor at the base, you have a voltage loss of 43µA*1k=43mV. (so in reality there is only 4.957V at the base)

When the load is connected to the collector, you can see that the emitter is grounded (0V) So in theory, when you have 4.3V over a 0 ohm resistor, you have infinite ampere. So the resistor at the base counts. There you have 5V-0.7V (from the transisitor) over a 1k resistor. this gives 4.3mA. The transistor amplifies this to maximum 0.43A. With the load of 1k and a voltage of 9V, you need around 9mA. Which is a lot less than the maximum that the transistor can deliver.The full power is released to the load.

Hope this helps, if not, just ask...

Thanks. It was really help full. If you have any more suggestions please tell me.

Thanks, I saw your intructable and it is great. It is a really nice idea to use a old router as a case. Please tell me if you have any more suggestiones.

You are welcome :) if you need any help with arduino i will be there :)

Nice project. I like seeing folks still making one-off circuits. Days past so many folks were into making circuits, but it seems computer tech has removed so much of the basic component ideas these days.

It seem like you are basically using the NPN transistor(s) for on/off switching transistors. If that is all you are doing, a relay would work equally well. But you could use the Arduino to drive the motors through a variable speed circuit using transistors or even MOSFETS. Just a thought. Nice project anyways and glad you are into electronics. A very good field to be into by the way!

I guess MOSFET's would be the better option since they can handle higher current for larger motors.

You could use a MOSFET, but it isn't necessary for small motors like the ones I used in the picture. BTW if you have any suggestions please tell me.