Archive for the ‘Miscellaneous’ Category

Theremax, Part I: Circuit Board

Monday, January 22nd, 2007

A Theremin is an electronic instrument played by waving your hands in the air near a couple of antennae. It has matched pairs of high-frequency oscillators, and the change in capacitance due to the proximity of your hand changes the frequency one oscillator in the pair, causing “beats” (heterodyning) between the pair that form audible wavelengths. The Theremin was invented early in the 20th century by Leon Theremin, a Russian physicist. It’s the spooky sound you hear in the Beach Boy’s “Good Vibrations”–although that was actually recorded with an electro-theremin, a different instrument designed to mimic the Theremin’s sound.

I don’t know when I first became aware of Theremins, but I know I’ve wanted one at least since February of 1996, when Electronics Now published “Build this Theremin,” by John Simonton of PAiA Corporation. The full PCB layout and parts were published in the magazine, and PAiA has also sold their “Theremax” kit continuously since then.

And I finally ordered one.

Two, actually; my friend Cort wants one as well.

They arrived about a week later.

Board Assembly

Theremax kit parts

I bought the kit with the PCB and all components, and the separate partial case kit with the antennae and a nicely screened front panel. The full case kit was another $60, and I figured I could make a case that I’d be happy with for less than that. I think it says a lot about PAiA and their understanding of the hobbyist marketplace that they offer so many options, instead of forcing everyone into the same cookie cutter package.

The first thing I did was sort out all of the components. There are dozens of resistors and capacitors, a handful of transistors, four tunable inductors for the oscillators, pots and jacks for the panel (included in the parts kit, even if you don’t buy the panel), and miscellaneous bits like LEDs and ICs. They even threw in hookup wire to connect the PCB to the control panel, and a gator jumper for bypassing the volume control during one stage of hookup–literally every part you need to get up and going, except solder.

Theremax PC board, component side

Theremax PC board, solder side

Next, I took a look at the PCB. It’s a nicely-made single-sided board, with silk-screening on the top side for component identification only. I have only two small complaints:

  • The identifying marks for resistors and capacitors are under the component, so they’re no longer visible once the component is installed. I know there’s not a lot of extra room on the board for labels outside of the component footprint, but having to refer to a separate parts placement diagram really makes troubleshooting more difficult.
  • The resistors and capacitors are roughly numbered from upper left to lower right; but some of the numbers stray across the board, making it hard to locate the correct part. Maybe I’m too picky, but I really like an orderly numbering system during the assembly and troubleshooting stages.

Theremax PC board, resistors installed

The assembly instructions give a reasonable order for soldering in the components, which I mostly followed–jumper wires and resistors first,

Theremax PC board, diodes installed

then diodes. Note the blue diodes near the center of the board–germanium, with a lower voltage drop for increased sensitivity. I’ve read a nice description of how that aids the Theremin circuit, although I don’t recall it at the moment.

Theremax PC board, inductors and ICs installed

Here I deviated slightly from the instructions’ assembly order, and installed the ICs and inductors next. Because I don’t have a cool PCB holder, I solder with the board upside down on my workbench; and because of that, I prefer to install the shortest components first and work up to the tallest,

Theremax PC board, ceramic capacitors installed

which means doing the inductors before the ceramic capacitors,

Theremax PC board, electrolytic capacitors installed

and the electrolytic capacitors last.

Theremax PC board, transistors installed

The transistors are actually shorter than the electrolytics, but they cling to the board pretty well, thanks to the hole spacing being considerably wider than their lead spacing.

Control Panel

Theremax control panel

PAiA’s professionalism really shines here, and my photo doesn’t do it justice. This is a very nicely lettered control panel, as good as those on most of the equipment I own. I like the retro feel of the white paint on black brushed aluminum, rather than some glitzy decals on colored plastic that you might see these days.

Theremax control panel, back

I installed all of the potentiometers and jacks, twisting them as needed to try to get the hex nuts on the front to line up evenly. (I like to use the phrase detail-oriented.)

Theremax control panel, back with ground connections

The instructions say to run bare wire from pot to pot for the ground connection; but I’m not wild about bare wire (especially when it has to loop and could be snagged and pulled out to contact something else), so I put some clear heatshrink over it for sleeving. I also built up the LED assemblies–replacing the provided dark red LEDs with my own green LED for the power light, and a matching red LED for the gate trigger indicator.

