Motor Driver Board

Need an inexpensive motor driver board for your small robot project? The schematics and board files for a great dual H-Bridge motor driver are provided here, as well as some instructions to get you started.

Finished display
module using PIC based display driver. The display is scrolling the message, 'THE

H-Bridge Specifications:

The motor drivers consist of two TPIC0107B H-Bridge motor driver chips from Texas Instruments. They are capable of driving motors with up to 3 A of current each, though in my design 2 A is probably a conservative value to use since I don't use the optional heat sinks. These boards are great for driving any of the geared DC motors available from Lynxmotion or Jameco. Lynxmotion also has matching hubs and wheels.

Board layout as appears in EAGLE

Board Files:

The schematic and board files are in EAGLE format. EAGLE is an excellent CAD application from CadSoft. They offer a free for non-profit version. Here are the schematics and board files:

Schematic (EAGLE format)
Board File - 2 layer (EAGLE format)
Board File - Single Layer (EAGLE format)

The single layer is useful when space is not a big issue or when you are making the boards at home with chemicals, since vias are a pain to create. I put some of the text on the top layer, such as polarity indicators, but not all. Feel free to change any text or the layers they reside on to help prevent incorrect connections! You may want to rename the board file to match the name of the schematic if you'd like EAGLE to associate the two.


Since I follow the reference implementation, the best place to look for usage instructions is the datasheet for the TPIC0107B. However, here is what you need to know to get started:

The motor drivers are designed to control two independent motors. Both motors require a single power supply between 6 and 18 V (center connection on right side of the board). A rechargeable 7.2 V battery pack works great. Be careful about polarity - reversing the power leads is a sure way to burn your driver chips. Connect your motors to MR and ML.

On the left side of the board, there's a 3-pin header to control each driver. The "D" pin is the direction, the "P" pin is for PWM, and "G" is your signal ground. The direction pin controls whether the motors move clockwise or counter-clockwise.  The PWM pin is your speed control; output current is based on the duty cycle of your signal. You vary the duty cycle from 0% (stopped) to 100% (full power). The duty cycle should have a frequency of about 1 kHz, but you can deviate greatly from that and they will work fine.


Most microcontrollers have a few hardware timers or output compare pins that can provide a PWM signal in the background. You write to a few registers and your PWM is set accordingly. For example, on the ATmega128, you should set:

TCCR1A = 0xA8;
TCCR1B = 0x12;

ICR1 = 1000;  // 1kHz Frequency

// Place these in an update_motor(speed) function:
OCR1A = 0;    // 0 to 999 (control duty cycle)
OCR1B = 0;    // 0 to 999

Each microcontroller has different registers to control their hardware functions, so you'll need to check the datasheet to find out how yours works. Be sure to send me comments at dubel at ufl dot edu!

June. 18, 2004 William Summerfield Dubel IV