Bookmarks

Long overdue USB Isolator Assembly Guide is finished. It describes building Analog Devices ADuM4160-based USB Isolator kits. The guide contains component identification, step-by-step building instructions and soldering hints. Those who has their isolators already built will find useful powering and tweaking information at the end of the guide.

Recently, I was researching low-noise DC-DC converters and while reading Linear Technology Application Note 70 found this clever and useful circuit, designed by Jim Williams. The idea is to sense current in power inductor of the converter with another inductor, placed within short distance from the first one. The sensing inductor is connected to a circuit which amplifies and conditions the signal and generates nice clean square wave pulses which can be used to trigger oscilloscope sweep. The probe is isolated from the circuit preventing measurement corruption. As a bonus, analog output of probe amplifier allows observing current waveform through power inductor.

As is often the case with application notes, circuit description and build details are somewhat brief; I’m posting my notes hoping that the information will be helpful for other builders. Also, since BatchPCB doubled my order, I have extra PCBs; if anyone wants to build this circuit on a professionally made PCB with just couple green wires, e-mail me – the PCB can be yours for the price of postage.

Q. I am getting “USB device not recognized” error message – what do I do? Also, since the isolator is soldered into my circuit, “reconnect peripheral” suggestion seems too difficult to follow.

I decided to write this article after receiving several e-mails from people who bought my isolator. While setups described in those e-mails were different, the problem was the same – a PC refusing to recognize the device connected through the isolator. Here I will try to explain what is happening and also share my ideas how to troubleshoot and possibly fix the problem.

When nothing is connected to USB port, the bus is held at ground level with pull down resistors on the host side. USB device, when connected, pulls one of bus lines up, often times also with a resistor connected to Vbus and data line. Host sees it, sends bus reset and tries to query the device. If device is answering, host keeps querying the device and eventually enumerates it. When device is enumerated, application takes over.

If device is not answering (like for example, when self-powered device is turned off), host will give up and post “Device not recognized” message. To get attention from the host, we need to generate bus event, i.e., disconnect the peripheral and connect it back again.

Immediately after announcing USB Isolator circuit I received several suggestions to put together a parts kit. Indeed, users of such devices are usually not afraid of small parts and generally aware of which side of soldering iron is better suited for holding on to. Also, I’m having hard time trying to find a supplier, where one can buy all the parts to build this circuit; usually, you need to buy from 2-3 suppliers, which significantly adds to shipping expenses. Considering this, I’m now offering not one, but two parts kits to build an USB Isolator based on Analog Devices’ ADuM4160.

USB Isolator PCBs has arrived. In this article I will be talking about building and configuring one. The PCB was designed with hobbyist-friendly large size SMD packages and 10mil clearances and I hope it won’t be difficult to made one at home. The layout files are available from downloads section.
Let’s talk about parts procurement. This is a BOM at Mouser sans ADuM4160, LT1376-5, and PCB. This is BOM at Digi-Key, which includes LT1376-5. Last time I checked, Digi-Key was way more expensive. As far as ADuM4160, since no one sells it in single quantities right now (check this using FindChips), the easiest way to get it is to ask Analog Devices for a sample, they are generous folks.

During development of Arduino USB Host Shield I designed small and simple boost converter to provide 5V to Vbus from 3.3V input. The circuit, built around Linear Technology’s LTC3426, worked so well, that I decided to release a standalone version. There are many uses for such converter – LCD contrast bias being most typical. Another example when 3.3V to 5V converter could be handy, is old style Arduino shields. This photo shows my converter sitting on empty space of 3.3V-only Arduino Pro board.

Maximum output current of the converter is 650ma. It can be loaded up to 700, but inductor becomes warm. Output ripple is around 25mv at 500ma. If less ripple is desired, 3.3uH inductor can be used. Output capacitor can be increased also, hovever, benefits are marginal. Measured efficiency of this circuit is around 90%.

Project files, including Eagle schematic and layout files, as well as Gerbers, are available from Downloads section. Design rules are pretty relaxed and board is routed almost on a single side (the other side is a ground plane), so making one at home should not be a problem. Also, PCBs and assembled and tested converters are available in the store.

We all love USB. It is well supported across many platforms, easy to work with, and even able to provide a little power to the peripheral. However, the quirk of USB is that peripheral must share ground line with the host. The host is usually a PC and very often a desktop, which means it’s USB ground is electrically connected to earth ground in the wall outlet. With PC-based test instruments, like oscilloscopes, logic analyzers and such, It works fine most of the time, but not always.

There are situations when we prefer our ground separate. It happens when PC/earth ground is too “dirty” and we don’t want our circuit to pick up this dirt. Sometimes our device’s ground is not too good or even dangerous if connected to earth ground. Sometimes we are trying to overcome ground loops. Sometimes, we want our oscilloscope to behave like a multimeter, i.e. being able to show voltage drop between any two arbitrary points of the circuit. In any of this cases we want our USB data and ground isolated from the host.

Isolation improves common-mode voltage, enhances noise rejection, and permits two circuits to operate at different voltage levels. It also tends to save test equipment, as well as PC itself. It is also very useful in industrial setting, that probably why industrial USB isolator devices cost between $200 and $400. While looking for a solution for my lab, I found interesting USB isolator part, recently released by Analog Devices, and decided to give it a try.

Parts has arrived yesterday and I started test-building my USB Host Shield prototype PCB to check functionality and buildability. Since design is not final, I’m not publishing Eagle files yet – they will be online as soon as I get all errors fixed. In the meantime, the PDF of the schematic diagram is available.

One of the goals of this design is to make it compatible with both 5V and 3.3V Arduinos. Since MAX3421E is 3.3V part, I added some extra circuitry to provide 5V compatibility.

I started my testing by building 5V to 3.3V converter piece to check parts values and circuit layout. The circuit is located in the upper-left corner of the schematic and in the lower-right corner of the board. Please also take a look at the title picture if you haven’t already to see the layout. This converter comes in handy if, for example, you are using 5V Arduino and/or need to provide Vbus power for bus-powered peripheral and want to use this supply to power the shield/Arduino also. Converter is rated for 600ma, enough to power both MAX3421E and Arduino, if necessary.

After playing with Xbee connected to a PIC I decided to transfer the design from the protoboard to make it more pretty and compact. The following board contains Xbee connectors, PIC18F26K20, bypass caps and Vpp limiter to use with old programmers/debuggers. I wrote several articles describing the circuit and it’s capabilities, see “Related posts” for more information.

As usual, Eagle files are available from download section. The PIC code written for Xbee protoboard will work here with very little modification. This board is good as a base for more complex sensors which require MCU on-board.

I am working on several applications for this board and will be posting results here this summer.