The design and implementation of a modified JDM PIC programmer

August 26, 2007

Over the past decade I've enjoyed playing around with Microchip PIC microcontrollers. They are very cheap and you can readily obtain free software to compile code and program the chips. The only other thing you need is a hardware programmer that allows you to load your code onto the PIC chip. I've got a couple different programmers, some built, some assembled, some bought. I like the simplicity of the serial JDM programmer and have made a few of these. The two downsides to this design is that A) it cannot reliably program chips with internal oscillators (if you are using the internal oscillator) and B) it does not have any immediate feedback.

I found a solution to the first problem on this website. It is a simple fix that involves adding a mosfet to the design.

The solution to the second problem was to simply add a couple LEDs and current limiting resistors. One just to indicate power and another to indicate programming power.

Here is the result of the design!


I used the freeware Eagle CAD software to do the schematic capture and PCB layout. It's really quite a nice piece of software for hobby use.
Here is the schematic of the programmer. The extra "unconnected" lines at the top were just for my own use in helping to identify the various nets. I was notified by Anand John (see his EEG PIC project: http://teknomage.wordpress.com) that the source and drain of the MOSFET are reversed in the schematic. I'll update the schematic and board as soon as I get a chance.

And here is the PCB layout of the programmer. I tried my hardest to route all of the traces on the bottom side, but I couldn't do it, so there is one jumper (the red line in the middle) that is required.

A copy of the Eagle schematic and PCB are avaiable in this zipfile: dmf_picprog_eagle.zip. This file also includes 1dmf.lbr, a copy of my own personal Eagle library parts.

Here is a list of all the components required to assemble this programmer. You'll also probably need a 9-pin serial extension cable to connect it to the computer.
Part     Value          Device             Package       Library    Sheet
C1       100uF 40v      CPOL-US            CPOL-USE5-6   1dmf       1
C2       22uF 16v       CPOL-US            CPOL-USE5-6   1dmf       1
D1       1N4148         DIODE_DO35-10      DIODE_DO35-10 1dmf       1
D2       1N4148         DIODE_DO35-10      DIODE_DO35-10 1dmf       1
D4       5.1v           ZENER-DIODEDO35Z10 DO35Z10       diode      1
D5       1N4148         DIODE_DO35-10      DIODE_DO35-10 1dmf       1
D6       8.2v           ZENER-DIODEDO35Z10 DO35Z10       diode      1
D7       1N4148         DIODE_DO35-10      DIODE_DO35-10 1dmf       1
IC1                     DIL28              DIL28-6       ic-package 1
JP1      !28p           JP1E               JP1           jumper     1
LED1     Power          LED                LED5MM        1dmf       1
LED2     Vpp            LED                LED5MM        1dmf       1
Q1       2N3904         NPN_TO92_BP        NPN_TO92_BP   1dmf       1
Q3       2n7000         MOSFET-N           TO_237        1dmf       1
Q4       2N3904         NPN_TO92_BP        NPN_TO92_BP   1dmf       1
R2       10k            R-US               R_US_0204/7   1dmf       1
R3       1.5k           R-US               R_US_0204/7   1dmf       1
R4       1.2k           R-US               R_US_0204/7   1dmf       1
R5       4.7k           R-US               R_US_0204/7   1dmf       1
U$1      SUBD_F9H_JDM   SUBD_F9H_JDM       SUBD_F9H      1dmf       1

Chip placement


Depending on the chip you want to program, you need to align it correctly in the ZIF socket. Below are chip placement diagrams for common chips from 8-pin to 28-pin. I have not tested all 8-28 pin chips, but below is the net connections for the socket, so you can determine if a PIC chip will work. Even if the chip will not work directly (or is greater than 28-pins) it may be possible to program then by building a "socket adapter" (solder wires to an IC socket to get the signals you want and connect those wires to the appropriate pins of the chip you want to program). Please also note that there is a jumper on the board. The jumper is on (connected) in all cases except when programming a 28-pin chip in the socket. When the jumper is on, it will connect the programming voltage (Vpp) to socket pins 5 and 14. For some reason that I haven't figured out, if Vpp is present on these pins when programming a 28-pin chip, it will not work, so remove the jumper for that case.
Here is a list of the PIC chips that I have successfully programmed with this device:
10F202 (8-pin)
12F683 (8-pin)
12F629 (8-pin)
16F636 (14-pin)
16C84  (18-pin)
16F870 (28-pin)
16F876 (28-pin)
16F73  (28-pin)


I use the free software Win Pic in conjunction with the programmer to program the PIC chips. Here is a screenshot of my Win Pic configuration.

I can be reached at