Search
Controlling Big, Mean, DevicesMicrocontrollers are a ton of fun. Once I got hooked, there was no turning back. Initially playing with sensors and LCDs, I quickly discovered the limits to what a microcontroller could control. A microcontroller's GPIO (general purpose input/output) pins cannot handle higher power requirements. An LED was easy enough, but large power items such as light bulbs, toaster ovens, and blenders required more sneaky circuitry. Something sneaky called a relay: ![]() In this tutorial we will discuss a small relay board to control the power to a normal AC outlet using 5VDC control. All the usual warnings apply: Main voltage (120VAC or 220VAC) can kill you. This project, done incorrectly, could certainly burn down your house. Have your pet spayed or neutered. Shampoo is better. Do not work on or solder to any part of a project while it is plugged into the wall - just unplug it! You can get the Eagle files for the control board here. The control board is composed of a relay along with a NPN transistor and LED. What's a relay? I admit, I really just wanted to build my own Blender Defender (I don't even have a cat!). However, building a 5V controllable outlet can be handy for many applications. For these power hogs, a relay is the perfect fit. A relay is a large mechanical switch. That switch is toggled on or off by energizing a coil. In this example we are going to talk about the simplest version of a relay. Inside the relay are two paddles made of metal. One paddle is made of a ferrous material like steel and is free to move. The other paddle is made of copper and stationary. When these paddles touch (the closed switch state), they are capable of allowing a large amount of power to flow - like 30A@120VAC (huge!). The other half the relay is called the coil. This is basically a small electro-magnet. If you send current through the coil, a magnetic force is created, which pulls on the steel paddle causing it to move (flip) and touch the copper paddle - as if you flipped a light switch. The coil requires a small amount of power (5VDC @ 80mA). So you see, controlling the low-power coil allows us to actually control quite a lot of power! It is important to note the coil is physically isolated from the paddles. If you have 120VAC running through the paddles, you don't have to worry about that 120VAC sneaking back into and vaporizing your microcontroller (connected to the coil). The paddles are capable of carrying very large currents. Both AC or DC - the paddles don't care. A relay can be used to control a DC motor, or an AC lamp. The relay that we will be working with, in this tutorial, is a beefcake in my opinion. It can handle a lot of power - 30A at 220VAC. What happens if you violate this limit? I have thankfully never been in that situation. I have heard reports that the relay will begin to heat up. When the voltage/current becomes large enough, there will be sparks inside the relay as you switch the paddles. If these sparks get large enough, you can actually spot weld the movable paddle to stationary paddle causing the relay to fail, potentially in the 'on' position. Obviously this would be very bad on many levels. Like we do with capacitors, we under-rate the relay so that we mitigate the risk of relay failure. If you need 10A@120VAC, don't use a relay rated for 10A@120VAC, instead use a bigger one (such as 30A@120VAC). Remember, power = current * voltage so a 30A@220V relay can handle up to a 6,000W device (two hair dryers). The Outlet ![]() The goal is the get a GFCI outlet into some sort of a housing, with a power cord, the relay, and control circuitry. Materials:
Truthfully, the GFCI may only shut off when there is a current leak across a connection to ground - and not an over-current condition. What this means is if your 'project' suddenly pulls 50A because the microwave turned on, the GFCI will not trip off. But it you accidentally touch the wrong exposed wire, the GFCI will trip because it will detect a fault to ground (saving your heart from cardiac arrest). We repeat - when working on any part of an AC project, unplug the thing from the wall. The Inline Power Control Board The first thing you need to do is build up the Power Control board. ![]() This board contains the relay, transistor, and activation LED. The board requires 5V and GND to operate. A control pin controls whether the relay is 'closed' (allows high power to flow) or 'open' (paddle's default state of disconnected). The control board is fairly straight forward. The coil within the relay requires up to 80mA. This is more than a GPIO pin can handle (20mA by default) so we use NPN transistor as a controllable connection to ground. The NPN transistor can handle up to a 200mA which is more than the coil (80mA) and the LED (20mA) combined. When the 'RELAY' pin (aka CTRL) goes high, the NPN transistor connects to ground sending current through the coil (activating the relay) and through the LED (turning the activation LED on). R1 pulls the 'RELAY' pin to ground so if anything goes haywire the relay will remain in the safe, off position. Note: The 1N4148 diode is connected in a odd fashion for a reason. This is placed between power and ground in a reverse fashion. When the coil of the relay is de-activated, it acts like an inductor, trying to suppress current change. This can cause some havoc on the 5V power rail. When this happens, the 1N4148 will forward bias causing the current stored in the coil to flow happily back to the 5V rail protecting the power supply and the near-by parts. The Build Take that beautiful extension cord and cut off the female connector about 6" from the female end. ![]() A male US power plug next to the cut off end of the extension cord This should leave leave a few feet of extension cord between the part that plugs into the wall (male end) and the bare, exposed, recently cut-off end of the extension cord. Don't plug it in! Note: A two-wire extension cord will not work correctly. Notice we are using thick, three-wire circular extension cord. This extra wire is the ground return and allows the GFCI to operate correctly. Using a meter set to continuity, check that the ground pin (the round one) is indeed connected to the green ground wire. I've seen a few extension cords with non-standard colors. ![]() Use a wire stripper or an exacto-knife to remove about 6" of the sheath from the extension cord. You should find three wires - black, white and green. ![]() Use wire strippers to strip the three wires individually about 1". I twist the ends of the wires to combine the strands of the wires together in preparation for soldering. ![]() Sometimes the roll of solder can be used as a third hand. ![]() The goal here is to 'tin' the three wires. Adding solder to each of the stranded wires will hold all the wires together and allow for easier manipulation later. ![]() Be sure to thread the extension cord through the housing (shown above) before soldering to the control board. It's a huge pain to have to cut and remove the wires from the control board. ![]() Notice the hooks on the three wires. I wrapped the tinned ends of wire around a small jewelers screw driver to create a half circle within the wire. This will aid connection to the screws on the GFCI. Here we have the black wire cut and soldered to the control board. The relay is a NO (Normally Open) type relay. When power is off, there is no connection between the two thick black strands that you just cut and soldered. This is a safety feature - if all things go wrong and the power goes out of the coil, the relay will kick off and the outlet will shut down. Conversely, when you send 5V to the coil, the paddle flips from the 'off' state to the 'on' state, connecting the two pieces of black wire (on the left side of the picture above), power is delivered to the outlet and your project is powered. ![]() Now we connect the wires from the extension cord to the outlet. The Black and white wires connect to the two side terminals of the GFCI - the green wire (ground) connects to the end of the outlet. Advanced trick: Notice how the hooks of the tinned wires are arranged so that they are clock-wise. If you align the hooks of the wires under the screws correctly, as you tighten the screws, the hook of the wire will be 'sucked' into the tightening screw. This creates a very compact connection. ![]() Now lower the relay into the enclosure and feed the control wires (red, yellow, and black) out one corner of the housing. (You're right, the extension cord wires are not soldered to the relay board in this picture - please make believe). ![]() You can double-stick tape the control board to the bottom of the housing or just let it float - the wires from the extension cord will tend to hold it in place. Once you have everything lowered into place, screw the outlet onto the enclosure, and the face plate onto the enclosure. ![]() Here we test the controllable outlet against the Boxing Timer DO NOT plug the extension cord into the wall yet. Now for the moment of truth. Attach the three control wires (5V, GND, and CTRL) to some sort of system. In the above picture, I have a fairly dirty breadboard. All that I am actually using on the bread board is 5V and GND - ignore all the other parts as they are not doing anything. I then manually toggled the control wire from GND (off) to 5V (on). You can do the same thing by plugging into the 5V and GND pins on an Arduino board. Tying the CTRL line to 5V I heard a very friendly click as the relay kicked over. This indicated (along with the LED on the control board) that the relay was actuated to the 'on' position. Removing CTRL from the 5V rail (called floating because the CTRL line is neither connected to 5V or GND), the relay released. This is good! If CTRL is left floating or tied to ground, the outlet is turned off. You can also use a meter in continuity mode to check that the relay is working properly before you connect to 120VAC. When the relay's open, one of the fins of the plug and one of the rectangular holes of the outlet will not have continuity, and when it's closed, they will. The other fin and rectangular hole will always have continuity, as will the ground pin and the funny hole. I always do this check before plugging into the 120VAC, because I am, you know, paranoid. The next step is to plug the extension cord into the wall and test again. If anything goes wrong the GFCI should activate and cut off. Be sure to unplug the outlet anytime you are working on it. Please don't get zapped! You should now have an outlet that is fully controllable over 5V logic. When you plug a device into the outlet, it will by default be off. When you expose 5V to the CTRL line, the relay will activate turning on power to the device plugged into the outlet. Enjoy! Nathan Seidle |
||||||||
Feeds
Currency
Display prices in
Feedback
If you would like to tell us more, you can fill out our form if you need some psycho-suggestive questions. Go to the form.




















Why did you choose a relay instead of a triac?
For AC loads, I would be much more apt to use a silicon relay rather than a mechanical relay. They are designed to handle inductive loads in a better fashion than the mechanical relay could (and they offer opto-coupled isolation between the microcontroller and the load). More expensive, but also more bullet-proof.
http://www.circuitpeople.com/ViewPackage.aspx?id=62ec2049-3398-4976-8c69-13ec2b53d254
I fixed-it-up and exported the CAM files using the Sparkfun CAM Job for these updated images, which look to have all the right copper - have I "fixed" it right?
http://www.circuitpeople.com/ViewPackage.aspx?id=856080e6-fe7d-4a43-9e25-928f1327c5bf
use a solid state relay (D1202). You can drive the solid state relay directly form the micro, and easily control 120V ac with 3 - 30 vdc . OR use a optocoupler that has dual fets for AC control, can't remember the part number right now, wait it's LCA110 these little guys, the LCA110, work great, used them one time in a project to turn a camera from a micro when a PIR was tripped. When using strictly solid state devices, not electromechanical, there is no need to worry about back EMF blowing the micro output. Hey, that why that make triacs!
Some 5VDC relays only need 40mA, so can be driven directly, without the transistor (but still with the diode).
Another option is Velleman's quad-triac kit:
http://www.allspectrum.com/store/product_info.php?products_id=1484
I think that most electrical codes don't allow low voltage wires to exit an AC box as shown.
In the unlikely event this causes a fire, the insurance company could, well, you know...
I'd use an X10 ($15) or Z-Wave UL Approved appliance module. An control that via X10 power line signals or Z-Wave wireless signals from either a programmable timer or a PC, e.g., one running Homeseer (www.homeseer.com). This would be legit.
Reverse-EMF diode on relay coil is a must-do, for DC coil relays driven by solid state electronics.
Using a solid state switch is better than a relay; these are $10 or so.
one other nit - I believe you wouldn't want to use a gfci on a circuit that already has an existing gfci - iirc neither of the gfci's will work properly when there are multiple on the same circuit.
Bear and Solar, I am a Electrician with 17 + years experience, and you can pass low voltage and high voltage through, in or out of the same enclosure, raceway, etc. as long as both conductors are rated for the same voltage, ie.;
THHN commonly used for commercial and industrial wiring is rated for 600v. It can be used for both low and high voltage. Most wire we use in electronics is rated at 300v, if this wire is in the same raceway/enclosure as 600v rated wire, then there simply needs to be a divider separating the wire.
Something else I would like to have would be a "toggle relay" if such a thing exists. So that each time the coil is energized the contacts switch state. That way you wouldn't have to keep power on the coil to maintain state.
I've never heard of a relay that switches states and stays there, without power, but I'm sure there is a solution.
I did have a little glitch that was entirely my own fault. When I finished putting the board together and started testing it, I found it very unreliable. Turns out I'd forgotten to solder two of the pads on the three-terminal connector, so they were sitting loose in their drill holes, occasionally making contact, but usually not. When I went back and fixed that, I had a completely reliable relay board. Looks great too.
From what I am finding in both the Datasheet and specs listed at DIGIKEY it is a 200mA coil at 5VDC.
i'm bad in English language, i make some project to control AC motor with atmega, i have some trouble if start/ make ON motor AC the atmega sometime error. how solution in this trouble
please sent email to me at gatan_inf@yahoo.co.id
thank much for help me
:)
Best advice is to not use an exacto knife as wire stripper on 110V high amperage power cables . Use a wire stripper that will avoid nicking the wire and causing possible short or even fire.
You can use GFCI receptacles in series, though you must make sure they are wired as per instructions to make sure you don't create a death trap.
You say that the relay coil requires 80mA at 5VDC, but the datasheet says 200mA at 5VDC. How did you figure out 80mA?
my question is, I have the relay close the circuit right when you plug it in, but as soon as my code stops powering the coil and it clicks off, about 80% of the time the power to my chip goes out and the thing reboots and starts over. The power led on my power supply circuit actually goes out for a second, then the whole thing starts over. What am I doing wrong here?
This is actually the 2nd time I've built this circuit with the same problem.
As far as I know (I'm no electrician and I know this to be true for switzerland only) it is against code to solder the wires. Better to drill them only, (much!) better even to use cable-end-sleeves - especially if you plan to have high current over the wires. (and planning may prove wrong. I have so many "just for the moment"-fixes I use for several years now ;))
the arduino board will not be suficient power this directly when powered from usb. The v+ and gnd terminals should be attached directly to your power source not the board. the chip is not a problem, but the regulator on the board is somewhat wimpy. as long as you use a sufficient power supply you can use as many as you want.
Or to be more efficient: Give the relay board an independent power supply, then just establish a common ground with the control board. This will draw little power from the board and allow you to control many relays. This setup also works well with sparkfun's line of wireless transceivers. Or if you are lazy check this out: http://www.liquidware.com/shop/show/RS/RelaySquid
BTW, I will be driving 24 of these (4.8 amps total?). Just guess what I'm building ;)
Also, if the maximum current per relay is .56 amps @5V, then that would require a 13 amp DC power supply. I'm just trying to get how much current one of these relays really takes. Does anyone have a multimeter and one of these relays handy that they could measure it with? I have not ordered this relay yet but will come Free Day.