Making a gigantic 18 pole 16 throw switch

When you’re building something that hasn’t been done before, sometimes the parts you need just don’t exist.

[Bacteria] over on the Made by Bacteria forum is building a huge all-in-one video game machine, combining hardware from 16 different consoles released through the years. This build requires a way to switch the video output between consoles, so [Bacteria] made a gigantic 18 pole 16 throw switch.

The build began with [Bacteria] sourcing a few 8-pole switches. Of course this switch was too small to toggle between the 16 output lines for each system, so these switches were doubled up and activated by a single button. This system worked, but the results weren’t ideal.

[Bacteria] gave in to the temptation of building his own switch by using spring-loaded metal nuts as the contacts for each part of the switch, allowing him to switch between consoles with a simple sliding contact.

So far, it looks like [Bacteria]’s Project Unity is shaping up nicely. We’ve seen a bit of the controller portion of [Bac]’s build, and already it’s shaping up to be a wonder of retro gaming.

You can check out [Bacteria]’s breakdown of his switch after the break and his Instructable here.

Hey Mikey,
Gotta say, it’s an awesome looking switch (clearly a lot of work put into it), and I think there’s a huge cool factor just to the fact that it’s so big.

(before I go on, I don’t actually know how much electronics experience you’ve got, so sorry if I’m just stating the obvious–either way, might be useful for other readers)

Doing it with multiplexer chips can do the same with a lot less cost, space, and effort to construct each multiplexer. However, it’ll probably require a little more expertise and debugging. Basically, multiplexer chips come in a number of different switch configurations, including 1:16, and are typically controlled by a binary digital input (1111 = switch 15, 0000 = switch 0). If you wire up 8 of them with the same binary digital input, you can switch them all at once.

Then, of course, there’s the issue of generating the binary input. I think some manufacturers actually make up-down switches with a mechanical display and binary output, which is probably the easiest. But if you want less exotic parts, you might be able to do with the 74hc148, which is sort of the multiplexer backwards–there are eight logic inputs, and without getting into all the details, the output will be the binary representation of the input that is currently high.

Of course, there are complications: if you’re using pushbutton switches for the input, you need some way of latching the logic signals. More difficult of an issue is that not all switches will be able to switch below ground, and unless my memory is failing me (it often does, you should check yourself) the composite video signal goes below ground so you’d have to pick a mux that can deal with that (and a power supply that generates a negative voltage). See the 74HC4051 for starters. Then, there’s the issue of speed–I’m not familiar enough with the signals you’re routing to know how fast they go, but you’ll have to check the maximum frequency of the switch and make sure it’s higher than the frequency of your signals. Finally, if there’s any very high speed signals, the series resistance of the switches may present an impedance mismatch, and you may need to do some buffering or matching to maintain video quality. Digital signals have similar maximum speed issues to take care of. But if you figure all that out, you could make your switch much smaller (but probably not quite as impressive) as the beast you’ve made there.

If you need more than 2^4 channels, you can add another MUX and another control wire to indicate what signal to use. DEMUX is the same as MUX but in reverse. These are also pre-fab, but I leave the search to you and Google.

sure an FPGA is overkill, but if you could find a CPLD or even a PAL that can handle the analog this project needs, it wouldn’t really be overkill. (I’m not familiar with CPLDs and PALs, and haven’t worked with FPGAs a whole lot either).

Second, almost any analog mux would work. As long as it can handle the voltages required, you could combine them together to create as many poles and throws as you need. Add a cheap micro for control, and you’re in business.

Still waiting for someone to suggest an analog mux kit that might work (I might be ignorant on the topic, but I’m highly interested), so far all anyone has offered is sacrificing an FPGA for a ridiculously mundane task.

I have seen this wonder in development on made-by-bacteria.com for some time now.
my opinion is why the hell not a analog switcher made of chips and what not of a unified variety or what not. and or a combination thereof that can do the dirty work instead of mismatched PSU lines kinda going tot he right place and or grounds too.

well either way the ground and psu issues are going to be a big deal for some time.

a composite video signal goes between just under one volt and just below -0.3 volts. the Maxim MAX310 will do the job nicely; one chip can switch a single output from eight inputs, and will also handle switching 5v signals as used by older joystick interfaces. It accepts a binary “address” on three pins and an output enable input on a fourth.

