In-System Programming Board

01. Electronics Production

The goal of this week is to create a In-System programming Board from scratch using etching/machining to made the electronic circuit and then populate the board with key components for the programmer. In my case, I used a machining technique with two different types of tools: a 1/64 head for cutting the circuits, and a 1/32 head for actually cutting the board. Two designs are suggested: the hello.ISP.44 card and the integrated USB. I first worked on the first version and then printed the integrated USB but did not populate it. The first step is to find a new board:

New electronic board with a thin layer of copper

Now, we will first "machine" the board to create the circuit, with a 1/32 head. Then, we will use the 1/64 head to cut it. For both of those operations, we use fab module, selecting the png format, uploading the two different png files design for the (left for machining, right for cutting), we select the Roland mill tool (.rml), with a process of PCB traces 1/64 or PCB outline 1/32 for cutting.

PNG files of the traces (left) and of the cutout (right) for the hello.ISP.44

The output machine is the MDX-20, with 4mm/s speed, job height 1mm, and initial position 2mm (x) 2mm (y) and 20mm (z). Be careful, I changed the z position and it carved the board too deep. Then before pressing "move to xmin.ymin", press "calculate". The cut depth should be 0.12mm for the traces (tool diameter: 0.4, number of offsets 4, offset overlap 50, path error 1.1, image threshold 0.5). Then, we shoud press the View button on the MDX-20 and now we can "move to xmin-ymin". Now comes the operation of changing the head and adjusting the head to cut the board. This operation is really not difficult at all but I had a lot of troubles and reauired me a lot of iterations simply because I was usimg a 1/32 head instead of a 1/64. The different steps before launching the print are: fixturing on a sacrificial layer with double sided tape, zeroing. One we have done the traces, we can do the cutout (and not the other way).

Machining of traces on the PCB with the MDX-20 machine (left) and post machined PCB (right)

Now, while printing, as it is not a laser cutter and you can move and don't have to watch the whole process, you shoudl start selecting the different components required for populating the board: resistors, capacitors, mini USB connector, crystal, microcontroller, connector, diodes. It takes a while to find all of the right companents and a good approach is to tape then on a sheet once we have them while labelling them. Then, once we have all of the components, we can start soldering. The method is always to start by the smallest and shortest components in the middle and then build the taller ones. A good idea is also to start by difficult components such as the USB connector because if we mess up, them we can always print quickly a new board and we don't lose too much time. The tricky components are the diodes that have a direction and the microcontrolleur that also have a direction. Otherwise, we should use the classic soldering technique, making sure to touch the two parts with the iron to heat them, starting by putting a sphere or solder on a first patch, placing the component on it to fix it, then do the other patch, and come back on the first patch to finish a nice solder. It must be shiny and smooth solder.

List of components needed (left) and location of the different components (right)

At the end, we have a populated board like seen on the picture. On the left is the second design of the integrated USB ISP that is not populated yet.

USB-integrated machined PCB and hello.ISP.44 machined and populated

Now, we want to program our ISP through our computer. Everything is well explained here, but I will try to briefly summarize it, here. We need to plug the USB through the USB head (to power it) and trhough the 6 pin header, to talk with it. The 6 pin header is linked to an AVR.

First, we need to download the necessary software for AVR Programming. We first follow this tutorial, starting at "Mac Setup - paths" and stoping before "Option1. AvrMacPack". Then we download and Install Crosspack AVR, and then we Get Make (via Xcode)

Second, we need to download the firmware and to unzip it on the desktop. And with the Terminal, move into that folder. Then we power the FabISP board, with the micro-USB and the other power source. And then, we should type the following commands: make clean, make hex, sudo make fuse, sudo make program, and we are all set.

A programmed ISP board (the green light is always good sign)

Finally, to make sure the our computer see the USB, we go to About this Mac, System Report, USB, and we should be able to see the FabISP. The last step is to move the jumpers to make the programmee become a programmer.



  • Familiarization with fabmodule
  • Use of PCB fabrication with machine (MDX-20)
  • Populating and soldering
  • Programming a ISP

Tools used

  • Fabmodule
  • MDX-20
  • Solder iron
  • Terminal command for programming

To do

  • Cutout of the USB-integrated PCB
  • Populating USB-integrated PCB
  • Program USB-integrated PCB
  • Remove jumpers