I designed a basic motor controller that is robust, cost effective and able to handle high current. I wanted to take advantage of Pulse Width Modulation (PWM) to allow speed control but keep direction control as simple as possible. Thus, I use a pair of SPDT relays for direction and a single MOSFET for PWM. I also use optoisolation to separate digital logic from the back EMF of the motor and relay coils. Go here to see it.