It’s available in a DIP package, so it’s easy to breadboard on matrix board, and it can be driven directly from a microcontroller or binary output rotary switch.

That’s really cool. Been thinking about doing this for a while for my VGA projector setup — so that I can switch between things like my Xbox and my PC (A KVM is a really crappy solution for this, usually because instead of sound ports they have keyboard/mice ports, which are useless here.) — For the moment, I’m using a VGA switch box and an A/V switchbox (for Audio only) side by side — but I’ve been thinking about using a 4 way printer box (not an automatic one — of the super old ones that are literally 25 pole 4 throw switches) and just wiring up connectors to DB25 (The essentials from the VGA HD-15 + audio).

There are tons of options for that. there are KVMs that switch audio and usb even.

You could go the analog mux route as above.

an old db25 4 way switch would be great for this. If your vga switch is a physical switch, you could check out how many poles it actually has. VGA has 15 pins, but 6 of those are grounds. You might be able to repurpose some of those for audio. You also might be able to stack on some more layers to the switch to add audio; those switches are very customizable.

What about stacking Centipede Shields to get 128 different inputs on a single Arduino?

16 x 18 = 288 so you would probably need 2 sets to select all of them but break them out to low current relays and you could handle just about anything you needed current or signal wise with true switching being done on the fly without any moving parts.

This is a case where arduino is the wrong thing to use. These are analog signals, and like you said, there’s potentially 288 things to switch. anything you could control with an arduino (like an analog switch IC) could just as easily be controlled with a simple switch (an array of pushbuttons or an 18 way selector would work for this case).

I’m not knocking the build at all, that is epic in awesome fashion, but wouldn’t a handful of some of these do it digitally for cheap? http://www.maxim-ic.com/products/switches/5v/ – Octal dpdt on chip? Might need a higher bandwith one for video lines, but you get the idea…

I would imagine instead of a slider, use a reasonably sized drum. Make it like an older ship’s throttle and have a push button lock release when changing consoles, like an automatic transmission. There would be fixed contacts inside the drum made of either copper clad or other material and use roller bearings on a springloaded shaft for contacts. Isolate each bearing and run wire.
And those of you wanting muxing, some people like to feel their hardware.

When I was in High School I took an electronics elective. One of the requirements was to build a Heathkit VTVM. The selector switch was a big rotary switch with many plates on it. If I remember correctly, you could give these rotary switches the number of poles you needed by adding extra plates. You just needed a very long shaft!

If you make it more steampunk, the haters will stop hating ;). Seriously though, great mechanical solution! If you’re running into the 100MHz region for your video signals, you’d ideally want to keep your total muxed-end traces (“stubs”) less than .75 meters to preserve the full bandwidth. I suspect if you ran a sine wave through your system at 100MHz, you’d be getting best case -6dBc output, which isn’t bad considering the entirely mechanical solution. You’re also likely getting tons of reflections from each of the stubs.

Many high end switching solutions are fundamentally the same approach as your design, just highly miniaturized. Typically, these systems employ hundreds of SPST (single pole single throw) relays placed in close proximity on a PCB (you can fit ~512 1W SPST reed relays (for example, the Meder CRR05) on 36 square inches on PCB). So, if you want to keep your same design and miniaturize it, you could use a bunch of very small CRR05 relays (288 to be exact) and a series of latching CPLDs to control them all (like an Arduino with a several serial-to-parallel converters).

Note that instead of simply tying all of the common terminals of from all of the relays into a single pole, you could instead use a series of cascaded SPDT relays to route the television to each of the consoles. Doing this, the first layer would have one SPDT for each of the 16 throws. The second layer would have two SPDTs. The third layer would have 4 SPDTs, the 5th 8, the 6th 16 per throw, thus making a much higher frequency solution, since you would no longer have stubs going to all of the unused devices (but also you’d need 588 relays instead of 288).

