Skip to content

Producing PCB: Quentorres DevBoard

quentorres-hero-shot

PCB (Printed Circuit Board) is a flat board used to mount and connect electronic components together to form a working circuit. On this page, I’ll walk you through my journey of producing my version of the Quentorres PCB, which unexpectedly took me an insanely long timeโ€”around 4-5 weeksโ€”to complete.

Quentorres

For this exercise, we’re going to use a microcontroller development board, the Quentorres, that’s designed and made during the FA 2024 instructor bootcamp. You can find more informations about the Quentorres here.

Components

Here are the required components to fabricate the Quentorres board:

Components Amount
SEEED STUDIO XIAO RP2040 1
CONN HEADER SMD 10POS 1.27MM 1
CONN HEADER SMD R/A 6POS 2.54MM 1
Tactile Switch SPST-NO Top Actuated Surface Mount 1
LED BLUE CLEAR 1206 SMD 3
RES 1K OHM 1% 1/4W 1206 4
RES 499 OHM 1% 1/4W 1206 1
CONN HEADER 7POS 0.1 TIN SMD* 2

๐Ÿค” In our lab we don’t have the 7 pin Conn Header and the Tactile Switch specified there. Therefore, I’m going to improvise by using the 8 pin Header that I have to bend and then cut

PCB Fabrication

In general, these are the key steps we have to do to produce our own PCB:

  1. Prepare design files
  2. Generate toolpath & g-code file for milling
  3. PCB milling
  4. PCB assembly: stuffing, soldering
  5. Programming and debugging

1. Preparing Design Files

For the Quentorres board, my colleague, Eka, has this idea to modify the board design for future adjustments. With his permission ofcourse, we then build on top of Eka’s modification and I personally add some personalization by adding my initials.

4.2.11

4.2.13 4.2.14

Double Check DPI and Size

๐Ÿ‘‰ When editing / customizing your vector design file, don’t forget to set the DPI and double check if the indicated size of the board (in mm) is what you expect it to be!

๐Ÿ‘‰ Make sure that all the tracing lines, drill holes, and outline cut align and fit to one another perfectly!

2. Generating Toolpath & G-Code File using MODS

Basically, the step to generate is the same as mentioned here in our group assignment page. So, I will not delve into details, but here’s the overview steps of it.

  • Go to mods.project.org > Programs > Open Program > G-Code > mill 2D PCB

  • Input vector design file into Mods

4.2.15

๐Ÿ‘‰ When uploading your vector design file, don’t forget to double check the DPI and if the indicated size of the board (in mm) is what you expect it to be!

  • Adjust the milling tool settings in the ‘Set PCB Defaults’ node. We’re using V-bit, and based on our characterization process, here is the setting that works for us. Dont forget to click the milling tool name label once we’re done adjusting

4.2.16

For outline cutting / drilling, here’s the setting that we use:

4.2.21 4.2.22

  • Adjust the machine controlling parameters in the ‘Path to G-Code’ node. Input this settings for the cut, plunge, and spindle speed.

4.2.17

  • Calculate toolpath in the ‘Mill raster 2D’ node

4.2.18

  • Examine and preview the generated toolpath.

    We can do this alternatively by going to the View Toolpath node and click โ€˜Viewโ€™.

    4.2.20

    The blue color represent the cutting movement, the red color represent the non-cutting movement. Ideally, we want all blue lines to be connected and no red color in the supposedly cutting lines.

๐Ÿ–๏ธ Examining the toolpath is very important to help us identify potential errors or issues in the machining process before actual fabrication begins. It helps us verify that all traces, holes, and other features are correctly translated into toolpaths and will be milled according to specifications.

  • Once the calculation is done, it will automatically save the G-Code file in .nc format. And we can go ahead to the next step!

4.2.19

3. PCB Milling

In Fab Lab Bali, we’re using the Sainsmart Genmitsu 3018-PRO DIY for our PCB milling. To do that, just follow the step by step procedure mentioned in our group assignment page. Here’s some overall recap of how it went with my quentorres board.

