Universal Signal Isolator shield for the Arduino DUE

Why bother?

If you are reading these lines, you are probably into DIY audio. A big part of DIY audio is building DACs. Since these last few years DACs have become fairly complex, sometimes they can benefit from being controlled by microcontrollers. I myself own two such DACs, a Buffalo III and a Soekris dam1021. I have written code to control them with the help of Arduinos, but early on I realized that I also needed to have electrical isolation between the Arduino and the DAC, in order to eliminate the possibility of interference and/or noise. To accomplish that I had designed a little Arduino shield.

The years passed and my needs changed with the introduction of the dam1021 DAC and its serial interface. Even though this interface is electrically isolated from the dam board, it is not isolated from the USB to I2S interface. This means that my Arduino would have to share a common ground with my XMOS-based USB interface. I did not want that to happen.

My first thought was to design a new shield specific to the dam but then I thought “why not design a universal isolator shield?”. It would provide electrical isolation for both I2C as well as serial signalling.

Thus was born the Universal Signal Isolator shield for the Arduino DUE:USIs_bunch

The original design was completed around September 2015, but since then there has been a lot of interest in this design so I have been further optimizing it.

The result of this optimization was a short run of Rev. 1.1 boards (very similar to the original design) and then finally this PCB:

Rev.-1.2-pic

It’s called “the Rev. 1.2”. I have introduced it in this post, detailing the changes from the original design. The following documentation pertains to the newer design. The documentation for the original design (in archive form) can be found here:  Universal Signal Isolator shield for the Arduino DUE (Rev.1).pdf (297 downloads)

Specs

So, what does this thing do?

  1. Electrical isolation of I2C signals, complete with support of 8 isolated inputs or outputs (via an MCP23008 IC). Three of the MCP’s pins are high current outputs (up to 100mA).
  2. Electrical isolation of up to 2 serial ports (implemented with an Si8642).
  3. Electrical isolation of the second I2C interface of the DUE (implemented with an ADUM1250).
  4. Powered either by 5VDC, 8-15VDC (non-regulated) or 7-12VAC (includes support for on-board rectification and filtering).
  5. Support of a 5VDC power-on relay (up to 100mA).
  6. Header for connecting a Nextion display (for future use – not yet supported by any of my code!).
  7. On-board EEPROM memory (24LC256).
  8. Passthrough for the DUE’s SPI header and relevant CS pins.
  9. And of course full compatibility with the previous shield (same pinouts for the encoders, IR, TFT, etc.).

Schematic & PCB

This is the schematic & PCB of the board in Eagle format (v1.37, a.k.a. “Rev.1.2”):  USI Schematic & PCB (461 downloads)

USI-parts-placement-rev1.2

USI Bill of Materials, Rev. 1.2
PCB Part Value Notes
U1 24LC256 SO-08 EEPROM chip
U2 Si8605 SOIC-16 I2C Isolator
U3 MCP23008 SO-18W 8 input/output port expander
U4 Si8642 QSOP-16 Serial port isolator
U5 ADUM1250 SOIC-8 I2C Isolator
Q1 BC856, BC808 or other equivalent PNP SOT-23 TFT backlight control
Q2 BC856, BC808 or other equivalent PNP SOT-23 port expander transistor
Q3 BC856, BC808 or other equivalent PNP SOT-23 port expander transistor
Q4 BC856, BC808 or other equivalent PNP SOT-23 port expander transistor
Q5 AO3400 or other equivalent N-Channel MOSFET SOT-23 power relay mosfet
B1 Bridge rectifier 1A DB107 DIP-4
C1 1000uF 16V
C2 100n 1206
C3 100n 1206
C4 100n 1206
C5 100n 1206
C6 100n 1206
C7 100n 1206
C8 100n 0805
C9 100n 0805
C10 100n 1206
C11 100n 1206
R1 8.2K 1206
R2 2K 1206 pull-up resistor (optional)
R3 2K 1206 pull-up resistor (optional)
R4 5.1K 1206
R5 5.1K 1206
R6 5.1K 1206
R7 2K 0805 pull-up resistor (optional)
R8 2K 0805 pull-up resistor (optional)
R9 8.2K 1206
R10 10K 1206
D1 1N9001 DO214BA
L1 Ferrite Bead, low DC resistance, 3216
L2 Ferrite Bead, low DC resistance, 3216
Reset PCB-mount momentary switch

How do I make it work?

Power