Of course, as others have mentioned, you could also modernize and use one of the multiple off-the-shelf solid state muxes. You won’t find a mux that can handle 16 throws at 100MHz (unless it’s cascaded), but you can use the same concept from above to cascade N M-channel muxes together. Again, this will increase your bandwidth because you’ll have fewer stubs. For example, let’s look at Vishay’s DG508B 4 channel 200MHz analog mux (I literally plucked this out of a sea of thousands of analog muxes). Using the theory explained above, each pole would have a 1:4 mux connected to it, and then each of the 4 channels would have another 1:4 mux, thus yielding an 18P16T with just 90 DG508B ICs. How do you control all those parts? Give up on routing 90 serial lines to each mux… instead, find an analog switch with JTAG, which supports a sequential serial bus, so you can cascade all the parts and then control them all with a single serial line. JTAG is used to troubleshoot 99.9% of today’s high end PCBs… your motherboard, cell phone, calculator, oven, etc… all the chips on all those things support JTAG. Say each DG508B has a 32 bit FIFO… that’s 2880 serial bits to program any configuration… at 100kHz, it takes 28ms to shift the entire register. You can run JTAG much faster, but only if you actually build a PCB… otherwise, the SI will degrade routing through 89 jumper leads ;).

You can simplify the issue further by combining the grounds… the reason the grounds in your system ‘suck’ is that there’s a ton of additional wire length and relatively poor connections from each ground to the system (television?) ground. Why not simply combine all of the grounds together all of the time? If the grounding is done well, there’s no reason every system can’t share the same starred ground lug.

Want to make it even simpler? Let me know and I’ll go on… I’ve got a soft spot from many years optimizing switching topologies… yes, you can get a job in that ;).

There are reasons it would be hard to make it work with an analog mux, one thing is that these consoles are not made to play nice together, there will be a lot of noise in the grounds that you may want to mechanically isolate. It would probably be possible to isolate the grounds and leave the outputs floating if the mux can handle it.

But even given the current switch design, why not use relays? That would mean a much more flexible control panel design and less risk of bad connections.

Why not hammer some copper nails through the crosspieces, leave the heads sticking out the same height, solder the wires the the sharp end which sticks out the other side of the wood. This would also elliminate frictionwear on the wires.

Composite video is designed to work with a 75 ohm characteristic impedance cable and load, a discontinuity like this switch in the middle of the cable will cause problems.

You’re likely to have an impedance discontinuity at the switch which will cause reflections and degrade video performance (ghosting, color bleeding, fuzzy edges).

Analogue switches or cross point switches ICs are the way to go. Terminate each video input with 75 ohms and buffer the video out with a 75 ohm driver to preserve signal integrity (also use proper video connectors).

But you also need to be careful with the selection of an analogue switch and your layout. You need to make sure you choose one with high isolation between channels in the composite video bandwidth range (0 to ~10MHz) otherwise you will get cross talk of video from one input channel to the next, resulting in video noise. Isolation is measured in dB and can be found in data sheets. Something around 40 to 50dB should work, but the higher the better.

The highest levels of isolation (90dB or more) are achieved using cascaded RF relays.

Copper-clad, springs and ball-bearings have been a staple for custom switches in the older equipment I’ve gotten my grubby hands into.
The magic happens in the shape of the plastic casings for the spring+BB assembly. They probably used injection-molding for bits of old, but nowadays you just as easily (perhaps moreso, in fact) make use of a 3D printer.

That’s pretty neat…sure, it could be done better by an array of IC switches, an FPGA, off-the-shelf muxer(s), or even relays…but there is a certain appeal I can see to sliding a big control down a long track. You should use one of those old power switches too…the big ones; like what mad scientists threw to bring life to their creations in old movies.

Still, I think it needs a rebuild in copper or brass or something, maybe even glass…wood just doesn’t look right for something that is so “pre-transistor” in concept. Plus, I have to wonder about how it will hold up over the long-term.

Thanks for the comments, interesting how when I was struggling to get a solution I didn’t them, when i’ve built the unit I get suggestions! lol

About 20 years ago I had those parallel printer switches and they didn’t work well; nice idea though. Also, it would mean a good chance more than one system would be on my mistake at a time, which isn’t a good idea. VGA switches a good idea, however only 15 connections, and I need 18 not 15, 17 is minimum.

Chips and programming as above are above my head, and anyway, the system is complex enough without wondering why a line is working sometimes and not other times if using an electronic switch rather than a manual one that is “on” of “off”.

I’ve made the switch and slider unit easy to repair and get to if need to, should last a long time reliably.

I know that programming can be daunting, especially FPGA programming if you have never done it before, but relays and IC switches are quite easy to work with if you have basic electrical know-how. Many IC switches act like relays in that it is a simple on/off voltage supply to switch them; no addresses or anything like that to worry about. This even applies to many of the multi-switch IC switches. Just a tip for next time.