Posts Tagged ‘shop’


Time-of-flight measurement


One of the requirements of the product I’m developing is that I be able to tell the relative distance along a wire of all the nodes in the network.  Because they are sitting on the bus in parallel and are not allowed to cut and internally bridge the wire, I have to use some arcane methods to figure out where they all are.

What I found was a chip from ACAM called the GP2, which is a time-of-flight measurement chip capable of 50 picosecond resolution measurements between start and stop pulses.  Using this, I can tell each node in turn to place a short across the bus (held with power from a cap), and measure how long it takes for a pulse to traverse one half of the wire, the node, and the other half.  By making averaged measurements and sorting the nodes, I can determine their order on the bus.

The first generation board for this included a bunch of jumpers to allow me to reconfigure the various timing-side pins:

It took quite a bit of time to work out how to get the chip to function in the first place, thus the extra resistor and jumper wire around the crystal.  Turns out ACAM put a pretty fragile oscillator on their chips, which requires both a drive-side series resistor (220R) and as well as a parallel resistor (560K) in order to work.  This could be contrasted with a conventional 8-bit microcontroller that generally functions without anything except the crystal at all, but is “cleaner” with load caps.  Sigh.

The jumpers allow me to enable the start and stop inputs, route the fire-pulse generator to start and the line interfaces, gang the two generators together (for 96mA drive current), and configure the “fire-around” mechanism that I don’t entirely understand since I don’t need it…

In an effort to make the design more useful for integration into a protoboard form of the network master, I redesigned it as a 600mil DIP module:

All the same functionality is present, but without all the jumpers.  The 32KHz calibration crystal is missing from this board because Digi-Key had (and still does, my notification to them apparently not having taken effect yet) the ECS-.327-7-38-TR listed as a 4.9×1.8mm crystal, rather than the 7.0×1.5mm it really is…  I have actual 4.9×1.8mm crystals coming on Monday or Tuesday, so I’ll fill that in.  However, since I don’t actually care about absolute accuracy at this point, I really could care less about the calibration clock.  On the bottom is a (unpopulated) site for an MCP1703-3.3 regulator, with pins on the top left for both +5V and +3V3.  All the power and digital I/O is on the top side, while all the measurement-side pins are on the bottom.

Getting the chip actually running was a monumental exercise in frustration, since the datasheet (“registration” required) for the chip is easily the worst-laid-out document of its type I’ve ever run across.  While the designers of the time-of-flight core in the chip were clearly rather talented, whoever did the SPI and registers front-end needs to be shot. Repeatedly.  That being said, I plan on writing up a better organized and more coherent “quick start” along with default registers for the module…  I’ll probably even publish (as-is) the Python GUI I created to tweak all the registers more easily, which operates via BusPirate.

The first board pictured is about to be shipped to a guy in Brazil who managed to find my un-set-up webshop with it listed.  At some point soon I need to try rebuilding the shop with a different backend and actually get it up and running fully, at which point I’ll be offering the DIP module for sale.  Lead time on the module will be somewhat long though, since the one pictured above has the last of the 3 chips I purchased at ~$32 each.  If anybody wants one, I’ll have to order more chips first.  I have 2 unpopulated boards in my possession at the moment, so if you’re interested in one, speak up ;-)


Webshop coming soon!


I’ve started setting up an osCommerce installation on my colo machine, and am trying to both get my bearings within the software package and get a shop set up with some kind of sanity.  The only products listed so far are the ATxmega bare and assembled boards, and an under-development DMX-512 variant.  The shop will end up listing a lot of under-development items, as that’s how I intend to gauge relative interest in my many and varied projects.  Pre-sales and people expressing strong interest via a poll of some sort will tell me which projects I need to focus on first.

Given Sparkfun’s recent posting about the number of such electronics webshops that are doing more than $1million yearly revenue, I’m hoping that I can offer products that fill needs that haven’t already been met elsewhere, and end up with a nice revenue stream to boot ;-)

The webshop will be formally opened once I can get a few more projects listed, and get the whole front-page/logo/layout thing at least partly under control.  I’m hoping for no more than a week from now, since I’ll have not only bare PCBs but assembled modules IN STOCK and ready to sell in about the same timeframe.


Xmega adapter boards for breadboarding


I’ve got a number of projects coming up that would be radically simplified by a) using ATXmega parts, and b) breadboarding a prototype.  The problem is that Xmega’s don’t come in anything but surface-mount packages.  The obvious solution is to construct an adapter board.  A straight pin conversion would be a waste of effort, so adding programming headers, clocks, and decoupling capacitors is a necessity.

I posted to the DorkbotPDX list to see if anybody is interested in ordering some of these alongside my own order in the next group PCB buy (April 26th), and got one response almost immediately.  As a result I’m going to tweak the boards up and make sure they’re ready to go, and post them up here for comments.

The first board here is the ATxmega*A4 unit, which is a 40-pin 600-mil DIP.  PDI header on the right, crystal on the left, decoupling and AVCC filter caps scattered around.  Port pins are labeled as are + and -.  PDI pins are accessible on the main header as well as the programming header.  Discretes are all 0603 for ease of assembly, though the chip itself is a QFN (unfortunately).

The second board is a straight extrapolation of the first, designed for the larger A3 chips.  It’s a 60-pin 600-mil DIP with the same basic feature set.

I’ll be tweaking these over the next few days, and hopefully producing a batch of them in the next couple weeks.


Isolated USB cable, hub


The next design I’m showing off is a tiny little board (1.4″ x 0.45″) that houses both an ADuM4160 USB 2.0 low/full-speed isolator, and an ADuM5000 100mW power isolator.  The two together form the core of a fully-isolated USB cable, which means you can safely connect your externally-powered device to your computer without any worries about where the relative ground potentials are.  This is critical for my main contract, because each board takes power from further and further down a main power bus, which means that even after the regulators do their thing, the ground potential on each subsequent node on the wire is different from the previous.

The ADuM4160 requires power on both sides of the transformer isolation barrier to run its encode/decode circuitry, which is why the ADuM5000 is required to provide power.  The upstream port of a USB device does not provide any power to the cable, so there’s no power for the device side of the isolator without the ADuM5000.  However, the 100mW limit means you really can’t run most bus-powered devices off the isolator.  OTOH, why would you be putting a ground isolator on a bus-powered device anyway…?

Isolated USB cableThe other design is a 7-port USB hub based on the same concept.  The upper-left port is the upstream, the remainder are downstream.  All 8 ports are fully isolated for both USB and power.  The 100mW limit of the upstream ADuM5000 should be sufficient to drive the 7 downstream ADuM4160/ADuM5000 pairs as well as the TUSB2077A hub chip, but not provide any power at all to even the lowest-power of devices…

Isolated USB hub

I haven’t had luck yet getting the cable isolator to work, due to a combination of problems not the least of which was the lack of proper silkscreen in the parts library footprint I stole.  It helps if the ADuM5000 isn’t backwards, eh?  I haven’t gotten back to trying to finish that because the memories of spending a week bashing my head bloody against the problem are still too painful.  I’ll get to it soon though, because I will need a quantity of them very shortly.  The hub is still sitting on my desk as a bare PCB, since I don’t really want to start sticking some $70 of parts on the board until I know the smaller version works…

Once they are confirmed working, I plan to offer them for sale somehow.  I know there’s interest, because only a few days after posting to the DorkbotPDX list about them, I got an email from someone entirely unrelated to dorkbotpdx about wanting to buy some. Go Google!