The hardware is built around a microchip PIC18F2550, this microcontroller has on board USB capabilities. The schematic and PCB have been designed in Kicad, an open source EDA solution
The PCB files are available in Gerber format and the schematic in pdf in the download section so that you can open them with your favourite tool.
click on the schematic below to have a larger view (PDF).
The interface to the target PIC processor uses TTL levels (0 and 5 volts) which limits the hardware to the PIC10, PIC12, PIC16, PIC17, PIC18 and dsPIC30 series of processors. The hardware (from version 0.3) is capable of creating levels for PIC24 / PIC33 / PIC18FXXJXX devices as well.
A PIC18f2550 has been used to convert the USB commands to logical levels on the programming header. The firmware is described on the Embedded page. The controller connects to the PC by USB.
On top of the schematic you see the voltage pump which converts the 5V of VDD to 12V on VPP. It charges and discharges the capacitors C8 – C10 by toggling the signals on Pump1 and Pump2
Programming header P1
The programming header is used to program a target board using ICSP (in circuit serial programming). The pinout of this connector (and also the second connector which is used to write the bootloader in usbpicprog’s own processor) is shown in the following table:
|1||GND||Target PIC ground||0V|
|2||PGC||Target PIC Program Clock||0V, 3.3V, 5V|
|3||PGD||Target PIC Program Data||0V, 3.3V, 5V, input|
|4||VDD||Target PIC Supply Voltage||high impedance, 5V|
|5||VPP||Target PIC Program voltage||0V, 5V, 12V, high impedance|
Self programming header P2
The self programming header is for programming the bootloader into Usbpicprog. The pinout is the same as P1.
The bootloader can be loaded with any PIC in-circuit programmer. If you don’t have one and can’t borrow one, it’s easy to make one inside an RS232 connector casing.
Note that an external 12V supply is needed. (If your 12V supply is stabilized well, you don’t need the zener D1)
In Piklab you can use this programmer as Direct programmer ==> JDM programmer with MCLR inverted.
You can find the schematic of this JDM programmer here
If you are running Windows, you can use Winpic800 in order to use the JDM programmer. For the macosx users: sorry, I don’t have a tip for you here…
Once the bootloader (it uses Picdem USB) is loaded for the first time, you can update the firmware through the usbpicprog application, so you will only need to borrow a programmer once!
Since version 0.3 of the hardware, the leds have gotten their own color, and their own functionality:
|Led3, Green||Connected, blinking while in standby|
In Bootloader mode, with the select jumper removed, Led1 (Red) and Led2 (Yellow) Should be on.
Two designs (v0.3) exist at the moment, an SMD design which is shown on the pictures below and a through hole design for those people who don’t know how to solder SMD components.
The through hole version of the PCB has been assembled and tested too. Thanks to Francesco Montorsi
A fancy looking compact through hole version was created by Marcelo Maggi. The description can be found here