Posts | Comments

Planet Arduino

Archive for the ‘Relay’ Category

I have a good background working with high voltage, which for me means over 10,000 volts, but I have many gaps when it comes to the lower voltage realm in which RC control boards and H-bridges live. When working on my first real robot, a BB-8 droid, I stumbled when designing a board to convert varying polarities from an RC receiver board into positive voltages only for an Arduino.

Today’s question is, how do you convert a negative voltage into a positive one?

In the end I came up with something that works, but I’m sure there’s a more elegant solution, and perhaps an obvious one to those more skilled in this low voltage realm. What follows is my journey to come up with this board. What I have works, but it still nibbles at my brain and I’d love to see the Hackaday community’s skill and experience applied to this simple yet perplexing design challenge.

The Problem

RC toy truck and circuit with no common
RC toy truck and circuit with no common

I have an RC receiver that I’ve taken from a toy truck. When it was in the truck, it controlled two DC motors: one for driving backwards and forwards, and the other for steering left and right. That means the motors are told to rotate either clockwise or counterclockwise as needed. To make a DC motor rotate in one direction you connect the two wires one way, and to make it rotate in the other direction you reverse the two wires, or you reverse the polarity. None of the output wires are common inside the RC receiver, something I discovered the hard way as you’ll see below.

BB-8 hamster type cutaway showing wheels, motors and casters and how it moves BB-8 hamster type cutaway showing how it turn by rotating the wheels in opposite directions

I wasn’t using the RC receiver with the toy truck. I extracted it from the truck and was using it to control my BB-8 droid. My BB-8 droid has two motors configured as what in the BB-8 builders world is called a hamster drive, though is more widely known as a tank drive or differential drive (see the illustrations). Rotate both wheels in the same direction with respect to the droid and the droid moves in that direction. Reverse both wheels and it drives in the opposite direction. Make the wheels rotate in opposite directions and it turns on the spot.

The big picture - RC to drill motors
The big picture – RC to drill motors

The motors in my BB-8 are drill motors and are controlled by two H-bridge boards. An Arduino does pulse width modulation to the H-bridge boards for speed control, and controls which direction the motors should turn. Finally, the RC receiver is what tells the Arduino what to do. But a converter board, the subject of this article, is needed between the RC receiver and the Arduino. Note that the Arduino is necessary also for countering when the BB-8 droid wobbles and for synchronizing sounds with the movement, but those aren’t addressed here.

Since there are two motors and two directions for each motor, the RC receiver needs to control four pins on the Arduino to make the two drill motors behave as follows: motor 1/clockwise, motor 1/counterclockwise, motor 2/clockwise, motor 2/counterclockwise. And whatever voltages the receiver puts on those pins has to be relative to the Ardunio’s ground.

And herein lies the problem. The Arduino expects positive voltages with respect to its ground on all those pins. So I needed a way to map the RC receiver’s two sets of motor control wires, which can have either positive or negative voltages across them, to the Arduino pins which only want positive voltages. And remember, none of those RC receiver wires are common inside the receiver.

My Fumbling First Approach

Now, keep in mind, electronics is a general interest of mine and except for what we were taught in high school physics class, I’m self-taught. That means I’ve “read ahead” but much of my knowledge has been determined by what projects I’ve done. So I have gaps in my knowledge. I’d never turned negative voltages into positive before. It sounded simple enough. Searching online didn’t help though. The closest I got was in two old posts in forums where the answers were “It’s easy to do. I can do it with a single resistor.” But there was no further explanation and I didn’t ask my own question anywhere at that point.

Using a transistor
Using a transistor

Instead I came up with my own approach with just one set of wires from the RC receiver first. The wires coming from the receiver were blue and brown and could have either polarity depending on which way the receiver is being told to rotate the motor: clockwise or counterclockwise. That meant I needed two diodes to create two possible paths for the different polarities the brown wire could be: positive or negative. I then added a battery for the one path that was negative, to turn it into a positive.

Next, I put a PNP transistor between the positive of the battery and the receiver. With no signal from the RC transmitter, the transistor’s base is negative with respect to the emitter, but not enough to turn the transistor on. That’s because the battery’s negative is connected to the receiver’s blue wire and since there’s no signal from the transmitter, the brown wire is also at the same potential as the blue wire, and with battery negative.

