Week 4 / Electronics Production

filament spool example

HoMe

Step 1

I downloaded the schematic files from the page FabISP, a fab-able in-system programmer

ISPfiles

Step 2

I downloaded and installed Eagle V7.5 (Free version)

Step 3

Open the schematic file with Eagle (i did so to see how to get the board form the schematic in Eagle)

Eagle1

Eagle2

Step 4

The schematic file appears in a new window

eagle 3

Step 5

i used the Eagele's module made to switch from schematic to board

eagle 4

Step 6

And the board appeared in a new window

eagle 5

Step 7

I am using a CIF machine running with Galaag3, which means that i need Gerber files

Lucky me a user of the lab has already done a little script to make things easier

So i open the CAM Processor form Eagle first

EagleGerber1

In the CAM Processor i open a new job (the script)

EagleGerber2

EagleGerber3

It gives me the good settings that match with our machine, just need to click on process job

EagleGerber4

Step 8

Milling with the CIF Technodrill4

Open Percival (part of Galaad) and import the Gerber file

Galaad1

Galaad2

And the full board is diplayed

Galaad3

Because i haven't done it in Eagle, i must add a cropping line all aroud the board

Galaad4

Then i ask Percival to calculate the tools paths

Galaad6

Galaad7

I go to milling and i ask to engrave and cut the board

Galaad10

Galaad11

Gallaad opens and display the board

Galaad12

Click on milling to go forward

Galaad13

Gallaad's milling setups opens, don't forget to choose "optimised paths" to win time

Galaad14

Once the setups has been checked you have access to the controlling machine interface, where we have to do the offset of the machine

Then start milling

Galaad16

At first attempt i had a level trouble, something was wrong, board was not that flat

The two second tries went well, and i've even tried it a last time taking away all unusefull copper

FabISP

Step 9

Components finaly arrived so...

I discovered that the list of components was a little different form what i was expected. The 20 Mhz chrisal was different (much smaller)

So i started again from scratch, but tihs time i milled it with the Modela 40 and the Fab Module

And it is much more easer than using Galaad, i just needed to download the .png files of the ISP board (Traces, Outlineand the Full board as a help to solder)

FabISP

Step 10

Then i imported the traces it in the Fab Module

ISP2

I choosed the Output format : .mrl for Rolland mil

ISP2

I entered Output settings (Speed 15000, Type of machine MDX-40 and offset's values)

ISP2

I choosed the process i wanted to use to mill traces : PCB traces 1/64

ISP2

Then the process settings were displayed. I left them as they were and in clicked on calcute

ISP2

The Fab Module calculated the tool path and displayed it

ISP2

And i saved the result : a .rml file of the traces.

I did everything again with the outline to get the second .rml file.

I had to change the process setting because i was using a bigger tool to cut the board

ISP2

Milling was a bit tricky. I milled twice to deep and i broke one tool by doing so

But after i checked all my settings everything went well

ISP2

Step 10

Soldering was really cool, but i loved it so that i forgot to take pictures.

ISP2

For the USB i didn't try to make it clean. I soldered everything and i cleaned the mess with desoldering braid as Neil Gershenfeld said during the class and it was perfect

ISP2

Step 11

Programming the ISP

I first downloaded and installed AVR for windows

CMDISP1

I downloaded the Firmware and i copied it in a specific folder before to extract files from the .zip folder

Using Sublime Text 2 i opened the Makefile to modify it. I needed to change the type of USB from normal to TinyUSB

CMDISP1

I took an already programmed FabISP and an plugged my laptop to FabISP to program (USB/TinyUSB). Then i plugged the card to program to the programmeg FabISP (Ribbon cable). And finaly i plugged the programmed FabISP to my laptop (TinyUSB/USB)

No smoke came out, so, using Git cmd i went to the file Makefile

ISP2

I started to program it but at the last command i had this error message

avrdude: error: usbtiny_transmit: usb_control_msg: sending control message failed, win error: Un périphérique attaché au système ne fonctionne pas correctement.

I had two options: my board or the programmed FabISP had a problem

I first changed the programmed ISP, and everything went well, i still don't know what was wrong with the other FabISP

C:\Users\adminpatxi\Desktop\ISP\fabISP_mac.0.8.2_firmware>make clean

rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.e
lf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s

C:\Users\adminpatxi\Desktop\ISP\fabISP_mac.0.8.2_firmware>make hex

avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atti
ny44 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atti
ny44 -x assembler-with-cpp -c usbdrv/usbdrvasm.s -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atti
ny44 -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atti
ny44 -c main.c -o main.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atti
ny44 -o main.elf usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
avr-size main.hex
text data bss dec hex filename
0 2050 0 2050 802 main.hex

C:\Users\adminpatxi\Desktop\ISP\fabISP_mac.0.8.2_firmware>make fuse

avrdude -c usbtiny -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.

C:\Users\adminpatxi\Desktop\ISP\fabISP_mac.0.8.2_firmware>make program

avrdude -c usbtiny -p attiny44 -U flash:w:main.hex:i
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: writing flash (2050 bytes):
Writing | ################################################## | 100% 1.95s
avrdude: 2050 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex contains 2050 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 1.14s
avrdude: verifying ...
avrdude: 2050 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
avrdude -c usbtiny -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x1e9207
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.00s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.02s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.02s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.

To finish i desoldered the 0 ohms restistor and took the solder bridge away.

Full board as a help to solder