Material and Machine Setup

  • Load material stock with PCB holder jig

    In the case of the Genmitsu 3018 machine, and due to the difficulty of finding a flattening bit in Bali, we have to adapt the way we load our FR-1 board. Here, we use a 3D-printed PCB holder, customized to fit the machine.

    pcb holder jig load material

    Using the PCB holder making it much easier for us to load and unload our board materials. The downside is that this approach reduces the available working area needed for clamping. Besides, without support underneath the stock material, it may flex when the spindle plunges, potentially preventing a full cut-through.

  • Set milling bit into spindle

    Next, insert the milling bit into the spindle and tighten it securely. Make sure it is tight enough to prevent any instability during the milling process and ensure your milling result is precise.

  • Set the router position to intended origin (X0Y0) position

    In this 3018 machine, you need to manually move the router position before turning on the machine. Make sure to position it at the far left side, as shown in the picture below.

    4.2.23

    This step is crucial because when you turn on the machine, it registers the current router position as the machine’s origin coordinate. To ensure consistent starting points, always move the router fully to the left, leaving no gaps, before powering on the machine.

Heightmapping with Candle

To control our machining job, we’re using Candle, a GRLB-based cnc-machine control software that will read our G-Code file and translate that to instructions for our machine.

Due to the method we use to load our stock material with the PCB holder jig, there’s a chance that our PCB won’t be perfectly even. Because the copper layer of the PCB is really thin, it makes this particularly critical as it can signifcantly impact the milling results, potentially leaving some parts uncut or cutting too deep. Fortunately, Candle includes a heightmap feature to help mitigate these issues.

To do that, this is what we need to do:

  • Import the .nc file to Candle

    importncfile

  • Move the jog to intended homing position and set as the X0Y0 as the working coordinate and do a Z-probe.

    setx0y0zprobe

  • Next, run the heightmapping. For detailed instructions on how to do heightmap in candle, please refer to this guide.

    heightmap

  • Once the heightmapping is done, you can save the heightmap data and apply it to your milling job.

Milling Process

Once everything is set, you can click “Run” to start the job. Before doing so, you can review the estimated time it will take to mill your board. For my Quentorres, it took around 20 minutes to mill the trace lines and about 40 minutes to complete the entire milling job.

4.2.25

Observe your milling job from time to time. You can monitor the router’s movement through the Candle software. Faded lines indicate areas that have already been milled, while bold lines indicate areas yet to be milled. If something seems wrong, pause or abort the job immediately.

4.2.28

Milling Post-Processing

The result of the board looks excellent! The image below shows it fresh from the oven. All lines are connected, and the resulting debris is minimal and clean!

4.2.29

Cleaning

Because I added tabs on the sides to hold the board with our PCB holder jig, I had to cut the remaining copper board. After that, I cleaned the excess copper using paper, and finally I used 800-grit sandpaper with water.

Testing Continuity

The next step is to check the continuity of your board. This ensures that there are no unwanted copper connections and that the milling bit cut through the entire copper layer. Use a multimeter by placing its pins on two different areas that you want to test to see if there is any current flow.

4.2.30

PCB Milling Result

4.2.31

PCB Assembly

Soldering

I’m a total beginner in electronics and this will be my first time ever doing soldering. So here, I’ll show you the basic workflow of soldering process by demonstrating how I solder the Xiao RP2040 with the pin headers.

Soldering Station Setup

  • Prepare all your soldering tools and workstation. This is pretty much what you need to have in your soldering workstation.

    4.2.1 setup

    In this picture, we’re missing the isopropyl alcohol that will be used to clean the flux once the soldering is done.

  • Prepare your components and put it together in one place. In this case, I’m going to solder my Xiao RP2040

    4.2.2 4.2.3

    Put together the Xiao and the pin headers to the breadboard. We do this in order to maintain the perpendicularity of the pin headers to the Xiao and making it easier for us to solder later

    4.2.4

Soldering Workflow (Case: XIAO RP2040)