Theremax PC board, fly wires installed

Then I soldered all the fly wires to the PCB. The assembly guide gave very specific lengths; but I think things must have shifted since that was first printed, because the wires had completely different amounts of slack once connected. I shortened some wires and should have lengthened others, and made notes about all the changes I made and further changes I should have made. Here are my notes about the colors I used and the lengths I’d recommend:

Board Panel Signal Length Modify Color
A R79-2 P trim 9 1/2 -1 blue
B R79-3 P trim + 9 1/2 -1 white
C R80-3 V trim + 5 +1 white
D R80-2 V trim 5 +1 green
E R81-3 timbre short sine 9 1/2 red
F R81-1 timbre short square 10 1/2 -1 blue
G lug GND 10 1/2 -2? green
H R82-3 pitch CV 12 1/2 blue
J R83-3 volume 9 1/2 red
K R84-3 velocity 9 1/2 +1 white
L J3-T velocity CV 11 -2 red
M J2-T gate 10 1/2 -1/2 red
N J2-R trigger 10 1/2 -1/2 green
R J1-T audio out 12 3/4 -2 1/4 blue
S J5-T volume CV 16 -6 blue
T J6-T mute 16 -5 white
+ S1-1 +12V 12 -1 red
SG J1-S SGND 5 +1 white
lug S1-3 GND 10 green

Theremax control panel, back with signal wires installed

The last thing I did in that batch of soldering was run signal wires within the back of the panel. The instructions gave this step at the same time as the ground wiring, but I wanted to wait until I had the fly wires chosen so I could maintain the same color wire everywhere a signal traveled.

Next Steps

By now, I’ve connected the fly wires to the control panel, built a case, and semi-mounted the kit in the case. I’ll post those pictures soon.

LED Wrist Rest

Wednesday, January 3rd, 2007

Last fall, my friend Jeremy and I were killing time at Best Buy when we ran across this blue gel keyboard wrist rest. He was looking for a wrist rest anyway; and since we’re obsessed with blue LEDs, I offered that I could rig it up to glow. He loved the idea, and his wrist rest has been sitting at my house begging for attention ever since.

I’ve been tinkering around with ideas for a month or two, but finally yesterday I cleared some space on my workbench and got at it. There were four main components to the project:

  • The translucent blue wrist rest, which I hoped would have enough internal reflection to glow nicely
  • Blue LEDs, which I harvested from a string of Phillips Christmas lights
  • A USB cable, to supply power to the LEDs (Jeremy preferred USB so the lights would power on and off with the computer)
  • Some means of holding the LEDs in place

Glow Test

I’d been thinking I’d drill some holes into the wrist rest to embed the LEDs, but I wasn’t sure quite what the effect would be. I started testing by putting a couple of LEDs in my LED tester and shining them into the gel pad from different locations and angles, with disappointing results–they didn’t make any part of the pad glow like the edges of plexiglas (high internal reflections from the parallel surfaces) or milky plastic (high diffusion of the light beam).

So they kinda shine through instead of making the whole thing glow, and I just have to deal with that. On the other hand, that meant I didn’t need to bother drilling holes into the gel–I could butt the LEDs up against it and they’d work just as well. So I started thinking about etching a long, skinny circuit board to go across the back . . .

USB Cable

And meanwhile, tried to figure out where to get a USB cable to sacrifice. USB cables cost more than it seems like they ought to, so I was asking around for a dead USB mouse that I could salvage. I really wanted a black cable, to disappear on a dark desktop; and I really wanted a skinny and supple cable, to route well.

Then a couple of guys at work gave me a USB hot plate, I kid you not. It was from a trade show and was supposed to keep a coffee mug warm–which, no surprise, didn’t work out so well, given the limited current USB can supply. It had a skinny cable with silver foil inside–not black, but it still sorta fit with the theme. Perfect. Well, good enough.

Light Bar

Since it would have taken me a while to rig up a PC board for the LEDs, I was thinking about other ways to hold them in place and wire them together. I have some black plastic U-channel pieces about a foot long, which were supposed to be magazine or books supports for some wire cube shelves I bought, but which I’ve never used. Yesterday I cut the brackets off one, drilled holes in the back to poke leads through, and stuck four LEDs into it.

