logo FAB ACADEMY 2013

Home
Modules
About me
Links

Final Project
Week 0: Digital Fabrication Principles and Practices
Week 1: Collaborative Technical Development, Documentation and Project Management
Week 2: Computer Aided Design
Week 3: Computer Controlled Cutting
Week 4: Electronics Production
Week 5: 3D Scanning and Printing
Week 6: Electronics Design
Week 7: Moulding and Casting
Week 8: Embedded Programming
Week 9: Computer Controlled Machining
Week 10: Input Devices
Week 11: Composites
Week 12: Interface and Application Programming
Week 13: Output Devices
Week 14: Networking and Communications
Week 15: Mechanical Design and Machine Design
Week 16: Applications and Implications
Week 17: Invention, Intellectual Property and Income
Week 18: Project Development
Week 19: Final Project Presentation


Electronics Production

For this week the assignment is centered on the production of a circuit board and the soldering of electronic components onto the circuit board to create a FabISP in-circuit programmer.  The design of the layout of the circuit board was not necessary, merely the fabrication and the installation of the firmware onto the in-circuit programmer was necessary but these still posed many problems during the week.

Milling the board:

To create the circuit board it was necessary to mill out a copper faced rigid epoxy glass (FR4) or phenolic paper (FR1) board.  It was suggested to use FR1 board as it was kinder on the milling tools but the immediately available board in the laboratory was the expoxy glass board.  Using the .png file supplied through the class links I imported the file into the router software on the linked computer, because the router being used was the Roland Modela MDX-40 and not the specifically specified router in the Fab Lab inventory I thought it was best to use the properitary drivers and associated software instead of trying to implement the Fab Modules into the system.  Once I had imported the .png into the software VCarve, I ensured that it was correct size (22.99mm x 45.21mm confirmed by the guru), and then used the function in the program to trace the cutting vectors from the graphical file.  Afterwards, I then referenced the traces to the graphical file provided and close any gaps in the traces using the vector creation tools in the software, this was needed for the square pads at the head of the circuit board.

Once the cutting vectors are imported into the program, the tool and its path needed to be decided.  It was suggested that using a 1/64 inch end mill was to be used, the parameters of the tool were uploaded into the software and a suggested cutting depth of 0.3mm was decided to scrape off the outer layer of copper to reveal the imported traces.  The circuit board was then, stuck down to a sacrifical ply board underneath using double sided sticky tape and set in the bed of the milling machine. the x,y and z axis where centered over the centre of the PCB.

The first attempt at machining the board was conducted just to mill the outside the outline of the traces.
First Attempt
The outline of the traces were far too deep and caused burring of the copper, so I decided to change the bit type to an equivalent size engraving type piece (i.e. 0.3mm) and lower the depth of the cut to 0.1mm.
Second Attempt
Here the cut was a lot neater but far to shallow, here I increased the depth of the cut to 0.15mm and decided upon looking on the size of the circuit to mill out all the unecessary copper to ensure no short circuiting would occur when I soldered the components onto the board.  To mill out all the excess copper the pocket function in the VCarve program was used to isolate the traces, using this process I milled out the board.
Third Attempt
Here the finish was much better but far more time consuming to achieve the milling process.  Once the interior of the board was milled effectively, the outer edge of the board needs to be cut through to allow soldering.  This was achieved by changing the mill piece to a 0.6mm end mill, drawing an outline of cutting around the board and setting the depth of cut to the depth of the printed circuit board.  The final mill noard ready for soldering is shown below.

Machined Board


Soldering the circuit board:

I gathered the required parts shown in the specification in the class lecture links.  Unfortunately, I had access to only one diode and no headers and I'm waiting on a delivery of the parts.  I then arranged all remaining  parts and prepared for soldering.  My preparation included obtaining a helping hand, debraiding tape, tweezers and a clamp to restrain the circuit board.  Due to the fact that I had spare boards from the milling procedure I practiced soldering some resistors down to a reject circuit board and gained confidence in the process before commencing soldering on the final board.  I started soldering the components inside out to minimise obstruction from components, firstly the chip, then the resistors following a handy tutorial from a previous student of the course to order the installation of the chip.  Once I had soldered all the components available, I had to stop and await the delivery of the necessary to finish the soldering and programming the ISP.
This image shows how far I got to completing the ISP this week and with a little luck should be updated within the next week when I have finished off the soldering and the programming.
Partially completed board
Finally managed to get the board soldered.  The ordered diodes proved to be the wrong type of diode (one with 3 securing pins), fortunately there was several 4.7v Zener diodes on hand.  Using the same orientation (i.e. the line indicates the cathode), I soldered on the final component onto the board.  I was able to do this as the diodes provide a voltage regulator for the USB connector but is rather archaic as the USB drivers are  fairly stable and therefore a 3.3V regulator is not really necessary.

Programming the circuit board:

Before I could commence programming my FabISP I had to configure my computer to allow me to do this.  Firstly, I had to redirect direct the path directories within my computer so that when I installed the required CrossPack program the computer would look for it in the correct directory.  Using Mac OS 10.6.8 I opened terminal and had to navigate to the root directory, this is achieved by using the command cd.. comannd to go back to the root directory and then following the tutorial linked here.
Following the tutorial in the content section of the Fab Academy website, i downloaded the firmware and followed the steps but got the below error message when I inputted the 'make hex' command.

Thomas-Bells-MacBook-Pro:firmware thomasbell$ make hex
avr-gcc -Wall -Os -DF_CPU=20000000     -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
In file included from usbdrv/usbdrv.c:12:0:
usbdrv/usbdrv.h:455:6: error: variable 'usbDescriptorDevice' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.h:461:6: error: variable 'usbDescriptorConfiguration' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.h:467:6: error: variable 'usbDescriptorHidReport' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.h:473:6: error: variable 'usbDescriptorString0' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.h:479:5: error: variable 'usbDescriptorStringVendor' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.h:485:5: error: variable 'usbDescriptorStringDevice' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.h:491:5: error: variable 'usbDescriptorStringSerialNumber' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.c:70:14: error: variable 'usbDescriptorString0' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.c:89:14: error: variable 'usbDescriptorStringDevice' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.c:111:14: error: variable 'usbDescriptorDevice' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
usbdrv/usbdrv.c:142:14: error: variable 'usbDescriptorConfiguration' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
make: *** [usbdrv/usbdrv.o] Error 1
Thomas-Bells-MacBook-Pro:firmware thomasbell$


After discussion with the guru, it was discovered that this was a probably with the firmware that we downloaded and some elements of the CrossPack AVR code had been altered causing the original firmware to be non-compliant.  Using this new firmware, the hex command and all the other necessary commands worked first time, note you should be in the firmware folder within terminal to ensure that the commands work!  The programming of my FabISP worked first time (once I had put the header cable on the right way) and I decided just to remove the solder bridge and not the 0 ohm resistor as it will allow me to program subsequent boards without any additional power to the other ISP's when they are being programmed.


Designed by T&G
Back to the top