week 2: Electronics Production
2.1 mill characterization
2.2 FabTinyISP
2.2.1 building
2.2.2 programming
This week we are tasked with building an in-system programmer that we can use to program microcontrollers for projects in future weeks.

mill characterization

We'll use the Roland SRM-20 to mill the PCB traces. Before diving into milling the programmer, we characterized the milling machine and tools. We have two different sized endmills available: 1/32" diameter and 1/64" diameter. To get an idea of how fine of resolution each endmill can handle, we use the following trace.

roland trace test

Neil designed mods to accept .png as input for the Roland SRM-20. Once the image is loaded, there are three parameters that you can adjust: I ran the line test with both cut depth and max depth set to 0.004 and offset number equal to 1 for both the 1/32" (left) and 1/64" (right) endmill.

1/64th linetest

1/32nd linetest

Only the 1/32" endmill is used when cutting the outline, but when I ran the first test the max depth was not set large enough to cut all the way through the substrate. However, I didn't notice that until I had already removed the substrate from the sacrificial layer so I was unable to rerun the job with a deeper depth because the alignment would be off. I found that the max depth needs to be increased to 0.096 inches with a cut depth of 0.024 inches in order to cut through all of the substrate.

As you can see, the 1/32" endmill isn't able to cut any of the inside lines because the tool tip is too thick. This makes sense since the diameter of the tool tip is 0.0312 inches so it's unable to mill away an area less than this size. Similarly, with the 1/64" endmill the diameter is 0.0156" so only the 5 largest subtractive lines are milled.

FabTinyISP

building

Following Brian's documentation here, I built the FabTinyISP. Using the design provided, I kept the cut depth and max cut depth at 0.004 and set the offset number to 4 to mill the PCB.

milled

Following Brian's circuit schematic, I soldered all of the circuit components onto the board.

soldering

Soldering was fun and tedious, but I started to get the hang of it. This is the first thing I've ever soldered and I think it came out alright. The goal is to make the joints very smooth and shiny - not gnarled or looking like a mereungue. I found it easiest to use extra flux.
But I realized that I forgot the solder bridge that allows the programmer to be programmed...

finished soldering

And then it finally started to click what is actually happening here. The freshly soldered programmer is still only a "programmee" because as of now it's just an empty ATtiny45. Adding the bridge connects the V_cc to the V_prog pin on the ISP header so that I can connect another programmer to the board that will program the ATtiny45 to act like the FabTinyISP that we want it to be!

programming

So now that the board is built, we need to program it to be a programmer. I installed CrossPack as instructed on Brian's page and followed the process for programming the programmer :: (1) I changed the programmer to "avrisp2" in the makefile, and (2) ran make flash, but my computer wasn't able to find the usbtiny at all.

I have a macBook air with only a USB-C port, so I was using a converter to program with the USB. However, Neil mentioned in class and Brian's page points out, that the USB 3.0 converters may not reocngize the usbtiny because they have a much faster clock speed than the ATTiny45. I tried all different converters, making sure to use USB hubs with 2.0 USB type B ports:

mac mess

No combination of converters would recognize the USB on my mac, so I switch to trying to program on my linux machine to make sure it wasn't an issue with the actual board.

linux programming

After installing the avr-gcc libraries, I was able to follow Brian's programming instructions smoothly and my fabtinyISP is up and running!

programmed board

I'll need to figure out what's going wrong with my mac setup later . . .