Several of the LEDs in the Christmas tree lights had 250Ω resistors already soldered to one leg, and that turned out to be a nice current-limiting value for a 5V supply, so I just left them in place. I daisy-chain soldered wires to the leads, connecting the LED/resistor assemblies in parallel, and attached the USB cable to one end. [Side note: In the USB cable, the black wire was positive and the white wire was ground. Good thing I checked first.]

Yup, I was soldering wires onto leads that were poking through (and touching) plastic. Surprisingly, I didn’t have much trouble with it–the wires were pretty clean, so they all soldered quickly, and apparently didn’t heat up much. I didn’t notice any melting plastic at all.

I used some big heatshrink to anchor the end of the USB cable in place and provide some strain relief (lower right end of the above pic), and the light bar was ready to go.

The LEDs are on the inside of the bar pointing out. That does a reasonable job of shielding the (annoyingly bright) light sources from direct line of sight, and plenty of light still makes it into the gel pad when the light bar is placed up against it.

This isn’t just a trick of the camera–it really does look like four beams of light aimed through the wrist rest. It’s not quite what I was aiming for, but isn’t a bad effect in itself.

The digital pic exaggerates the effect, but the four LEDs really are two different colors–two slightly more aqua, two slightly more violet. They’re all from the same string of LEDs, and I’d never noticed the effect before–I assume they’re from different manufacturing batches, with not particularly high quality control.

Credits

It wasn’t much of a project, but (1) it provided motivation to get some things cleaned off of my workbench; (2) it was itself part of the clutter on my workbench; and (3) it helped build momentum to get me back into tinkering. I’ve already started on my next project, which should appear here in a few more days.

Thanks to Jeremy Burkey for the photos. I forgot to take pics as I was working on it; and his camera did a much better job with the dark shot than mine would have anyway.

EAGLE to PADS (FreePCB) Netlist Converter

Saturday, September 16th, 2006

Based on a reader request, I’ve posted my EAGLE to PADS netlist conversion script, for drawing circuits in EAGLE and exporting them to produce in FreePCB (if the board is too big to draw in free EAGLE).

If you have questions, suggestions, or package translation contributions, please submit them as a comment attached to this post. If you’re viewing this post alone on a page, the comment box should be visible immediately below. If you’re viewing this inline in my blog, you should be able to click the “Comments” or “No Comments” link below to get to the comment box.

Tektronix Logic Analyzer

Thursday, August 17th, 2006

A logic analyzer is a device somewhat like an oscilloscope, in that it displays the waveforms of electronic signals on its screen. It differs from a traditional scope in that it captures data in memory for longer study of ephemeral events rather than only displaying what’s happening in realtime (modern capture scopes do this, too); it typically has many channels (8, 16, or more plus clock and other “meta” inputs) rather than one, two, or four; and it can be configured for complex trigger events rather than only the level of a particular signal. In short, a logic analyzer does for digital system troubleshooting what a scope does for analog signal work.

I’ve never had a logic analyzer, and last spring when I started working more with the LogoChip and other digital parts, I started hankering for one. I found and bought this Tektronix on eBay for only $30 plus shipping:

Tektronix Logic Analyzer, Front

It has text-based menus, online help, and a charming monochrome green screen. It’s built almost like general-purpose 6502 luggable microcomputer, with a big stack of signal handling boards in it.

Tektronix Logic Analyzer, Interior

The only catch was, it didn’t come with any probes. I was hoping at first that all I needed was ribbon cables to fan out from the dual-row headers on the front panel, but I couldn’t find pinouts anywhere (including online). I emailed Tek’s tech support asking whether they might still have pinouts available that I could download (since they no longer sell or support this analyzer and wouldn’t be losing any money on me), and I got an incredibly helpful phone call back from them.

Their tech support representative indicated that the probes have active CMOS circuitry in them, so you need more than just pinouts; and he gave me the model numbers of three different probes that should work with that analyzer. I saved an eBay searched and waited, until a couple of weeks ago when one of them popped up and I bought it for about $25.

Tektronix P6444 Logic Analyzer Probe

There’s obviously a fair bit of circuitry in there that I wouldn’t expect to be able to duplicate, so I’m glad to have bought it. Now I still need cables to go from the probe module to the circuit being analyzed. And after I received the probe module, the seller emailed me to say that in the same box as the module, he also had these connectors that went with it; did I want them for another $25?

Tektronix Probe Wiring Assembly

Okay, if he’d included them in the auction with the module they go to, he probably wouldn’t have got any higher bids. It’s his job to maximize his profit, so I suppose he’s doing what he ought to. But I feel like a guy who just negotiated to buy an antique auto out of a farmer’s field, only to be asked whether I’d also like to buy the engine that goes with it that I have over here in the barn. Yes, sure I’d like the wires that go with the probe module you already sold me; and at the same time, no, I really don’t feel like sending you any more money for something that really belongs with what I bought the first time.

Furthermore, most of the time I’ll be using the analyzer, it’ll be with circuits on a breadboard, where I’m going to have to make my own cables terminating in pins anyway. These probe tips have really cute grippers on them that are perfect for grabbing onto classic DIP leads, but useless on a breadboard.

But I was still wavering, since I don’t know how to describe these tips well enough to save an eBay search that would pick them up, making this a rare opportunity to get something I might eventually want.

I called Cort last night to ask his opinion, and the moment he said “troubleshooting your arcade games,” I knew what the answer was.

I just sent the PayPal.

Hacking Cell Phone Displays –> Travel Route Timer?

Friday, August 11th, 2006

I just ran across Jakob Selbing’s instructions on reusing old Nokia cell phone displays via the Make blog. And I just happen to have a whole box of dead phones from that model line; and they look like the interface is the same one as in his article.

Nokia cell phone display and keypad board

This opens a number of interesting possibilities. The display is 84×48 bitmapped pixels, and it has a very simple serial communications format. Jakob’s hack reuses the entire UI (display + keypad) board from the cell phone; but the display itself unclips from that board and could be used independently, by etching appropriate pads onto and cutting appropriate clip holes into a new PCB.

My first thoughts were all the ways I could reuse just the display: for a digital thermostat I’d like to build, for status indication and debugging on robots, for status indication on a CNC drill/mill machine, etc. But this morning on the way to work, I thought of another project I would want to build into an actual entire cell phone case; leaving the keypad, display, and battery; and replacing the “phoneness” board with my own board.

Travel Route Timer

My grandfather kept meticulous logs of times and mileage whenever my dad’s family travelled, and all of Neufeld relatives count things. Seriously, when you get together with Neufelds, it’s perfectly common to hear us caculating how many bricks are in a wall, or estimating how many folding chairs are on the rolling racks in the corner, or determining how big the room must be based on a count of ceiling tiles.

Some ten to fifteen years ago, I was driving to Tulsa as much as once a month to visit a friend who had moved down there. (You can see where this is going already.) It was about a three and a half hour drive, and I thought, wouldn’t it be great to have a little pocket device with some buttons and timers that would show me how long I’d been on the road, how far to the destination, and how far to the next landmark.

I figured I’d enter landmarks on the device OR in advance, then have a list displayed on the trip timer and hit the “HERE” button as I passed each one. If there were room on the screen, it could show me landmark countdown time as well as remaining trip time. It’d need a set of buttons to indicate if I stopped at a rest stop or restaurant, to categorize that as non-driving time that might get counted toward estimates of total trip time but not toward time to next landmark. It would average up my actual road times every time I made the trip, and could develop more and more accurate predictions of trip time and variance. Etc., etc.

At first, I had in mind that it would be a custom gadget. Then when Palm computers were invented and I got a Visor, I always hoped to write a PalmOS program to do it. Alas, it never happened.

Now I’m seeing a new opportunity. Cell phones are a decent size to carry around, and they’re made relatively tough compared to other experimenter case options. The Nokias have an adequate display that I now have information on how to use, and there’s a keypad right there for indicating landmarks passed and maybe even entering the names of new destinations and landmarks. They even come with batteries and chargers!

Plus the idea of taking out the middle PCB of the cell phone–the board that actually makes it a cell phone–and replacing it with a board to do something completely different really appeals to me. The only drawback I see is lack of an obvious way to sync it to a PC for offline landmark entry and persistent data storage and analysis.