The idea was that when the transmitter sent a signal to make that brown wire negative with respect to the blue wire, it would become even more negative and turn on the PNP transistor. A positive signal would then go from the battery, through the transistor to the Arduino.

The most obvious problem was that the Arduino wanted to see 3 volts to register as a HIGH input, meaning the battery would have to be at least 3 volts and so even with no signal from the transmitter, that would be -3 volts to the transistor, turning it on when it wasn’t supposed to be on.

Using A Relay Instead

Using a relay
Using a relay

And so I immediately thought of using a relay instead. I’d use the current running through the negative path to energize the relay, closing a switch that was completely independent of the RC receiver. The Arduino has a 5V output pin, so I made that switch close a circuit between the 5V pin and the Arduino’s pin 7, giving pin 7 the needed positive voltage.

The 1 in the circle in the schematic shows where I wanted to put a resistor in order to limit the current going through the relay’s coil. However, I tried with resistors all the way down to 4.7 ohms but the coil didn’t have enough current to close the switch. With no resistor, it worked and the current was 70mA. The relay’s coil was rated for 3V/120mA so I left it.

Using a relay did seem very heavy-handed, but it was the only solution I could come up with and I already had the relay in stock.

The next step was to add a second relay, doing the same for the second set of wires coming from the RC receiver for the second motor.

No Common In The Receiver

Schematic with common blue RC wires
Schematic with common blue RC wires

But the behavior was seemingly sporadic. And keep in mind that there was a whole dual H-bridge circuit that was also connected to the Arduino’s ground. I’d worked with relays a lot before, and the RC receiver came from a commercially made and functional toy so I had no reason to suspect that. On the other hand, I’d made the H-bridge circuit from scratch since I already had most of the parts, and I was new to H-bridges and MOSFETs. So at first I spent a good two weeks of spare time thinking my problem was with the H-bridge and drill motor side. I’m sure we’ve all experienced the same blindness, thinking the most likely culprit is the part you had a hand in.

But at some point I disconnected the H-bridge and tested just the RC receiver circuit, watching the voltages at the Arduino pins while I remotely turned on both “motors” in both directions in all combinations (no motors were connected at the time though). The only odd behavior I saw was when I turned the motors on in opposite directions.

Notice in the schematic that I’d connected together both blue wires coming from the RC receiver. Up to that point I’d been assuming that the blue wires were common inside the receiver and that it was only the brown wires that switched from positive to negative with respect to the blue wires. From the behavior I was seeing it looked like both wires were switching polarity, possibly around some other internal common reference.

Finished RC-to-Arduino converter schematic
Finished RC-to-Arduino converter schematic

So I added a third relay on one of the positive paths of one of the sets of wires. That meant the corresponding blue wire no longer needed to be grounded, keeping both of the receiver’s blue wires separate. Note that I didn’t bother putting in a fourth relay for the remaining positive path, and it turned out to not be necessary. At that point the circuits worked great and continue to do so.

The Ask

And so I ask, is there a better way to convert the RC receiver output to something the Arduino can use? Relays require power, so it would be nice if there was a solution that didn’t require any extra power. My relay solution seems very early 1900s. Or maybe it’s a good solution after all, but just one of many. Let us know in the comments below.


Filed under: Arduino Hacks, Ask Hackaday

IMG_2634This plug-and-play rig will make it easy to control high-voltage outputs from a low-voltage Arduino.

Read more on MAKE

The post Use an Arduino and Relays to Control AC Lights and Appliances appeared first on Make: DIY Projects, How-Tos, Electronics, Crafts and Ideas for Makers.

Ott
13

DIY 433MHz RF Receiver and 4 x SPDT Relay Shield

arduino, Relay, RF Commenti disabilitati su DIY 433MHz RF Receiver and 4 x SPDT Relay Shield 

arduino-rf-receiver-and-relay-shield

by electro-labs.com:

