A workhorse PIC programmer
If you have been involved in PIC development for a while it is likely that you have heard of the DIY Kit150 USB PIC programmer. It is basically a small kit sold by several distributors for a number of years. I purchased my CK1711 – USB Port PIC Programmer a few years ago for ~$59. The kit came with everything needed to assemble the programmer including a circuit board with pre-mounted surface mount components and a 44PIN ZIF (Zero Insertion Force) socket. All that is required to assemble the kit is a little patience and basic soldering skills.
One of the great things about Kit150 USB programmer is that it supports a wide variety of PIC microcontrollers including the very popular 16F and 18F flash devices. In addition to being able to program standalone chips via mounting the chip in the ZIF socket, the programmer also supports In-Circuit-Serial-Programming (ICSP) mode.
The Kit150 programmer comes bundled with windows programming software that interfaces with the programmer via an FTDI FT232BM USB serial driver. The programming software that allows you to erase, program and verify the chips is called MicroBrn.exe. MicroBrn.exe is a nice little program that allows you to view and edit the hex file in addition to burning the hex program into the chips flash. In addition to being able to program the chips Flash program memory, MicroBrn.exe can also program the chips on-board EEPROM data memory.
If you use the MPLAB toolset to compile your code, you will need to use the included fixhex2.exe program to modify the compiled hex file to be compatible with the formatting required by MicroBrn.exe. Fixhex2.exe is a good little utility that once configured to watch your MPLAB generated hex file will detect changes to the file and apply the fixhex routine to the file without requiring input from you. This means that all you have to do is have MPLAB recompile your PIC project and Fixhex2.exe will automatically reformat the file for use in MicroBrn.exe.
As of this writing the latest software release for the board is DIYPACK_25ep.
Where can I get the programmer?
The kit is not available directly from the manufacturer, but can be ordered from a US distributor. The kit is listed under the CK1711 – USB Port PIC Programmer part number even though it is the same programmer. The product is truly a fantastic device and delivers everything that I had looked for in an inexpensive programmer. Although the documentation is a bit brief there is a large and active user community from which chip definition updates and troubleshooting tips can be gleaned.
Programming 16F chips
So far, I have only programmed the 16F628a chip with the programmer and every burn of the chip has been flawless.
Programming 18F chips
To date, I have programmed the 18F2520 and 18F252 chips in the programmer. When I first tried programming the 18F2520 chip, the chipdata.cid file had an incorrect chipID value for the 18F2520 chip. To make the KIT150 and MicroBrn recognize the 18F2520 chip, I had to modify the chipdata.cid file such that the chipID value for the 18F2520 chip was 1100. After this change, the 18F2520 chip has been recognized without error.
One evening, while working on my latest project with the 18F2520, I pulled the chip out of it’s circuit and dropped it into the ZIF circuit on the programmer. I then proceeded to program the chip with my latest firmware.
After programming, I glanced down at the chip and realized that it was in backward!
In a panic that can only be experienced late at night and after several hours of challenging code work, I put the chip back into the programmer the right way and tried to reprogram it. Unfortunately, MicroBrn did not recognize the chip. Ugh… You know the feeling. It’s that gut-level “oh crap, I just broke it…” feeling.
Of voltages and burned out transistors
I spent a number of hours searching the web and the KIT150 forums. During my search, I found several helpful resources including the KIT150v2 schematic and a document describing how to use an LED to test the kit to localize where a problem may be lurking. The troubleshooting guide appears to have been put together by the hardware manufacturer. The troubleshooting steps were simple enough to execute and in about 5 minutes I had localized the failure to being the Vpp1 12volt supply line.
Further internet searching turned up a site by another developer who was having a problem using the KIY150 ICSP programming port. It turns out that this issue had the same root cause as mine. The problem was that the 12volt programming transistor know as “TR2″. TR2 is a simple BC856B surface mount NPN switching transistor which supplies 12v to the Vpp1 line. Vpp1 is enabled for chips that require “high” voltage to burn the flash including the 18F series of chips.
Even with TR2 burned out, the KIT150 programmer can still program “low” voltage chips such as the 16F628a.
Repairing the Vpp1 switching transistor
Fortunately, the BC856B transistor is a relatively easy to come by device which is carried by most electronic part suppliers. I purchased 4 of them from digikey.com for ~$0.40 each.
After a few minutes with the soldering iron, I had replaced the transistor and was ready to try programming an 18F2520.
This is a small portion of the schematic which shows TR2.
This is the backside of the KIT150v2. Note the position of the BC856B transistor. This is the transistor that supplies the 12v Vpp1 signal for programming 18F chips.
After replacing the blown out transistor, I inserted a new 18F2520 chip, connected power to the programmer and plugged it into my PC USB port. After starting the MicroBrn software, the programmer recognized the chip and was able to program the chip without a problem.
More programming fun awaits…
With the tragedy averted and the programmer back in order, I have been continuing to work on my current projects.
I will be posting more details about the projects in the future, so stay tuned.
References and resources
- CK1711 – USB Port PIC Programmer
- DIYElectronics PIC programmer homepage
- KIT150 documentation
- KIT150v2 schematic
- KIT149/150 hardware tester
- Repairing the TR2 transistor to fix a problem with ICSP programming
- This article is where I got the idea to check the TR2 transistor
- FTDI USB serial port drivers
Other PIC programmers
There are a number of other low-cost PIC programmers on the market. Here are several programmers that just might do the trick for you: