MIT FabAcademy Week4 Assignment - Electronics Production

in #blog7 years ago (edited)

week4.png

This week's assignment is :

Make an in-circuit programmer

The FabISP is an in-system programmer for AVR microcontrollers, designed for production within a FabLab. It allows you to program the microcontrollers on other boards you make.

FabISP: Programming tutorial

I followed Andy's work to do this assigment.

Shouldn't miss this Video Walkthrough and this tutorial before starting fabrication, especially for beginners. It explains how to mill circuits on the modela in nice details.

Cut the board for circuits

In our lab we use this guy: Roland SRM20

1/64 bit end mill for traces and 1/32 bit end mill for board edges are ready.

We use FR1 which is a paper based copper plate to mill on.

1. fixation

Fix the FR1 on the base board with double sided tape:

2. install endmill

Place endmill (1/64 for tracks first) into the hole, then use hexagonal screw to tighten it (clockwise).

3. position and zeroing

Open VPanel for SRM20, move X/Y to the ideal place. Then move z down to the board surface. When getting close to the zero point, loose the endmill until it just touch the board, then tighten it again.

4. mill

Choose the traces file and send to SRM20. Just wait until milling is done.

Once the traces are ok, replace endmill with 1/32. Move to origin x/y and z position. Then choose the outline file and send to SRM20.

If everything goes well, you should get something like this:

5. clean up

Do some clean up:

trial and error

In my early experiments, I got wierd result: some parts of the board were ok but some traces were too shallow.

I couldn't figure out why until my classmate reminded me the endmill problem : I didn't tighten it enough! After milling for a while, it could move backwards.

So I tightened the endmill and solved the "half-milled" problem.

Soldering

Next challenge: soldering!

Thanks to my classmate, they've prepared all the components before hand.

All the elements are so tiny that I was wondering if I can handle all of them...

I started from the biggest one: ATTINNY44

Place it to the right place, then press down one pin use welding torch with one hand, and let solder wire approach to the torch with the other hand. After solder melting down, put away wire first, then the torch. In a few seconds, the solder become shiny and smooth.

My first soldering component, not bad XD

Keep trying:

Final board:

Programming

Steps on OSX

  • Download and Install Crosspack AVR

  • Get Make (via XCode)

  • Download the firmware FabISP Firmware for MacOS 10.8.2

  • unzip and cd into the firmware directory

  • Open the Makefile with TextEditor

  • change avrisp2 to usbtiny

    Go to the line that says:

        #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
    
    • If using the USBtiny programmer or another FabISP, remove the "#" in front of the line with "usbtiny" in it. Add a "#" to beginning the line with the "avrisp2" in it to comment it out. Save the Makefile
  • cd firmware directory, make clean

    • the result should be 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
  • then make hex

    the result is

    kidults-MacBook-Pro:~/Desktop/firmware$ make hex
    avr-gcc -Wall -Os -DF_CPU=20000000   -Iusbdrv -I. -DDEBUG_LEVEL=0 
    -mmcu=attiny44 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
    avr-gcc -Wall -Os -DF_CPU=20000000   -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=20000000   -Iusbdrv -I. -DDEBUG_LEVEL=0 
    -mmcu=attiny44 -c usbdrv/oddebug.c -o usbdrv/oddebug.o
    avr-gcc -Wall -Os -DF_CPU=20000000   -Iusbdrv -I. -DDEBUG_LEVEL=0 
    -mmcu=attiny44 -c main.c -o main.o
    avr-gcc -Wall -Os -DF_CPU=20000000   -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    2020       0    2020     7e4 main.hex 
    
       ```
    
    

Seems good.

  • then make fuse

  • final step make program

All FabAcademy Notes (to be continue):


Art x Code . Thanks for Upvote!

Sort:  

Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://kidult00.gitbooks.io/00fabnotes/content/Week4/4_Assignment.html