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:
- Traces (milled with a 1/64" end mill)
- Holes (milled with a 1/32" end mill)
- Outline (milled with a 1/32" end mill)
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
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.
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.
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)
Programming
- 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.
Blink program
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.