Week 08 — Electronics production¶
Global Class¶
The global lecture focuses on fabricating and assembling a PCB, which becomes the foundation for all subsequent electronics work including input devices, output devices, and networking.
A key message is that future assignments depend on having a working board, not just a designed one.
PCB Fabrication Methods¶
Several fabrication approaches were presented:
- dead-bug wiring (manual wiring, not recommended)
- chemical etching (common but hazardous)
- CNC machining (Fab Lab standard workflow)
- laser-based methods
- vinyl cutting
Etching allows fine resolution but introduces environmental and safety concerns.
Machining is preferred in Fab Labs because it is:
- fast
- clean
- suitable for prototyping

The lecture highlighted that PCB production is a deterministic process:
- correct setup → consistent results
- errors → usually due to tool, material, or configuration
Assembly and Debugging¶
Soldering is not a secondary step but a core skill.
Important techniques:
- clean solder joints
- desoldering braid
- hot air rework
- fixing errors with jumper wires
Debugging is expected and part of the normal workflow.
Key Insight¶
PCB production can be summarized as:
design → fabrication → assembly → debugging → validation
A board is only complete when it runs code and behaves as intended.
Local Class¶
Remote Participation¶
Due to absence from the physical session, this week was documented through:
- review of classmates’ documentation
- observation of shared lab workflows
- comparison across Fab Academy repositories
Observed PCB Workflow¶
A consistent production process was identified:
- export design from KiCad
- generate toolpaths in Mods
- mill traces and outline
- clean, solder, and assemble
- test and debug
Key Observations¶
- correct milling depth is critical for trace isolation
- flat board setup strongly affects results
- soldering quality directly impacts functionality
- debugging is a normal and essential step
Common issues:
- broken or uncut traces
- solder bridges
- unstable programming connections
Key Insight¶
A PCB is only complete when it is:
- powered correctly
- programmable
- functionally verified
Weekly Assignment¶
Group Assignment¶
Here is the work we did for the group assignment:
Reflection and Learnings¶
- Understanding how stepper motors are controlled through multi-pin sequencing instead of simple STEP/DIR signals.
- Using a logic analyzer made it possible to visualize invisible signals and directly relate code → electrical signals → motion.
- Verified the importance of common ground and clean power for reliable measurements.
- LED feedback + signal capture is an effective layered debugging strategy.
- Reinforced the value of testing subsystems before integration
ASFALT relevance: This clarifies how to control actuators (future positioning, airflow, or mechanical movement) and how to debug signal behavior early before full system integration.
Personal Assignment — PCB Production Process¶
Goal¶
Produce a PCB using CNC milling by preparing files, generating toolpaths, and fabricating the board using a Roland SRM-20.
PCB Production Workflow¶
The workflow consists of:
- exporting traces and outline from KiCad
- generating toolpaths using Mods
- loading files to the Roland machine
- milling traces
- milling the board outline
- milling the holes
- cleaning and inspecting the PCB
1. Exporting PCB from KiCad¶
The PCB design was exported from KiCad as vector graphics.

From this design, separate layers were prepared:
- traces
- holes
- outline
2. Preparing Files for Milling¶
2.1 Converting to Raster Format¶
The exported design was converted into PNG images to be processed in Mods.
I incorrectly saved the file as A4 and caused a lot of headaches because webpage kept crashing.

2.2 Inverting Colors¶
For proper toolpath generation:
- white = copper to keep
- black = material to remove
Traces¶

Holes¶

Outline¶

3. Generating Toolpaths in Mods¶
The prepared PNG files were imported into Mods.

Key Settings¶

- tool diameter: 0.396 mm
- cut depth: 0.1016 mm
- max depth: 0.1016 mm
- offset number: 4
- offset stepover: 0.5
Toolpath Preview¶
Before milling, the toolpath was simulated:

4. Machine Setup (Roland SRM-20)¶
5. Milling Process¶
5.1 Bed Preparation¶
The sacrificial layer was cleaned to ensure a flat surface.

5.2 Fixing the PCB Material¶
The FR1 board was fixed using double-sided tape.


The generated toolpaths were loaded into the Roland machine using VPanel.

Steps:
- set XY origin
- manually lower tool to surface for Z origin
- verify spindle speed and movement
- load milling file
5.3 Z-Probing¶
The tool was carefully lowered to define the Z zero reference.

5.4 Milling Traces¶
The traces were milled using a 1/64” tool.

Everything was looking fine so far:

5.6 Cutting the Outline and milling holes¶
The board outline was milled using a larger tool.
Suddenly noticed that the outline and holes were not my design!

Apparently, the person who used the mill before me paused their work and didn’t cancel it. Even though I deleted previous files from queu, this little detail caused the machine to mill the pending file.

Anyways, had to start over with this in mind…
5.5 Re-milling¶
Now updloaded files for holes and outlines and came out correctl:

6. Cleaning and Inspection¶
After milling, the board was cleaned and inspected.

Looking good (according to me…)

7. Detail Inspection¶
Close inspection of traces revealed issues in fine-pitch areas. Reviewing with Dani and Adai, for no apparent reason, the machine didn’t mill the pins properly.

I have to go back and figure out what went wrong and redo the milling to get clean traces.
Learnings¶
Reading back on the notes from GLobal Class, the lecture highlighted that PCB production is a deterministic process:
- correct setup → consistent results
- errors → usually due to tool, material, or configuration
This was definetly the case.
References and AI Use¶
- Mods Project (MIT Center for Bits and Atoms)
- Roland SRM-20 documentation
- ChatGPT used for structuring workflow and documentation formatting
Prompts¶
Files¶
- KiCad design files
- toolpath settings
- source code