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

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


Electronics production



index



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.
FabISP




Load .png


FabISP

Browse and select the .png


FabISP




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


FabISP




'Make path'


FabISP




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


FabISP




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


FabISP




Make sure to not overtighten the set screw while changing bits


FabISP




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


FabISP




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


FabISP




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


FabISP







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


FabISP




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


FabISP




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


FabISP




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


FabISP




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


FabISP

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


FabISP





Stuffing the board / Soldering SMDs

Soldering setup


FabISP




Knolling the components


FabISP




using the 'handy' stand and beginning soldering


FabISP




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


FabISP




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


FabISP




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


FabISP




Hero shots of the boards


FabISP




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