Milling and stuffing the FabISP board
Starting from a blank copper-covered, composite board, this week's process uses table-top milling and surface-mount soldering to fabricate the FabISP Board. This circuit functions as a programmer, able to load code onto other devices. Our self-made versions are intended to replace the more expensive, off-the-shelf models such as the AVRISP2 or Amtel Ice. This device must first be programmed, in order to take on the full functionality as a programmer in its own right--the steps toward the end of this entry detail how we "program the programmer".
Below, you'll see an evolution from clean board to a copper ciruit path, showing the "traces" where current will later flow. We use an MDX-20 table-top mill to selectively leave copper for the desired circuit path. We use a 1/64" end-mill for the bulk of the design, and a 1/32" end-mill to cut the circuit area out from the rest of the board.
Summary of Steps for the Milling Process
- Prepare the board. Cover the back of the board with double-stick tape (non-overlapping) and affix to the sacrificial milling surface
- Select view mode, and load the 1/64" end mill by first loosening the set screw, removing any current tool, replacing the new end mill and tightening. Make sure that the end mill does not protrude too far from the bottom of the housing at this stage; you'll lower it later.
- Turn view mode off, and start the software process below. Once the end mill is correctly placed at an "origin" of your choosing and all other parameters are set, use the set screw to loosen, lower the tip and retighten the end-mill. The tip should be just grazing the surface of your board.
- "Send" the signal for milling.
- Upon completion of the 1/64" traces, take the vacuum and remove the fine shavings from the milling platform.
- Turn on view mode again, remove the 1/64" end mill and replace with the 1/32" end mill for cutting out the board.
- Repeat steps above with tweaks to the software paramters for the 1/32" end mill.
A few notes on using the CBA software interface for the MDX-20:
- Order of operations: Start the Mods server, open firefox, select the MDX-20 from "open server program", modify settings as directed by the TAs or after learning to optimize for certain effects (some notes on this below), confirm the origin point for the tool (and lower the end-mill), "calculate" the traces and "send" the file.
- If using a file png that is vertical, make sure to place your board lengthwise along the y axis of the milling platform. Similarly, if you're using a file that is imported in as horizontal (notably the USB Key), make sure to place your board lengthwise along the x axis. Alternatively, you could rotate the photos before importing to use a consistent direction.
- Make sure to select either the 1/64" tool or 1/32" tool on tool selection module depedending on the milling task
- The "offset" numbers for the traces refer to how many times the end-mill traces a removal-path around the traces that are kept. A higher offset number means more removed copper and a cleaner board (easier to solder), but more time for the machine to complete. Recommended values for our year were "4" for the 1/64" offset and "1" for the 1/32" offset (you only need one path for the cut, though it will cut it out over three times, going deeper on the same path each time).
- Check the serial port module to make sure your connection to the machine's server is still open. If it has closed, try opening from the dialog boxes or restarting the mods server and the firefox tab.
From blank board to circuit-trace board!
After milling the board, we now proceed to "stuffing," or filling the board with it's necessary electrical components like resistors, capacitors, diodes, etc. For this instance, we use surface-mount soldering-- a technique where components are electrically connected to the copper traces not through wires and holes but through flat-surface attachment via the solder.
An important preliminary step before soldering: wash the board with soap and water, gently. This helps remove oils from your fingertips that would otherwise disrupt the solder bonding. Below, you can see the board (after cleaning and drying), laid out with all components in their future places. This is to help catalog all the required components and prepare for the soldering.
A few notes on components. In our circuit, the components that require a particular directionality of connection are the diodes and the microchip. There is a small line on the cathode side of the diode, indicating this direction. In our spec for the circuit configuration, the board design software indicates both a C (for cathode) side and an A (for anode) side. You want to allign the cathode side of the diode with the C side of the trace from the circuit diagram. For the microchip, there is a small, circular depression on one corner and this should again be lined up with the proper traces as made explicit in the circuit diagram.
A note on resistors. These can be laid in via either direction, and the numbers on the top of the black side help to identify the resistor values. For the stock of resistors we were working with, you can look at the last digit to determine the factor of 10 by which to multiply the first 3 digits. That is, a resistor showing "1000" is a 100 * 10^0 = 100 Ohm resistor. The "1002" resistor is a 100 * 10^2 = 10K Ohm resistor.
A note on soldering. When you are ready to begin soldering, make sure any long hair is tied back and turn on the soldering iron, allowing it to warm up before use. Soldering surface-mount boards requires a particular technique. It is best to start by warming up the traces by placing the tip of the soldering iron on the copper pad you wish to begin with. Then bring the coil string of solder into the tip, allowing a small amount of solder to flow and fill the pad. Repeat for other pads. Once several components-worth of pads have been soldered, bring in the component in one hand while using the solder iron to re-heat that solder pad, then place one end of the component gently. Reheat the other pad and press the component gently into place. Solder should be visibly making a solid connection between the copper trace and the component's conductive areas. Clean the soldering tip regularly, as you work, with the steel wool or wetting pad.
Below, you'll see a series of photos documenting the soldering process:
First, laying a few pads of solder on the first areas I plan to solder components to:
Next, a close up as more of the components are soldered. This shows how the tip is brought on to warm up the trace, and then the solder coil string is brought in close, until touching the tip, to fill the warmed pad:
Further progression of the soldering, in batches of components:
A setback! In trying to soldering the final component onto the board, the USB-power connector, I allowed solder blobs to cross several of the delicate connections. In trying to remove the excess solder with the solder wick, I pulled too much on the component and ripped off the copper traces. This means starting over with milling a new board and redoing all that soldering! I updated my strategy after this, to start with the hardest component of the board (so that if another mistake is made and requires a new board, I haven't spent all that time soldering the other easier components).
Here's the start of my new board, with the soldering of the USB-power connector and the final board with soldering of the other parts:
After completion of the board soldering, we now move on to programming the board! I was able to validate that the basic soldering connections on the board were working, by plugging the board into the AVRISP programmer (and observing the green diagnostic light below) after following the OS and firmware instructions on the tutorial site.
I hit several roadblocks in actually getting the board programmed, however. Trouble with windows drivers that blocked even the initial make clean and make hex steps led me to use the linux computer in 043. I was then able to proceed through most of the compiling and building steps, but the process failed on the final "make program." I am still in the process of debugging my board, and will post more pictures below when I have determined the cause.
Update! Thanks to some assistance from Brian Mayton, we were able to determine that the programming failure was likely the chip being unable to access the crystal (this was diagnosed by recounting that the first time I ran the steps, the make fuse worked, and program failed, but the second time the make fuse didn't work). We examined the board and made a repair to a connection between the chip pin and the oscillator (where a trace had in fact been severed but was hidden by excess solder). You can see a picture of this "fix" below, reconnected using enameled wire. After this modification, the board was successfully programmed!