Electronics Production

Make the FabISP in-circuit programmer Make the FabISP in-circuit programmer David Andy Valentin Zaerc hello.ISP.44.cad board components traces interior hello.ISP.44.res.cad board traces interior inventory microcontroller crystal USB connector ribbon connector Zener diode jumper firmware.zip USB power make clean make hex (sudo) make fuse (check programmer in Makefile, may need to repeat) (sudo) make program desolder SJ1 and SJ2 make IDC ISP cable, connecting header pin 1 to pin 1, check wires

Assignment

 

Eagle

I never had contact with a platform for producing circuits, nevertheless I tried to design some circuits with cooper type or with conductive ink. I am happy to learn a proper method for implement circuits with SMD.

Easy Applicable Graphical Layout Editor strong>is a powerful PCB design software tailored to meet the needs of professional engineers, makers and those at school! After installing the Program Eagle , I followed the tutorials in Youtube from

Tutorial 1 for Eagle: Schematic Design

This tutorial explains in detail the construction of an interface using this program. I installed the FabLab Libraries. Additionally, I tried to design a small circuit, in order to get to know the interface of the program. Afterwards, I Installed the program for the milling machine named CirQwizard.

Praxis.

I designed my own LED for wearables.
Thumbnail Image 1
Led Board


Thumbnail Image 1

schematic and job view in eagle, File of cirQWizard view

Thumbnail Image 1

Glove you can find the tutorial of illustator fur cutting this glove in the laser cutter on AID

LED Board

1. I used LEDs, a 330 resistor and two connections for the threads. In the following picture you can see the schematics and the job.

2. After removing the board of the milling machine, I broke the bridges and polished each LED board.

3. After soldering the LEDs I tested them with conductive thread, additionally, I tested the connections with the multimeter in order to verify them.

Fab ISP Board

I used the David layout for designing the Fab ISP.

I took only the components in the schematic view in order to do my own design.

I tried to eliminate the 0 resistor but it is for this moment not possible, I had to again use the 0 resistor and also, the board is bigger than the David Board.

Thumbnail Image 1

Thumbnail Image 1

I used only the top part of the board, for optimizing the surface made of copper. Then I transformed the GND as main surface, as you can see in the following picture.

Thumbnail Image 1

For writing text in the board, you have to select the top layer and also a Vector font in order to have enough space to mill the text. You can change the font in the Properties panel.

Thumbnail Image 1

The milling layer is the last layer, which will separate the board from the basis. In this case you have to use another tool of 1mm for cutting. For this procedure, you have to verify the grid options and change the mill to mm. Afterwards, you can select the milling layer in the Properties panel and change the width for 1 mm and select the lines.

Thumbnail Image 1

In the same layer you can build the bridge for fixing the printer into the platform. You can go to the Trim option and make a box as the picture shows. Then remove the parallel vector and you can leave this layer for both sides open. When the board is finished you can easily break the board and polish the edges.

If this is the first time that you work with this program, you can go to the File options > Job > Open CAM Job > cqm-gerb-274x7.2 cam

Thumbnail Image 1

the “gerb” o Gerber files are kind of “universal language” for PCB designs. In this case I want to specify the gerber that I want to export. About gerbers: Gerber files – note the plurality – each describe single layers of the PCB. One gerber might describe the silkscreen, while another defines where the top copper is. In all, we’ll generate seven gerber files.

Thumbnail Image 1

From here, go to the File menu, then go Open > Job…. In the file browser that opens, select the cqm-gerb-274x7.2 cam file that you just downloaded. Now the CAM processor window should have tabs: “Top Copper”, and basically the milling contour part. Each of these tabs define how to create one of the gerber files. Now all you have to do is click Process Job. If you haven’t saved recently, it’ll prompt you to.

Without closing this window, you can go to the Run ULP and select the option “mountsmd.ulp”. You are ready to mill your board.

CirQWizard

In the following pictures you can see the settings of the board. We have to be careful with the machine because this one doesn’t have sensors to sense the toppings.

Thumbnail Image 1


Open the File

Open the file with the extension .cmp

Homing the machine and establish the 0 points in the machine and put the PCB in the machine.

You can home the machine each time, going to the Manual Control and pressing HOME

.

.

.

.

.

.

Thumbnail Image 1


Thumbnail Image 1


Thumbnail Image 1


