Week 04 - Electronics Production


Electronics production

If it comes to the production of a printed circuit board or PCB - which holds connects all your electronic components - there are a bunch of different techniques to get to the final result. Some involve chemicals to etch the designed circuitry structure into a given substrate which could be FR2 (flame resistant 2, which is synthetic resin bonded paper), aluminum, FR4 (advanced fire protection), paper, fibre reinforced composites (FRC), textiles or else. To avoid the use of chemicals that create some hazzle in disposal, we will use copper-plated FR2-plate and a milling process (bottom middle) to create a decent clearance around the traces of the actual circuitry.

image Electronics_Production Overview: Production techniques of PCBs (source: D. Ingrassia, course material - electronics production)

Eagle CAD is an industry standard for the design of circuitry's layout and will soon be integrated into the Fusion 360 Suite. The standard process would of course involve the layout in Eagle or another circuitry design tool before, but as this week is just about production, the design step was already premade.

A standard manufacturing process will involve a lot more steps. For this week, we will focus on the manufacturing of the PCB only (Milling step).

image PCB_production_process Production workflow for PCBs (source: D. Ingrassia, course material - electronics production)

The prepared layout was exported from EAGLE CAD as a png-files, so we could start with the manufacturing process right away. The design needs to be exported in a high resolution if you export it yourself, as well as in a monochrome output. Furthermore, all displayed labels should rather be turned off for production.

image fabisp_sch PCB Eagle - scheme image eagle_pinout PCB EAGLE - USB board layout (similar design)

The whole process involves two steps, the milling of the wire clearance and the cutting of the board. Two different tools and therefore two different tool paths are needed. Please find the layouts attached at the bottom of this page for download. There are lots of possible designs around, I basically used the one below.

image FabISPPinout USB board layout - external
image FabISPPinout USB board layout - internal

So here are the tasks for the week:

Production of the FabISP circuit boards

As regular CAM software cannot be used, we rely on an open source solution called FabModules from Neil Gershenfeld. It is a browser-based solution that is popular in the Fablab community. In the planning of the tool path, the number of passes for the wires - so the internal path - has to be set. For high quality board, 8 passes are common, we will use 4 which is good enough. The origin point has to be found manually, especially in z, the undercut for the internal part of the board has to be very precise. The deeper the cut goes, the wider it gets due to the V-shape of the tool head. To ensure that the surface is actually being touched when setting the origin point, a multimeter is used. If conductivity is proven, the tool is in contact and the job can be launched. After the first trace is milled, that job is stopped shortly in order to confirm the right level of depth of the cut.

Make sure that the tool is just touching the surface by checking the conductivity with a multimeter. The Fablab is equipped with a Roland MDX-40A CNC machine, which we will use for the milling of the PCB.

image PCB_CuttingTool V-shaped cutting tool for PCB wires - width depend on depth of the cut
image CNC_MDX40A Roland MDX-40A CNC machine
image Check_contact_internal Conductivity check

As we will also cut the PCB from the board, a sacrificial plate is needed below and a different tool is required (1 mm diameter mill). The PCB is attached to this plate with double-sided tape. We will start with the internal path. The settings for the circuits of the board can be found here:

image Internal_path_FabMod Load *.png image for the internal path from files
image Internal_path_FabMod_Origin Path calculation for internal path in Fab Modules.
image Internal_path_FabMod_Origin Settings for internal path in Fab Modules, click calculate

The external path is cut afterwards. The speed however is much lower at only 0.5 mm/s at a cut depth of 2 mm and one pass only.

image External_path_FabMod Load *.png image for external path from files
image External_path_Settings Path calculation for external path in Fab Modules.
image External_path_Settings_2 Settings for external path in Fab Modules

After the milling process, the board can be taken from the build plate using a screw driver. This needs to be done carefully, in order to leave the traces undamaged. In my case, everything went well on the first attempt.

image Finished_milling Milling result of the board


Soldering is standard process of connecting electrical components to one another or to a conductive substrate. Depending on the components to be soldered, different tips can be mounted to the soldering iron. The thicker the tip, the lower the temperature has to be set in order to avoid thermal damage of the electrical components. With the thicker tip we set the temperature to 330 degrees, whereas we go for 280 degrees with the thinner one. Especially, the heart of our circuit - the microcontroller - is very sensitive to elevated temperatures and might easily break. However, if there is the need to replace components, copper wire can be used to absord the solder.

image SolderingIron_Close Soldering of through hole component
image Soldering_GoodJoint Good and bad soldering joints

If the soldering was done correctly, it will look like depicted on the right hand side. It attaches well to the copper substrate and has a shiny glance.

Bill of materials

For the FabISP the following components are needed:

  1. Diodes: 2x 3.3V zener diodes
  2. Resistors: 1x 499 Ohm, 1x 1kOhm, 1x 10 kOhm, 2x 100 Ohm
  3. Capacitors: 2x 10 pF, 1x 0.1 um, 1x 1 um
  4. Crystal: 20 MHz
  5. Jumper: 0 Ohm resistors (1x)
  6. Microcontroller: ATtiny 44

If all the components are are soldered correctly the finished result should look similar to this:

image Finished_soldering Result of the soldering (to find out why the wire is needed go to outtakes


For the programming part of FabISP key's Attiny44 chip, we will need an additional microcontroller that already has a bootloader in installed. To my understanding, the bootloader is a basic operating system of a microcontroller that enables the deployment and execution of more sophisticated programs.

First thing you need to do before programming, is to connect the J1 jumper of the FabISP. If you want to use the FabISP as a programmer later, this jumper has to be disconnected.

image FabISP_layout FabISP layout

Install the Arduino IDE and use the Arduino Uno as an ISP by uploading the ISP example file (see image below).

image Programmin_ISP_Arduino Install the ArduinoISP program

Connect the FabISP key board to the Arduino as depicted here.

image FabISP_programming Connections for ISP programming

As it seemed rather difficult to follow this particular process on a Windows machine, I used a MAC to install the firmware, following these commands.

The port has to be set according to the USB port in use. Use make clean and make hex. Then, open the makefile and edit the AVRDUDE command, using AVRDUDE = avrdude -c stk500v1 -P /dev/tty.usbmodem1411 -19200 -p $(DEVICE).

image Make_clean Make clean
image make_clean_result_2 Make clean completed
image make_file_3 Modify the makefile (port settings: line 17)

In the first place, the FabISP was connected to a USB port with a USB extension cable. But the connection was not fitting well, therefore the first attempt to program it failed. I connected the FabISP directly to a USB port after having done a smoke test with my iPhone's USB charger. With the direct connection the firmware could be flashed onto the FabISP successfully.

image make_fuse_4 Make fuse error
image make_successful_5 Making fuse successful

Another option for flashing the firmware is to burn a bootloader onto the FabISP's Attiny using another microcontroller. With the bootloader on it, the microcontroller can than be programmed via serial communication without the ISP programmer. As this seems to be the simpler process, especially when using a Windows machine I will to so in future tasks.

But for the time being...this one works!

image Hero_shot Yeaahhh...it's alive!


I soldered the microcontroller in the wrong place initially. I had to remove and replace it. Furthermore, I soldered a resistor incorrectly, which I did not take off gently enough so a wire came with it. I replaced this then with a by-pass.

image Fix_FabISP FabISP fixing
image Finished_soldering_close Result as above

Download files