You have five ways of powering your Arduino & Shield:

  • Through one of the Arduino’s USB ports. I use this way only for testing – it’s not very practical once you have your Arduino inside a chassis. Still, it will work just fine and you do not need to install any of the power-related parts of the shield.
  • Through the DUE’s DC in jack.
  • Through the DC_5V header. Here you need to supply 5VDC. No more, no less. Your power supply needs to be regulated and be capable of supplying between 250-350mA of power, depending on whether you will be driving a power relay or not. You need to solder on L2 and the relevant header.
    DC_5V
    Pin No. Function
    1 5VDC
    2 GND
  • Through the DC_UNR header. Here you need to supply between 8 and 15 VDC, but it may be non-regulated. The Arduino’s reg will do the regulation.You need to solder on L1 and the relevant header.
    DC_UNR
    Pin No. Function
    1 8-15VDC
    2 GND
  • Through the AC_IN header. Here you may connect a transformer with a secondary winding of 7-12VAC, rated at at least 5VA. If you choose to go this way, you need to install B1, C1, C11 and L1 besides the relevant header. The shield takes care of the rectification and the filtering but the Arduino does the regulation.

Basic connectivity

You really should install U1 and C4. Both TFT HiFiDuino and ArDAM1021 now make use of this memory to store DAC settings.

If you will be using the shield with a 3.2″ TFT, you will need to install R1, Q1 and TFT_POWER. This is the pinout of TFT_POWER:

TFT_POWER
Pin No. Function
1 TFT backlight (+)
2 TFT RD
3 TFT Vcc
4 GND

The current versions of TFT HiFiDuino and ArDAM1021 still make use of only one of the two supported rotary encoders, so you can get away with installing only ROTENC1.

ROTENC1
Pin No. Function
1 D7
2 D6
3 D5
4 GND

If you will be using an IR control (what are the chances of you not using one, right?), you will need to install C10 and the IR header.

IR
Pin No. Function
1 D9
2 GND
3 Vcc

If you will be controlling a power on/off relay, you will need to install R9, Q5, D1 and the POWER_RELAY header.

POWER_RELAY
Pin No. Function
1 5VDC
2 GND

Isolated I2C ports

You may enable either the first I2C port (I2C) or the second one (I2C1) or both.

  • To enable the basic functionality of the first port, you need to install U2, C2 and C3. The resistors R2 & R3 are pullup resistors and you may need to install them depending on your DAC’s I2C lines. If they already have pullup resistors (like in the case of the TPA Buffalo III) you do not need them. Power to the isolated side is provided by I2C_ISOL1, pins 1 (+) and 6 (-).
    I2C_ISOL1
    Pin No. Function
    1 Vcc (isolated)
    2 SDA
    3 OUT
    4 IN
    5 SCL
    6 GND (isolated)
  • To enable the 8 isolated inputs/outputs, you need to also install U3, C5, R4, R5, R6, Q2, Q3, Q4 and of course the MCP_INTERFACE header. In this case, power to the isolated side my be provided either through the I2C_ISOL1 header or through the MCP_INTERFACE header (pin 1 (+), pin 10 (-)).
    MCP_INTERFACE
    Pin No. Function
    1 Vcc (isolated)
    2 GP0
    3 GP1
    4 GP2
    5 GP3
    6 GP4
    7 GP5 (only output, 100mA max)
    8 GP6 (only output, 100mA max)
    9 GP7 (only output, 100mA max)
    10 GND (isolated)
  • To enable the second port, you need to install U5, C8 and C9. The resistors R7 & R8 are optional pullup resistors (see first case above). Power to the isolated side is provided by I2C_ISOL2, pins 1 (+) and 4 (-).
    I2C_ISOL2
    Pin No. Function
    1 Vcc (isolated)
    2 SDA1
    3 SCL1
    4 GND (isolated)

Isolated Serial Ports

The shield supports two (2) isolated serial ports, SERIAL2 and SERIAL3. They share one power supply and have a common ground, since they are both supplied from the same one isolator IC, U4. You will also need to install C6, C7 and the SER_ISOL header. Power to the isolated side is provided by pins 6 (+) and 5 (-).

SER_ISOL
Pin No. Function
1 TX2
2 RX2
3 TX3
4 RX3
5 GND (isolated)
6 Vcc (isolated)

SPI PORT

The shield supports passthrough of the DUE’s SPI port, in case your design has a use for it. It is provided by soldering on an SPI header and the SPI_CS header.

SPI_CS
Pin No. Function
1 Vcc (3.3V)
2 GND
3 A11
4 A10
5 A9
6 A8

Do you have one for me?

I try to keep a few boards around, since friends ask for them all the time. Contact me.