My Portfolio

This portfolio contains examples of my PCB designs, I would like to have all of my designs shown but some are subject to confidentiality.

All PCB’s shown on this page were designed by me, they were all done using manual routing and designed to use least layers possible in the smallest dimensions.

Z80 Bootloader Board:

Z80 Bootloader

This board was designs to facilitate in Z80 development which is personal interest of mine. It consists of a host MCU (A PIC18F4520), simple Z80 circuit which is the CPU, RAM and a clock. The PIC can hold the CPU in reset or in a BUSACK/BUSREQ state to have full read/write access to the memory. The idea is simple, you load your program into the RAM via the PIC, when you tell it to release the busses and allow the Z80 to run. The PIC can even become a virtual peripheral on the Z80’s bus too. I provided an expansion header to allow other boards to connect to the Z80.

I had a constraint of 10cm x 10cm for the PCB with the service I was using. Since this was for development and hobby purposes I decided to use the extra space as a prototyping area. On the left is a breakout space for an FTDI Parallel to USB chip (though any TSSOP within the pin count should fit) and a breakout to a USB Mini-B socket.  On the bottom right we have an Isolated USB-UART circuit, it can be used still on the board or can be broken out to be used with other circuits.

The beauty of the isolation circuit is that it allows you to connect to 3.3V or 5V circuits. The left side of the isolation is powered by the host circuit, and the right side is powered by the USB.

Board designed in Design Spark PCB, fabricated by ITEAD Studios

Digitally controlled PSU project:

I started designing a PIC controlled PSU while at college to provide an inexpensive piece of lab equipment for students.

The goals of the project were:

  • be capable of at least 20V at 1A
  • keep costs as low as possible
  • work off a power brick (such as one from an old laptop)
  • have an isolated USB interface
  • be expandable by the user

V2.1 Board


Board designed in EagleCAD, fabricated by OSHPark

This early revision used a PIC18F4520 and a 10-Bit R-2R ladder as a DAC. The analogue feedback and potentiometer reading was done using the on-chip 10-Bit ADC. The Voltage limit was set in software and provided to the regulation circuit using the R-2R ladder. The current limiting was handled by software controlling the voltage using feedback from a current sensing IC (mounted on the top right of the bottom side).

The voltage regulation circuit consisted of 2x LM358 and a 2N3055 transistor.


  • Current sensing was erroneous at lower voltages
  • relying on software to limit the current was slow reacting and potentially problematic

V2.5 Rev E Board


Board designed in Design Spark PCB, fabricated by ITEAD Studios

This designs is an updated version of the digitally controlled PSU

Changes in this revision from the previous one shown:

  • Using a single source input voltage
  • Switched from through hole to surface mount for most components to reduce the size
  • Moved the regulation transistor off-board
  • Now using a PIC18F2580 MCU to allow for CANBus support
  • Added rotary encoder support
  • Now using 12-Bit DAC and 13-Bit ADC to interface to the analogue sections
  • Current limiting is now handled in hardware

This circuit works well, the only caveat I had was a limit of 28V for the output due to the OPAMPs being run of the same input voltage that would be regulated. Since the OPAMPs are 32V maximum between rails, and I find the output is ~2-4v less than supply voltage maximum.


  • Using a single source input voltage caused the 5V regulator to get very hot (voltage differential too high)
  • XTAL1 silkscreen footprint too small and is too close the ZD1, C2, and C3.


Isolated CANBus to USB adaptor:


This is the first revision of my USB to CANBus adaptor.

This is designed to allow me to connect to and debug my CANBus enabled devices, such as the PSU. The USB interface IC is optically isolated from the CANBus circuitry.

This was the first iteration of the isolated USB that I include with most of my new designs. I have since moved to a smaller footprints for the USB IC and isolation packages, but the circuit pretty much remains the same.

Board designed in EAGLE PCB, fabricated by Batch PCB

PICKit2 clone:

PICKit2 Clone

This PICKit2 clone was designed to use the minimal amount of components and to be through hole (with the exception of the USB socket) as it was designed to be constructed by students with little electronics assembly experience.

I originally created this while I was the chairman of the Niagara College IEEE student branch as a kit to provide a way to allow students to practice PIC18 Assembly language at home. This is a part of the Advanced Digital Electronics course at the college so I felt if I could provide the students with low cost tools, it would improve their learning experience and help them through the course.

This design was later used by the College for a couple of years as a construction project in the Electronics Assembly Workshop paired with a development board that is used in some of the courses.

Board designed in EAGLE PCB, fabricated by Golden Phoenix

M62 Project:

All the PCB’s were designed in DesignSpark PCB and fabricated at JLC PCB


Revision 1: This revision had the Z80, 16C550 UART, 32KB RAM(16KB accessible), and FlashROM (16KB accessible), the ROM and RAM could be configured to which Bank they existed in using the Jumpers at the top. This PCB featured a mini USB socket to provide power. There is also optional level shifting circuitry for when a HC-08 Blutooth UART module is used.

Revision 2: This revision swapped the package of the 16C550 UART from DIP to TQFP to make it smaller. The RAM/ROM banking was altered to have 16KB RAM (top half of the 32K RAM chip) in Bank 1 ($4000-$7FFF), and Bank 0 ($0000-$3FFF) being software configurable between the first 16K of the FlashROM and the first 16K of the RAM. The blutooth module header and miniUSB power socket was removed.

Revision 3: This has been the biggest change in design. I moved to SMT to allow more to be on the PCB, I changed the Bank configuration circuitry to allow paging in Bank 0, this allows 512KB of ROM and RAM to be accessible in 16KB pages. The software configurability is still compatible with Rev 2’s logic.

In this revision I have added an 8-Bit CF card interface as well as a USB-UART interface. This allows the SBC to be developed on without the need of the backplane.


Expansion PCB’s

The Mult-Card 1 is designed to provide a terminal interface based on designed by Geoff Graham (with permission:, this provides VGA output, and PS/2 Keyboard input, as well as a USB-UART interface. This card also provides a 16-Bit IDE interface. I managed to read from a 320GB hard disk with this during testing. A CF-Card will work in here with an adaptor.

The M62-Expansion Card 1 can be used as 1 card to provide 2MB of expansion of a mix of ROM/RAM, a 2nd card can connected as a slave providing a further 2MB for a total of 4MB expansion. Each memory socket can be configured to be a 512KB ROM or RAM by jumpering the as per the silk-screen.