Week 4

Electronics Design

Milling a PCB

How was it done

  1. Our lab has a laptop setup with linux and the fabmodules. Incase you don't have this setup, please find links here to understand the setting up of the machine and here to set up these modules yourself or use it online. I have used this image to mill our ISP from the page of our local mentor - Rudrapal Sinh
  2. Setup of the machine and board before milling

    1. Take the FR1 board.

    FR1 board - FR-1 is a hard, flat material that consists of a thin layer of copper over a non-conductive phenolic resin. The thin copper layer can be milled or etched away, leaving traces to which electronic components can be soldered.Unlike FR-4, which is fiberglass-based and generates dangerous glass-shard dust when milled, FR-1 is safe to use if you keep it away from your eyes, lungs, and skin. We recommend vacuuming up the debris after you’re done milling (never blow on it). Avoid the dual sided FR4 here as it will spoil your bit

    2. Stick double sided tape on the bottom of the board and stick on the corner where the origin exists

    3. Linux Basics - use the unity button instead of the windows start in Ubuntu Linux

    4.Linux Basics - accessing the terminal

    5. Fab Basics - starting the fab modules

    6. Fab Basics - use the user password to authenticate and allow the use of Fab. If we don't use SUDO, the system is unable to use the USB to send the print commands to the milling machine.

    7. Fab Basics - the basic fab module screen

    8. Fab Basics - select *.png as the input format

    9. Fab Basics - select the Roland Modella MDX20 as the output format. Here you can also select to output into the Vinyl cutter if you want to print a PCB on the electrical tape or into other machines

    10. Fab Basics - click make rml to move to the next stage of printing your pcb. RML stands for Redline Markup Language of all the things!

    11. Note the colour - Black background white white traces indicate a PCB where the traces are left, and surrounding area is milled. White background with black traces indicate that the traces will be milled and removed. This is controlled by the invert image button. Below is an image of how this looks on a PCB :)

    inverted/wrong PCB on the right. On the left is a PCB milled on an uneven base board

    12. Fab Basics - set the drop down in the top of the screen to 1/64This is where you will also set drill bit width to 1/32 to cut the edges of the PCB.

    13. Fab Basics - These are the settings we used.
    Notes here - I prefer not using a sacrifice board - a waste board below the PCB we are cutting as a backup and flat base as shown below

    Setting the offset to 4 creates very thin traces, setting it to 1 reduces the size of the space between traces and increases the finish of the traces as shown below. The best settings have been at the defualt of offset of 2, but error of 0

    Left PCB is with offset as 1.5mm. Notice cleaner traces. Setting it to -1 removes the gaps between traces giving it an almost etched feel. An important setting here is the xmin and ymin settings which decide the origin of the board. Only based on this should the we make path and rml.

    Fab Basics - Once the settings are given, make the path based on the xmin and ymin and convert path to an RML. Here you can also select to output into the Vinyl cutter if you want to print a PCB on the electrical tape or into other machines.

    See this video to understand how to set up the machine and the next to set the drillbit to the correct height and how to zero the z axis

    PCB Milling - Setting drill up from Gautam Prakash on Vimeo.

    PCB Milling - Setting board from Gautam Prakash on Vimeo.

There is a great tutorial on milling on the fablab archives here. Thanks Adam Harris! There is nothing I can add to this. Settings which work for me:
  1. Not adding a sacrifice board works for me.
  2. Testing the z axis is atleast 5 locations in random after sticking the board for a gap with a peice of paper is a great hack. Thanks Avishek Das for this hack. This ensures a good mill, without errors.
  3. Cleaning the bit regularly so no dirt is stuck on to it is a good practise
  4. Thanks Tapan for noting that 1mm is a good offset. This helped me figure out that 1.5mm is a perfect offset for me.
  5. Enjoyed this session with the guys at Fablab CEPT. And with Ohad who dropped by. Thanks!

Time taken to mill in different offset settings:

Offset Time (mm:ss)
-1 53:00
1 9:40
2 18
4 38:00


Tools Needed

  • Soldering gun, Solder and liquid flux
  • Helping hands if available
  • Paper plate for the components before you start soldering
  • Multimeter

How was it done

  1. Started by reading this great pdf - Soldering is Easy. Its a must read for a person starting off with soldering.
  2. Kept all components and tools in reachable distance and started

  3. Started off soldering the Tiny44. Process I followed was heat soldering gun, and take a little bit of solder on the tip. Place the Tiny on its slot and solder the diagonally opposite legs. Coat the other legs with liquid flux and solder with a little bit of solder on the tip. The action was to start the soldering of each leg by touching the point at which the leg touched the pad and once the solder melted, doing a quick upward action to flow solder on the leg.
  4. Then I worked from the bottom left corner of the PCB, soldering Resistors and Caps as I went.
  5. Last but one component I soldered was the 6 pin male header as a break from the focussed work.
  6. Against advice, I chose to solder the USB header last. I locked the usb header in plasce using a paperclip and then soldered the 5 ins first with liquid flux helping me get a smooth flow on the the legs. In the end, I soldered the mounts on the PCB.

Tips from experience

  1. Breathe out as you place solder from your mouth. It also helps blowing away the solder fumes away from you.
  2. Paper clips help keep components in place til you solder them
  3. Touch the components with your hand/hold them if possible after soldering the corner legs so you know when its getting too hot.
  4. Diagnosis starts with checking for loose components, then non-soldered legs, then the power pins/legs/tracks for connectivity. A multimeter is very useful to test for continuity - see here to see a youtube link to understand this better.

Programming ISP

Tools Needed

How was it done

  1. Plugged in the AVRISP and the FabISP into the USB slots on the PC. Connected the 2 with the 6 pin header
  2. Used these commands in sequence as I had a fresh install of Linux
    • sudo apt-get install flex byacc bison gcc libusb-dev avrdude
    • sudo apt-get install gcc-avr
    • sudo apt-get install avr-libc
    • sudo apt-get install libc6-dev
    • cd ~/Desktop
    • wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
    • unzip firmware.zip
    • nano Makefile to check if Tiny44 is selected based on which Tiny processor you have used and speed of crystal (we used 20MHz)
    • make clean
    • make hex
    • make fuse
    • make program
    • lsusb to see if your computer detects a "Multiple Vendors" device
  3. Cannot stress on how good a tutorial Anna has made. It's an example for me on how to create tutorials.
  4. Shows me testing the "CEPTISP". The connection indicator is red as I have just pulled out the power to the ISP.
    Image shows Windows recognising the board as FabISP, however, windows is having issues installing the suitable drivers for this board.

    Bill Of Materials (BOM)

    1. Attiny 44 SU x 1
    2. MicroUSB Header x 1
    3. 2 x 3 Male SMD AVRISP Header x 1
    4. Resistor - 10k x 1
    5. Resistor - 1k x 1
    6. Resistor - 100 ohm x 2
    7. Resistor - 499 ohm x 1
    8. Resistor - 0k x 2
    9. Capacitor - 1uF x 1
    10. Capacitor - 10pF x 2
    11. Crystal (20Mhz) x 1
    12. Zener Diode (3.3v) x 2


    As of now, milling a PCB on a Modela is easy. Soldering has to improve, whi=ch I'm sure it will. While I succesfully programmed the ISP, I am having issues getting the driver running on Windows PC, and hence for ease, might shift over to using an Arduino as an ISP.