Back
Featured image of post Electronics Production

Electronics Production

Week 4

Assignments

Our tasks for this week are:

  • Group assignment: characterize the design rules for your PCB production process
  • Individual assignment: make an in-circuit programmer by milling and stuffing the PCB, test it, then optionally try other PCB processes

Group Assignment

As a lab we characterized the design rules/limitations of our lab’s PCB milling machines, the Roland SRM-20. This work can be found on our group page for the week.

Individual Assignment:

I created the current iteration of the Fab Academy programmer, the Quentorres board. I chose the version where the XIAO RP2040 can be removed using connectors (so i can use it for other future boards/projects).

Customization

I added my initials and a little acorn to my board to customize it.

File Preparation

We used mods to generate the 3 files needed to mill the board:

  1. Traces (milled with a 1/64" end mill)
  2. Holes (milled with a 1/32" end mill)
  3. Outline (milled with a 1/32" end mill)

Right click > programs > open program > Roland > SRM-20 mill > mill 2D PCB
Right click > programs > open program > Roland > SRM-20 mill > mill 2D PCB
mods interface for milling 2D PCB
mods interface for milling 2D PCB

Mods Settings:

File Type End mill (inch) Max Depth Speed (mm/s) Origin (mm) Jog Height (mm)
Traces 1/64 default 3 x = 0; y = 0; z = 0 5mm
Holes 1/32 1.75 1.5 x = 0; y = 0; z = 0 5mm
Outline 1/32 1.75 0.5 x = 0; y = 0; z = 0 5mm

I saved the resulting .RML files to the BCN fab cloud in order to be able to access them from the laptop connected to the CNC.

Milling

Applying tape to the back of the board stock to fix it to the CNC bed
Applying tape to the back of the board stock to fix it to the CNC bed

Once my board was fixed to the bed with double-sided tape, I inserted the 1/64" end mill into the collet and tightened it (gently) in place with the hex wrench.

Next I set my origin by adjusting the x/y to the lower righthand corner of the board. Setting the z-origin is trickier because if it’s not set correctly you risk either breaking the end mill (too deep) or incompletely milling your traces/smooshing but not removing copper (not deep enough). I slowly lowered the z until the tip of the end mill was close but not touching the board. Then with one fingertip holding the end mill in place, I loostened the collet so I could gently lower the end mill tip to the surface of the board. I held it in place on the surface of the board while I tightened the collet again (to prevent the tip from moving up during the tightening). z-origin set! and I quickly manually moved the endmill up so it was away from the board surface. It’s important to always start the cuts with the end mill in the air so the spindle can get up to full speed before coming into contact with the milling material.

One by one I opened and ran my milling files. The order is important: Traces –> Holes (if any) –> Outline.

Milling the traces
Milling the traces

After running the traces file I swapped out the 1/64" end mill for the 1/32" end mill which is used for milling the holes and outline of the board. N.B. Make sure you don’t change the x/y origin in the software when you switch out tools, or the files won’t line up.

Learning moment…When I switched out tools for the 1/32" bit, I forgot to re-set the z-origin. So I noticed the tool going deeper into the bed (more blue shavings). Woops! Not major and didn’t end up hurting anything, but I corrected it when I ran the Outline file.

Soldering

I collected all the components required for the board on a BOM, Build Of Materials, keeping them in place with double sided tape. The result was very satisfying.

BOM with milled PCB, ready for stuffing
BOM with milled PCB, ready for stuffing

I soldered by hand using a soldering iron and solder wire (rather than with solder paste and a hotplate, +/- a solder mask, which would have been another option)

Hero shot of the finished board
Hero shot of the finished board

Programming

  1. Download the arduino IDE

I would have expected this step to be trivial but I ended up running into trouble here! Whenever I tried to open the Arduino IDE it got hung up on the loading screen and never opened. After a few attempts of uninstalling and reinstalling in different ways, I installed an earlier version and that was able to open without a hitch.

Then I went ahead and followed the rest of the instructions in the Quentorres board README file to add the Raspberry Pi Pico/RP2040 boards library and connect my board to the Arduino IDE.

Adding the additional board manager by URL in the Preferences window
Adding the additional board manager by URL in the Preferences window

This gave me access to the Raspberry Pi Pico/RP2040 boards library
This gave me access to the Raspberry Pi Pico/RP2040 boards library
Selecting the Seeed XIAO RP2040 board
Selecting the Seeed XIAO RP2040 board

When I ran the default blink program example in the Arduino IDE, the native LED on the RP2040 board blinked successfully!

Next I wrote a little program which turned on the top right LED of the main board when I pushed the button down.

Reflections

I really liked exercising the attention to detail and fine motor skills required for stuffing PCBs! This was a fun week for me. I’m looking forward to delving more into actually designing and programming my own boards, and I think I’ll try to leverage tools like ChatGPT to do that.

Other wins: I finally got ImageMagick to work for me (it was a permissions issue all along…and worked as soon as I ran the Git Bash as an administrator…facepalm) so I’m looking forward to taking advantage of the batch image processing capabilities to expedite and simplify my image management workflow!! ChatGPT helped me write a command to compress and resize all my images (whether they’re starting as .jpg or .png or .HEIC (photo format from iPhone photos)) and place them into a subfolder. And also automatically append whatever week number it is to the image name to keep myself organized and maintain some sort of image naming convention.

Built with Hugo | Using a personally adjusted version of Nadieh Bremer's website and the theme Stack