Jeffery makes (almost) Anything

Project 2 : Making the FabISP programmer project photo

Our goal this week is to make an in-circuit programmer. The programmer will be able to program other similar boards once it is complete. I am in a way participating in the "reproduction" or "meiosis" of this board.

Our circuit will be made by removing material from an FR1 board, which has a thin layer of copper over a thicker layer of plastic. We do this by milling the board. The machine I used was connected to the computer via the utility.

In the milling machine we follow these steps:

  1. Attach a sacrificial layer on the machine floor with double stick tape making sure that it is perfectly flat (or else the milling will be of uneven depth).
  2. Attach the FR1 board to the sacrificial layer with double stick tape, making sure it is also flat.
  3. Place the 1/64 endmill all the way up into the placeholder (put the machine in view mode if necessary). The endmill will break if it falls on its tip, so you must keep your supporting it with your fingers until the endmill is tightly fastened.
  4. Lower the z axis of the endmill (using the '+' or '-' buttons) until the tip is reasonably close but still above the surface of the board.
  5. Find an appropriate value of xmin and ymin (by trial and error); on the computer, press 'set to xmin, ymin' to move the endmill to this position. The endmill should be on the bottom left corner of the board (or portion that we want to cut).
  6. Unscrew the endmill (keep it from falling straight out), lower it to the surface of the board, and tighten well.
  7. Verify that a plastic sheet cannot go through the endmill and the board.

On the computer end, the traces for the circuit were already made. We just import the correct settings, import the traces image, choose the ".rml" (for Roland mill) file exporting format, and the setting "1/64". We make the computer calculate the path of the mill given a certain number of parameters (for example the number of times it will go around a given circuit line is set to 4), and we send the data to the mill.


As the mill starts to cut out the circuit, we need to periodically check that the endmill is actually digging out the copper entirely, leaving only plastic, and not just scratching the surface. This happened repeatedly in the lab due to an unevenly laid out board, though I was fortunate to have a perfect board on the first try.


We can now start the soldering, which is by far the most fun! We first collect all the components needed for the board among the many possibilities. These components are extremely small: one needs tweezers to manipulate them. To keep track of them they are placed in an orderly fashion along a strip of double stick tape.


Once the circuit traces are cut out, we want to cut the portion of the board that interests us (so that others can potentially use what is left of the board to make another programmer). However the 1/64 endmill is not thick enough. So we repeat the steps 3, 6, and 7 with the 1/32 mill. Then we upload the "outline" file, change the relevant settings and set the mill to work.


At the end we will have a small circuit that is almost ready for sodering! We first want to remove bits of unwanted copper and clean the surface (with fine sandpaper, soap, and water"). We should also check that the wires properly conduct electricity (and are isolated from each other) with a voltmeter.


Here is the soldering work desk: in addition to the board and components, we use a soldering iron, solder, copper ribbons and a sponge (to clean the tip of the iron). We also have a copper braid (not shown) that allows us to remove sodder from the board (in case of mistakes)


Before we touch the circuit, the soldering iron tip needs to be hot, clean and shiny, and then we also add a little bit of solder on the tip. The tip is very hot and should be used cautiously! It can ruin components if th tip gets too close to them. To add a component, I learned the following procedure:

  1. Place a very small blob of sodder on a pad where one of the ends of the component will be placed. In order to do this, place the tip of the solder on the copper, and push the sodder onto the point of contact: it melts almost instantaneously.
  2. Place the component in the wanted position. It will not be flat due to the bump from the solder.
  3. Holding the component with the tweezers, melt the blob of solder. Remove the tip of the iron when we are sure that the component is aligned with the board.
  4. Solder the other ends of the component: place the tip of the iron on the copper right by the component and push a little bit of sodder onto that point of contact. This should result in smooth shiny solder connections.
  5. Apply the previous step to the component end that was first soldered with the initial blob, to make all connections uniform.

Here is my board after I added my first component:


If something went wrong, undoing mistakes is possible! The copper braid can be used to remove solder. We simply lay the braid on top of the unwanted blob and place the iron flat against the braid. The solder should melt and be absorbed by the braid. But this will not remove enough solder to be able to pull a component off the board entirely. This fact can actuall be used to make small connections (feet of the microcontroller for example): simply put excessive amounts of solder across all the connection points them remove this excess: the solder left will be at the connection points. If however we actually want to remove a component from the board, we use a heat gun pointed at the component held in the air with tweezers: eventually gravity will pull the rest of the board off, and it will fall, leaving us with the unsodered component.

Here is the finished board:


We finish the project by programming our circuit with an existing FabISP programmer. We hook the two up making sure that the the prongs of each header are connected to the corresponding twin it has on the other board. We run the relevant terminal instructions, which make our circuit a programmer itself!


As a sanity check we verify that the computer recognizes our circuit (now disconnected from the other programmer) is recognized as a FabISP programmer in its own right by the computer. Finally we end by unsoldering the two jumpers on our ciruit, thus ensuring that our circuit cannot be reprogrammed.


The files for this week were from the course website.

Tools used