In my Component Area Costs post, I did some back-of-the-envelope calculations to show that, perhaps unsurprisingly, PCB fabrication costs can easily dominate component costs for single- or small-quantity PCB orders. My reaction was to start minimizing the areas of all my PCBs; I think this is generally a good thing, but I wanted to test the limits of this. I’m not sure what limits how small a board can be, so I’ve produced a series of boards that are the same circuit, but in steadily-decreasing board sizes. Here’s the board layout for my latest one, which I just received today:
And here’s a picture comparing the board to my previous two iterations; they cost $21.50 for 3 (OSH Park), $9.90 for 10 (Seeedstudio), and $3.55 for 3 (OSH Park) respectively.
Assembling the board
This board comes in at 1.1″ x 0.65″, about twice the size of my thumbnail. When I was designing the board, my main concern was just how packed the layout looks. Once I received the board, I was actually pretty surprised how much space it felt like there was; the main problems I had were 1) handling a board this small, and 2) soldering the new TSSOP components. I used some masking tape to hold the board in place: I found that what worked best was to put a small loop of tape on the table, and press the board onto it in whichever orientation I wanted. I started with the bottom, since it has the harder components (a 14-TSSOP); I tried to solder each pin individually, but pretty quickly failed and resorted to the “put too much solder and then use desoldering braid” technique. I remember seeing somewhere that this method is “not recommended due to thermal considerations”, but it worked great for me and everything seems fine. Here’s what I was able to do; I need to get a stronger magnifying glass to take better pictures at this scale:
There’s a ceramic capacitor in addition to the five tantalum ones — I wanted to experiment with putting an 0805 component on a 1206 footprint (works fine but not optimal), and to see if I can use 10uF ceramic caps that are cheaper, smaller, and don’t have polarity. On the bottom-left of this photo, you can see that I also tested OSH Park’s silkscreen resolution; I printed text at 30, 24, 18, 12, and 6 mils. The 12- and 6-mil prints are unreadable (should have seen that coming), whereas the 30- and 24-mil ones are definitely readable. The 18-mil text is barely readable, and the ‘8’ looks too much like the ‘0’, so I’m going to stick with at least 24-mil silkscreen.
I can’t really see how good the joints on the TSSOP parts are, but doing some simple multimeter-based testing seems to show that things are connected fine. So I went on to the top side of the board:
It doesn’t look very pretty, but the connections seem to be fine and it held up to the multimeter testing.
I plugged it in, and quickly realized that there was a problem: I had messed up the layout. The problem was very small but still unrecoverable: I had swapped two of the LEDs, so that the top and bottom “D5” LEDs were reversed. I had even helpfully named all the parts in my Eagle schematic to avoid issues like this, but I had turned off the “tNames” layer since it was cluttering things up, which I guess left the door open for this mistake. Anyway, this board was more for testing my assembly ability, so I wasn’t to concerned; plus it gave me a good excuse to create a new rev.
Pushing it farther
At this point I was pretty happy with the miniaturization, though I still had a nagging feeling that there was room for more. I don’t know how to tell where the limit is without having something fail, so I decided to do one final layout that is as small as I can design it (in a reasonable amount of time). As opposed to the above boards, which took maybe 30 minutes to lay out then autoroute, this next version took several hours of manual placement and routing. Going down to SMD and taking out “extras” like board edge padding and duplicate headers got me a lot of space reduction with relatively little effort, but at this point the wins would have to come just from optimizing the layout and routing.
The resulting board feels much less pleasing aesthetically, since I had to break symmetry to get past a certain optimization point. For this kind of project I don’t care too much about that, but I’m worried that the irregular nature will make it more tedious to solder as well. Here’s what I came up with:
Schematically, there are only minor, non-functional changes; I rearranged some pins and the order of some series components to improve the routing situation. I put the components closer to the edge of the board and decreased the via pad size from a buffer of 35 mils to the OSH Park minimum of 27 mils, and I placed components using a fine 1-mil grid. The main improvements, I think though, are from manually placing and routing all the components, greatly reducing the overall routing cost — I think it looks fairly clear that the total trace length is much lower in this version, and there are also far fewer vias. I’m happy again with the results: this new board is 0.85″ x 0.48″, or about 56% of the area of the previous version (which makes it about the size of my thumbnail, I guess), for a total OSH Park cost of $2.00.
There’s a couple more things I’ve thought about doing if I wanted to decrease the size even more — first of all, I could start using 0805 capacitors, or even redesign the circuit to use smaller capacitors that are (affordably) available in 0402 packages. I could rearrange the schematic so that all the resistors are connected to Vcc, which means I could replace the 12 discrete resistors with one or two resistor arrays. I think some of these footprints are somewhat generous — I’m not sure if I need all that space around the already-large 1206 capacitors, for instance.
I’m going to save all these new ideas for after I test out this version, since I’m already not sure if its manufacturable.
Component area costs
Using the costs I came up with in my previous post, this board has a minimum cost of:
- 8-pin header: $0.40
- 14-TSSOP: $0.14
- 6x 1206: $0.21
- 26x 0603: $0.31
- 2x 6-TSSOP: $0.05 (just guessing)
Which comes out to $1.11, compared to the $2.00 the board actually came out to. Sometimes I try to estimate the cost of a potential circuit board I want to make, and it seems like taking the minimum cost from my previous post and multiplying by 2-3x (a number that probably varies heavily with types of components and circuits) could be a reasonable first-order approximation. Or, it might make more sense to add one or two cents of “routing cost” per pin.
Anyway, I’m not really sure how it makes sense for OSH Park to take $2.00 orders (they must do it for non-financial reasons), but as long as they want them I’ll send them in 🙂