Overview
If you end up buying a pick and place to assemble PCBs (or even if you're doing it by hand) you'll need to test out your boards! If you have an assembler do it for you, its still probably a good idea to have a jig you can give them. A good jig will tell you whats going right and whats going wrong.
In this tutorial I will show how I designed a very basic jig with a "tested good" audible indicator. The board its testing is very simple but the basic premise can be expanded to large projects with ease.
More on Pogo Pins
Please familiarize yourself with these Pogo Pin resources:
The basics of Pogo Pin connectors - DigiKey
Video: Pogo Pins – Collin’s Lab Notes
Page last edited July 29, 2025
Text editor powered by tinymce.
Preparation
See above for a handy reference diagram for the kinds of heads you can get!
This board already has 4 x 2-56 sized mounting holes so its easy to attach standoffs.
Page last edited July 29, 2025
Text editor powered by tinymce.
Arduino Shield Jigs
I think I'll put the victim...like this!
Page last edited July 29, 2025
Text editor powered by tinymce.
The Code
The code for the project is below and available on GitHub.
// SPDX-FileCopyrightText: 2019 Limor Fried for Adafruit Industries
//
// SPDX-License-Identifier: MIT
/*
SD card breakout tester!
Uses fat16lib's fantastic FAT library
tests:
1. CD pin works (goes low when card inserted)
2. 3.3V LDO output is in proper range
3. Can communicate with card
*/
#include <SD.h>
Sd2Card card;
#define CD 15 // A1 (D15) -> CardDetect
#define LDO 0 // analog 0
void setup() {
// initialize the digital pin as an output:
Serial.begin(9600);
digitalWrite(CD, HIGH); // pull up on CD
}
void loop()
{
Serial.println("waiting for SD card detect");
while (digitalRead(CD)) {
Serial.print('.');
delay(100);
}
Serial.println("Detected Card!");
// first check 3.3V regulator
int a = analogRead(LDO);
if ((a > 710) || (a < 650)) {
// LDO not in the right range
Serial.println(a);
return;
}
Serial.println("3.3V LDO ok");
// try to talk to the card
uint8_t r = card.init(1);
if (!r) {
// failed to talk to SD card :(
Serial.println(r, DEC);
return;
}
Serial.println("Card interface ok");
// beep to indicate all is good
tone(9, 4000, 500);
delay(1000);
}
Page last edited July 29, 2025
Text editor powered by tinymce.
Testing
Page last edited July 29, 2025
Text editor powered by tinymce.
Advanced Pogo Jigs
(We totally saw this and stole the idea from someone online but we can't find the link anymore, sorry!)
The plastic pieces hold down the PCB against the pogo bed. This tester, when used with a little batch script, performs the following test:
- Reprograms the board's fuses and flash with a bootloader (via the ISP port). For this part we're using the Arduino as an ISP programmer (there's a sketch that does this)
- The computer then bootloads (via USB) a pin-by-pin testing program
- Once the board indicates the test completed, the computer erases the testing program
There are various types, sizes and lengths of pogo pins. When you are designing your particular project, you will want to check the fit of your board against the pins to ensure a good mechanical fit. Pins to short or too long may not make the desired electrical connection you are planning.
This article by DigiKey is good at explaining pogo pins.
Page last edited July 29, 2025
Text editor powered by tinymce.