Have you ever been frustrated with swapping probes and cables on your device under test, or are you a hardware/testing engineer, hobbyist or developer that has had to create a test and measurement automation jig for an array of devices to program and test at once?
Ever wished that you had something like a KVM switch, but for your collection of different electronics tools, devices and sensors? Do you have complex switching automation requirements and just can't find the right tool, or you just don't know what you need, but want something useful in your electronics arsenal anyway?
If you are looking to do any of the following:
- Branch out programming cables to multiple devices - to save yourself from buying multiple expensive programming cables and easily scale automated test jigs. Easily progress from development to production with the same programming hardware you have on hand.
- Multi-processor communications - e.g. connect multiple microcontrollers to the same sensor in a many to one arrangement.
- Test and measurement systems - simplify and automate your test and measurement environment.
- Automation control systems - e.g. integrate the MuxR into your control system design.
- Connecting up to multiple different sensors and devices for testing and debug - e.g. connecting to multiple sensors with the same hardware addresses.
- Joining buses together programmatically - e.g. I2C/SPI/USB.
- Testing different buses with a single test and measurement device, without having to switch probe cables around - e.g. logic analysers.
- Creating a KVM like switch for your embedded devices and peripherals - or even create a KVM for USB/PS2/Analog video.
- Education and visualisation - e.g. switch between different signals easily for demonstration purposes.
- Any bus or pin switching application you can think of.
Look no further and read on!
Let's delve into a little bit of history. We created our first product the MappyDot. This product was assembled by hand, tediously programmed using a crude breadboard breakout and tested manually, which made for sore fingers and late nights.
To solve this we created a semi automated programming and test jig, that programmed and tested each board in a few short steps. But we could still only do this for one board at a time. About this time we acquired a pick and place machine to scale up our output and automate our assembly.
With the larger manufacturing output, we needed to improve on the programming and testing of each board, as this was our largest time sink. A better automated programming and test jig needed to be created to prepare 24 boards at a time. However, we didn't want to purchase 24 programming cables to program these boards all at once, especially when they can cost anywhere from $100 to $1000 each.
So we developed a port switching design which switched the programming and test pins on different boards, so it could serially program and test each board with a single button click. Now we could walk away, grab a coffee and everything would be done for us.
But it got us thinking, surely there are others out there that could benefit from being able split out a single programming cable to program many boards at once, at a reasonable price.
With a few hardware design tweaks, the Port MuxR was born.
The Port MuxR
The Port MuxR is a bi-directional, 8/16 channel, switched bus multiplexer which works with either analog or digital signalling. So it doesn't just split out programming cables, it works for any array of 0-5V signalling levels.
Quite simply, it connects a set of pins, to your choice of additional pins on different switchable ports, which are all connected to a shared bus and tied together with a simple control interface. To help visualise this, here's a block diagram for the Port MuxR:
The control circuitry allows you connect a collection of pins with groups of low resistance FET switches to a common bus. The boards also have a common primary port connection on the bus, which is typically used for connecting a master device/programmer (but you can connect up any port to any port as they are all linked via the bus; useful for one-to-many or many-to-one arrangements). Each switchable port has two groups of 4 individual FET switches, giving you up to 16x 4-pin channels, or 8x 8-pin channels.
There's also a switchable Vcc line per port as well, which allows you to power devices and sensors from a selectable 5/3.3V supply (or optional external supply).
The Port MuxR features include:
- Bidirectional data flow, with near-zero propagation delay through each FET switch.
- Low ON-state resistance through switch ICs (Ron = 3 Ω typical, @ 3V) and optional series resistors on primary port pins.
- Low input/output capacitance.
- -2V undershoot protection prevents the FET (NMOS) switches from inadvertently turning on (when in off state) during signal undershoot events.
- 0 to 5V signaling levels supported.
- Supports both digital and analog applications.
- USB serial/I2C slave control interface with selectable I2C addressing (the I2C port is master mode capable too).
- Low crosstalk through switches when off.
- 8 controllable Vcc pins (with LED indicator).
- 3.3/5V Vcc selection header (with optional external power on adapter boards).
- 8x8 pin or 16x4 pin multiplexing with additional primary port.
- Included open-source .NET based control software (builds under mono as well for Linux use).
- Open-source Arduino control firmware for easy updating or modification to suit your requirements (running on an ATmega328PB).
- Different port switching settings available. E.g. Port make-before-break, break-before-make, port grouping, manual toggle.
Alongside the hardware, is an easy to use USB serial or I2C control interface. The USB serial interface is great for interfacing with a PC and automation software, or if you just want manual control. The I2C interface is handy if you want to develop an all-in-one hardware solution, that utilises the MuxR. For example, you might like to create simple button interface hardware to control the switching instead.
We are also including an open-source, automation software toolkit that works directly with the serial interface. Using this software, you can also chain together or interface with multiple Port MuxRs, to increase the number of output ports you have. It even allows you to run commands after switching each port (e.g. running your programming software).
And that's not all, we have also created some application specific adapter boards, that allow you to connect up a few different programming cables. Different adapters can also be created easily and EDA libraries will be made available to help you out.
To start with we have created an AVR 6/10 Pin ICSP as well as an ARM JTAG/J-Link (Segger) adapter:
With these adapters you can turn an expensive collection of multiple programmers, cables and hubs:
Into a neat-and-tidy, low-cost setup:
Bits & Pieces
Here is the frequency response of the MuxR prototype under various conditions from 10kHz to 20MHz (Attenuation = pin on, Off Isolation = pin off, Adjacent Channel Crosstalk = signal leakage to adjacent pin). Note these figures are an indication only and differences in cables, connectors, adapter boards will affect your end to end frequency response.
Please note, the connectors on the adapter boards will arrive unsoldered as backers might have their own header orientation preferences. However, if the campaign reaches a certain amount, then you might have the option of having them soldered in a specific configuration before shipping (this will depend entirely on the number of backers opting for adapter board styles).
The main Port MuxR board is supplied without port connectors for the time being (as seen in the image below; the other headers and connectors are soldered) depending on how the campaign goes (if things go gangbusters, we might even consider a case too!). However if you order an adapter board it will come with appropriate mating connectors for the Port MuxR board. You can solder these in any orientation you see fit (male header to female or vice versa) or swap them out with a longer style of header.
The mounting holes in the corners fit up to 3mm screws. Design files with the locations of these will be released throughout the campaign along with pin layouts. The Port MuxR board itself and the adapter boards are 4.90 x 2.00 inches (124.5 x 50.9 mm).
There is also a low Vforward diode in series with the 3.3/5V supply lines and VCC output ports (see the block diagram above) to protect from any reverse current from devices connected to the boards or from an external supply. The Vf value depends on the current, but the drop is typically 0.1V@0.01A, 0.2V@0.1A, 0.3V@1A. To overcome this Vf drop, you can use your own supply on the PWR jumper connector instead (this is supported on the adapter boards). The 3.3/5V supply lines support up to 500mA of supply current shared across all ports when powered from the USB port (and up to 1A from external supply). The board itself has a quiescent current of 20mA@5V through the USB port).
Risks and challenges
Since the design is ready to manufacture, we just need to hit the go button with component orders (which we should do before the campaign ends if things are looking good). The parts selected have little supply risk, so there shouldn't be any delays on this end. We also have several reels of capacitors already, so the MLCC supply shortage shouldn't affect us too much.
Once the campaign ends, we will start manufacturing the boards with our own automated assembly and reflow equipment. We can easily manufacture up to 40 boards a day without losing sleep. If the campaign grows well past our assembly capabilities, we have contacts with local manufacturers who can pick up the slack to meet our delivery goals.
We do not foresee many difficulties with this project apart from natural disasters, however if there are slight manufacturing delays or a large number of backers, we will send boards out as they are made, in the order that backers backed the project. We will of course keep you in the loop each step of the way.Learn about accountability on Kickstarter
- (25 days)