Testing (your electronics?) One, Two, Three
At Screaming Circuits, we’ve designed our systems with the objective of producing 100% yields. It’s a build to quality rather than a test for quality process. That means we don’t, as a standard process, test (or program) boards we build.
Why is that, you might ask? Well, 15 years ago, we started by just building prototypes. With a prototype, the objective is for an engineer to see if the design works. At that stage of the game, few people are ready with a test fixture. Also, we were often asked to build things really fast - like in a day or two. That doesn't leave any time to build a test fixture.
In the old days, manufactures talked about yield (they still do), but when we're building one or five or ten prototypes, the only acceptable yield is 100%. You can't isolate a design flaw if there's a manufacturing defect. We designed our processes around that. Certainly, we aren't perfect, but we're so close such that many many tens of thousands of projects have successfully gone through our factory.
That's fine for prototypes, but what of the production work we do? Should we offer test and programming?
The world of designing, building, and selling electronics products these days is a lot different than it was 15 years ago. And, a lot of companies are having us build final production products. Again, our yields are good enough to make most people happy, but sometimes that extra bit of confidence is necessary.
Not long ago, I designed, and Screaming Circuits built, what I call an electronic business card holder. It's based on a PIC microcontroller and an accelerometer. You can read about it here and see all of the files on GitHub here.
We built several hundred of them. I started out programming them manually with the Microchip IDE. That process took several minutes per board. Not gonna happen 600 times.
I wised up and designed a fixture, which I then made with my 3D printer.
I combined the fixture with a Microchip PICkit programmer and a blank board with pogo pins to connect power and programming ports. With the PICkit in "Programmer to go" mode, I was able to program and test the boards at a rate of about five per minute. That makes a lot more sense than a few minutes for each of the 600 boards.
Here's what was involved in that process, and who could do it?
- I added self-test code into the card holder software. This is a simple design, so that was just an hour or so. Only I, as the designer could do that. It wasn't difficult, but I had to know the system to do so.
- I wired up a blank board with pogo pins and headers for the PICkit programmer. Anyone with soldering skills knowledge about programming PIC micros could have done that.
- I designed and 3D printed a simple fixture. Anyone with mechanical CAD knowledge and a 3D printer could have done that.
Number 1 and 2 are the challenging parts for a manufacturer. Essentially, the board designer would need to provide the code. Number two requires specific knowledge about programming PIC micros. That step would need different knowledge for each type of processor we might run across. PICs, Atmega, the hundred different ARM variants, and on and on.
It's doable, but still quite challenging in a prototype and on-demand manufacturing world. What do you think? Should we or shouldn't we?
Step number 2 also involves a trip into the Okefenokee swamp