Hmm . . .

Addendum

The specific incident this morning that made me think of this project was wondering how fast I was going. I’m test-driving a vehicle today, and it just had the speedometer sensor replaced. I drive the speed limit and am used to getting passed on the highway, but this morning it seemed as though I was getting passed a lot more than usual.

I’d want this device to have a speed-check mode, in which I press the button every time I pass a mile marker, and it calculates and displays how fast I’m actually going.

Rotary Phone == Alarm Clock ?!!!

Sunday, August 6th, 2006

Independent of the LED clock project, I’ve been thinking of building myself a new alarm clock. . . . More on that in a while, after I receive some prototyping materials I’ve ordered.

But tonight, watching The Animatrix, I got the wacky idea of making an alarm clock that uses a rotary phone dial for input to set the time. Pick up the receiver, dial the four digits for which you want to set the alarm, and bingo! Good to go.

It kind of escalated from there, to a fairly-well fleshed out rotary telephone alarm clock. Consider:

  • Rotary dialing to set time and alarm.
  • Mechanical bell ringer for alarm–you won’t oversleep that baby!
  • Pick up the handset for alarm functions. Take the phone offhook and dial a number to set the alarm. Alarm rings, lift the handset to silence the alarm.

Primo! Of course, I still have to work out a few details:

  • How do you tell the phone that you’re setting the time? It could accept dialing while the handset is on hook; but that just begs for people who walk up and twiddle with it to be randomly resetting the time. Maybe indicate it with a special dialing sequence like starting with 0 or 411?
  • How do you display the time? Gotta have a four-digit display on there somewhere, and that’s totally gonna mess with the aesthetic. Oh well. Probably have to mount it through the lower front of the phone.
  • How do you snooze versus shutting off the alarm for the day? Leave the handset offhook versus putting it back on?

A rotary multi-line phone with lighted buttons across the bottom could be fun, as would a speech synthesizer to read the numbers to you in the handset as you dial.

Spark Fun has done a rotary cell phone, and they wrote up the processes of interfacing to the rotary dial and switchhook and driving the ringer. Of course I’d write to ask permission first, but I’m sure I could use their work to build the pertinent sections of my clock.

Now I just have to get my hands on a couple of old rotary phones . . .

Resocketing my LED Tester

Thursday, June 1st, 2006

I recently bought a $10 LED tester. It has a 9V battery, a dual-row header to put LEDs in, and resistors to provide different test currents to try different LED brightnesses. [Uh, is "brightnesses" a word??? Whatever . . .] You can use it to determine the polarity of an LED if you can’t tell by the case (I’m getting better at visual identification, though), and it’s really handy to figure out what current you want to use while the LED is still out of circuit.

LED Tester

Problem is, the manufacturer used a cheap dual-row connector intended for header pins (probably .037″) that’s way too loose on the smaller pins (probably .028″) on the LEDs, so I get bad connections that make it difficult to use–I pretty much have to hold the LED in place to keep it lit. Also, the socket elements were oriented with the metal on the sides rather than the top and bottom, so bending the LED pins further out didn’t help make any better contact.

LED Tester with Cheap Socket

Tuesday night I fixed that problem by replacing the original header with a better one from my parts bin.

Parts Bin of Headers

I started with a salvaged header that I desoldered from a printer control board a while back. The header was too long (too many pins), so I cut it to size with a razor saw. These headers are actually really nice to cut; because although they’re not snappable (I don’t see how that could work with a dual-row connector), they’re notched between every set of pins, so there’s a groove in which to start cutting.

Cutting DIP Header

I desoldered the original header from the board with solder wick and the temperature turned all the way up on my new Weller iron. It actually worked pretty well, partly because the board’s plated through-holes were way oversized, so the solder came right out. But I’ve had trouble desoldering things like this before, where the holes are the size they should be and the capillary action just doesn’t pull all the solder out into the wick. Partly spurred by my good luck on this project, I’m starting to do a little research on buying a decent vacuum-powered desoldering station (secondhand, of course).

LED Tester, Solder Side

I soldered the new header in place, tested operation, and reassembled the case. It works much better now–I have five LEDs inserted in a row for comparision, and they all consistently stay lit.

