Introduction: JDM2 Based PIC Programmer

Schematic & layout for an updated JDM2 PIC Programmer. Includes clock & data filter, Vpp voltage divider for modern PIC microcontrollers (eg USB PIC 18F2455/4455).

Prior to reading sites like www.hackaday.com & www.makezine.com/blog I had worked only with the Amtel/AVR line of microcontrollers. After seeing all the cool projects people were doing with Microchip PICs, I HAD to have a PIC programmer. About a year ago I made my first PIC programmer based on the uJDM design (http://www.jdm.homepage.dk/newpic3.htm ). This programmer uses 6 common components. Though the link says '16F84(a)' only, I used it for the more modern (and cheaper) 16F628(a) processors without problems. This programmer has served me extremely well, but it is limited to (less than) 18 pin PICs with a programming Vpp of 13 volts.

This 'instructable' covers my new design that programs 8/14/18/28/40 pin PICs. The circuit is based on the JDM2 programmer (http://jdm.homepage.dk/newpic.htm ), with two enhancements: clock and data line filtering & selectable programming voltage.

The ZIP archive contains all the project files. The uJDM schematic and layout are included as well.

Step 1: Design Enhancements

Clock and Data Filter:

Newer PICs are programmed so fast that the clock and data lines can experience cross-talk. According to the author of WinPic programming software(http://www.qsl.net/dl4yhf/winpic/ ):

"There was a note on the Microchip forum (by Olin Lathrop) about programming the dsPIC30F201, suggesting to put 22..47 pF on the PGD and PGC lines to ground near the target chip. In addition, put a 100 ohm resistor in series with the PGD line between target chip and the cap. The resistor and cap on the PGD line low pass filter the PGD signal when it is driven by the target chip. This reduces the high frequencies that can couple onto the PGC line. The cap on the PGC line makes it less suceptible to coupled noise. We later found out that this important note also applies to the PIC18Fxxxx family. A user of a Velleman PIC programmer reported success with a PIC18F4520 after adding 2 * 33 pF caps and a 100 Ohm series resistor." (LINK:http://www.qsl.net/dl4yhf/winpic/#pgd_pgc_filtering )

This note applies primarily to programming PICs through a cable while they are soldered into a circuit. When using this type of programming the extra capacitors and resistor must be near the target chip - it does not help to have them on the programmer:

"This means that this problem can not be solved at the programmer end of the cable. No amount of clever circuitry at the programmer can make this issue go away. It must be dealt with at the target circuit. (LINK: see PGD to PGC Crosstalk at http://www.embedinc.com/picprg/icsp.htm )

I emphasize this so it is clear you CANNOT slap a ICSP header on this board without issue. I included the filters in my new programmer because the data/clock traces are long. The capacitors are situated in the circuit so that they can be excluded without weakening the trace. The resistor can be replaced with a jumper wire.

Selectable Programming Voltage (Vpp):

Programming voltage (Vpp) is applied to the MCLR pin to place the PIC in programming mode. Older PICs (12F/16F/some 18Fs) require a Vpp of 13 volts. Newer PICs (such as the USB enabled 18F2455/4455) have a lower Vpp of 12.5 volts. A voltage divider was added to the JDM2 design to provide 12.5 volts from the original 13 volt output. A diode prevents leakage through the voltage divider when it is bypassed. Vpp is selectable by the three pin jumper at the lower left of the programmer. In practice it doesn't seem to matter: I can program 13 volt parts with 12.5 volts, and 12.5 volt parts at 13 volts without damage.

Step 2: Construction

The traces in this design are nice and fat for easy toner transfer (or lazy photo boards). I started making PCB with the TT method, but found it pretty tedious. A $10 investment got me started with photo PCBs (using ink jet transparency positives). I will never go back.

All the parts were available at my local electronics shop in Amsterdam, though I ordered the parts from Mouser in bulk. Each board cost about $2.50 to make - the greatest expense was the 9 pin female DB9 connector ($1.60).

Layout and BOM are below. Schematic and board files are for EagleCad. Don't forget the 8 jumpers, shown in red.

Part Value

C1 100uF/25V
C2 22u/16V Tantal
C3 22...47...100pf
C4 22...47...100pf
D1 1N4148
D2 5V1 Zener
D3 1N4148
D4 1N4148
D5 1N4148
D6 8V2 Zener
D7 1N4148
IC1 DIL18S
IC2 DIL28-3
IC3 DIL40
Q1 BC547B
Q2 BC547B
R1 10k
R2 1k5
R3 100ohm
R4 1K
R5 15K
SV3 Pin Header (3)
X1 Female DB9 9-pin connector (F09H)

Step 3: USE

The programmer will work with any programming software that supports the JDM2. I like WinPic800 (LINK:http://perso.wanadoo.es/siscobf/winpic800.htm ), and WinPIC also deserves credit for the great technical support info (LINK:http://www.qsl.net/dl4yhf/winpic/ ). Both support the newest USB PICs (18F2/4455). ICProg is great, but has not been updated in some time (LINK:http://www.ic-prog.com/ ).

This programmer has been tested with the following PICs:
Pins Part #
8 12F683
14 16F684
18 16F84(a)*, 16F628(a)*
28 16F737, 18F2455
40 16F74, 18F4455
*Original and 'A' revision OK.

Placement for various PICs is show in the diagram below. It is not limited to these PICs - it should work with any PIC that has Vpp, Vss, Vdd, PGD, & PGC arrangements as shown.

Step 4: Future Improvements

I used cheap AMP IC sockets from Mouser because I had them on hand. My next design will replace the 28 and 40 pin sockets with one 40 pin ZIF socket. A little extra clearance around the 18 pin socket makes a ZIF substitution possible as well.

-ian
(instructables-at-whereisian-dot-com)

Comments

author
Mkdsime made it!(author)2016-05-09

Can i use electrolytic 22uF/16V capacitor instead of tantal?

author
Projecteer made it!(author)2016-03-23

what is the sv3 bit for?

author
thamuv made it!(author)2016-02-25

hi friend i am beginner of the pic programming i almost try with many
circuits i need some help i work a lot for this pic programming
i use pci card for rs232 the pin 3 output voltage comes only 11.5v

but in the circuit the pin 4 9.4v

and pin5,6,7,8,9 is 9.3v corresponding voltage

its does not reach 12 or 13v for triggering mscl pin
if i use to add a external power source it doesn't support please help me get out from thing headache

and please feed some help to finished this one
and mail me also venkat46c@gmail.com

author
VoLTaRY made it!(author)2015-11-24

Hi i have a question. Can u tell us the voltage of Vpp-Vss and Vdd-Vss. the circuit doesn't see microchip altough see jdm programmer

author
brcoenen made it!(author)2015-01-23

Ok, I found my answer on the C3 and C4 values, one last question, what voltage rating for them?

author
brcoenen made it!(author)2015-01-23

Hi all

For C3 and C4 I don't understand why you have 3 values listed, is that one or the other?

author
brcoenen made it!(author)2015-01-19

What software do you use for this? Sorry I am new to programming PIC's. Any recommendation are welcome.

author
jomar_00012 made it!(author)2012-04-08

Is PIC16F690 supported? please reply. It is for my thesis. Thanks!

author
wimpieA made it!(author)2012-01-23

Is this programmer going to work with MikroC?

author
aaim made it!(author)2012-01-19

Thanks mann..... I wanted to ask if i could connect a rs-232 to USB cable with it....

author
levonTech18 made it!(author)2010-05-16

Are you really sure this jdm2 proggramer supports:18F2xx0, 18F2x21, 18F2xx5, 18F4xx0, 18F4x21, 18F4xx5: 18F2221, 18F2321, 18F2410, 18F2420, 18F2423, 18F2450, 18F2455, 18F2458, 18F2480, 18F2510, 18F2515, 18F2520, 18F2523, 18F2525, 18F2550, 18F2553, 18F2580, 18F2585, 18F2610, 18F2620, 18F2680, 18F2682, 18F2685, 18F4221, 18F4321, 18F4410, 18F4420, 18F4423, 18F4450, 18F4455, 18F4458, 18F4480, 18F4510, 18F4515, 18F4520, 18F4523, 18F4525, 18F4550, 18F4553, 18F4580, 18F4585, 18F4610, 18F4620, 18F4680, 18F4682, 18F4685

Today i will program Pic18F4550.. i hope it work

author
dhiraj_dt made it!(author)2012-01-04

did it work for pic18F4550 ?? please reply on dhiraj_dt@yahoo.co.in

author
lenmorvash made it!(author)2011-03-11

hey, did it work? I really need to program an 18F2550 for my project.... thanks

author
viswanathmarachi made it!(author)2011-12-23

Hey,

Thanks for the simple design... Can I program attiny2313 which is a 20 pin IC with this programmer??

Thanks...

author
ian made it!(author)2011-12-23

I think only PICs.

author
sim made it!(author)2006-06-12

hi!i think that the pin 1 and 2 of the jumper must be conncted? if it's not right what's the role of this pin?thank you!

author
ian made it!(author)2006-06-13

If the pins look like this (from the picture above):

(x) (x) (x)
1 2 3

pin 1 and 2 *or* pins 2 and 3 should be connected by a jumper. In the picture above the jumper is between the middle pin (2) and the left pin (1) for low vpp.

All this does is choose vpp from the standard JDM2 (13 volts) or a resistor divider network (12.5 volts). No big deal. I have found, in practice, that it isn't even needed. I program a 18f2550 by ICSP without the caps and vpp=13 volts with no problems.

author
kubeqz made it!(author)2008-04-19

Hello everybody! I've a got solution for your problems with this programmer. The author of this project made a mistake. To make this programmer works properly, you should change few connections in cable, which connects programmer to pc: In RS232 pins have to be changed: pin 1 with pin 5 pin 2 with pin 4 pin 7 with pin 8 pin 8 with pin 7 For more question ask me by e-mail..

author
itachi012587 made it!(author)2008-07-13

Hello. I would like to ask, why when I program the microcontroller PIC16F84A using the programmer I have attached here is working but when I try to program the PIC16F877A it will not working. There is a problem when I try to verify it. By the way I used the PICALL software. What probably the problem? Thank you.

picprogPROGRAMMER.gif
author
mqdoume made it!(author)2011-11-05

just try to connect GND with PGM

author
vkumar made it!(author)2008-12-21

Hello Kubeqz Is Null modem cable to be modified or can I use as it is ? to connect PiC Programmer to PC vkumar

author
ian made it!(author)2008-05-08

I think the reason is that you are using a null modem cable -- a cross over cable for two computers.

author
noxx made it!(author)2011-10-15

Ian I can't open the files that have .brd and .sch extensions. which application do i use to open to them?

author
ian made it!(author)2011-10-19

Cadsoft Eagle.

author
noxx made it!(author)2011-10-16

pls can someone answer me. how can i view the .sch and .brd files?

author
efdat made it!(author)2011-10-09

please tell me the soft ware you use to draw your pcb circuits

author
anatesan made it!(author)2011-10-07

can we program pic18f4550 and pic18f2550 using this

author
C.H made it!(author)2011-10-05

Great!
I have not built this yet and I read you mentioned using a ZIF socket. Using a ZIF socket instead of several different sockets will spare resources and ease the design I guess. :)
I have a ZIF socket and am wondering where you would put it to make your programmer work as intended. (I have yet to build anything electronic, this PIC programmer will probably be my first project)


Thank you!


- C.H.

author
mujtaba+ali made it!(author)2011-09-06

hey,
is it program to 16f877a microcontroller ic?plz reply

Thanks.....

author
ian made it!(author)2011-09-06

should be ok

author
zacknie made it!(author)2011-06-21

is it working on PIC16F84?..

author
cavemen made it!(author)2010-10-21

Can i replace rare BC547B with 2n3904?
I already did.
the board ain't working with my pic16f628
trying to figure out why

author
falseadress made it!(author)2011-02-08

Try flipping transistor around. the BC547B is CBE and i think the 3904 are EBC

author
robot1398 made it!(author)2011-04-25

U ARE CORRECT

author
instbubba made it!(author)2011-02-19

The Eagle schematic has a problem, the transistor's pinout for the one that goes to Vpp is backwards. The collector and emitter are reversed. It may not affect the board, but the schematic could not possibly work the way it is apparently wired.

FYI, for an easy to understand diagram of this circuit, take a look at the Olimex PIC-PG2. This circuit is essentially identical with the addition of the filtering networks.

author
nikon95 made it!(author)2010-11-19

Will this work with my 16f877 and picpro (linux)???

Αny tips would be appreciated .

:-)

author
homermike made it!(author)2010-08-14

Hello... We'v been dealing a lot of projects using PICs... and now we come up to a project that we could do the PIC programming on AIR using GSM module.. So i would like to ask if someone had an idea on how to make a system that have 2 PICs.. one PIC is the MAIN PIC and the 2nd PIC would be the program or HEX loader PIC to the MAIN PIC...

author
obie87 made it!(author)2010-08-08

hi, i want to know if this Programmer can program PIC 16LF628A, Thanks

author
levonTech18 made it!(author)2010-05-16

D2- must be : 1N4733 5.1v 1w  .....And D6-Must be : 1N4738 8.2v 1w

Thanks < i hope this can help you to build ..

author
levonTech18 made it!(author)2010-05-14

Hi< do you really think this is working and can program PIC18F4550..

author
naveen.a019 made it!(author)2010-04-09

hi,  why do u need ...sv3...i am a newbie to electronics hobby...can any bdy..help...

author
silverplated made it!(author)2010-02-05

YOU ARE COOL MAN THANK YOU FOR THIS PIC PROGAMER

author
cm6lar made it!(author)2010-01-19

I think that the Q1 transistor is not corrected placed.. the emisor an collector are bartered.

author
monsterman made it!(author)2009-12-03

dous anyone know if this will work with a 18F2550

author
forte1994 made it!(author)2009-08-20

will this work with vista 64x

author
JohnnyVegas made it!(author)2009-08-09

Just built this and must say it worked great on a 16F628A @ 13v. Did not try 12.5 For C2 I used a 22uF 16v Mini Alum Elect CAP. For C3 and C4 I used 68 pF ceramic. That's what I had around. winPic800.

author
moraru made it!(author)2009-07-01

Hi ian, I want to write a dsPIC30F4012, can' I with JDM2? Tanks. Moraru.

author
hesperaux made it!(author)2009-05-21

This is fantastic. I just programmed a PIC16F72. I was able to dump it's memory, erase it, and program it without any issues. I did this in Arch Linux using picprog (works very well and is easy to use). Unfortunately I can't yet test the program I burned onto it because all my tools and parts are not yet mailed (on vacation). But according to picprog, it burned properly. Also, it takes about ..2 seconds to burn a small program.

Thanks for your PCB design, Ian. It was very helpful. And thanks for using Eagle, cuz it has a Linux version. =) I'm very excited because this is my first PCB and my first programmer and it works.

author
beeshyak made it!(author)2009-05-19

I have downloaded WinPIC 800 from the WinPIC website. I scrolled the hardware programmer selection. Within the list, I only see JDM but no JDM2. Will this work with selection of JDM only? I plan to use it on 18F26K20 but it's Vpp is lower.

author
juans made it!(author)2009-04-01

hi everybody , is it possible to if i change tantalum capacitor with other ordinary electronic capacitor?, it's so hard to find it in my place. thanks best regard juan rio sipayung

About This Instructable

199,091views

95favorites

License:

More by ian:Thermal Tweeter networked Twitter printer@tweet_tree: Twitter controlled Christmas treeHackable Christmas card & ornament
Add instructable to: