Week 05 - Feb 15th 2012 - Electronics Production

Making the FabISP

This week was my first experience of milling a circuit board and also of soldering surface-mounted components. We produced Neil's updated version of David Mellis' FabISP (traces, interior). The Modela cutter was controlled using the Fab modules, which automatically generate .rml instructions from .png imge files. Directions for milling the boards can be found here. The only modification to the protocol was that to zero the z-axis, the endmill was located over the centre of the pcb in order to try and zero to the average height of the board (allowing for slight variations in level), then moved to the home position for cutting.

The first board milled fine, but I made two mistakes once it had finished. Firstly, I chipped the corner as I was removing it from the cutting bed. Secondly, some over-zealous deburring meant that while the traces were very shiny, some of them were broken.

The second board milled fine, but an error while the board was cutting out meant the traces were broken. I think this happened because the endmill was not secured tightly enough in the collet, meaning it slipped out and dragged across the board. The image shows the double-sided tape that this time I intentionally left longer than the board, to aid removal from the cutting bed.

The third board milled successfully, and soldering went well. Pointers included:

  • Use a clamp (we used small black spring clamps with orange feet) to secure each component before soldering. I found that it was easiest to position the clamp over most of a component such that only one end was visible, solder that end, then remove the clamp and solder the other end.
  • Solder smallest components near the centre first, working outwards and upwards in size.
  • Larger component leads tended to longer to heat before solder will flow around them.
  • Ensure components that require it are positioned in the appropriate orientation. In the case of this board, this applied to the ATtiny44 microcontroller and the two zener diodes.
  • Clean the iron tip frequently!

Using another FabISP and my Macbook I was able to program my microcontroller. As indicated here this required prior installation of CrossPack. The Makefile was adjusted so that the clock speed was set to 20mHz and the programmer was "usbtiny" (other options were commented out with #):

DEVICE = attiny44 #F_CPU = 12000000 # edit this line for crystal speed, in Hz F_CPU = 20000000 # edit this line for crystal speed, in Hz FUSE_L = 0xFF FUSE_H = 0xDF AVRDUDE = avrdude -c usbtiny -p $(DEVICE) # edit this line for your programmer #AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE) # edit this line for your programmer

Once this was completed successfully I desoldered the bridge and the zero ohm resistor, and now when plugged into my computer my FabISP registered as shown:

I look forward to using this board to program some more exciting projects!

UPDATE!

As described, my board programmed fine. However when I had removed the jumpers and attempted to program a classmate's board, I got avrdude: initialization failed, rc=-1 and make: *** [fuse] Error 1, which suggested the target board was not being recognised. A classmate was having exactly the same issue, however neither of our boards had any obvious errors (no dry joints or solder bridges). Eventually Eddie pointed out that the headers on our boards were not supplying any voltage to the target boards. This was because JP2 is required to connect the V pin from the mini-USB connector to the V pin of the header. Replacing the zero ohm resistor immediately returned functionality to our ISPs.

<<< Week 04

Week 06 >>>