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.
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.
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