______ _ ___ _ _____ _____ __ ______ | ___| | | / _ \ | | / __ \| _ |/ | |___ / | |_ __ _| |__ / /_\ \ ___ __ _ __| | ___ _ __ ___ _ _ `' / /'| |/' |`| | / / | _/ _` | '_ \| _ |/ __/ _` |/ _` |/ _ \ '_ ` _ \| | | | / / | /| | | | / / | || (_| | |_) | | | | (_| (_| | (_| | __/ | | | | | |_| | ./ /___\ |_/ /_| |_./ / \_| \__,_|_.__/\_| |_/\___\__,_|\__,_|\___|_| |_| |_|\__, | \_____/ \___/ \___/\_/ |_|

Student Archive || Student no - 183 || FabLab CEPT, Ahmedabad |

Electronics production


Assignment requirements

'Milling machine' resources (specific to Roland Modela MDX-20)

Milling the PCB in the Modela

Choose the ISP variant

There are many versions of ISPs millable in a FabLab as listed in the class notes, each one with it's own improvements and changes. Links to different versions below

Brian Zaerc Ali Valentin Andy David hello.ISP.44.cad

I decided to mill the FabtinyISP as it had LED indicators and a direct USB connection
But was advised to mill the FabLabCEPT ISP first and then move on to smaller boards, FabLab CEPT ISP is designed by our local instructor RudraPalSinh and it's components are spaced out and hence forgiving of minor soldering mistakes.
I also milled the FabISP as seen in the Fabacademy tutorial page for electronics production to test my newly learnt soldering skills on a smaller board

Download the .png files for the board

Open FabModules

Enter sudo make_png_rml in the terminal of the laptop which has FabModules installed and the milling machine connected to.

Load .png


Browse and select the .png


Set the settings profile to 'mill traces (1/64)


'Make path'


Attach the FR1 copper board onto the bed with double-sided tape


Fix the board on the bed and exit out of view mode


Make sure to not overtighten the set screw while changing bits


Get the rig down by holding the down button on the machine and drop the bit on to the surface by loosening the set screw and then finger tighten it again


Use the X(min) and Y(min) values to move the end mill across the board to see if the end mill still touches the board


If the endmill touches across the board, the bed and the board are level and milling can begin


While milling is underway, fabmodules shows the progress and an option to abort


After the traces are done, the outline png is loaded and the settings profile is changes to ' cut out board (1/32) '


Mistake #1 - The double sided tape wasn't strong enough and the FR1 board slid across the sacrificial board


Below you see where the mill deviated since the board moved, it's important to stop the milling asap to minimize damage


So, I stopped the milling, restuck the board and decreased the milling speed to 2mm/s from the default of 4mm/s and the cutout was successful


I repeated the above proess and milled 2 FabISPs and 2 FabLabCEPT ISPs


Stuffing the board / Soldering SMDs

Soldering setup


Knolling the components


using the 'handy' stand and beginning soldering


The second board I soldered had significantly less accidental solder bridges and took much lesser time to finish


I started soldering components from big to small and from middle of the board to the periphery


Finished board - Solder joints needs to be much more cleaner and concise


Hero shots of the boards


Programming the board

Install avrdude and GCC in Ubuntu

The following commands installs all necessary prerequisites for programming the board

sudo apt-get install flex byacc bison gcc libusb-dev avrdude
sudo apt-get install gcc-avr
sudo apt-get install avr-libc

Download firmware.zip and unzip it

The following commands downloads the zip file - 'firmware' and unzips it in the desktop

cd ~/Desktop
wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
unzip firmware.zip

Open a terminal in the unzipped folder

Execute sudo make clean

Execute sudo make hex

Execute sudo make fuse and sudo make program

If all goes well when you list all the USB devices, you'll see the FabISP as 'multivendor USBtiny'

Program another FabISP with the previously programmed one

Desolder the solder joints of the FabISP to make it a programmer

Solder joint to be debridged, I did that with a solder wicking braid

The flux on the braid made a dirty spot on the board

Edit the makefile config file with a text editor

Comment out the appropriate line when changing your programmer

If the 6-pin cable orientation is wrong

If the orientation of your 6-pin connector is wrong on any of the boards you'll see an error stating 'Fuse failed' Error 1

Execute 'clean' 'hex' 'fuse' program' commands like before

If everything went right

You'll see 2 USBtinies in your list of USB devices

Programming video recording.mp4 (Ideal viewing conditions - 1080p , 2x Speed , Muted )

Irrelevant asides : Fixed my wireless-mouse's USB reciever after seeing FabISPtiny

Irrelevant asides : Learnt the hard way that I'm not ambi-dextrous

Notes on 'Electronic production' skills

As weeks such as input device, output device and networking progressed , time taken to whip up a design in KiCAD, mill the board and to stuff it reduced in orders of magnitude from a week initially to a day and after a few cycles of producing boards and then to a couple of hours for a simple hello-world boards.

Example of programming with FabISP

My FabISP is working fine, here I used it to program the Hello.echo board. As you can see in the second screenshot, the programmer is set to be the USBtiny, which is the FabISP