Now that we have all the components ready, follow these soldering workflow steps.

  • Heat up your soldering iron. The ideal temperature is between 300-350 Celcius.

  • Apply flux to the area that you want to solder and you can also dip you soldering iron in the flux as well. You can use as much flux as you want, because flux is your friend! Here, we’re using toothpick to apply the flux.

    4.2.5

  • Start soldering! The order to do it is to first stick the soldering iron in your right hand to the copper surface. Then, put the solder wire right in and take it out as soon as it melts. If all is right, this step should take less than a second.

    4.2.7

    โ— In the above picture, you can see my soldering iron tip is touching the MCU๐Ÿ˜ฑ This is not a good idea! Avoid touching the components with ~300 celcius heat! It might destroy the MCU!

    4.2.7-(1)

  • Examine your soldering result. Ideally, we want to make a skateboard ramp-shape in between two perpendicular surface. The ideal result is to have a shiny fish, not too blob-y, and in this case, looks like Mount Fuji!

    ๐Ÿ–๏ธ If you find yourself put too much solder, you can retract some of the excess solder by using the soldering wick. Don’t forget to always apply flux!!

    ๐Ÿ–๏ธ You can also distribute some of the excess solder to other surface area by melting the solder again so that it sticks to the iron and transfer to other pads.

  • Post-Processing

    Cleaning up Flux

    If your soldering looks well clean up the excess flux by swiping Isopropyl Alcohol with tissue or cotton bud. Cleaning up the excess flux is important since the flux can also interfere with the electrical continuity

    Testing Continuity with Multimeter

    To ensure your soldering work has successfully made a good solder joint and form an electrical connection, test for continuity using a multimeter.

    4.2.10

Soldering Xiao RP2040 Result

4.2.8

Further Exercise: Soldering Board Pads

Utilizing our unused testing quentorres board and one lent by Elaine, I continued practicing my soldering skills before working on my own board.

4.2.10-practice

๐Ÿ–๏ธ One trick I found for soldering SMD pads is to melt the solder on the soldering iron before then placing it on the pad. After that, you can remelt the soldered pad and transfer the excess to other pads.

Stuffing Quentorres Board

Now it’s time to place all the components on the PCB. First, prepare all the components. Since they are very small, it’s helpful to stick them to a piece of masking tape to prevent losing them easily.

Alt text

Next, following the same soldering workflows I explained before, we can proceed with placing the components and soldering them.

๐Ÿ–๏ธ Stuffing Tips

  • Start from the smallest components first, such as resistors, leds and buttons.
  • And when it’s time to stuff the larger components, start from the innermost components first.

    This approach prevents larger components from obstructing your access to smaller ones, making soldering easier and more precise. If you start with the larger components or place the outermost big components before the inner ones, they can block your way and your soldering iron might accidentally touch them, complicating the process.

  • Before placing any components, tin one pad of each component first. Then, place the component on top of it and remelt the tinned pad. Continue by soldering the rest of the pads for that component.

    This process helps to hold the component in place while we solder the remaining pads.

1st Board Attempt: Failed

  • Error 1: Solder the wrong resistor ๐Ÿซ 

    4.2.31-result-1 4.2.31-result-1-angled

    I accidentally soldered a 1k ohm resistor instead of the 500 ohm one that should be connected to the LED. It was a silly mistake, but it taught me the importance of always double-checking with the schematic and PCB layout before soldering!

  • Error 2: Ended up peeling off the copper layer

    4.2.32-failed (1) 4.2.32-failed(2)

    In an attempt to save my board, I tried to desolder the resistor. I did this manually by melting the solder on each pad one by one while simultaneously pulling the resistor up bit by bit. I realize now that I wasn’t too methodical or patient enough during this process, as I ended up accidentally peeling off the copper layer from one of the pads.

2nd Board Attempt: Failed

Milled a 2nd board. And okay, this time I was almost there… but unfortunately I still couldnt save myself from some soldering errors..

2ndboardfailure

  • Error 1: Peeled off a copper track >> Rectified by soldering a jumper

    This happened because I was attempting to realign the component. Unfortunately, I probed the soldered pad too frequently and forcefully, causing another copper track to peel off. However, since it was a track, my colleague, Eka, suggested salvaging it by soldering a jumper from a pin header. Surprisingly, it worked!

  • Error 2: Misaligned Placement of LED

    I only realized this error after testing the board with a multimeter and finding an electrical connection between the track and the outer area. It turns out I didn’t place the LED exactly in the center, causing its underside to make contact with the outer plane.

    2ndboardfailzoom

  • Error 3: Misaligned Placement of LED + burned copper pad

    The same error occurred as before. This time, I still had hope that I could rectify it. However, when I attempted to desolder, I realized I had set the iron temperature too high, resulting in burning the copper pad.

3rd Board Attempt: Success!

Not the best looks๐Ÿคฃ๐Ÿ˜… It looks terrible (i know).. but surprisingly, it works!๐Ÿ˜ญ

