Business Card PIC Programmer
Intro: Business Card PIC Programmer
This was my entry for the Hack A Day business card size circuit contest. I just zipped up the files and put them on my website. I'm posting it here because all the other entries seem to be on a blog for easy access. Hopefully this will make the project more accessible and reduce the load on my server.
The attached archive is the contest entry as it was on my server, minus the images. The text is taken from the included document.
This PIC/EEPROM programmer is so simple and small it fits on a business card with enough room left for assembly instructions...
Project:
Simple JDM2 style PIC ICSP programmer (on a business card).
Easy/beginner.
Assembly time:
About an hour.
The attached archive is the contest entry as it was on my server, minus the images. The text is taken from the included document.
This PIC/EEPROM programmer is so simple and small it fits on a business card with enough room left for assembly instructions...
Project:
Simple JDM2 style PIC ICSP programmer (on a business card).
- all through hole
- less than 2USD worth of parts (in 1s and 2s!)
- easy single sided construction at home (with 3 jumpers)
- enough room left for assembly instructions
- extra space on the back for even more business-cardy goodness
- also programs/reads serial EEPROMS
Easy/beginner.
Assembly time:
About an hour.
STEP 1: Description
Anyone can build this simple programmer and learn about PIC microcontrollers. The JDM2 programmer is super simple (about 10 parts), but programs a huge variety of PICS and serial EEPROMs. I've programmed everything from an 8 pin 12F629 to a new 18F4550 USB PIC with the JDM2. This programmer has an ICSP interface, meaning it can program PICs and read EEPROMs while they are attached to a circuit board. Start your hacking!
The PCB can be made single sided (with three jumper wires), but a two layer design makes assembly even easier. All the traces are nice and fat for easy toner-transfer or photo-process at home.
The JDM2 design is quite old, the original JDM2 circuit can be found here:
http://www.jdm.homepage.dk/newpic.htm
This design stays true to the old schematic, but the diode numbering now starts at 1, rather than 2.
The PCB can be made single sided (with three jumper wires), but a two layer design makes assembly even easier. All the traces are nice and fat for easy toner-transfer or photo-process at home.
The JDM2 design is quite old, the original JDM2 circuit can be found here:
http://www.jdm.homepage.dk/newpic.htm
This design stays true to the old schematic, but the diode numbering now starts at 1, rather than 2.
STEP 2: Parts
Part Value Description
C1 100uF/16 volt electrolytic capacitor
C2 22uF/16 volt tantalum capacitor
D1 8.2V zener diode
D2 5.1V zener diode
D3,4,5,6 1N4148 diode
Q1,2 BC547B transistor-npn
R1 10K resistor
R2 1.5K resistor
SV1 5 pin header pin header (or female pin header, you choose)
X1 DB9 female serial connector
C1 100uF/16 volt electrolytic capacitor
C2 22uF/16 volt tantalum capacitor
D1 8.2V zener diode
D2 5.1V zener diode
D3,4,5,6 1N4148 diode
Q1,2 BC547B transistor-npn
R1 10K resistor
R2 1.5K resistor
SV1 5 pin header pin header (or female pin header, you choose)
X1 DB9 female serial connector
STEP 3: Assembly #1
Start from the bottom and work up:
Don't forget to begin with the jumper wires if you are using a single sided PCB.
Don't forget to begin with the jumper wires if you are using a single sided PCB.
- Solder the diodes and resistors.
- Each diode has a black band that should be oriented in the same direction shown on the board/in the schematic.
- Just solder in the resistors, no special orientation required.
STEP 4: Assembly #2
Next, add the transistors. They should be oriented at show in the schematic/picture. The transistor on the left is placed in the direction opposite the transistor on the right (notice both have round parts facing the middle). This is the standard (typical?) BC547B pin-out. If you have problems with your finished circuit, make sure that your transistors have the same pin-out as shown in the schematic and reorient as needed.
STEP 5: Assembly #3
- Finish the board by soldering the tallest components: the capacitors, pin header, and DB9 socket.
- The electrolytic capacitor should be soldered with the ground, indicated by the black stripe, facing the left side (as shown in the picture). If thats a bit confusing, make sure that the lead coming from the side with the black strip connects to the ground plane (the large copper area covering the majority of the board).
- The tantalum capacitor should be placed with the ground towards the right of the board (as shown in the picture). Tantalum capacitors might indicate the positive lead with a +, rather than the ground lead (as with the electrolytic capacitor). As with the electrolytic capacitor, the ground attaches to the large ground plane that covers the majority of the board.
STEP 6: Use
Software
The programmer will work with any programming software that supports the JDM2. I like WinPic800 because it can auto-detect many PICs. WinPIC also deserves credit for the great technical support info WinPIC. Both support the newest USB PICs (18F2/4455). ICProg does many PICs, as well as EEPROMs, but has not been updated in awhile ICProg.
ICSP Overview:
Quoted from my ICSP instructable here.
Understanding ICSP for PIC Microcontrollers
Programming microcontrollers isn't hard. Building a programmer makes a great first electronics project. The goal of this section is to explain the simple 'In Circuit Serial Programming' method used with Microchip PICs.
Why ICSP?
Programming a big DIP (through hole) chip is easy. Pop it into a socketed programmer, burn, and return to the application circuit. Test and repeat.
Things get more difficult with smaller (surface mount) chips. There are no standard sockets for QFN, SSOP, QFP, or even the large SOIC .300 packages. There are really expensive ($100s) clips that can attach to, and program, these chips. A different clip is needed for each chip type and pin count you use.
There is an alternative. Its called ICSP.
ICSP means 'in circuit serial programmer(ing?)'. It is a way of programming a PIC while it is still attached to the application circuit. Thats right, no more chip swapping.
So, why is ICSP a good thing?
1. There are no programming sockets for small package chips. Clips are expensive.
2. Its a pain to move chips in & out of the programmer during development. Impossible for surface mount parts.
Read the rest.
The programmer will work with any programming software that supports the JDM2. I like WinPic800 because it can auto-detect many PICs. WinPIC also deserves credit for the great technical support info WinPIC. Both support the newest USB PICs (18F2/4455). ICProg does many PICs, as well as EEPROMs, but has not been updated in awhile ICProg.
ICSP Overview:
Quoted from my ICSP instructable here.
Understanding ICSP for PIC Microcontrollers
Programming microcontrollers isn't hard. Building a programmer makes a great first electronics project. The goal of this section is to explain the simple 'In Circuit Serial Programming' method used with Microchip PICs.
Why ICSP?
Programming a big DIP (through hole) chip is easy. Pop it into a socketed programmer, burn, and return to the application circuit. Test and repeat.
Things get more difficult with smaller (surface mount) chips. There are no standard sockets for QFN, SSOP, QFP, or even the large SOIC .300 packages. There are really expensive ($100s) clips that can attach to, and program, these chips. A different clip is needed for each chip type and pin count you use.
There is an alternative. Its called ICSP.
ICSP means 'in circuit serial programmer(ing?)'. It is a way of programming a PIC while it is still attached to the application circuit. Thats right, no more chip swapping.
So, why is ICSP a good thing?
1. There are no programming sockets for small package chips. Clips are expensive.
2. Its a pain to move chips in & out of the programmer during development. Impossible for surface mount parts.
Read the rest.
146 Comments
Krazyskibunnie 9 years ago
epson800 11 years ago
I have a question however how exactly do grounds work on circuit boards? Ground is just a piece of metal that all componets requiring ground need to touch to? Does this ground require anything outside of that, for example the DB9 is that grounded to the PCB ground as well, and in turn does the DB9 somehow ground the PCB to the computer?
In otherwords is there anything special i need to do because im using cardboard instead of clad?
Lastly i noticed an explosion warning in the document and placing a diode between the programmer (this pic programmer i assume) and the system (the computers DB9 i assume), just for clarification where exactly do i put this diode and why wasn't it simply put into the PCB design? I assume this is in regards to just programming a pic. I also see mention of master clear and a resistor, i assume the resistor isn't needed unless i need to clear the pic due to some error programming it.
Anyways im obviously a noob just getting my feet wet so could use a bit of help
swass 11 years ago
The circuit seems to be constructed properly, I am using a desktop tower with COM1 port and under Linux, running the command line version of picpgm. Picpgm autodetects it as a JDM programmer and I tell it to read the PIC to verify if it is blank or not. I get an error
"picpgm: /home/christian/picpgm_1751/picpgm/src/common/pic10fxxx.cpp:640: virtual UINT32 CPic10Fxxx::GetOSCCAL(): Assertion `(m_nOSCCAL & 0x0F00) == 0x0C00' failed."
I then went back and measured the voltage across the VSS pin and VPP pin whilst it is trying to program/read the PIC, It was 15.2V, quite high considering most people seem to report problems where they have too low a voltage here.
BUT; then something very odd happened, whilst I had the multimeter pressed against the VSS and VPP pins, measuring the DC voltage, the programmer worked!! I was able to read the chip, what's more, I was actually able to program the chip (as long as I had my multimeter leads testing DC voltage between VSS and VPP throughout?!).
Does anyone have any idea why that might be? I thought it might be impedence, so tried a variety of 10M, 1M, 100K 22K resistors across VPP and VSS but that did not recreate the same effect as using the multimerer. Can anyone hazard a guess as to why my VPP voltage is also so high?
The only difference to Ian's schematic is that for some reason I ended up with a 5.6V zener diode in mine as opposed to a 5.1V zener. I didnt think it would make that much difference to the voltage though. I also have an LED between D1 and Q1 to show when it is programming. Many other JDM circuits also have this LED in them so i didn't think it was a big deviation from the design.
Any help appreciated. Thanks in advance, sorry for the length.
chetancc 11 years ago
I want to program PIC12F629 with readymade .hex code. Which programmer should I use? I would like to know the best and cheapest programmer available. I bought PICKIT2 clone from India but I had very bad experience with it. I couldn't program with it.
Can you please suggest me good programmer?
Regards,
Chetan
the_prototype 13 years ago
the_prototype 13 years ago
mhenriksen1 11 years ago
Do you have the datasheet for your diode?
You could use 1n4007 or similar diodes though.. what else have you got?
mhenriksen1 11 years ago
black_demon_31 11 years ago
Im not an expert in electronics, but i just want to Program PIC10F200 and PIC12F629, for an InfraRed Controlled Airplane.
Could you please tell me How to Connect the DB9 Cable to Laptop? My laptop doesnt seem to have a DB9 connection, not even my desktop computer.
I have a 15 pin connection. How to connect it?? Thank you.
mhenriksen1 11 years ago
moustafa11780 12 years ago
i'm starting muc world. and will start with this project. Did anyone test this project?
safetec 12 years ago
Music_Man608 13 years ago
coolmike8789 13 years ago
MadBricoleur 13 years ago
dirkandterra 13 years ago
shane11 13 years ago
Thanx in advance,
Shane
dirkandterra 13 years ago
nadav 13 years ago
TheEnemy 13 years ago