Introduction: How to Control Motor With SPDT Relays
This will tell you how to make a DC motor go clock and counterclockwise
Step 1: Parts
1. 2 SPDT (Single pole Double throw) relays
2. 2 1K resistors
4. 2 diodes
5. 2 Transistors (NPN)
6. Wires (all male ends)
7. Arduino UNO
8. Small DC motor
9. 1 Breadboard
Step 2: Connect the Relays to the Breadboard
Connect both SPDT relays to the breadboard. Note of the pin facing, it will be important in later steps.
NO and NC refers to Normally Connected and Normally Open pins.
COM refers to the Common pin
Step 3: Connect NC to NC and NO to NO
This will connect the two relays together.
Step 4: Connect a Transistor
The transistor has 3 pins: Collector, Base, and Emitter. Connect it so that the hump is facing away from the wiring we already did.
Step 5: Now Make the Connections
Connect the B pin on the transistor to one end of a resistor ( The other will go to the arduino). Next connect the E pin to ground. After that connect the C pin to one of the ends of the coils (the 2 pins next to the common) of the relay (DO NOT CONNECT TO THE COMMON).
Step 6: Add the Diode
Put the diode at both coil pins ( one pin of the diode goes to the one connected to the C pin of the transistor.). Make sure that the grey band is facing away from the transistor.
Step 7: Do Steps 4-6 for the Other Relay
Step 8: More Wiring
Connect a wire from the pin that the grey side of the diode is facing and connect that to 5V for both relays
Step 9: Connect the Ardino
Connect a wire to the other side of the resistor and connect that to pin 8 and 9 on the arduino
Step 10: Connect the Two Commons to the DC Motor
And also put something on top of the motor, so you know which direction its spinning
Step 11: Add Power
connect 3-5v power supply (Like a battery). I used a regulated power supply.
Step 12: Download This Code to Make This Work
I just modified the blink LED program.
// constants won't change. Used here to set a pin number :
const int R1 = 8; // the number of the LED pin const int R2 = 9; // the number of the LED pin
// Variables will change : int ledState = LOW; // ledState used to set the LED
// Generally, you should use "unsigned long" for variables that hold time // The value will quickly become too large for an int to store unsigned long previousMillis = 0; // will store last time LED was updated
// constants won't change : const long interval = 1000; // interval at which to blink (milliseconds)
void setup() { // set the digital pin as output: pinMode(R1, OUTPUT); pinMode(R2, OUTPUT); }
void loop() {
digitalWrite(R1, HIGH); digitalWrite(R2, LOW);
delay(3000);
digitalWrite(R1, LOW); digitalWrite(R2, HIGH);
delay(3000);
}