Part selection for new circuit designs
What are some design criteria when creating prototypes and low volume production runs?
Starting a new circuit design and selecting new components can appear to be a daunting task. There are thousands of electronic component manufacturers, each with thousands of product lines, all competing across multiple market segments. When a simple search query can return tens of thousands of parts, how is it possible to make an informed choice on which one to use?
The strategy I take is to use an ever tighter series of search filters until I can narrow down my options to a manageable size. I make technical comparisons between parts nearly last in my process, searching first on availability, cost, and several other manufacturing related details before even reading a data sheet. By way of example, I intend to illustrate this process through the design of some indicator lighting for one of my current projects, the Awkward Engineer Bus Sign.
The Bus Sign is essentially a physical implementation of the NextBus app. It uses a BeagleBone and a Python script to hook into the NextBus API. It pulls the anticipated time of arrival for the bus stops outside my house and displays it on a special purpose 7-segment display driver board that I’m designing.
One of the lessons from the cardboard mockup was that I needed LEDs to indicate the status of the WiFi connection, the broader internet connection, the NextBus feed, and also the Python script itself.
At a high level, I have enough experience to know there are a lot of ways to implement this. The brute force method would be to connect 4 GPIO pins from the BeagleBone to my custom board, but that’s 4 more finicky connections I’ll need to make. I’m already using an I2C driver for my 7-segment displays, so another I2C solution would let me reuse the existing bus.
I know there are I2C input / output expanders, and one of those could probably sink or source enough current to drive an LED. That still leaves a software burden to send I2C commands to continually blink the LED status. A quick, high level search confirms my suspicion, and as it turns out, there are special purpose LED control chips that handle PWM dimming, automatic blinking, and can source and/or sink current, all controlled via I2C commands!
But, there are literally 1000’s of those LED control chips to choose from, so now I need to start filtering my search results.
Since I’m looking to build my prototype right now, I limit my search to “Active”, “In Stock” components. “Active” means the manufacturer plans to continue supporting and making the component for the foreseeable future. The opposite would be end-of-life parts only being made to support legacy designs, or obsolete or retired components. And just because a manufacturer is currently willing to make an active part, doesn’t mean that it’s available now. A part that’s not “In Stock” could likely take 12 weeks to get, and has been discussed on this blog before as Lead Time. Using a part with such a long lead time makes prototyping designs unreasonable.
Common Part Numbers
While the manufacturer can make an exponential number of variants of a part, only the greatest common denominator of the bunch is carried at distributors. I try to stick with the more common part that will be easier to source later on. This could mean tradeoffs in the part capabilities, but I’m willing to wait until a narrowed down list to see if the part has everything I need. That may require I come back to this level of filtering if not.
Most search services will also show the quantity of parts in stock. Besides availability, higher stocked volumes typically correlate with part popularity. The distributors are more likely to carry more stock of parts that are sold more quickly. This also means higher a likelihood of useful comments and support in forums; maybe I’ll even find some example code somewhere. It’s not a guarantee, but it’s definitely a factor in the selection process.
Next, I’ll typically look at minimum quantities. Do I need to purchase a whole reel of 5,000 components? Since I’m prototyping and doing small batch volumes normally, I normally want to get quantities of 1, 10, 20, 100 and other “cut tape” or “tube” amounts from the distributor.
At this point, depending on the number of search results left, I’ll typically sort by part cost. This is less important for prototyping (I expect slightly higher cost) but may require a re-spin if final BOM cost is important. If no clear winners pop out, I’ll press on with additional filter terms.
The next filter I’ll use is part footprints. I avoid ball grid arrays because they’re nearly impossible to hand solder. Even with a pick and place machine, these parts can cause quality issues. Likewise, I try to avoid QFN (quad flat, no-lead) footprints as well. Of course, if your application requires super tight use of board space, you may not have a choice. But when designing something new, it’s best to start on the easier path.
The Final Choice
By now, the search result list should be down to a much more manageable size and this is where I’ll start getting into the technical aspects of part selection. I may start reading data sheets, or in the case of my I2C LED driver chip, I may start filtering by number of LED channels, supported bus protocols, (I2C vs SPI, or both), or other specifications.
And that’s how I select parts for new designs. In this instance, I settled on NXP’s PCA9553. Several distributors carry it at stock levels in the thousands of units and I can get it for $1–2 in quantity 1. It can sink current to drive 4 LEDs, handles PWM dimming and blinking, and works with I2C. It comes in a TSOP package which is easy for me to hand solder, and should be perfect for use on the next board spin of the Awkward Engineer Bus Sign.