Messy business, prototyping. |
Mother Of all Relay BoxesToday I'm going to modify the toggle switch prototype design to use 12 volt relays in place of mechanical switches. I'm talking about electromagnetic relays, not the solid state kind, which are ruled out of analog signal graft by their zero crossing distortion. The use of relays will have certain advantages, which I'll come to in a moment. First, for me personally, there's a significant down side to consider.
Rolling your own Commutator
Bulgaria (rotary switches)
Group Theory (toggle switches)
All the prototypes seen so far have been completely passive, in that the only electrical energy passing through the switch circuits has been the amplified audio signal, on its way to the speakers. This feature has had a certain attraction. At home, in our living room, the TV unit conceals under its skirt two six-way mains extension strips, both of which are fully populated and occupied feeding sundry gadgets. Four additional, adjacent wall sockets - each with an integrated USB charge port! - are similarly stuffed with kit that resists further fanout. Finding a power source for an active switch is going to be tricky, but it'll have to be done.
As to the advantages:
- A single rotary control can be used to select any of the available speaker configurations.
- That manual input itself can later be replaced with an Arduino-based remote control system.
- When that great day dawns, I can retire the word "prototype" and take tequila shots.
45° clockwise twist from two 4PDT relays (2 ways). |
Here on the right is the last of the necessary sub-assemblies, the 45° rotator stage, required to complete our 8-direction relay switch. As was the case with toggle switches, 4PDT is the largest generally available electromechanical relay size, before prices start to escalate, so once again we'll be using them in ganged pairs.
Two alternative realisations are shown. In the top version, the input signals are connected to the switch commons, while in the bottom version, the outputs are taken from the commons. Now notice the central thin black vertical line, cutting across red, brown, yellow and green wires. These horizontal links between toggles 4/5 and 1/8, in both cases, illustrate that for the first time, the two 4PDT switches (the left and the right halves of the module) are not entirely independent. Both must always be open, or closed, together.
Let's look at the possible fault conditions. In the top version, activation of the left hand side alone results in amplifier outputs 4/5 becoming shorted together; with the right hand side, it's outputs 1/8. But in the bottom version, left-only activation connects output 8 to speakers 1/8 simultaneously, leaving output 4 open; while right-only connects output 4 to speakers 4/5, leaving 8 open.
As mentioned previously, the second schema might be preferred when, under conditions of switch sync failure, the consequences of one amplifier being connected to two speakers in parallel are less serious than two amplifier outputs becoming shorted together. The lower of these two versions might appear the more complex, but that's just an artefact of the drawing convention. In reality, and under normal (non-fault) operating conditions, they are physically, electrically, and topologically equivalent.
8-Way Switch with Mode 5 support - full cascade diagram - version 1. |
And, semi-finally, here on the left is one complete cascade diagram for the full 8-way rotator, complete with unrestricted Mode 5 support. This version uses the first of the 45° stage implementations just described.
As before, reading the diagram from the top: four of the seven amplifier outputs (1/2/6/7, those carrying the surround sound information) first arrive at relay RL1, which supplies the option to switch out of 7.x and into Mode 5. The outputs of this stage, together with the three remaining (non-surround related) signals 3/4/5, then reach relays RL2/RL3, which as before, operate in tandem to allow an optional rotation of 180°. Subsequent relays RL4/RL5 again offer a 90° clockwise rotation, while the new, last stage, RL6/RL7, offers a further 45° clockwise twist.
Relays | Orientation | Signal Destinations | |||||||||
RL2+RL3 | RL4+RL5 | RL6+RL7 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | - | |
- | - | - | N | 1/- | 2/1 | 3 | 4 | 5 | 6/7 | 7/- | 8 |
- | - | ON | NE | 2/- | 3/2 | 4 | 5 | 6 | 7/8 | 8/- | 1 |
- | ON | - | E | 3/- | 4/3 | 5 | 6 | 7 | 8/1 | 1/- | 2 |
- | ON | ON | SE | 4/- | 5/4 | 6 | 7 | 8 | 1/2 | 2/- | 3 |
ON | - | - | S | 5/- | 6/5 | 7 | 8 | 1 | 2/3 | 3/- | 4 |
ON | - | ON | SW | 6/- | 7/6 | 8 | 1 | 2 | 3/4 | 4/- | 5 |
ON | ON | - | W | 7/- | 8/7 | 1 | 2 | 3 | 4/5 | 5/- | 6 |
ON | ON | ON | NW | 8/- | 1/8 | 2 | 3 | 4 | 5/6 | 6/- | 7 |
Encoding & Decoding
The "truth table" above illustrates how the selective energisation of relay pairs 2/3, 4/5 and 6/7 is decoded by the clever wiring into one of eight possible sound stage orientations. The default starting position is labelled "North" by convention. A starter for ten might be in order...
In first orientation, N for North, all three relay pairs (RL2 through RL7 inclusive) are off. Audio signals #1 through #7 are sent by default to speakers #1 through #7, and the silent "null" signal ("-") arrives at speaker #8. The next row describes orientation NE (North East). Here the signal from amplifier #1 has been dispatched to speaker destination #2, signal 2 to speaker #3, and so on. Speaker #8 springs into life with the output from audio signal #7, while the null signal now goes to speaker #1. So it continues, rotationally, for the remaining six rows of the table.
It's worth making your default (or most popular) orientation correspond to the direction labelled "N" in this table, where all the relays are off. This should minimise the duty on both the relay coils and the power adapter, prolonging their lives. It also affords the option of powering down the unit under this default condition, and indeed under the majority of fault conditions, preserving a normal surround sound service when copper eventually fractures, or enamel cracks.
Hex thumbwheel switch. |
One elegant way to drive these relay coils would be using a rotary switch with binary encoded outputs. The one on the left, an Apem SMFB16N1248 thumbwheel device (RS Components stock number 425-0142), has four hexadecimally coded outputs. The encoding disc tracks are visible through the translucent PCB. We can use the first three, least significant outputs to drive the relay pairs according to the above table, so the switch positions 0 through 7 give us the cycle of eight orientations N through NW listed there.
Control wiring alternatives. |
The two alternative PSU / relay coil / thumbwheel switch wiring diagrams on the right show the use of a negative (top) or a positive (bottom) common rail for the coils. The only logical difference between these diagrams is actually the swapping of the ± signs at the PSU, but notice the numbering of the relays, which changes to minimise wire crossovers in the diagram.
The first case, known as high side switching, might seem the obvious one to use. But if you plan eventually to dispense with or override the thumbwheel switch, in favour of operating the relays from a remote controlled Arduino or similar device with 5V switchable outputs, it's probably easier to adopt the second diagram. Then you can interface using single npn transistors with freewheeling protection diodes to drive the coils. In the common negative case, you'd need an extra transistor per relay to control the 12V supply using a 5V signal.
What relays, DIN bases and crimps look like. |
The 4PDT relays I'm using, mounted on 35mm DIN rail sockets for maintainability, are Maplin Code N42AW (Beta Electric BMY5-4C5-S-CW) with nickel-silver contacts and 12Vdc, 160Ω coils.
When looking for a suitable project box, keep in mind that this DIN rail assembly alone will measure 8" x 3" x 3" (200x75x75mm). The ADA MORB-1 that started me on this quest was itself 6.37" x 4.87" x 3" externally. We're going to be quite a bit bigger than that - particularly when we leave prototyping mode and the surrounding cable trunking has to be packed in! But for the extra inches, linear and volumetric, we'll be getting sixteen different sound stage orientations, compared to just two with the MORB-1.
A parallel pair of these relays will draw a current of
Ipair = 2 * Vdc / R = 2 * 12V / 160Ω = 150mAfrom the 12Vdc supply (75mA might seem a lot for a single 12V relay, but remember it's a 4PDT type, so the mechanical bulk of switch that has to be moved is much greater than for a typical single pole unit). In the worst case (NW orientation, Mode 5 ON) all seven relays will be energised simultaneously, drawing a total current of
Imax = 7 * 75mA = 525mAfrom the supply, and dissipating a total power of
Pmax = Imax * Vdc = 0.525A * 12V = 6.3W.
What an AC adapter looks like. |
A 12 volt, one amp wall wart should cover our power requirements comfortably. Possible candidates can be found in the Mascot 9881 (unregulated) and 9883 (regulated) series. Might as well use the 2.1mm plug with positive centre pin, just to maximise Arduino compatibility.
Regulated supplies are almost twice the price of unregulated, but will minimise the PSU ripple, avoiding any 50Hz inductive pickup between the coil drives and (the albeit low impedance) audio leads. Also, we are going to be operating well below the PSU's maximum load at all times, and an unregulated supply can rise well above its nominal voltage under such conditions. Update: bought one of each to test. The unregulated one reads almost 20V on my digital multimeter! No problem though, Arduino's on-board regulator can actually handle up to 20V in, and like I said, this voltage will plummet once it's asked to energise a relay coil or seven.
For this application, incidentally, the thumbwheel switch shown above is a far better choice than the most popular encoded rotary switch alternatives, which tend to be rated at 150mA on the nose. This one's gold plated contacts are rated for half an amp - at mains voltage! Sounds like a lot, until you realise that the full 525mA under those maximum load conditions will be travelling along its single common contact strip. If anything, that 500mA rating is too damn low. One way to tweak this might be to use a 9Vdc supply instead of a 12Vdc one; the selected 12Vdc Beta relays actually have a "must operate voltage" specification of 75%, or 9Vdc (pdf). The worst case total current then drops below 400mA, with a corresponding drop in power of almost half (down to 3.6W).
Also, moving from one configuration to another causes the selector switch to visit all positions between the two. This relay power cycling ("chattering") is further exacerbated by the switch's use of plain binary rather than Gray encoding. If that's a problem, the answer may be to power down, move the switch to the new target configuration, then power back up. But the thumbwheel design is less prone to this chatter vulnerability, simply because it is more difficult to "spin" rapidly between settings.
4PDT DIN rail relay base. |
To optimise the DIN rail component and wiring layout, all relays will be mounted in a single row, and physically oriented in the same direction.
However, with either of the switch interconnection conventions mentioned so far, that's a bit of a pest. Both involve a lot of wires from the commons of one relay to the non-common contacts of another. These wires generally cross over from the top side of the DIN rail to the bottom. Why? The relay commons on the DIN rail base, 9-12, are generally on the opposite side from the non-commons, viz. the normally closed 1-4 and the normally open 5-8 (although terminal number 4 seems to have been displaced from its logical position by a mounting hole).
In a way it would be preferable to mount the relay pairs side by side in separate ranks, or to rotate alternate pairs, so as to shorten the connecting wire runs. But there is a third alternative, which has already been alluded to. We can rotate alternate banks electrically, by feeding the output commons of one bank to the input commons of the next, and similarly for non-commons. Schematically, the result is that alternate banks are best drawn upside-down. And since we already know the final stage (the 45° rotator) wants its outputs to be on commons, we're led ultimately to a single unique design...
8-Way Switch with Mode 5 support - full cascade diagram - version 2. |
... this one. Before we start the analysis, here's a quick reminder of the various functions of each of these relay banks:
RL1 - Mode 5 switchNotice that all the wiring complexity has now migrated to the two places where exclusively non-common relay contacts interface, i.e. between RL1 and bank RL2/RL3, and also between banks RL4/RL5 and RL6/RL7. Meanwhile by contrast, the connections between banks RL2/RL3 and RL4/RL5 have become simple one-to-one links. This is achieved by swapping the internal channel pairs in both RL2 and RL3, so they correspond more closely with their RL4/RL5 counterparts. When wiring a DIN relay rail, especially one surrounded by slotted panel trunking, contact proximity matters less than with toggle switches.
RL2/RL3 - 180° rotator
RL4/RL5 - 90° clockwise rotator
RL6/RL7 - 45° clockwise rotator
I've also included input signal #8, the yellow wire in the top right corner, for the first time. Although it's unused in the case of my 7.2 receiver, there are other formats (e.g. 6.x) where its inclusion might be of benefit and/or design guidance value to certain users. However, this rewiring exercise has meant that the green/yellow circuit on RL3 is no longer redundant. Even if you don't have a channel 8 (SB) signal, RL3 can now no longer be demoted to a 3PDT device. And as for 9.x, 11.x and Dolby Atmos users - how do you even add symmetrical front width & height speakers to an octoroom? You're on your own!
Control wiring - reduced options. |
It might be worth repeating here that each "stage" in the design is optional. To omit Mode 5, just remove RL1 and connect its inputs and outputs using wire colours as a guide. Similarly you can omit the 45° orientations, if you have no need to centre the sound stage in a room corner. Just replace RL6/RL7 with eight links, and remember to shift the wiring of the thumbwheel switch by one position down towards the LSB end.
The alternative control switch wiring to accompany both of these changes is illustrated on the left, again for both negative and positive common rails. Here, the relay coils have not been renumbered, so those remaining still correspond to the relay numbers in the main audio signal wiring diagram above. And although I'm still showing a 4-bit hex switch for purposes of continuity of illustration, only the two least significant bits of the switch are actually needed now. This could be replaced with a SP4T rotary plus four diodes.
Building Up
There are 62 individual pieces of colour-coded wire in the audio diagram. I've added suggested relay pin numbers 1-12 to each of the seven relays, but the four circuits within each relay can of course be permuted quite arbitrarily. Using the numbers shown, the table below offers a handy wiring schedule for the audio signal paths. Inputs and outputs are labelled i1..i8 and o1..o8 respectively, and the notation n/p means relay n, pin p.
Colour | Inputs | Stage 1 | Stage 2 | Stage 3 | Outputs | |
Brown | i1, 1/9 | 1/1, 1/6, 2/1, 2/7 | 2/9, 4/9 | 4/1, 4/8, 6/1, 6/6 | 6/9, o1 | |
Blue | i2, 1/10 | 1/2, 3/1, 3/7 | 3/9, 5/9 | 5/1, 5/8, 6/2, 6/7 | 6/10, o2 | |
White | i3, 2/2, 2/8 | 2/10, 4/10 | 4/2, 4/5, 6/3, 6/8 | 6/11, o3 | ||
Green | i4, 3/2, 3/8 | 3/10, 5/10 | 5/2, 5/5, 6/4, 7/5 | 6/12, o4 | ||
Red | i5, 2/3, 2/5 | 2/11, 4/11 | 4/3, 4/6, 7/1, 7/6 | 7/9, o5 | ||
Grey | i6, 1/11 | 1/3, 3/3, 3/5 | 3/11, 5/11 | 5/3, 5/6, 7/2, 7/7 | 7/10, o6 | |
Orange | i7, 1/12 | 1/4, 1/7, 2/4, 2/6 | 2/12, 4/12 | 4/4, 4/7, 7/3, 7/8 | 7/11, o7 | |
Yellow | i8, 3/4, 3/6 | 3/12, 5/12 | 5/4, 5/7, 7/4, 6/5 | 7/12, o8 |
This is the schedule used to construct the spaghettified prototype shown in the photo at the head of this article. Yes, that really was a snapshot of this project, not some random Google image search of bad wiring practices. For reference, if you're playing along at home, the relay numbers are RL1 to RL7 left to right in that photo.
Testing
It's probably a good idea to test your wiring before interfacing it directly to your fragile amplifier outputs and sensitive loudspeaker inputs. Once you've added the relay coil control wiring to the above schedule, connect the power supply, thumbwheel switch and relay coils together and terminate the audio inputs and outputs in suitable blocks. Then, for each of the 16 positions of the thumbwheel switch, connect one probe of a continuity meter to input 1/2/3/4/5/6/7/8 in turn, and scan the other probe along all 8 outputs, checking that only the intended output rings. You can read these intended output index values from the Signal Destinations columns in the first table at the start of this article. Where there are two values, the first corresponds to thumbwheel settings 0-7, Mode 5 off, and the second to 8-15, Mode 5 on.
That's a total of 1,024 manual continuity checks. Alternatively, you could wait until we add the Arduino interface next time, and use a simple test utility routine to perform this entire sequence of checks automatically, 120 times per minute. Your call.
Simulation
Prior to building and testing this prototype, I did a little simulation to prove the wiring. Here's the thing. Can your browser accept a URL that's over 4KB long? If so, click on this link and you'll be taken to Paul Falstad's infeasibly brilliant website, and in particular, to one of the dozens of amazing projects there: the fully web-based Analog Circuit Simulator Applet. You'll see the above 8-Way Switch with Mode 5 support, version 2, fully realised.
A couple of things are different. Six of the 4PDT relays have been replaced by three 8PDT devices, these virtual ones being quite a bit cheaper than similar physical relays. And instead of a thumbwheel switch there's a 4-bit binary counter driving the coils. The audio signals entering at the top are represented by a range of DC voltage levels, which appear in the simulation as a colour gradient between red and green. The idea is to click the clock pushbutton on the top left once, wait for things to settle down, then inspect the sequence of colours along the bottom. Obviously these should shift or rotate one place to the right per click, at least for the first seven clicks. Verifying the correct operation of clicks 8 through 15 is a little trickier, these being the Mode 5 orientations.
Actually you'll have to hold the clock pushbutton down for a good second, until the coil energising pattern changes, then let it go. The simulation is a lot slower than real time, with a circuit of this complexity. About 40x slower by my reckoning - the 2½ minutes it takes to cycle through all 16 orientations represent just 60ms of real time. Still, it certainly did the job of verification I wanted of it, rapidly enough. Paul's little applet is a fantastic achievement.
Next time: remote control!