I saw an Instructable using 4 relays for controlling the direction of a DC motor. Not only is it more expensive and complex, it uses more power and is capable of short-circuiting if both inputs are active simultaneously. In this version, I will show you how to simplify the relay H-bridge, borrowing from an old school wiring technique, sometimes referred to as the California or Chicago 3 way.
Step 1: The "3 Way"
When faced with controlling a 120VAC light from two different locations, two 3 way switches (essentially SPDT) are used. In this scheme, the Chicago 3 way fell out of favour years ago, as it poses an electrocution hazard. Now, modern Electrical Code forbids its use.
When dealing with DC, however, it becomes a very simple means of controlling the direction of current flow, and in turn the direction of rotation.
Step 2: Connecting It All Up...
This circuit is really simple. In the video, you can see I'm using 2 spdt micro-switches. I could have just as easily used just the switches, but the premise of the relays is such that it may be controlled via push buttons or microcontrollers ( *cough* Arduino *cough* lol...).
So without wasting more time here goes...
1. Connect a wire from the motor to the common pin of a relay, repeat with other wire and relay.
2. Jump the 2 Normally open(NO) pins of the relays together. Repeat with Normally closed(NC) pins. Repeat again with one pin from each of the relay coils.
3. Connect the NC pins, and the jumped together coil pins, to Ground (or negative).
4. Connect the NO pins to VCC (or positive).
Now just apply a voltage to the free coil pins of the relay you wish to energise, one for clockwise, one for counterclockwise. Also, don't worry about both relays being energised at the same time, it will simply stop the motor.