SparkFun has around 1300 products for sale (currently). Out of those 1300 around 1000 products are normal re-sold products like USB cables and other development tools. Just over 300 however, are designed and built right here in Boulder, CO.
Often people on a SparkFun tour are surprised to find out just how many widgets we build in-house! We're just about to build our 250,000 widget. Sounds great, but what people often don't realize is that we test every single unit that is built. How do we do it? Well, our testing procedures and equipment have changed dramatically over the past few years. This tutorial will give you an insider's view into how SparkFun tests all those widgets.
Every product that comes out of production has to be tested to make sure it works. Sometimes we need to verify the output voltages are correct, sometimes we have to make sure some sort of data communication is working.
Above, you can see an example of an old testbed. Nick is using a modified Olimex LPC Dev board to test his HMC compass modules. In order to make a temporary connection to his compass module board, he has to hold it in place on a line of male headers, then apply a slight pressure down to ensure a good connection. Sounds like it would never work, but it does quite well if you have all the interface pins on one side of the board. It actually doesn't take much to create a temporary electrical connection. The problem that we found is that these hacked together test jigs (who were created by surly engineers who were never around) would often wear out or break.
When testing 5-25 units, this method works pretty good. But what do we do if we need to test 400? It becomes really important that the test jig be reliable, and more than anything, be fast! The pogobed has made this much easier, allowing you to push the board down on a set of pogopins. We have started to put a lot of effort and design into test jigs that use pogo pins. Pogopins are these nifty spring loaded pins:
Each pogobed is made up of three different PCBs:
A bottom layer (shown above) where the gold part of the pogo pins are soldered to the PCB and includes any required test circuitry. In this case, it's an ATmega168 to do analog to digital conversion and an FTDI Basic Board to convert the serial to USB. Power is gained and regulated through the USB board.
A middle layer (with holes where the pins to poke through).
Each one of these is custom-designed for one product! Many people believe that creating a good product is all it takes. I believe that's about 30% of the battle. Testing, sourcing, and building to demand is a huge undertaking! Pogo beds solve a major portion of this. They allow us to make temporary connections with the board we'd like to test. We can program and test something very quickly by pressing it down on it's pogo-bed.
The above pogobed is designed for testing the IDG500 Gyro Breakout Board. The bottom layer has an ATmega168 reading the voltages from the gyro and then sending that data over UART on a FTDI basic. Click here for Eagle files and source code.
When I hit reset, the ATmega comes up through the FTDI Basic board, and spits out the following text menu:
Text menus rock! It's always a joy for me to see my code actually communicate with the world - whether it's a simple blinking LED or a menu reading out on a terminal window. I am particularly stoked on my "graph" function.
Graphing this way is rather lengthy and may look inefficient, but the goal here is to be simple to understand and fast! First, it reads an ADC on one of the Gyro's axis. Then it spits out a line of dashes, followed by the ADC value. The amount of dashes is determined by the value of the ADC. As it continues to spit out more data, it draws a scrolling visual graph on the terminal. When you wiggle the gyro on the pogo bed, it looks something like this:
It's a nice way to visually see that your board is working. Shorts to ground and VCC show up as 'stuck' axis. Problems with component soldering (or missing components) show up as lazy or soft axis. We can also test for certain ADC value thresholds. Click here to see the entire test procedure.
Here we have the testing hardware cabinets. A bit over-exposed, but as you can see, it is very bright in the tech shop. There are now 138 different pieces of test gear! As I cruised through the tech shop with the camera, I ran into a few SparkFun dudes:
Here, we have Nick sitting at one of the test stations. He was testing the HMC compass modules mentioned above. The test code on the HMC compass testbed works a bit differently. Instead of doing A to D conversion, the HMC requires a digital interface. In this case, we simply need to test the board to make sure the IC is responding correctly. A quick 'Hey, are you there' I2C test is enough to make sure the digital interface is working and the IC is functional.
Look who it is! Matt Bolton, our very own Director of Production. I just so happened to run into him as he was putting away one of our most complex testing devices. He is holding what we call the "Coin Cell Pusher".
It sounds silly, but this widdled piece of wood is extremely handy! It helps us easily push coin cell batteries out of their sockets. Even this simple tool has to be kept track of, or else people get really mad when they can't get the batteries out of the test unit.
I also ran into Tony, who was working on some RP-SMA connectors:
Here you can see a very friendly reminder from our IT department: always try a restart. ("Did you restart 3 times?" If you haven't seen the video, Sales Guy vs. Web Dude episode #1 is very funny.) I'd like to send a big shout out to our IT department, they are working really hard to keep us up and running. Thanks guys!
Here, we have Mrs. Pacman. It is a simple little pogobed that allows you to quickly see if your Lilypad Vibe Board is working. Just plug in power to any of the connectors below, and push your board down on the pogobed. If it vibrates, call it good! Our highest score on our Mrs. Pacman (oh yeah, the original model) is by Rob at about 470,000 points. He can basically play the game until it breaks. Nice one Rob. Let your geek shine!
Here we have the MP3 pogobed. Simply power it up, push your board down, and if you hear a tone, it's good to go.
Here we have a slightly more elaborate pogobed. It quickly tests congruencey on a GM862 Eval Board. It runs a little current through all 50-pins (individually) and lights up 50 LEDs. It has two buttons to press, which light up every-other LED. This makes it really easy to check for jumpers and cold connections. This apparatus was designed by test-bed ninja Joel Bartlett. In his written test procedure he calls for "GM862 Pogobed", but it is better known as "Vlad the Impaler".
Here is the Logomatic tester. This is one of our older testbeds, but still works great. Note the copious amounts of hot-glue to hold the wires in place. With the 8 SPDT switches you can ground-out each ADC on the Logomatic to make sure the solder connections are good. It has an LPC Serial Port Boot Loader interface for programming and debugging. Almost a year ago, our very own Pick n' Place operator, Bob, made this beauty.
Here we have one of my first test jigs. Back then (about a year ago), I was still new to Eagle, and thought that hand-wiring a testbed was my best option. This works, but takes a bit of time and wiring experience. Now I've learned how to quickly lay out a board in Eagle, send off the gerbers to BatchPCB and jump on another design. We still use this ziff jig for pre-programming our ATmega DIP chips.
Here is the Barnacle Test Fixture. It uses a IMU 6DOF V4 Controller Board and an LPC programmer to talk to the Barnacles. This little fixture was put together by the designer of the Barnacles, Pete Dokter.
Our hot-air re-work master, Tyler Talmage assembled this jig for testing the Bluetooth Portable Rotary Phone.