5. Electronics production

To start this week off, Mr. Dubick suggested that we look at Ms. Fabian’s FabAcademy page from last year to familiarlize ourselves with this PCB boards and electronics, as we are largely unfamiliar with electronics.

Like Ms. Fabian, I used Sparkfun’s PCB basic article to familiarize myself with PCBs.

Group Project

The images we used:




  1. Go to fabmodules.org.
  2. For Input, choose .png. Select the file you want to be traced.
  3. For Output format, choose Othermill (.nc).
  4. Under Process, choose the bit size you will use. In this case, since I am dealing with the traces, I opted for a 1/64 bit.
  5. Press Calculate. Wait a bit, as it must calculate the toolpath.
  6. Press Save. Save it where you will remember it and with a distinguishing name.
  7. In Bantam, go to File and Open the file that you just saved.
  8. The file should show up in the preview area of Bantam.
  9. Repeat these steps 1-8 with the exterior so that both are in the Bantam file. Use a 1/32 bit for the exterior.

Final board:


Once the file is loaded into Bantam, the process becomes less concrete, as every piece of PCB is slightly different. Firstly, we measured our PCB. Each piece is slightly different in thickness, and different parts of the same board can also have different measurements.

We also measured the thickness of the tape that we were using to attach the PCB to the Othermill plate. Adding these two measurements, we defined the Thickness of the material we were milling. This measurement was 1.8 mm. Then, we adjusted how deep the exterior and the traces would cut.

For the exterior, the Othermill had to cut through the material but not through the plate below. For example, this cut is too deep:

However, this depth is correct:

For the interior traces, it is important that it cuts through the copper but not much past that. To edit both of these heights, we adjusted the Z axis depth of the cut.

Before cutting, we made sure that the correct bit was installed and that Bantam had the same bit set up. Both were correct (set to 1/64).

To set up the physical PCB, we used extra-adhesive double sided tape. We made sure that there were no areas where tape overlapped. This is a video of Kai putting the tape down.

Once the tape was set up, we placed the PCB on top and Re-Home-ed the machine. Then, we ran the cut.

We had to repeat this whole process a second time, this time cutting the exterior profile. The profile was designed to be cut with a 1/32 bit, so we had to change the bit from 1/64 to 1/32.

Changing the bit

Then, we cut the exterior profile.

We had quite a bit of trouble at the beginning. At first, it took many people to change a bit. However, now, I can change it by myself. We also found that one of our 1/32 bits was broken. When we compared it to a different bit, it was differently shaped.

A side by side comparison of the two bits:

Personal Project

I decided to create the FabTinyISP. I followed the same steps as above (in the group project section) to get my .nc files for my programmer, this time using the following images:



Just as before, I used a 1/64 bit for the traces and a 1/32 bit for the exterior.

Download my .nc files

Calculated path for the .nc file:

My settings for the programmer:

A video of me changing the bit (by myself)

Here’s a video of the programmer milling:

Mistakes and Difficulties

One time, I accidentally ran the exterior of the programmer with the wrong bit, so I ruined a well-cut programmer. The traces were perfect before I messed up which bit I should have used.

I had a lot of difficulty with the Z axis on the programmer. If I changed the Z axis settings even just slightly, the Othermill would cut too deeply through the copper or too shallowly that it wouldn’t remove all of the copper.

I also tried 0.09mm over where I had previously ran 0.10mm, and this still didn’t work.

As indicated by the above photos, I changed the Z axis settings on the programmer to various values but could not find the correct value where the Othermill would cut deep enough (but not too deeply). After asking around, we hypothesized that they failed because the plate of the Othermill damaged. So, the “thickness” of the material was not constant. The bit could press down further in some places and not press as far in others. We have now decided not to use that specific Othermill until we can replace the plate.


I have had prior experience in surface mount soldering, but I was nervous because this board is less sturdy than commercially produced ones. I didn’t want to accidentally rip a pad off and then have to restart.

I used the same double sided tape as above to affix the board onto a tile. This became my soldering station. I could rotate the tile around so that I could solder from various orientations.

I used flux to solder, and I applied it using a spare piece of wire. I put it all over where I intended to solder. Using flux would help the solder sit on the pads of the board I milled.

After applying flux to the board, I used tweezers to put the components on the board. I started with the ATTiny 45, which was in the middle of the board. I wanted to work from the middle to the outside of the board in soldering the components.

With smaller components, I used standard surface mount soldering techniques: I would add flux, apply a bit of solder onto the pad, place the component down, and then heat the pad up again to make sure the component is fully connected to the pad with solder. Then, I would go and apply solder to the other side of the component.

Solder on the pads before I soldered down the component:

Pin header and LEDs soldered down:

In the tutorial, it explained that the J1 trace must have a solder bridge while it is being programmed. After it is programmed to be a programmer, the trace should be removed. So, I created the solder bridge:

A picture from the tutorial:

I also added solder to where the USB will plug in:

I soldered several boards so that, if I brick a board in the process of programming it, I will have backups. Some of my backup boards were not milled extremely well, so the traces were slightly damaged. I put solder on these traces to ensure they are conducive.

One of the final soldered boards:


Since I have a Macbook laptop, I am unable to use Atmel Studio on my personal laptop. I programmed my FabTinyISP on a computer at the FabLab (Windows 10) which has Command. I contributed to a tutorial on Google Docs that has setup information that is more specific to folders and files on the Charlotte Latin Fab Lab computers.


I used the 8-bit MCU on Atmel Studio 7. I downloaded and installed “Make” for Windows. Then, I downloaded and unzipped avrdude. I made sure that it had all of the associated files with it once it was unzipped. I also downloaded the FabTinyISP firmware and zipped this folder. I opened the folder and copied the path from the address bar.


I wired a fully functioning programmer to my own FabTinyISP, making sure that it was wired with the correct orientation.


Within Command, I:

1) Typed cd and pasted the path I had just copied (the file path for the FabTinyISP firmware folder).

2) Typed dir, and this showed me what waswithin the firmware folder.

3) Typed make all, and I got positive results.

4) Typed make flash to download the hex file of the firmware folder to the board.

5) Typed make fuses to burn most of the fuses.

6) Opened the Device Manager.

7) Unplugged all the boards.

8) Made sure that a device called “libusb-win32 devices” was there when I plugged the FabTinyISP in.

9) Reconnected to the fully functioning programmer and opened Command.

10) Typed make rstdisbl.

11) Removed the J1 solder joint.

Once I had completd one programmer, I used it to program my other FabTinyISPs. Again, I made sure to use the correct orientation.

A fun photo

Enjoy this photo! I was trying to take a picture of my programmer plugged into this box (which gave a more stable connection). I unknowingly captured this wonderful photo of Kai in the background, too: