I occasionally need to program batches of 10-100 PIC12F629 processors for some products I manufacture on a small scale. The devices are programmed in-circuit before the PCBs are de-panellised. Having tried a few approaches, I settled on using spring-contact test probes in a handheld fixture. These connect to a 'D' shaped cluster of pads - this format fits neatly under the 8-pin SO PIC, so it takes no extra PCB space, and has the advantage that it can only connect one way round.
For a long while I used this crude handheld probe assembly. Although effective, it had a few disadvantages - it was uncomfortable to hold, and it was a 2-handed job to hit the key on the PC to start the programming process (I use a DOS setup with the PP06 programmer running from a batch file). It also need to be stored in a protective box to prevent damage to the delicate spring-contact pins.
Probes are from Coda Systems, part no. PA1TX, fitted in RA1S receptacles, allowing easy replacement. (Pins are on a 0.075" pitch). These are a 3-faced design to self-centre and make good contact with a through-plated PCB hole
The last time I needed to program a panel of PCBs, I started looking
for a better solution. I found this highlighter pen, which, after attacking the end with a
bandsaw was big enough to take the probe head, whilst being small enough to be
manouverable and for the pins to be easily visible to help alignment.
3 of the probes were soldered down to a sliver of Microboard prototyping board to provide mounting. An M3 nut was soldered down to hold it in place using a screw into the side of the pen barrel.
A small tactile switch was added to act as a 'start' button'
Assembled probe. The old pen cap is used as a cover to protect the
pins when not in use. The plastic insert was removed to make space.
(Left) the button cap - cut down from a small tactile switch cap.
This needs to sit inside the pen barrel to allow the probe board to be slid in underneath
Note finger at bottom to limit how far down the probes are pressed.
I hacked up a crude bit of Turbo Pascal to read the switch, which was connected to the SELECT pin (13) of the printer port that the programmer was also attatched to. This is called from the looping batch file that runs the programmer software and provides audible beeps to indicate when programming is finished and pass/fail status, further reducing the amount of attention required for the programming process.
The Pascal source and executable for the switch-reading utility is here. It simply waits until either printer port (at 378, LPT1) pin 13 is connected to ground, or a key is pressed.
Note that this will not run on win2K & later as it accesses the port hardware directly. The executable also does a beep after seeing the switch. This function is not included in the source as it uses bits of one of my standard libraries that I can't be bothered to extract.