Week08 | Electronic Production
Overview
This week, the focus was on in-house PCB fabrication and testing.
Group work focused on characterized the design rules for PCB fabricating using milling process and ordering a PCB board.
For the individual assignment, I fabricated and tested the board I designed in Week 06. It features a Seeed XIAO module, an LED for output, a push button for input, 0.5 mm traces, a ground plane, and connectors. I milled the board on the LPKF machine, soldered the components, and verified basic functionality.
Group Assignment
In the group assignment, we characterized the design rules for the LPKF milling process using FR-4 boards and ordering a PCB board to board house.
Individual Assignment
First things first, I needed to prepare the files for the LPKF PCB milling machine. Antti taught us the process during the group work, and I repeated it for my own board as practice.
I opened my KiCad project from Week 06 and loaded the .kicad_pcb file in the PCB Editor.
Gerber files can be generated in KiCad in several ways.
In the Plot window that opened, I selected F.Cu and Edge.Cuts under "Include Layers" and clicked Plot.
After plotting, I verified the output in KiCad's Gerber Viewer before moving on to fabrication with the LPKF machine.
I opened the Gerber Viewer in KiCad:
Then I selected File → Open Gerber file(s) and chose all the generated Gerber files:
Here is the rendered view of my board in the Gerber Viewer. After double checking it, I proceeded to fabrication.
I will not explain the detailed milling process here, as it is covered in the group assignment section.
I used the milling method to produce my PCB. I placed the FR4 board inside the machine and taped it down to prevent any movement. The machine also uses vacuum hold-down during milling.
I checked the X and Y axes to make sure the milling head was correctly positioned.
I located the starting position manually. The step size for movement in all three axes can be adjusted, as shown below:
Next, I selected the area needed for my board:
Then I calibrated the universal 0.2 mm milling bit:
Milling in progress:
I received an error saying the milling bit change had failed.
We replaced the bit and recalibrated the trace width:
Milling and edge cutting finished successfully:
Before soldering, I scratched and cleaned the PCB surface:
Now came the challenging part, soldering without a solder mask layer 😁
The most difficult component was the microcontroller's pins aligning. Thanks to Antti, this step became much easier: he made an alignment stand that held the Seeed XIAO perfectly in place for soldering the pins.
Then I soldered the resistors, LED, and the inner microcontroller pins on the bottom side:
Finally, I soldered the input connector pins:
It took me about 3.5 hours to finish soldering.
PCB Testing
To verify that the board worked, I used the Arduino IDE and uploaded a simple LED blink test with a 200 ms delay: Turns an LED on for 200 ms, then off for 200 ms, repeatedly. Most Arduinos have an on-board LED we can control. This example code is in the public domain.
Original by Colby Newman, I changed the blinking delay.
```*/ void setup() { // initialize digital pin LED_BUILTIN as an output pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on delay(200); // wait 200 ms digitalWrite(LED_BUILTIN, LOW); // turn the LED off delay(200); // wait 200 ms }
Video of the blinking LED:
<video controls style="width:480px; height:480px;">
<source src="../../files/week08/pcb-testing.mp4" type="video/mp4">
</video>
I tested the RGB LED as well. The below code for testing it is in the Arduino example:
```#include <Adafruit_NeoPixel.h>
int Power = 11;
int PIN = 12;
#define NUMPIXELS 1
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin();
pinMode(Power,OUTPUT);
digitalWrite(Power, HIGH);
}
void loop() {
pixels.clear();
pixels.setPixelColor(0, pixels.Color(15, 25, 205));
delay(400);
pixels.show();
pixels.clear();
pixels.setPixelColor(0, pixels.Color(103, 25, 205));
delay(400);
pixels.show();
pixels.clear();
pixels.setPixelColor(0, pixels.Color(233, 242, 205));
delay(400);
pixels.show();
pixels.clear();
pixels.setPixelColor(0, pixels.Color(233, 23, 23));
delay(400);
pixels.show();
pixels.clear();
pixels.setPixelColor(0, pixels.Color(12, 66, 101));
delay(400);
pixels.show();
delay(500);
}
Reflection
- I learned what a Gerber file is and how to generate it.
- I learned which layers are needed for PCB fabrication.
- I learned, to some extent (almost 70%), how to work with two LPKF machines in the Oulu Super FabLab. I need to see the process with the instructors a few more times to learn it completely, as the machines are very expensive and sensitive.
- I learned what a milling bit is and the differences between different bits.
- After the milling process, I learned how to cut the PCB, clean it, and prepare it for soldering.
- I did more soldering and learned how to desolder and reflow, as well as what cold solder and solder bridges are.
- Most importantly, I learned how to solder without solder mask.
- I learned how to check soldering connections for a microcontroller, LED, and button.
- I learned how to test the board after fabrication.




























