Linear Amplifier Motor Driver
A simple driver for a motor is a linear "push-pull" current amplifier. The op-amp provides high input impedance, so it draws little current from the input control signal. The op-amp also works to keep the voltage at its inverting input (the - terminal) equal to the control voltage at the noninverting input (+ terminal). In other words, the voltage across the motor should be equal to the control input. The op-amp cannot provide enough current to drive the motor, so we use transistors to boost the current. The "top" transistor is an npn transistor (e.g., a TIP31), and it "pushes" current through the motor (current travels left to right) when the control voltage is positive. The "bottom" transistor is a pnp transistor (e.g., a TIP32), and it "pulls" current through the motor (current travels right to left) when the control voltage is negative.
This is a very simple linear amplifier. It provides a voltage across the motor equal to the voltage at the noninverting input of the op amp. A better linear amplifier, and the associated board available for stuffing in the NU mechatronics lab, is described here. With that circuit, you can choose whether to have the voltage across the motor, or the current through the motor, be proportional to the analog input voltage.
While linear amplifiers can work very well, they are not very power efficient. Lots of power can be dumped into heat when the transistors are not saturated, as the power dissipated as heat by a transistor is equal to the voltage from the collector to the emitter multiplied by the current flowing through it. As a result, large heatsinks may be required for the transistors even when using small motors. For a more power-efficient method of driving motors, which also has the benefit that only on-off voltages are required, consult Pulse Width Modulation. In this control mode, the driving transistors are nearly always saturated, meaning little power dissipated as heat by the transistors.