You are planning to use Arduino in your project but you need some kind of remote control functionality. A standalone Arduino won’t provide what you need but this DIY shield may be a good solution for you. It includes a 433.92Mhz RF receiver which lets you send commands to Arduino wirelessly and four SPDT relays which can be used for switching purposes.

Each relay is capable of switching up to 10A @ 250VAC so they can be used to control mains powered devices. There are four LEDS indicating the status of the relays. The terminal blocks on the shield lets you easily connect the devices you will control.

The RF receiver is a module that can be found in the market easily. It is directly soldered to the shield and runs at 4800bps. The board has an antenna input which lets you solder your custom antenna to increase the wireless range.

DIY 433MHz RF Receiver and 4 x SPDT Relay Shield - [Link]

Set
18

Arduino Network relay

arduino, control, ENC28J60, ethernet, Relay, W5100 Commenti disabilitati su Arduino Network relay 

network switch small4

by serasidis.gr:

Remote control your electrical devices through your local network or internet. The circuit contains one output (Relay) and one input (isolated input). The whole project was built by using arduino nano platform and an ENC28J60 ethernet module. It can be used the W5100 ethernet module instead of ENC28J60, by replacing the UIPEthernet library to Ethernet library.

Moreover, the control is made from the Android application I wrote and it’s available on Google Play (https://play.google.com/store/apps/details?id=com.serasidis.NetworkRelay).

The schematic diagram, arduino sketch, photos and demonstration video is on my web site:

Arduino Network relay - [Link]

Lug
18

Quick and Dirty RFID Door Locks Clean up Nice

access control, arduino, arduino hacks, Atmega-328, door lock, microcontrollers, Parallax, Relay, rfid, rfid reader Commenti disabilitati su Quick and Dirty RFID Door Locks Clean up Nice 

homemade RFID Door Locks

[Shawn] recently overhauled his access control by fitting the doors with some RFID readers. Though the building already had electronic switches in place, unlocking the doors required mashing an aging keypad or pestering someone in an adjacent office to press a button to unlock them for you. [Shawn] tapped into that system by running some wires up into the attic and connecting them to one of two control boxes, each with an ATMega328 inside. Everything functions as you would expect: presenting the right RFID card to the wall-mounted reader sends a signal to the microcontroller, which clicks an accompanying relay that drives the locks.

You may recall [Shawn's] RFID phone tag hack from last month; the addition of the readers is the second act of the project. If you’re looking to recreate this build, you shouldn’t have any trouble sourcing the same Parallax readers or building out your own Arduino on a stick, either. Check out a quick walkthrough video after the jump.


Filed under: Arduino Hacks, Microcontrollers
Feb
22

Meltinator 9000 Fuses Glass by Degrees

arduino hacks, arduino uno, glass fusing, kiln, Relay Commenti disabilitati su Meltinator 9000 Fuses Glass by Degrees 

kiln[Richard]‘s wife scored an Evenheat glass-fusing kiln, but the 20-year-old temperature controller was broken. He could have simply ordered a replacement controller, but that kind of problem solving doesn’t get you on Hack a Day. His wife wanted more control over the kiln and he convinced her that building their own was the way to go. Thus, the Meltinator 9000 was born.

[Richard]‘s design uses an Arduino Uno and an Adafruit display shield, protoshield, and thermocouple reader board. He built a simple relay driver with a resistor, BJT, and a diode and connected it to pin 13 and its built-in indicator. To [Richard]‘s delight, all of this fit in the original enclosure.

[Richard]‘s software provides 25 fusing schedules with ten steps apiece. Each step has a target temperature,  rate of temperature change, and a hold time which can be increased on the fly. He ran a test program that heated the kiln to 1500°F at a rate of 2550°F/hour. He then cooled it to 500°F at a rate of 1000°F/hour, which took longer than he thought. The good news is that the kiln is well-insulated!  [Richard] has the software available on his GitHub.

Don’t have a glass kiln? Prefer to control beer-related temperatures? You could always hack your stove in the name of homebrewing.


Filed under: Arduino Hacks
Gen
27

How to Stop Grandma’s Wheelchair If She Goes Out of RC Range

arduino hacks, arduino nano, fail-safe, mobility chair, Relay Commenti disabilitati su How to Stop Grandma’s Wheelchair If She Goes Out of RC Range 

Okay, so he doesn’t have Grandma riding in it that we know of, but [zim] recently decided to turn a Jazzy mobility chair into “a radio-controlled platform for mischief”. RC offers more range than wifi or bluetooth, and he was able to find a reasonably priced secondhand radio on Craigslist. However, he found out that in the event of signal loss, the receiver keeps sending the last commands to the speed controller. [zim] didn’t want his 150 lb (68kg) mischief platform getting loose, so he devised a fail-safe that cuts power to the motor when the signal is lost.

[zim] discovered that the receiver returns channel 3 (the throttle) to a preset condition whenever the signal is lost. He used a 24V HVAC relay controlled by an Arduino Nano to sample the PW on channel 3 and shut it off when either the throttle or the signal are cut.

If Grandma is feisty, you could build this caged-in version with a shopping cart.


Filed under: Arduino Hacks
Nov
15

Arduino Astronomic Clock Automates Lights

arduino hacks, astronomic, automation, clock hacks, garden, home hacks, microcontrollers, Relay, RTC Commenti disabilitati su Arduino Astronomic Clock Automates Lights 

ardAst

[Paulo's] garden lights are probably a bit more accurately automated than anyone else’s on the block, because they use latitude and longitude clock to decide when to flip the switch. Most commercial options (and hobbiest creations) rely on mechanical on/off timers that click on an off every day at the same time, or they use a photosensitive element to decide it’s dark enough. Neither is very accurate. One misplaced leaf obscuring your light-dependent resistor can turn things on unnecessarily, and considering the actual time of sunset fluctuates over the year, mechanical switches require constant adjustment.

[Paulo's] solution addresses all of these problems by instead relying on an algorithm to calculate both sunrise and sunset times, explained here, combined with swiftek’s Timelord library for the Arduino. The build features 4 7-segment displays that cycle through indicating the current time, time of sunset and of sunrise. Inside is a RTC (real time clock) with battery backup for timekeeping along with an Omron 5V relay to drive the garden lamps themselves. This particular relay comes with a switch that can force the lights on, just in case.

Check out [Paulo's] project blog for the full write-up, links to code and more details, then take a look at some other home automation projects, like the SMS-based heater controller or occupancy-controlled room lighting.


Filed under: Arduino Hacks, clock hacks, home hacks, Microcontrollers
Ott
28

microslice

[SilverJimmy] already had a full-sized 50 watt laser cutter, but he decided to try his hand at putting together something smaller and microcontroller-driven. The result is this adorable little engraver: the MicroSlice.

To keep the design simple, [SilverJimmy] opted for a fixed cutting table, which meant moving the cutting head and the X-Axis as a unit along the Y-Axis. The solution was to take inspiration from gantry cranes. He snagged a couple of stepper motors with threaded shafts, designed the parts in Inkscape, then fired up his full-size cutter to carve out the pieces. An Arduino Uno and the relays for the laser and fans sit on the MicroSlice’s bottom platform, and two EasyDriver motor controllers sit above them on the next layer.

Swing by the Instructables for more details including the source code, and to see a video of the engraver below. [SilverJimmy] sourced his laser from eBay, but check out the engraver from earlier this year that used a DVD diode.


Filed under: Arduino Hacks, laser hacks
Lug
29

A Remotely Programable Relay Controller

arduino, ethernet, Relay Commenti disabilitati su A Remotely Programable Relay Controller 

FN8PMQQGDH50M0C.LARGE

drj113 @ instructables.com

Yep – One of those! This Instructable extends my Arduino Ethernet controller to control a set of up to 6 relays, but that’s not the neat bit. The neat bit is that there is a web based state machine in the AtMega chip so that the relays will operate in whatever sequence with whatever timing you want – all by themselves. This allows you to have a set of relays connected to the end of a piece of Ethernet cable that can be accessed from a web browser anywhere from your house.

A Remotely Programable Relay Controller - [Link]



  • Newsletter

    Sign up for the PlanetArduino Newsletter, which delivers the most popular articles via e-mail to your inbox every week. Just fill in the information below and submit.

  • Like Us on Facebook