Is it possible, using the GPIO Port to power a relay. I have read things about the GPIO port saying it is very easy to mess up, and seeing that activating a relay (basically a short circuit through a magnetic coil) scares me a bit. I want to be able to turn things such as lamps on and off with the raspberry pi and knowing they use 120VAC means I will have to use a relay.
-
Have you tried searching this site for relay. I could do this and post some suggestions, but you would learn more by doing it yourself. I will point out, that while this is possible, there are potential safety issues controlling mains power for the inexperienced.– MilliwaysJan 31, 2014 at 11:44
-
I am quite experienced in controlling 120VAC, and I have worked with controlling relays many times before. (Have a bit of a relay stash) I have indeed searched for relay on the site before, and didnt see anything. @Milliways– JVarholJan 31, 2014 at 11:47
-
jvarhol I get 90 results in a search– MilliwaysJan 31, 2014 at 11:52
-
I got results as well but i couldnt find one that suited my needs– JVarholJan 31, 2014 at 11:52
-
Will. Check again though– JVarholJan 31, 2014 at 11:53
2 Answers
A relay is an electro magnetic, mechanical switch. You should not power a relay directly from GPIO because relays use allot of power to pull and hold the switches, plus there is risk of feedback that can cause damage to the GPIO. You need to use Diodes to prevent this and have a reliable power source, which the Pi does not really have.
It is easier to buy pre made Relay breakout boards, for use with Arduinos for example since they are built to be driven by GPIO and have all the protection built in while allow low power IO to activate the relays.
You can also look at using high power transistor- but these come with their own pitfalls. They can generate high amounts of heat and they can burn out creating short circuits on your high power- causing more problems. But they are easier to use if you understand how to use the,
I've had this problem before and although not with a RaspberryPi, the solution is still valid. Because of the high electrical requirements of a relay and the low power output of the GPIO pins, you need to step up the current to power the relay with a transistor. The GPIO pin gets connected to a resistor, which connects to the transistor. I've previously used a 2N2222A to good effect with a 1.5 Kohm resistor. The emitter gets connected to ground and the collector gets connected to the - of the relay. (The + is connected to a sufficiently high current/voltage source to drive the relay. Max 40 V.) Source, page 329.