08

Electronics Production

Week 8 Β· πŸ”§ PCB milling & soldering

πŸ“‹ Assignment Overview

⚑ Week 8 documents Electronics Production: fabricating a PCB, soldering, and testing. Below is the workflow from design export through production.

πŸ“‹ Assignment Process

πŸ–₯️ Software used

Pre-export: Autodesk Fusion 360

Machining (Windows lab PC): Roland MDX-40 Panel, ModelA Player 4

Download: https://www.autodesk.com/products/fusion-360/overview

Steps below: Pre-export (Fusion) Β· Machining (Panel + CAM).

πŸ“€ Step 1: Copper layer only β€” export STEP

After finishing the 3D PCB output, remove the other unnecessary bodies and keep only the copper layer, then export in STEP format.

Fusion 360 β€” 3D PCB export, copper layer retained for STEP
After 3D PCB output: strip extra geometry, keep copper layer, export STEP
Fusion 360 β€” copper layer and STEP export
Copper layer only, ready for STEP export

πŸ“ Step 2: Create a face at the top level

At the top level of the design, create a new face (construction surface or sketch plane) as shown.

Fusion 360 β€” create face at top level
Create a face at the top level

✏️ Step 3: Sketch on the face β€” level the surface

Create a sketch on that face, then run a facing operation to remove one layer so the top stays flat with no steps or ridges.

Fusion 360 β€” sketch on face and facing to level the surface
Sketch on the face, then face the stock to a flat top

πŸ“¦ Step 4: Export STL

After facing, export STL from Fusion and set mesh resolution / units as needed.

Fusion 360 β€” STL export
STL export from Fusion

πŸ”Œ Step 1: Power on, View, and align the tool

After switching the machine on, click View, then open Roland MDX-40 Panel. Use the software to jog the drill to the top-left corner of the prepared copper board.

Roland MDX-40 β€” View and machine ready
Machine on: use View and Roland MDX-40 Panel to prepare for alignment
Roland MDX-40 Panel β€” drill aligned to board top-left
MDX-40 Panel: position the drill over the top-left corner of the copper board

⬇️ Step 2: Spindle on and touch off Z

In the same panel, start spindle rotation, then adjust Z until the bit lightly touches the copperβ€”just a kiss, not deepβ€”to avoid snapping the tool.

Roland MDX-40 Panel β€” spindle and Z touch-off
Enable rotation; lower Z until light contact with the board (avoid excessive depth)

πŸ—‚οΈ Step 3: Machining sequence

From this step on, switch to ModelA Player 4 for CAM and the screenshots below (after setup in Roland MDX-40 Panel in Steps 1–2). Click any thumbnail to view full size. Use the on-screen arrows or keyboard ← / β†’ to move between images. Press Esc to close.

▢️ Step 4: Preview toolpath and start cutting

Click Preview in the bottom-right corner to check that the toolpath looks correct. If everything is OK, click Cut (or the equivalent start command) to run the job.

CAM preview and cut β€” bottom-right controls
Preview the path, then confirm and cut

🎬 Step 5: Cutting process

Recording of the machine running the cut, and the milled board after the job is finished.

Cutting process
PCB after milling β€” finished appearance
Finished board after machining

πŸ“Œ Supplement: first PCB prototype failure

The failure of the initial PCB prototype was attributed to improperly configured Design Rules (DRC) rather than errors in the schematic logic. Due to these configuration errors, the solder pads were inadvertently omitted during the milling or routing process. This resulted in intermittent connectivity and poor solder joint integrity. Consequently, during the output characterization of the servos and LEDs, an overcurrent condition occurred, leading to the permanent failure (thermal damage) of the XIAO ESP32-C3 microcontroller.

Separately, when attempting to upload firmware to the XIAO ESP32-C3, the sketch compiled successfully (flash and RAM usage were within limits), but esptool could not establish a serial connectionβ€”the board never responded on the selected port. The Arduino IDE reported the following:

Sketch uses 353256 bytes (10%) of program storage space. Maximum is 3342336 bytes.
Global variables use 25484 bytes (7%) of dynamic memory, leaving 302196 bytes for local variables. Maximum is 327680 bytes.
esptool v5.1.0
Serial port /dev/cu.debug-console:
Connecting......................................
A fatal error occurred: Failed to connect to ESP32-C3: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html

Failed uploading: uploading error: exit status 2
Arduino IDE: sketch compiled; esptool failed to connect to ESP32-C3
Compile succeeded; upload failed with no serial data from the ESP32-C3 (same session as the log above).

This indicates a bootloader/serial link problem at upload time (wrong port, cable, boot mode, or a damaged module), not insufficient program memory.

πŸ”§ Update: new PCB β€” revised design rules

I am developing a new PCB revision. The screenshots below show my updated Design Rules (DRC) after the changes; the board is pending fabrication.

KiCad design rules screenshot β€” revised DRC settings (1)
Design rules (1)
KiCad design rules screenshot β€” revised DRC settings (2)
Design rules (2)