Week 4 : Electronics Production


This week begins off with the Electronics part starting with Electronics production. Here we need to technically produce a circuit. There are several techniques to build a circuit right from breadboarding to etching to milling the circuit. In lab, we mill the circuit and then stuff it with the components.


Assignment :

This weeks assignment was to make a Fab (tiny)ISP Programmer.


FabISP?

FabISP is not a new word for me, but that was mainly due to me attending the Pre-Fab Academy workshop conducted in the Fab Lab. At that time, FabISP was totally new to me inspite of me coming from an electronics background. All that saved me was, DOCUMENTATION works of others!!! Yeah, documentation is important. The FabISP is an in-system programmer for AVR microcontrollers, designed for production within a FabLab. So, technically it's a way less costlier programmer (believe me, hardly cost's 5 dollars!) made in the FabLab, by the Fabber's, for programming the boards. During the prefabs, I made the Fab ISP Programmer version which requires an extra FTDI cable to plug into the computer.

What I did this week:

This week's assignment was already done by me during the Pre-Fab Academy workshop conducted in the Fab Lab. The Fab ISP Programmer version which I made during the prefab's requires an extra FTDI cable to plug into the computer. To avoid that extra cable, I've decided to take any of the USB versions of the Fab ISP and make it. I selected Valentin's board to mill, I liked the way the solid jumpers were just stripped off from the board once the make fuse was done.








The circuit and cutout files were downloaded for milling. For milling the circuit onto the copper clad circuit board, the machine used is Roland Modela MDX-20.

Insights regarding preparing the maching for circuit milling:

1. Preparing the machine.

Change the bed to metal bed. Milling board is very sensitive to height, so place a sacrificial layer underneath. Metal board is used instead of acrylic sheet as the acrylic sheet has irregular shape. Copper plate is used as sacrificial layer upside down.


2. Fabmodules for Roland.

We use fabmodules to run the machine. As before, select the input format and output machine.


Input format: .png

Output format: Roland MDX-20 mill (.rml)

Select mill traces: 1/64

Load .png



If any rotation or image edition is done, then make sure that resizing of the image is done using resize .png. Invert .png is done to invert the color of the board before milling (in case needed).


Make path

Change the x(min) and y(min) position according to the space where you need to mill the circuit in the board.

And then click on Move to xmin, ymin button.

Make .rml

Sent it




A window appears showing the estimated time for completion of milling and button to start the process. Click on begin milling.

This will send the milling machine into action!




3. Traces, Cutouts

I used Valentin's board as Fab ISP Programmer.

I downloaded the traces and cut outs from here

Initially I cut the traces and then the cut outs.


4. Removing the cutout from the copper clad circuit board.

Take care that the cutout doesn't break while removing from copper clad circuit board. For this initially just slightly just jerk all the sides of the cutout to be taken and then gently pull out the board. Leave the excess tape that gets stuck below the cutout as it is, as I found it to be useful to hold the board in place while soldering the components. A small hack! :)



5. Stuffing

We are using smd components (yes, those tiny ones you solder on top of the board!). While gathering the smd's I found out that 18pf and 0.1uf capacitors were missing in the electronics inventory. So, I replaced them with 10pf and 1uf capacitors after refering to other Fab ISP boards and design spec's. While gathering the smd's I wrote the components in a paper and created a box in which I placed my components. This helped me in not loosing the components.



6. Soldering

By soldering, we place the components on to the pads in the cutout. Things to note down while soldering the components:


7. Programming the ATtiny 44A

Before using the FabISP, you need to program the ATtiny44 on it. To do this, I used another (programmed) FabISP. It's also possible to used Atmel ICE or Arduino to program the Attiny44.

We need Avrdude (for programming) and GCC (to compile C code). To get GCC and avrdude on Ubuntu, I used tutorials from fabacademy, How To Assemble and Program the FabISP.

Don't forget to power the FabISP Board by using the 6-pin programming header

Download and UnZip the firmware.zip file from the Fab Academy Electronics Production page and move into the newly created firmware directory. Open the firmware directory in terminal.

Make Clean

Make Hex

Now go to the make file generate in folder and open it with text editor. Edit the line in the make file for your programmer. I am using usbtiny to program my board, so I uncommented the below line:


AVRDUDE = avrdude -c usbtiny -P usb -p $(DEVICE)

Save the file and close

For the next lines the board had to be connected and live. Continue to enter these lines in folder opened in terminal.

make fuse

make program

At first on make Program I had an error shown as below:



nisha@nisha-Satellite:~/Downloads/firmware/fabISP_mac.0.8.2_firmware$ make program

avrdude -c usbtiny -P usb -p attiny44 -U flash:w:main.hex:i

avrdude: error: usbtiny_transmit: error sending control message: Operation not permitted

avrdude: initialization failed, rc=-1

Double check connections and try again, or use -F to override this check.

avrdude: error: usbtiny_transmit: error sending control message: Operation not permitted

avrdude done. Thank you.

make: *** [flash] Error 1



I checked the connections again for any loose connections and again did Make Program. This time the process was successful.



nisha@nisha-Satellite:~/Downloads/firmware/fabISP_mac.0.8.2_firmware$ sudo make program

avrdude -c usbtiny -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 (2002 bytes):

Writing | ################################################## | 100% 2.02s

avrdude: 2002 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 2002 bytes

avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 2.37s

avrdude: verifying ...

avrdude: 2002 bytes of flash verified

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

avrdude done. Thank you.

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

avrdude done. Thank you.


8. Removing the solder jumper.

For this just break the board at the cut out made. A disadvantage which I see in the board is that once the board is broke down, in case you need to configure the board again then it's not possible!



Final Board Shots:




Continuation of Flexible Circuit Cutting...

With the FabISP done, I decided to trouble shoot the problem I was facing while trying to cut a flexible circuit. After discussing with the pals out here, I understood that the problem was not with the force settings but with the adhesiveness of the bottom sheet. So, I removed the bottom layer and stuck the copper sheet onto a masking tape layer. This time the Flexible Circuit Cutting worked perfectly.




I was able to cut the circuit and remove the unwanted copper sheet parts easily. But I made a mistake by transfering the circuit to the wrong side of epoxy! (Oops, I had to restart the whole process again. Never mind, it was a big learning curve for me. Look before you Do!)

After transfering the copper trace on to the epoxy sheet, stuff the pads with the components as usual. Remember to start stuffing the components from the middle of the board.

The board with stuffing being done.




Final stuffed board


What I learnt from this week's schedule...

What is a FabISP and how to make a FabISP

Different board production techniques, mainly how to mill a board

Soldering techniques and Stuffing the board