LED Tester with Blue LEDs

My Uncle’s Iron

Wednesday, May 10th, 2006

My uncle Adolf is probably most directly responsible for my interest in electronics. When I was growing up, he and Aunt Wanda ran A&W Electronics, retailing and repairing TVs and other equipment. This was back in the days of chassis construction, before circuit boards, when everything was built onto a metal chassis with insulating standoffs, vacuum tubes, lots of wire, and lots of solder.

When they received TVs that were irreparable, he’d often remove the dangerous parts (picture tube, flyback transformer, and huge capacitors) and give the remaining pieces to my brother and me to take apart. Which we did with great zeal, and a couple of wirecutters. I still have boxes of components that we salvaged out of those TVs; and man, they don’t make resistors and capacitors like they used to. And that’s mostly a good thing.

So when they had a household auction recently, in preparation for moving to a retirement community, I was pleased and proud to purchase two boxes of soldering equipment.

Boxes of Soldering Equipment

I could see the Weller/Ungar pencil irons, and knew that any one of them was worth the $16 I paid for the box. It wasn’t until I got home that I could really see what all I got:

Soldering Equipment

There’s just an amazing amount of stuff crammed into the boxes. These irons have replaceable, screw-in heating elements, and the boxes have several spares of different wattages. One or two of the elements have replaceable tips like we’re used to using these days, and there are plenty of spare tips, too. Eventually, I plan to go through everything, sort out what goes with what, and do a little cleaning on the pieces that do fit together–replace brittle power cords, clean iron handles, polish heating elements, etc.

So?

I desolder a lot of components from dead electronic equipment that people give me. I really prefer older stuff with through-hole components, because SMT parts are a pain to identify and sort, and through-hole stuff is easy to prototype and breadboard with. The fastest method I’ve come up with is to pry up crimped leads with a $2 chisel, heat the solder side with a heat gun, and pull the components out with a chip puller or needlenose and drop them into a tub.

Generally.

Except (he finally gets to the point) for the TO-220 MOSFETs on the printer boards. For whatever reason, their through-holes were plated only barely larger than their leads, and I was having a dickens of a time desoldering them with the heat gun. The board was scorching, I was breathing really noxious fumes (and I like the smell of solder flux, but not so much burning fiberglass epoxy), I was bubbling and flexing the board as I pulled on the FETs’ tabs with a pliers, and still no joy. I ended up pulling the entire plated through-holes clean out of the board (um, maybe “clean” isn’t the best word to use here) and sliding them off the transistors afterward with my soldering iron.

And the Iron?

I’ve previously desoldered with soldering irons and guns, and under some circumstances, direct heat can be very effective at removing stubborn leads. So a couple of nights ago, I got around to digging through the auction boxes to see whether I could find a wide tip. I was looking for something that would hit all three transistor leads at once, and I found exactly that–a gimongous .3″ chisel-tip 40W heating element, still sealed in its original bubble package.

I opened the package, cleaned the oxidation off the tip, screwed it into one of the handles, and plugged it in. When it started getting up to temperature, I smiled in appreciation at the ceremonial first tinning of the new tip. I grinned at its extreme shininess as I wiped off the solder on the damp sponge. I dropped my jaw in amazement as the transistor slipped right out of the board in about a second of applying the tip to the leads. I desoldered the remaining thirty or so transistors in a matter of brief minutes.

The tip kept heating up the whole time. As I was finishing, I would occasionally cast shadows on the iron and see that the tip was now red-hot. I’d wipe it on the damp sponge and see little embers rise into the air as it tore off and burned rough parts of the sponge surface. I was rather unnerved to see this from an element rated at 40W.

But boy, did it desolder them transistors! Yee-haw!

Obligatory FPS Reference

I’m somehow reminded of the differing effectiveness of various weapons against various monsters in Doom. When you run into a cacodemon, you better make sure you have the nailgun handy–even though it’s utterly useless against several other species.

Edge-Lit Scratched-Character Displays

Tuesday, March 21st, 2006

Ted Johnson's Edge-Lit Clock

Okay, I’m not much for filling blogs with links to blogs that link to other blogs ad infinitum . . . but this is just too cool. Ted Johnson built a clock out of acrylic sheets with runes scratched into them, edge-lit with LEDs, and stacked to show multiple different characters per position.