hero

So, here’s what happened..

I milled my third board. I must admit, this time my milling job didn’t produce lines as clean and beautiful as my previous two boards because the V-bit I was using had dulled slightly. Nonetheless, the traces work fine, so I continued the job anyway. However, when I switched to the 1/32 drill for the outline cut, I forgot to detach the alligator clip after z-probing, and ended up breaking the 1/32 endmill - the last one that we had in the lab.๐Ÿซ  Therefore, I couldn’t continue my milling job until we bought a new endmill.

However, looking at the trace line I was planning to mill a new board anyway, so I thought maybe I will just solder this board as a practice.. I will mill a new one anyway. So, I proceeded on stuffing the components on the board.

Alt text

Little did I know, my assembly this time was successful!๐Ÿ˜ฎ๐Ÿ˜… I managed to finish and complete the entire assembly and tested it. However, I was experimenting with a new flux we bought. While it helped me solder much faster, this flux type also oxidized the board quickly and harshly.

Alt text Alt text

In the end, for the initial spiral development, I decided to proceed with this one, despite the need to manually cut the outline.

Recap: PCB Assembly Troubles & Learnings

It was a long road to get my board finally working. Here are some of my notable learning notes:

๐Ÿ—’๏ธ The surface area of the soldering iron tip affects its heat transfer capability

As you see, here, we have two types of soldering irons. The one on the left belongs to Eka, it has bigger tip, so it will heat up the copper surface faster. The right one belongs to the lab, the tip is really small and pointy, so it would take some time for the tip to transfer all the heat to the copper surface.

4.2.6

In this case, I tried both soldering irons, in order to know what’s the difference. Starting with the pointy tip. But found myself struggling a lot with it. Because the tip is really pointy, it basically could not transfer that much heat easily to the solder and the surface. So, I had to wait for quite some time only for it to melt the solder.

Halfway towards the end, I changed to Eka’s solder with bigger tip, and it makes the process sooooo much easier and faster, because the tip’s surface is larger, thus transferring the heat much faster to melt the solder.

๐Ÿ–๏ธ Refresh or deoxidize your soldering tip!

Later on, I learned that the tips were heavily oxidized (indicated by their dull surface), making them unsuitable for good solder joints. Both need to be cleaned (deoxidized). Here are several ways I’ve learned to deoxidize solder tips:

  • Melting some solder on the tip and cleaning it with a sponge or brass wool
  • Using a soldering tip refresher
  • To prevent your solder tip from oxidizing further, always cover the tip with some solder when you’re done soldering. Don’t leave it uncovered.

๐Ÿ–๏ธ Flux is your friend, but the type you use can significantly affect the quality of your soldering work!

We’ve tested several types of flux. One works adequately, while another works exceptionally well but oxidizes our board harshly. There’s also one that is too sticky, making soldering difficult, and another that is too fluid, causing solder to overflow easily. My suggestion is to always test them first on a practice board before using them on your actual project board.

๐Ÿ–๏ธ Rectify Soldering Error Strategy

Well, this is something I haven’t fully mastered yet, but I’ve tried various methods to desolder in an attempt to salvage my board. Here are a few techniques you can try:

  • Use soldering wick to absorb excess solder.
  • Repair or connect back peeled copper tracks by soldering jumpers.
  • Use a hot air gun to melt solder, but be cautious of any plastic components as they can melt easily, such as LEDs.
  • Use a vacuum desoldering pump for precise removal.

Testing

Now, lets test the board to see if it’s really working. But first of all, we need to configure our Arduino IDE to recognize the XIAO board by following the instructions provided in the Seeed Studio XIAO RP2040 guide. Once our Arduino IDE can recognize the XIAO, we can use the LED blinking example code below and upload it to the board.

#define ledPin 26  // define the number of the LED pin

void setup() {
  pinMode(ledPin, OUTPUT); // set the LED pin as an output
}

void loop() {
  // Blink LED
  digitalWrite(ledPin, HIGH); // turn LED on
  delay(500); // for this long (duration)
  digitalWrite(ledPin, LOW); // for this long (duration)
  delay(500); // for this long (duration)
}

We can edit the pin number (to test out different LED) or adjust the speed (delay). We will explore further about the programming in the upcoming Week 6: Embedded Programming assignment.