DC Motor Driver

DC motors are the most common and least expensive of all small motors. It can produce a continuous rotational speed that can be easily controlled. Small DC motors ideal for use in applications where speed control is required such as in small toys, models, robots and other such electronics circuits.

Since motors require more current than the microcontroller pin can typically provide, the motor can not directly power through the microcontroller. It must be connected to some type of a switch (such as transistors, MOSFET, Relay, etc.), which can be controlled by a small current, then amplify and generate a larger current to drive the motor. This entire process is called motor driver.

What is Motor Driver?

A motor driver is basically a current amplifier that takes a low-current signal from the microcontroller and then turns it into a proportionally higher current signal which can control and drive a motor.

Motor Driver for Single Direction

Turning a motor ON and OFF requires only one switch to control a signal motor in a single direction. In most cases, a transistor can act as a switch and perform this task to drive the motor in a single direction.

Uses Transistor as Switch
transistor 01
Uses MOSFET as Switch
mosfet 0
Uses Relay
relay 0


If the motor needs to reverse its direction, the simple way is to reverse its polarity. This can be implemented by using four switches that are arranged to alter polarity on a motor thus changing the direction of rotation. The most common and clever design is an H-bridge circuit where switches are arranged in a shape that resembles the English alphabet "H". A typical H-bridge is shown below:

MotorDriver H

The H-bridge circuit consists of four switches A, B, C and D. Turning these switches ON and OFF can drive a motor in different ways.

  1. Turning on switches A and D makes the motor rotate clockwise
    The left lead of the motor will be connected to the power supply, while the right lead is connected to ground. Current starts flowing through the motor which energizes the motor in (let's assume) the forward direction and the motor shaft starts spinning.
    MotorDriver 1 s
  1. Turning on switches B and C makes the motor rotate counterclockwise
    The reverse will happen, the motor gets energized in the reverse direction, and the shaft will start spinning backward.
    MotorDriver 2 s
  1. Turning on Switches A and B will stop the motor (Brakes)
    MotorDriver 3 s
  1. Turning off all the switches gives the motor a freewheeling drive
    MotorDriver 0 s
  1. Never ever close both A and C (or B and D) at the same time. If you did that, you just have created a really low-resistance path between power and GND, effectively short-circuiting your power supply. This condition is called 『shoot-through』 and is an almost guaranteed way to quickly destroy your bridge or something else in your circuit.
    MotorDriver 5 s     MotorDriver 6 s

Uses L293D to Connect the Motor

The L293 and L293D are quadruple high-current half-H drivers.

  • The L293 is designed to provide bidirectional drive currents of up to 1 A at voltages from 4.5 V to 36 V.
  • The L293D is designed to provide bidirectional drive currents of up to 600-mA at voltages from 4.5 V to 36 V.

Both devices are designed to drive inductive loads such as relays, solenoids, DC and bipolar stepping motors, as well as other high-current/high-voltage loads in positive-supply applications.

All inputs are TTL compatible. Each output is a complete totem-pole drive circuit, with a Darlington transistor sink and a pseudo-Darlington source. Drivers are enabled in pairs, with drivers 1 and 2 enabled by 1,2EN and drivers 3 and 4 enabled by 3,4EN. When an enable input is high, the associated drivers are enabled, and their outputs are active and in phase with their inputs. When the enable input is low, those drivers are disabled, and their outputs are off and in the high-impedance state. With the proper data inputs, each pair of drivers forms a full-H (or bridge) reversible drive suitable for solenoid or motor applications.

L293D to Motor 1