Week 04: Electronics Production

Group assignment: characterize the design rules for your PCB production process

Personal assignment: make an in-circuit programmer by milling and stuffing the PCB, test it, then optionally try other PCB processes

This week, I:

generated toolpaths for milling using mods

The example used for milling is a hello.USB-UPDI.FT230X board.

To process a PNG file for milling a board, first download the traces and the outline:



Open mods, then:





tool diameter .3mm
cut depth .1mm
max depth .1mm
offset number 4
offset stepover .5
direction climb
speed 1.0 (mm/s)
origin: x 0
origin: y 0
origin: z 0




tool diameter .8mm
cut depth .6mm
max depth 1.8mm
offset number 1
offset stepover .5
direction climb
speed 2.0 (mm/s)
origin: x 0
origin: y 0
origin: z 0

milled two PCBs using a Roland SRM-20

We used a Roland SRM-20 machine to mill our PCBs. The interface looks like this:


To use the machine, you first insert the bit that you are going to use, and insert it very high up into the collet.

Using double-sided tape, stick your PCB material (we used FR1) to the plate of the machine, copper-side-up.

Then, using the +-X, +-Y arrow buttons, set the bit to be above the 'origin' point on your board - unlike a laser cutter, the origin is the bottom left of the design, rather than the top left. Switch the Cursor Step from 'Continue' to 'x100' or smaller to refine the movements of the arrow buttons.

Press the X/Y button under 'Set Origin Point' and confirm.

Then, using the -Z arrow button, bring the bit down until it is as low as it will go. Be careful and ensure that the bit remains hovering above the board - if it appears to be approaching the board too closely, re-screw it in at a higher point. Once you have reached the bottom -Z option, press the +Z button with Cursor Step 'x100' 2-3 times to raise the bit.

Now, carefully unscrew the bit and bring it down until it just barely rests on the board's surface. Screw it in place. Press the Z button under 'Set Origin Point' and confirm.

Use the +Z button to raise the bit a few millimeters, then close the glass on the machine. In the Roland interface, adjust the Speed to be 50% and the Spindle Speed to be Medium, then press Cut. Select the cut file generated from mods, then confirm to begin the milling process. First mill the traces, then mill the interior/outline - this leads to a more exact PCB.

Once the milling process has begun and you have confirmed that the bit is in the right place and height, you may adjust the Speed to 100% and the Spindle Speed to High.

When finished, click 'View' to bring the board forward. Open up the glass, vacuum off the dust, and evaluate your traces. Without re-setting the X/Y origin, replace the bit to use the bit size for cutting, and reset the Z origin using the technique described above. Repeat with the 'interior' cut file.



When all is done, vacuum any remaining dust, remove the PCB, and remove the FR1 board unless someone else plans to use it.

assembled the PCBs

To assemble a PCB, follow whatever diagram needed for determining what components go where. When working with SMD (Surface Mounted Device) -style components, it is easiest to place them by first melting solder on one pad, then placing the component and 'tacking' one pad in place by re-heating the pre-applied solder. Then, solder remaining contact points as the piece will now stay in place, and finish by re-soldering the first 'tacked' place as that is otherwise a cold joint.


Solder wick is especially helpful for cleaning up the excess solder, especially when attaching chips.

My second board met an unfortunate fate and had one of the connectors accidentally rip off, removing the traces it was attached to as well. I have attempted to fix it for now by improvising a bit with some solder, but I may re-mill it at another time.

This is the second board, which I used a lot of solder wick for to repair bridging between the legs of the chip.



tested the boards

I tested the USB to UPDI programmer board (the second one, more complex board) together with Krisjanis, our instructor. He demonstrated how to use Terminal on a Mac to discover the board's designation by first requesting a list of devices, then attaching the programmer and requesting a new list of the devices:


He then used the Arduino IDE to compile a program, and uploaded it using Terminal. The test was to re-program an LED to blink every 100ms, changed from every 1000ms. It worked!


Note: we discovered that the plain PCB was too flat to be detected by the USB cable, so we attached a piece of thick paper to the back with double-sided tape (as recommended), which fixed the problem. We also had to slightly modify the PCB by trimming the area near the USB connector (~2x2mm) to allow it to push deeper into the cable. This was done using a metal saw.