X,Y and Z Offsets

Thumbnail Image 1

To adjust the position of the X,Y you can move the drill in the Manual Control. Pay attention to the Z axis in the 0 Position

Thumbnail Image 1

Settings: I had to add a new tool with the 0.254 diameter and 15°, in order to mill the copper layer. Homing the machine and establish the 0 point in Z direction, please,

Thumbnail Image 1

set of the bits :0.254 diameter and 15° (plase use always the first one)

for changing the bit, please go to the Panel Control > select Change tool

Thumbnail Image 1

Homing the machine and stablish the 0 point in Z direction, please, install previuoslly the tool

Thumbnail Image 1

Install previously the tool. This picture shows the test of Z axis offset, please verify the clean edges.

Thumbnail Image 1

Run after set up this machine you can procedure to mill the copper layer.

...

X,Y and Z Offsets

Thumbnail Image 1

Cutting the board after set up this machine you can procedure to mill the board (don't forget to do the abridges in Eagle)

Thumbnail Image 1

tool for countour milling 1 mm

.

Thumbnail Image 1

Cutting the board on the machine don#t forget to use te vacunn cleaner, for prevent damages and manatenance the machine

>>>>

> ready to solder

Solding the board

First of all, you have to melt a little bit of solder paste and apply it to the tip of one of the copper layers. After it has dried, you can put the component on this solder point and melt it. After this, you can proceed to solder the other part of the component. Some components as the USB port was very difficult to solder. After soldering the holding components you have to test the connection with the multimeter. You can also test the connection in the microscope.

Thumbnail Image 1

some components as the USB port was rto difficult to solder

After solding te hold components you have to test the connection with the multimeter

also you can test the conction in the microscope

Programming

To program my FabISP I used the AVR ISP Mark II programmer. I couldn't really programm my board because I had some problems with the hardware. After testing the connections and the software still showed me an error message.

    	kn ~/Documents/FabAcademy/Training (intern)/Embedded programming/fabISP_mac.0.8.2_firmware $ make fuse
avrdude -c avrispmkii -P usb -p attiny44  -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m

avrdude: stk500v2_command(): command failed
avrdude: stk500v2_program_enable(): bad AVRISPmkII connection status: Unknown status 0x00
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

make: *** [fuse] Error 1

    	

After testing it, I realized that my soldering work was awful :( in terms that the solder paste was in contact with the ground layer creating short circuits. With luck, I achieved to clean the board, resolder some components and test each connection and also make sure that each connection of the microcontroller worked. Well, after testing the connection of the Jumpers, I repaired it.

It works ! it was programmed

    	kn ~/Documents/FabAcademy/Training (intern)/Embedded programming/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.elf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s
kn ~/Documents/FabAcademy/Training (intern)/Embedded programming/fabISP_mac.0.8.2_firmware $ make hex
avr-gcc -Wall -Os -DF_CPU=12000000
-Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -DF_CPU=12000000
-Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -DF_CPU=12000000
-Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -DF_CPU=12000000
-Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c main.c -o main.o
main.c:88:13: warning: always_inline function might not be inlinable [-Wattributes]
 static void delay ( void )
             ^
avr-gcc -Wall -Os -DF_CPU=12000000
-Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -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   2070
      0   2070
    816 main.hex
kn ~/Documents/FabAcademy/Training (intern)/Embedded programming/fabISP_mac.0.8.2_firmware $ make fuse
avrdude -c avrispmkii -P usb -p attiny44  -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

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.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

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: Verify error - unable to read hfuse properly. Programmer may not be reliable.
avrdude: safemode: Fuses OK (H:FF, E:DF, L:FF)

avrdude done.  Thank you.

kn ~/Documents/FabAcademy/Training (intern)/Embedded programming/fabISP_mac.0.8.2_firmware $ make program
avrdude -c avrispmkii -P usb -p attiny44  -U flash:w:main.hex:i

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

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 (2070 bytes):

Writing | ################################################## | 100% 0.72s

avrdude: 2070 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 2070 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.65s

avrdude: verifying ...
avrdude: 2070 bytes of flash verified

avrdude: safemode: Fuses OK (H:FF, E:DF, L:FF)

avrdude done.  Thank you.

avrdude -c avrispmkii -P usb -p attiny44  -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

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.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

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 (H:FF, E:DF, L:FF)

avrdude done.  Thank you.