Week 8 - Electronics Production

Published on: March 17, 2025
This week was all about taking a design from the digital realm into the physical world. After spending time in previous weeks learning how to design PCBs in KiCad, I finally had the chance to fabricate my own microcontroller development board! The goal of this assignment was to not only manufacture the board but also to assemble, test, and program it โ essentially going through the entire electronics production process from start to finish.
Throughout this process, I gained hands-on experience in toolpath generation, setting up and operating the milling machine, soldering components onto the board, and testing its functionality. While working on the individual assignment, I had to refine my design due to incorrect footprints and an excessive number of vias. After making these adjustments, I generated the final Gerber files to prepare for fabrication.
This assignment was a crucial step in understanding the real-world constraints of PCB production, such as trace width limitations, drill hole sizes, and optimal soldering techniques. Through debugging and troubleshooting, I also learned how to identify and fix issues that can arise in the manufacturing process. In this documentation, I will walk through my workflow, from design corrections to milling, assembly, and testing.
As always you will find our group assignment on our group documentation page.
Creating the Toolpath
To begin, I had to revise my board design as I had initially used the wrong footprints for the pin headers. Additionally, I was advised to reduce the number of vias to optimize the manufacturability of my PCB. After making the necessary adjustments to the final design, I proceeded to export the files in Gerber format, which is the industry standard for PCB manufacturing. These Gerber files contain all the necessary layers and information required for milling, ensuring that the production process runs smoothly.

For soldering, it is important to set the Pad Clearance to at least 0.5mm to ensure proper spacing between pads and surrounding copper areas. This helps prevent short circuits and makes soldering easier, especially for manual soldering.
However, the ideal clearance depends on several factors. If the PCB is being milled in-house, a larger clearance (e.g., 0.6mm or more) may be necessary depending on the precision of the machine. Hand soldering generally requires more space compared to SMD reflow soldering.

Next, I proceeded with exporting the PCB design as Gerber files, which are the standard format used for PCB manufacturing. To do this, I navigated to File โ Export, where I selected the necessary layers and settings for generating the required files.

The images below show the Gerber export settings I used. Here, I selected essential layers, including F.Cu (Front Copper), B.Cu (Back Copper), F.Mask (Front Solder Mask), and Edge.Cuts to define the board's outline. Additionally, I enabled "Check zone fills before plotting" to ensure that all filled copper areas were correctly processed. After confirming these settings, I clicked "Plot" to generate the Gerber files and "Generate Drill Files" to include the necessary drill hole information.



Gerber files contain all the shape and location data for each element in a PCB layout, making them essential for fabricating the board. All design and Gerber files for my development board are available for download in the Download section at the bottom of this page.
Milling the PCB

Before proceeding with the actual milling of the PCB, we first had to properly set up the 0.2mm universal milling bit. To ensure accuracy, we milled a straight line and then measured its width using a specialized measuring tool. Any deviations from the intended milling width were adjusted until the actual cut matched the configured value.
To further enhance precision, we also performed a spindle maintenance check before starting the calibration process. This step ensured optimal performance and minimized potential errors during the PCB milling process.
Spindle Maintenance

In this step, I opened LPKF CircuitPro PM 2.5, the software used for preparing PCB milling jobs. I selected a template for a single-sided PCB since my design only requires traces on one side. This ensures that the milling machine uses the correct settings for processing my board.

This screenshot shows the import process for Gerber and drill files in CircuitPro. I loaded the necessary files, including the copper layers, board outline, and drill files, ensuring that all required data for PCB milling was available. The drill files, in Excellon format, were particularly important as they define the hole placements.

In this step, I imported the Gerber and drill files into CircuitPro, where the software processed the PCB design and displayed all the layers. The red background represents the copper layer, while the green traces and pads indicate the conductive paths and connection points for components.

Next, I assigned fiducial markers to the correct layer in CircuitPro. Fiducials are reference points used by the milling machine or pick-and-place assembly systems to accurately align the PCB during fabrication. These markers ensure that the board is correctly positioned, improving precision when milling traces or placing components.

