W. Durfee, Dec-03
The most common method to drive DC motors in two directions under control of a computer is with an H-bridge motor driver. H-bridges can be built from scratch with bi-polar junction transistors (BJT) or with field effect transistors (FET), or can be purchased as an integrated unit in a single integrated circuit package such as the L293. The L293 is simplest and inexpensive for low current motors (see L293 technote)For high current motors, it is less expensive to build your own H-bridge from scratch.
The Twin Cities Robotics Club has an *excellent* tutorial on H-bridges, and complete detail on how to build your own $5.00 H-bridge good for several amps.
From the same source is a detailed tech note on PWM speed control of a motor using an H-bridge and a PIC microcontroller