Ted Johnson’s Project

EAGLE for Circuit Design and PCB Layout

Tuesday, March 21st, 2006

I’ve been looking for circuit design and PCB layout software for a long time, and in the past couple of weeks I’ve settled on EAGLE. I’ve used it to draw up the most recent schematics here on my blog. Its key advantages for me are:

  • There’s a freeware version. I don’t do enough circuit design to justify paying a lot of money for commercial software–especially software that I haven’t got to try first.
  • It can output netlists from it circuit design module to use with other PCB layout software, and it can output Excellon drill files to use on my friend Joel’s CNC drilling machine.
  • It runs on Windows, Mac, and Linux–and I expect to use all three versions regularly.

To understand why I like it so much, though, it’s worth running through the other software I’ve used.

Electronics Workbench: Multisim and Ultiboard

I got a student copy of Multisim and Ultiboard with my electronics textbooks in 2004. I used it a lot in class, and I think it’s fantastic for doing circuit simulation. It blows me away that it’s even possible to do that level of analysis and simulation on a commodity PC, and I really appreciate Multisim for what it does.

Unfortunately, I also had a not insubstantial list of complaints:

  • The Multisim (circuit design/analysis) UI is pretty glitchy. I had a lot of trouble selecting the component I wanted to move; I’d box-select a group of components and drag them, and parts would get left behind (and disconnected); etc.
  • I had trouble getting the hang of the UI for Ultiboard, the board layout software. I don’t remember exactly what I didn’t like, but I know I gave up in frustration pretty quickly.
  • Worst, though, is that the installation uses a nodelocked license. I installed the software on two PCs in Pittsburg, and when I left, I completely uninstalled it. I’m now within the rights of my license to install it on another PC–but I’ll have to call EWB to get another install code, because I’ve installed it too many times to get a new code automatically.
    So I feel like the next time I install it, I need to be ready to put it onto one PC where I’m going to leave it forever–because how many more times can I call them and tell them (truthfully, but they have no way of knowing that) that I’m moving it to yet a different PC? The offshoot of that is that I’ll probably never install it again.

PCB123

I had used ExpressPCB (next) a long time ago, and while I was searching for it recently, accidentally installed PCB123 instead. Like ExpressPCB, PCB123 is a company that makes small quantities of PCBs for prototyping and hobbyist use, and gives away the software to design the circuit and layout the boards. I don’t even remember what I didn’t like about PCB123–I just know that it took me about five minutes to realize it wasn’t ExpressPCB and I wasn’t willing to learn to use it.

ExpressPCB

LogoChip in Altoids Tin Schematic
LogoChip in Altoids Tin Layout

I had been happy with ExpressPCB for a long time. They’re a board manufacturing house, and they figured out long ago that if they give away circuit design and board layout software, they’ll entice people to use their services.

I think they walk a delicate line trying to decide how much functionality and interoperability to put into their software–too much and people might use their software and then have boards manufactured elsewhere; too little and people will get frustrated using their tools.

In my case, despite finding their UI to be the absolute best I’ve handled, the functionality is too low, and I’ve moved away from their software. With a little more functionality, I’d still be using their software, and I’d turn straight to them when I need a board commercially produce.

First, I have to sing their praises:

  • I found the UI to be fantastic, in both the circuit design and board layout sections. The toughest operation for this type of software seems to be selecting an existing part to move, and I would almost always get exactly the part I was trying to select; it was easy to reselect a different part in the cases when I didn’t get it on the first try.
  • Their board layout software has a netlist checker, so you can see which pins need to be connected. (However, see “ratlines” below.)
  • The UI just has a good “feel” to it–everything handles very nicely.