After that, I configured the Technology Dialog settings for PCB isolation milling. The material type was set to FR4, with a copper layer thickness of 20 ยตm. I selected the Complete rubout isolation method, ensuring the most precise removal of copper from non-conductive areas.
For the cutting tool, I chose the Universal Cutter 0.2 mm, which provides fine isolation between traces while maintaining accuracy. The isolation width was set to 0.2 mm, and pad isolation to 0.05 mm, preventing shorts and ensuring clear electrical separation. Additional options such as force isolation, removing spikes, and performing inner isolation were enabled to optimize the milling process. Finally, I confirmed the settings and proceeded.

I configured the Contour Routing settings to define how the PCB would be cut from the raw material. The contour routing method was set to Horizontal gaps, meaning that small sections along the board outline would remain uncut to keep the PCB attached to the material during milling. This ensures that the board does not shift.

In this step, the Computation Results window provided an overview of the required tools for the PCB milling process. The software calculated the necessary toolpaths and listed the different milling and drilling tools needed for isolation, drilling, and contour routing.
The Universal Cutter 0.2 mm was selected for fine trace isolation, ensuring precise separation between conductive paths. The drilling tools included:
- A 2 mm Spiral Drill for larger holes, requiring 2 strokes.
- A 0.8 mm Spiral Drill for standard vias, requiring 14 strokes.
- A 1 mm Spiral Drill for additional drill points, requiring 13 strokes.
For contour routing, a 2 mm Contour Router was assigned to cut out the PCB from the base material. The total machining time and tool usage were also displayed, ensuring all necessary tools were available before starting the milling process.

Here, the milling machine interface displays the positioning and tool settings before starting the actual milling process. The X/Y positioning ensures the correct alignment of the PCB material on the milling bed, while the Z positioning is set precisely to control the depth of the cut.

The Placement option is used to position the PCB layout correctly on the milling bed, ensuring that the board is aligned within the machine's workspace.

At the end the FlipMaterial processing phase is initiated. This step is necessary for double-sided PCB milling.

After setting up the milling parameters in the software, I placed the copper-clad board onto the machine's work surface and secured it using masking tape to prevent any movement during milling. The machine then began the milling process, cutting out the circuit traces and drilling necessary holes according to the design.


As the milling process began, I watched the machine with excitement, following every movement of the cutter as it precisely carved out the circuit traces and drilled the necessary holes. I was very happy with the result.

Soldering
Before starting the soldering process, I thoroughly cleaned the PCB using isopropyl alcohol to remove any dust, grease, or oxidation residues. This step is crucial to ensure proper adhesion of the solder and to prevent any potential connection issues.

For the soldering process, I used the Yihua 8786D soldering station, which provides both soldering iron and hot air functionality. This station is very useful for working with small pads and SMD components. Precision was crucial during the soldering process, as hand-soldering 0603 components can be quite challenging. Due to their small size, careful handling and steady hands were required.

For this soldering session, I had my usual set of favorite tools at hand, although I chose not to use the helping hand or flux paste this time.
Unfortunately, I forgot to take photos of the individual steps during the soldering process.
Programming and Testing the Development Board
After soldering all the components onto the board, I immediately connected it via USB. I was thrilled to see it light up right away, confirming that at least the power connection was working properly. The next step was to thoroughly test the board to ensure that all connections were functional and that the microcontroller was responding as expected.

While programming the board, I encountered two minor issues that still took some time to resolve.

This error message indicates that the ESP32-S3 was unable to find a valid boot image in the flash memory. The repeated "invalid header: 0xffffffff" messages suggest that the flash memory might be empty or corrupted.
The issue was resolved by manually erasing the flash memory and then uploading a new program. This required using the BOOT button and resetting the board to put it into boot mode before flashing the firmware successfully.

In addition, selecting the correct board settings was crucial for successful programming.

To document my setup, I took a screenshot of the configuration that worked for programming the board. I was relieved when the Blink Sketch finally ran and I could see signs of life from the ESP32 in the serial monitor. The test code is available in the Download Section for reference.
