Tuan Makes Almost Anything


Making an ISP Programmer: FabISP Programmer

There's not much of an intro to write for this week :/ The assignment is pretty much the same for everyone, so there's nothing to write about concerning my design choices. I did choose to make Andy's FabISPkey over Neil's FabISP design because I liked the USB design over the microUSB design.

  • Technology: CNC Mill & Soldering
  • Week: 2

So I decided to make Andy's FabISPkey because I liked the the USB design a lot. When going to lab to mill out the PCB, there were about eight people who all wanted to mill out their boards that day. So Cosima, one of our section TA's, decided to do them all in one go by laying out several blank FR1 boards in the SRM-20 and having each person record their origin so we could cut down on the time it'd take to change the endmills each time we switch between milling traces and milling out the boards.

Enough programmers for a lifetime

However something strange happened. Andy's programmer is normally oriented horizontally, so I rotated it 90° in order to fit it with the other boards being printed. In the process of doing so (which was just using the Mac default image viewer to rotate it) the PNG lost its dpi information, so when I was using fab mods I sorta guessed on the correct dpi... Long story short it turned out too big :/

Too yuuuge

Another issue was that the outline and trace PNGs were not the same size, so as you can see in the above image, the traces and outline didn't exactly line up during the rotation process. I'm not sure why this is the case, but it is SO BE WARNED! Only print out Andy's board in the original orientation, or edit the PNGs in GIMP when you want to rotate it for some reason.

On my next attempt, I used the original orientation, so the size was correct. However, when I did the whole process and removed the board, I noticed that many of the traces were not actually milled. For some reason, the distance between traces in Andy's design are smaller than 1/64", so fab mods doesn't send the mill to cut traces there. Gavin, another of the EECS section TA's, told me to just use a box cutter to cut the traces, but I found some of the traces that were not cut too intricate to cut manually. Also, the box cutter was not the most optimal knife for the job (I maybe could have accomplished a semifunctional board with an X-acto in hindsight). I just ended up milling a final board, changing the endmill diameter to 0.13" in order to trick mods into thinking it could cut the traces.

EDIT: See Week 4. The inner two solder bumps are too small for your computer to actually make contact with them. I fixed this by cutting off the leads of a resistor and submerging it in the blob of solder. You too should do this 10/10 would recommend.

Not bad for my first time soldering surface mount components

Our section had little bags, so I put each type of component in a separate bag and labeled it. In order to solder the board, I did the thing where I laid a solder blob on one end first, then secured the component to the board by connecting it to the solder blob.This would be extremely effective even for the ATtiny44 and the 2x3 jumper pins. The only tricky bit was the crystal and the diodes, which don't have entirely metal ends. I would have to lay down the solder blob, hold the piece with the tweezers, and touch the soldering iron to the blob and drown the end in solder.

This was the perfect mix of cool and silly

Then I started to try to program my new programmer so it could program other programmers. I hooked up the actual programmer in one USB slot, and my new board in the other and crossed my fingers. I didn't actually run into problems until I tried to set the fuses. I started to worry that I had a short cicuit or a cold joint somewhere, but further inspection with a voltmeter everything checked out. It turned out that the problem was the orientation of the 2x3 jumper pin header on the FabISPKey board, so always check both orientations when programming!! Or also just always mark the GND pin so you can orient it yourself!

Correct orientation on the left

And with the correct (albeit silly) orientation, I was done! The fuses were burned correctly, and my computer recognized the board as a FabISP device! EDIT: I actually forgot to unplug the large programmer, so my computer was actually recognizing that as the FabISP device. I believe had I increased the middle two solder bumps, then my computer would have recognized it.