FabLab LogoFletch's Fab Academy 2014 Blog

04. Electronics Production

This weeks task is to make a 'FABISP In circuit programmer'.  We'll be using this device extensivly in later weeks to program our embedded electronics.
The task doesn't require any creatrive input from us, the designs are all provided.  This week is really all about learnig the work flow and learning to use the Modela micro milling machine.  However there are a lot of steps to the machining of the PCB and final manufacture, so there is lots of scope for errors and it could be quite a time consuming task.  For the most part I followed this excellent tutorial: http://fabacademy.org/archives/content/tutorials/05_Electronics_Production/Assemble_and_Program_FabISP.html

04.1 Workflow

04.1.1 Decide what to actually build!

There are 2 varients of the FABISP, one with a crystal and one with a resonator to clock the ATTiny44A micro.  After a quick check of the parts available in the Manchester FABLab inventory I decided to build the crystal based version as the timing for the software USB implementation would be more accurate.

04.1.2 Use the Modela micro milling machine to mill a PCB

We start with a plain piece of copper clad FR1 PCB and a .png file showing the pcb traces.  Stick the blank PCB down with double sidded tape, but make sure that there is some sacraficial material under it, so that when we finally cut the board free we don't mill into the machine bed and damage it or the cutting bit.  It's also very important to clean the bed before sticking down so that our PCB material is completely flat.  Our PCB traces cut is very shallow (0.1 mm) so any hight discrepancy of this order will cause the bit to cut too deep or fail to cut at all in some areas.

Blank PCB Stock in Modela Micro Milling Machine PCB Traces

We then select the correct fab module (png to rml) and use the software to control the machine and mil the PCB as follows (following the steps from left to right in the fab module):

Fab Modules Screenshot

It takes about 10 minutes to mill the traces and you endup with something that looks like this:

PCB Milled

Once the traces have been milled we change the bit in the machine for a larger 1/32 inch one and repeat the whole process for the board outline .png to seperate our actual PCB from the stock, finally ending up with this:

FABISP Blank PCB

A quick gentle de-bur with a steel ruler and wash with soap and water to remove and residue and trhen we can populate the board.

04.1.3 Populate the PCB

A steady hand and desk magnifier are required!  The only component that I had problems with was the Mini USB connector, the ones in our inventory have a metal overhang at the back of the connector that partially shrouds the pins and makes access during soldering difficult.  I'd recommend finding a different manucaturers connector in future.

FABISP Populated

04.1.4 Test


04.1.5 Program the FABISP

Again following the tutorial, I connected both solder jumpers on the board (one requires a 0R resistor as it actually bridges a track) and then used an AVRISPmkII to program.  Note I had to connect the ISP connector the other way around from that shown in Anna's tutorial that I was following.

FABISP Programming

Also note that I got a single warning about function in-lining when I complied the FABISP firware.
Build1
Build 3
Build 2
Once I had successfully programmed the device it appeared as 'FABISP' in my Mac system report.  I then removed the two solder jumpers.

Finished FABISP 
Here's a picture of my finished device with black dots marking pin 1 on the ISP connectors.

04.2 Problems with the Modela
The only issue we had was that at one point the Modela and the PC driving it got out of sync for one of our students.  We had to delete the 'print jobs' from the controlling PC and then reset the Modela.  To delete the jobs run:

ps -aux

And identify the two processes that need to be killed.  One is called something like 'rml_send' and the other is 'cat fab.......', they should have consecutive process numbers.  Then kill each process by number with (e.g. process number 2266):

kill -9 2266