However, its drawbacks were serious enough for me to move away from it:

  • Foremost, because the software exists entirely to get you to buy boards from ExpressPCB, it has no facility for exporting drill files. I’m drilling boards on my friend’s machine, drawing traces by hand, and etching in a plastic tank–I pose no threat to ExpressPCB’s business–but I can’t use their software to automate my homebrew process. It can’t be made to meet my needs.
  • ExpressPCB doesn’t prepopulate the PCB layout with the components used in the schematic. You have to add and label each component individually. That’s time-consuming and error-prone.
  • ExpressPCB doesn’t support ratlines indicating netlist connections. Yes, it can highlight solder pads that need to be connected–but it’s easier to lay out traces when you have ratlines indicating all of the connections that need to be made.
  • The board layout UI is a little over-eager to merge connections. I’ve had to scroll the entire board off the screen when calling up a new part to add, because with the board on the screen, the part got merged into existing traces before I could even select where the part was to be placed. Similarly, I’ve had entirely unrelated traces merged together because I was dragging a set of parts to a different area of the board, and corners of traces I was dragging (and would have rerouted as the next step) landed on top of other traces.

The biggest issue, of course, was being able to produce the interchange formats I needed–but the other issues served as cautions while looking at other packages.

FreePCB

FreePCB is a really nice-looking package, an amazing programming accomplishment from a single individual, and free of cost but not open source. I like it a lot, and I expect to use it for larger boards in the future. It’ll import component and netlists from other software, and it’s what led me to EAGLE for circuit design.

A few observations:

  • It doesn’t have any corresponding circuit design software. That’s means there’s no way to automate back-annotation when changing a design during PCB layout, and the coupling for forward updates isn’t as tight as with some of the other packages.
  • It’s extremely tedious to lay out a board from scratch without an accompanying parts list from a circuit design package. FreePCB is intended to be used in conjunction with circuit design software, and I’d want to use it that way most of the time. However, I was trying to lay out a one-component, two-connector board without having drawn the schematic, and found it prohibitively difficult to do.
  • It has ratlines, a nice feel, decent export capabilities, etc. It was designed by an engineer–it was made to work well.

EAGLE is a little smoother for me to use, but the free version has some restrictions that I may eventually run into. When I do, I plan to use FreePCB for those boards.

Hand-Created Drill Files

For a 2″ x 2.5″ board with a PIC microcontroller, RJ-45 connector, LED array, lots of sockets, and supporting passives; for the one-component board I mentioned above; and for a couple of other boards I’ve worked on since then; I’ve drawn the circuit (and sometimes the PCB) in one package or another, and then laid out the drill file by hand. It’s not hard–key in a zillion (x,y) coordinates, plot the file in gnuplot to make sure it looks right, use a small Perl script to translate to rudimentary Excellon code, and drill it.

It’s a dumb way to have to do things, but it got me a drill file that I couldn’t get out of ExpressPCB, and it got me a layout that I didn’t have time to figure out how to do in FreePCB. I’d rather not make a lifestyle of it, though.

EAGLE

ADXL202E Carrier Board Schematic
ADXL202E Carrier Board Layout

Which brings me to EAGLE, the software I think I’m going to be using for a long time to come. It outputs the formats I need, it runs on all the OS platforms I use, and a slightly restricted version is available at no cost. The freeware limitations won’t impact me for quite a while: only one-sheet schematics, only two-layer PCBs, and PCBs no larger than 4″ x 3.2″. I’ll hit the last one first, and I’ll use FreePCB for layout when it happens.

I do have a few complaints about the UI:

  • It’s often very difficult to select an onscreen part to move to a different location. I’m starting to resort to drawing a select box around the interior of the part in order to select it and nothing else; I much prefer the click-click-click to cycle through overlapping parts. I think there’s a right-mouse trick to cycle in EAGLE, and I need to learn it.
  • Speaking of right-mouse, too much of EAGLE’s functionality depends on it. I use the right mouse button nonstop when I have one, but my PowerBook doesn’t.
  • The screen doesn’t automatically refresh objects when other objects have been covering them and are removed, at least not in the X11 versions. Yes, I can hit F2 to redraw the screen, but it’s often really messed up until then.
  • EAGLE seems to have serious problems performing unintended merges during component rotation operations–I have PCB traces that get stuck together and I have to reroute by hand. Worse, that situation seems to corrupt the netlist, because it changes the ratlines. I’m stuck with leftover ratlines that disagree with their traces, and no way to correct them. This is very problematic.

But mostly gratitude at finally finding software that does so many things right:

  • Pretty good coupling between the schematic and board layout sections, including prepopulating components and ratlines
  • The ability to export a netlist to use in a separate board layout program
  • The ability to export drill files in Excellon format to drill my own holes