Electronics Production
The fourth lecture on Wednesday February 15th was about Electronics Productions: different ways to manufacture PCBs with all the conductive tracks shaped in the correct way and all the electronic parts soldered in the correct position. Assignment given by Neil for this fourth week was:
The in-circuit programmer introduced during Neil's lecture is the so called FabISP, a completely fab-able (designed for production within a FabLab) in-system programmer for AVR microcontrollers: AVR microcontroller was first introduced in 1996 as one of the first microcontrollers to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM. As explained by Neil toward the end of electronic-production lecture a FabISP can be programmed through another FabISP and AVRdude software which is released under GPLv.2 License, or through commercial programmers/debuggers like the Atmel-ICE and Atmel Studio software.
This week assignment consists in producing FabISP with the PCB milling method; in order to do this, it is important to understand the functioning of a precision (0,001 mm/step resolution) CNC milling machine: from the CAD model to the CAM end-mill route over the material to be milled, for a given machine model. More in particular, the given machine is the desktop CNC mill Roland Monofab SMR-20 which is present as recommanded machine for the FabLab Inventory and fully supported from Fabmodules Project (system independent browser-based CAM software).
Before really starting with PCB milling, it's also important to make sure that spoil board is perfectly plane; so I milled SMR-20's MDF sacrificial base it with a 5mm square-shaped end-mill, using Modela Player 4 software.
Creating new process (surface levelling)
Selecting cutting surface (upper surface)
Selecting cutting tool (5mm square-shaped carbide bit)
Selecting cutting area (203.2x152.4mm) and depth (0.2mm)
Selecting tool path (line scan, X axis)
Selecting material (wood), X, Y and Z axis speed (30mm/sec), spindle (7000rpm)
Checking tool path
Cutting: ready...
...start! CAM output is passed as an input to Roland VPanel software that's used to operate the modeling machine on the computer screen; it has functions to output cutting data and perform maintenance; it also displays error messages of the modeling machine.
This is the 5mm squared-shaped end-mill I used
...and this is the final near-to-perfect result!
Here we come to PCB milling. A good online resource with a technical in-depth analysis about FabISP, leading to FabOptimus design, is article FabISP Demystified by MIT Media Lab Research Assistant Ali Shtarbanov; another interesting resource is FabISPKey design, where MIT Media Lab Research Assistant Andy Bardagjy points out FabISP genealogy before Neil's FabISP "hello.ISP.44" design:
So, for the very first PCB milling attempt, I decided to stay classic and went for the original FabISP design by MIT Media Lab PhD David A.Mellis; David is also co-creator of open-source hardware and software platform for electronic prototyping Arduino.
First of all, I downloaded FabISP traces file
and the edges (to be cutted out) file
For creating the machine paths (CAM paths) this time I used the Fabmodules sofware (web version) and it's step-by-step procedure which supports very well the Roland SMR-20 precision milling machine. Fabmodules project is developed by MIT Centre for Bits and Atoms with the Fab Network and provides a set of software tools for personal fabrication, intended for use with machines common to fab labs; it includes:
Selecting input file and parameters
Setting output file and parameters
Picking different suitable endmills and defining for each of them the correct parameters (small note: as pointed out by guru instructor Bas Withagen during global review process, the ones portrayed in the following picture -except the darker one: position #5 from the left side- are NOT endmills but drill-bits and that's the reason why I experienced in fact also a pair of breakings; while a drill bit can only cut in the axial direction, a milling bit can generally cut in all directions, though some cannot cut axially)
Selecting the process (PCB traces 1/64)
Calculating the exact inches => mm conversion (1/64 inches = 0.015 inches = 0.396 mm )
So, if a 1/64 inches "flat" squared-shaped endmill is chosen (this also got broken!)
tool diameter can be set to 0.40 mm
Since -as said before- I experienced lots of breakings and no stub-neck endmills were available in that moment together with Roland Monofab SMR-20 mill machine, I decided to try a V-shaped bit: this particular shape seemed to me less subject to breaking failures, at least at an absolute-beginner level; V-shaped bits however have a strong correlated issue to be aware of: variable thickness depending on depth of cut and V-angle, therefore making in some ways CAM process more "heuristic" and less "algorithmic". So, if a V-shaped endmill is chosen
since tool diameter varies depending on milling depth and V-angle, it's necessary to estimate it; in this case 0.20mm it's been estimated
This is FabISP traces as seen inside Fabmodules
this is the tool-path
...and this is for the edges
Sticking FR-1 (Paper Phenolic Copper Clad Laminate) sheets inside Roland SMR-20 precision milling machine
Fixing very tight with strong and thin bi-adhesive scrim tape
(peeling bi-adhesive top surface, at the very last minute)
FR-1 sheet in place, ready to be milled
Bringing the endmill in the correct position (slightly touching FR-1 sheet surface)
Roland VPanel is the control software for Roland SMR-20 precision milling machine; it'is proprietary software from Roland DG Corporationrunning on Windows systems: I'm not super happy about this since, as far as I can, I prefer using Free Software and a GNU/Linux system
Setting Base ("Zero") Position on X and Y-axis
Setting Base ("Zero") Position on Z-axis
Starting with PCB milling (spindle rotation speed = 8537 RPM)
New tryout! Changing tool diameter from 0.20 mm to 0.30 mm -but again with the same V-shaped endmill
Evaluating the different results
Can this possibily working fine? Let's make it the "solder-candidate", and cut-off edges! (0.80 mm endmill)
Now with a more finished look:
Time to solder! At this point, the freshly milled FabISP board needs to be stuffed with all the needed electronic SMD components (ATTiny 84-SSU, resistors, capacitors, zener diodes, crystal, headers, etc.), following the given schema. All over the Internet there's a lot of tutorials about PCB soldering, like the amazing Soldering is Easy comic for absolute beginners by american hacker and inventor Mitch Altman; there's also some good videotutorial about SMD components soldering, like the well-known Soldering Tutorial -Surface Mount by australian video-blogger David L.Jones; after retrieving this good information, I was ready to embrace the soldering iron and manually pick&place the components on the board surface one-by-one; indeed it was not so easy to me and required me more than one hour of time. Here's the "Hero Shot" with the final result:
After completing the soldering of all the board SMD components, next step was board programming; not having another FabISP available, at first I decided to program it with an Arduino UNO-R3 clone board through the Arduino-as-an-AVR-ISP method and AVRdude software; however this failed: for some unknown reason AVRdude could not read the correct device signature from FabISP microcontroller ("ATTiny 84" signature)
Not having enough time and experience to investigate in depth and figure out the reasons of the failure (at this point this could be an hardware -Arduino or FabISP- failure, or a software misconfiguration, or both), I decided to to program the FabISP in a more "traditional" way, using a commercial Atmel-ICE programmer (the one shown by Neil at the end of electronic-production lecture)
and Atmel Studio software; I was not super happy with it, since this is proprietary software only available over a Windows system and, as far as I can, I prefer using Free Software -however, it worked like a charm! :)
after connecting ATmel-ICE to FabISP (and both to computer USB) it was possible to configure Tool, Device, Interface; and reading FabISP voltage and signature (...this time signature was correct!)
then selecting the correct .elf file firmware (the one given by Neil during the electronic-production lecture)
and flashing it to the FabISP
(...flashing in progress...) / 1
(...flashing in progress...) / 2
...FabISP programming done!