Anyone of us can build something.
Fewer of us, myself included, excel at building a great number of something, and when it comes to scaling a design to any level of volume production, it quickly becomes obvious that in order to save your sanity, the only sensible option is to outsource the onerous process of production to an OEM, or similar set of subcontracted companies, that can handle the production of your products.
Some of them make designing the board seem like the easy bit. You'll need a clear and concise build pack, not only with the PCB data supplied in the preferred format of your fab house, but also preferably with clear supporting documents to illustrate any quirks of the design that might need explaining.
The BoM must be complete and well sourced, backup suppliers and all. And providing you can get a well assembled set of PCBA out the end of your subcontracted process, you then have the not insignificant task of verifying the work that has been done — you need to test, and program if required — this box of boards that you have been delivered.
The type of testng that you might apply to these boards is going to be dictated by what they do. For something such as a simple SAO, that might mean poking a bit of pin header, attached to a coin cell battery, into the required pins.
For a more complex board, such as the OrangeCrab FPGA development board, things can quickly start to get a bit more involved... There is a whole suite of functionality to validate — from the basics of bringing up the power supplies,to ascertaining the analog inputs, and finally booting a bit-stream, there's a fair amount of functionality that needs that "final test" check mark.
Testing all of this in a time efficient manner takes some thinking. You don't want to have to juggle multiple firmwares and many bits of test equipment just to have to verify one board. Then, there's the need to hold probes in place while tweaking instrumentation and tapping out terminal commands... This can tedious enough for even a few boards in a row - and at the end of the day, it's not economically viable to scale this sort of fragmented approach to volume. In production volumes, it's simply going to take an unreasonable amount of time and operator cost - and ultimately, that's going to eat into your margins.
I get a lot of use out of the following XKCD, and while I am very much guilty of perhaps favoring automation rather than just "getting on with it," the idea of automating this sort of testing makes a huge deal of sense.
Production ATE kit can is generally going to be a custom affair. There's some deciding factors, based on your board volumes, complexity and logistics that can dictate what approach to take when looking to automate board testing.
Some of the higher volume products, or perhaps ones that might not have the free board area needed for spaced out probe points, can make use of "flying probe" testers — machines that are not too far related from the pick-and-place machines used in the previous production process. Here, instead of a vacuum tool loaded with components, the gantries are packed with test probe fixtures, and are capable of moving at eye watering speeds, to allow direct connection to all the parts of the circuit to be tested. They are amazing to watch in action, as can be seen below!
If you have the design density that dictates such a test setup, then a pogo pin fixture, commonly known as a "bed of nails" could be a more reasonable proposal for your testing requirements. Here, arrays of spring-loaded pogo pin probes are aligned with circuit elements, and the entire array is mechanically bought into contact with the PCBA in one movement, again, seen below.
These are obviously fixtures designed for high-volume products, where profit margins are such that the astronomical cost of this tooling can be factored into the profits from sales.
Even tooling for mid-volume products, with fixtures where the CNC linear actuators are replaced with hand-operated levers, still tends to cost quite a bit to have produced. The cost of outsourcing ATE will always be met with the price premium that goes hand in hand with low-volume, custom tooling.
So what are makers like us meant to do when faced with the need to test our Tindie and GroupGets campaign production efforts? Our margins are already slim, so that sort of addition to the tooling budget can make or break a project. On the other hand, our time is also pretty scarce, and the idea loosing days and days to manually testing even a moderate number of boards is pretty daunting in itself!
SparkFun initially published a fantastic guide on how to take advantage off the cheap production costs of PCBs, and leverage their mechanical strength to form both the functional, and structural elements of a bed of nails text fixture, that can be build for barely more than a prototype of the board it is meant to test.
Greg Davill and Michael Welling have taken note from this guide, and while embracing the mechanical aspects, have added a bit more detail for us in their implementation of the electrical side of the system, so let's take a look at some of the tips and tricks that are designed to reduce the time and tediousness of testing a ton of boards.
Before this test fixture does anything else, it's first task is to load a test firmware onto the FPGA of the OrangeCrab board to be tested. The obvious interface for this is JTAG, which would see many of us using our vendor-supplied bit blaster to jack into the FPGA core (provided the license provides for production programming)
Davill and Welling have aimed to reduce the desk clutter of yet another pod by integrating that functionality directly onto the board. of their production tester, and they've done this with parts I can almost guarantee are already sat on your desk!
Many of us are familiar with the venerable FTDI FT232H as a solid USB UART for our Arduino boards, but fewer of us are familiar with the fact that many FTDI chips contain what FTDI call the Multi-Protocol Synchronous Serial Engine, orMPSSE for short.
This enables the ubiquitous USB UART that we all know and love to take on a new life as a USB-SPI, I2C, 1-Wire, JTAG, or just-about-anything interface!
With a good deal of support from Adafruit's CircuitPython implementation, and support for JTAG and SWD from OpenOCD, this one chip can take on a multitude of roles, from programming to pin probing — and everything in between!
With the firmware loaded, focus moves to the actual electrical testing of the OrangeCrab and its I/O. In order to do this, the test board splits the I/O into two categories, grouping them by their digital or analog capabilities.
To make sure the Analog inputs of the OC are responsive, and reading correctly across the rated input range, a Texas Instruments DAC53608 is put to good use. This I2C-interfaced, 8-channel device has a 10-bit resolution all the way up to VDD (when tied to VREF) - more than needed to validate the assembly process, and enough have confidence that there isn't anything wrong with the analog functionality implemented within the OrangeCrab board itself!
To test that the remaining digital pins are able to toggle and tri-state correctly, the tester uses a well proven part from Microchip, the MCP23S08 8-bit serial I/O port expander. Available in both SPI and I2C flavors, this tried and tested part dutifully reads in the bytes needed set or read in the values present on the eight I/O pins, having configured them as operate as input or output as required.
The MCP23S08 can accept commands at a SPI clock of up to 10MHz, and with only 3 bytes needed to set or read the entire I/O bank at once, you can get some pretty good performance out of this part - making sure to use the interrupt line available to you so as not to overrun the part!
These two parts are able to test the GPIO of the OrangeCrab board, but there's still something missing.
Well, two things.
We still need to test the serial bus interfaces of the OrangeCrab board, both I2C and SPI, and we could do with a way to drive those I/O testing ICs that need... Oh, yeah, I2C and SPI!
It turns out they aren't missing at all - they've already been tested by the time the GPIO have been validated — the OrangeCrab has been testing itself, having used both its I2C and SPI interfaces to control the GPIO testing!
It seems a bit of a roundabout way of doing things, but it makes a lot of sense — this functionality has to be tested anyway, so rather than taking time to light up a DotStar, or read an I2C EEPROM, the very act of testing the analog and digital I/O validates the functionality of the serial bus interfaces — removing two otherwise separate tests.
Now, if only the board could load itself in and out of the jig...
When you're testing a board to verify I/O functionality, you really ought to make sure that you've got a reliable way of making good contact with the pad that is being tested.
Keep in mind that these boards are likely fresh from the production line. With cleaning as a separate operation, often processes that use "no clean" flux can be financially appealing. Depending on your production house however, the finish of the PCBA could be appalling!
Thankfully, pogo pins are just the part to poke through this mess, should it be present! Available in a huge range of not only sizes - from bristle sized slivers, to beefier pins that can pass many amps - they also have a huge variety of styles when it comes to the contact head. Convex or concave, pointed or rounded, even the profile of points that can vary based on the size and shape of the component leg or test point to be probed.
While there's a pogo pin for every pad and test point - several or more in a lot of cases - there are a few that do a better job when it comes to getting a good contact with a plated through hole pad.
Obviously a convex, pointed tip will help with alignment, and a good contact edge can cut through any surface contamination that might be present from manufacturing, or even help with making contact with pads that have perhaps corded over time.
That ought to do the trick! But the fixture needs a few more, and although that pointed head will help when it comes to locating the contacts correctly, you might still face issues unless your pins are well enough aligned with each other.
The pins themselves are delicate affairs, and for a number of reasons, it's good practice to use them in conjunction with receptacle shells, which will bear the stresses of being crimped or soldered to the test fixture. Even with the shells only having a fraction of the thermal mass of the whole pogo pin, it can still be a challenge to solder these somewhat hefty bits of metal in place, while maintaining the required alignment.
3D printing can solve just about any task of this nature, and as is usual of anything bearing the GsD insignia, there is a touch of refinement to the design that shines through — taking the time to put a pleasing visual touch to even this little part of the build shows an attention to detail that Davill applies to everything we've seen him do!
With all the pins in place, there's only really one functional part left to finish of this fixture, readying it for barrage of boards bearing down upon it...
To answer the question so poignantly posed to us by Francis X. Clampazzo — yes, yes you should. But before jumping on in there and crashing down on your carefully constructed circuit board, take a moment to consider how the forces from your clamp contact might be distributed.
Again, 3D printing plays a subtle, but important part in the clamp design, making sure your production test
Where as the clamp lever could happily push down with the force needed to engage with the parade of pogo pins without modification, that would unfortunately place undue force directly onto the BGA package of the ECP5 FPGA — this isn't going to be great for the delicate connections that solder the part in place!
The horseshoe shape of the clamp contact is designed distribute the clamp force across the flat faces of the FR4 board, free of the fear of fouling up those fine-pitch solder balls!
Some finishing touches in the form of some FDM feet that make sure that although the pin receptacles sit quite proudly above the face of the board they are soldered to, they still won't pose a problem - from an accidental short, or an accidental scouring of your workbench! A few simple washers round off the stack height of the hex pillar spacers to the exact distance needed by the pogo pins.
With the aforementioned SparkFun guide in hand, and with the GitHub repo that accompanies this hardware both serving as a comprehensive compendium of complimentary information, you're completely covered should you ever encounter the need to address some ATE requirements of your own!