5. Electronics production


  • group assignment:
    • characterize the design rules for your PCB production process
  • individual assignment:
    • make an in-circuit programmer by milling and stuffing the PCB,test it, then optionally try other PCB processes

Make my own FabISP

Preparing the files

To mill the PCB, we need two PNG files like these(one is for tracing and another one is for cutting):

Then I used the Fabmodules online to calculate the machine paths using these PNG images.
The Fabmodules can calculate and creat the .rml file for the machine. But the first time I used the wrong seting. So the mill couldn’t touch the board.


Milling the board

After I reset the set value. I could do the milling with the machine Roland SRM-20.
To protect the bottom platform of the machine, we add a chemical wood between the platform and the FR1(phenolic paper).

There are two mills for making PCB.

fab modules - Traces (1/64)

There is a screw. I loosened it to install the 1/64(with one finger touch it to ensure the mill won’t drop down while I did this step).Then I tightened the screw again.

Set the X/Y/Z zeros

image image

Send the traces!


The same process for outcut. The difference is the mill(1/32) and the file.

Clean the PCB.

It is a little rough on the top of the PCB, so I used tweezers to remove the glitch and used toothbrush with 95% alcohol to clean the surface of the PCB to make it shine. image


Afert the PCB is finished, I started to preparing for soldering the components. First, the Layout and schematic.

Before I choose the components listed on the schematic, I have reviewed the basic components:
Resistors (R): They add resistance to the circuit and reduces the flow of electrical current. The resistance values are measured in ohms (Ω). Resistors of over 1000Ω are typically shorted using the letter K.
Capacitors (C): They ensure a steady electrical flow by storing electricity and discharging it into the circuit when there is a drop in electricity. Capacitors are measured in Farads( pF, nF, uF). These are often used interchangeably and that’s why a conversion chart is handy.
Diodes (D): They only allow electrical current to pass through them in one direction in order to prevent electricity from flowing in the wrong direction. LED is a light-emitting diode that will emit light when electricity flows through it.
Integrated circuit (IC): An integrated circuit is an entire specialized circuit that has been miniaturized to fit onto one small chip. Each leg of the chip connecting to a point within the circuit.

BOM (Bill of Materials)
1x ATtiny45(U1)
2x 1kΩ resistors(R1,R6)
2x 499Ω resistors(R2,R5)
2x 49Ω resistors(R3,R4)
2x 3.3v zener diodes(D1,D2)
1x red LED(D4)
1x green LED(D3)
(We don’t have the green ones,so we use the yellow ones to instead)
1x 100nF capacitor(C1)
1x 2x3 pin header(ISP*)


After all the components are soldered onto the right location(some parts are too small to be seen easily.it is really a tough job). I finally got my FabISP like this:


Use some material to make the PCB a little thicker.(I used double faced adhesive tape)


Windows Software / Drivers Install

  • Install Git
  • Install the Atmel GNU Toolchain
  • Install avrdude

  • Install GNU Make

  • Update your PATH

  • Install Drivers for your Programmer
before insert the FabISP after insert the FabISP
  • Sanity Check


I used our instructor Saverio’s FabISP connected to my FabISP to programe it. And one more thing, I need another power supply for my board. Because if I connect my board and the other board into one computer, it will confuse the computer which one to be programed. As you can see, the power led is on, which means the connectiong is good. image

I download the FabISP Firmware. Then I opened git bash:

cd (user/desktop/fts_firmware_bdm_v1)

Now I’m sure that my boards are properly connected and I run the following commands one after the other:


After input this command, I found a file named fts_firmware.hex is created in the folder. image

Then I tried to move on, but when I run the command:

make flash

It showed double check the connection and try again which means the computer could’t find my FabISP.
So I decided to find where the problem is. I changed the USB from my computer to connected to Saverio’s Mac. The board still could’t be found. So the problem must be the board not the computer.


Since the problem is the board, I tried to use the hotgun to take off all the components and resolder them again.


Then I reconnected the FabISP to my computer and run:

make flash

The last step is to set the configuration fuses.

  1. Set the fuses that controls where the microcontroller gets its clock source allow the FabISP to be recognized as a USB device.
  2. Disable reset pin, turning it into a regular GPIO pin…allowing the FabTinyISP to use this pin to program other boards. Then running the make fuses command.
  3. Desoldering the VCC to VPROG pin solder bridge made earlier(Jumper1).

Finally it worked. When I connected the FabISP to the USB pot, and opened the device manager of my computer, it showed the USB device, which means the FabISP is being recognized by my computer.

The FabISP is now a programmer.