Skip to content

4. Electronics Production

Group Project

For the group project, we had to both “characterize the design rules for (our) in-house PCB production process” and “send a PCB out to a board house”. However, we were told by Mr. Dubick that we didn’t have to actually send the PCB to the board house, but instead make a workflow showing how we would. I was paired with Richard Shan, and we both worked on the characterizing the design rules through using a line test (though he did the majority of that), and I contributed mainly by writing the workflow for sending out a PCB board to a board house. The documentation can be found here.

Milling PCB Boards

I paired Connor Cruz at one of the milling machines in the lab. We were given a file to mill into copper boards, so all we had to do was to operate the machine, select the correct settings, and change out the bit when necessary. You can find the general workflow created for this process here and my own workflow below.

My Simplified Workflow

  1. Apply a double sided adhesive (generally tape) to your material and measure the material’s width with the adhesive
  2. Place this material onto the milling bed so the adhesive sticks it down
  3. Open Bantom Tools on the computer connected to the milling machine
  4. Under Home, select Install Tool
  5. Select the tool you will use
  6. Use 2 wrenches on the top and middle of the spindle to unscrew the existing tool (make sure this bit does not just fall out as this could break it)
  7. Insert you preffered tool into the slot in the spindle and re-tighten it
  8. Move metal prong onto the the bed so that electricity can flow for the next steps
  9. Select Z Only Stick Probing and allow it to touch the materialwi
  10. Under Material Setup make sure the Material Offset Z is set to 0.01mm
  11. Change the Material Size to the dimensions of your material
  12. Under File Setup import your file
  13. Select all the tool you will use for the mill
  14. Use Plan Offset to move around where your design will be milled (it will display this on a projection as well)
  15. Ensure that the correct tool (bit) is currently selected and inserted into the spindle
  16. Select Mill under Summary/Run

Below is a timelapse of one of the boards being milled, a picture after the first one was completed, and an image of all four after they were done. In total, we milled four boards.

image image

Porblems we Encountered

Between the two of us, we accidentally broke 3 different 1/64 inch bits while milling. The first one, I broke because I neglected to put the spindle over the empty part of the bed during the tool installation process. The second one, I also broke because I neglected to put the metal prong on the material, meaning it did not send a signal telling the machine when to stop going down. Connor broke the last one, but this one broke for an unknown reason. Mr. Durrett speculacted that the electrical signal may have been interupted between the prong and the spindle.

Soldering

First, we outlined the components we would be soldering onto the PCB board. Below is a picture of the compenents and their abbreviated names on a piece of paper. Before soldering, I applied tape to the bottom side of the RP2040, so as to not have its components which I was not using interfere with the circuit.

image image
Also, we used the a reference linked to on the Fab Academy schedule for this week for this soldering job.
image

Prefered Method of Soldering

There are many different methods of soldering, many of which can have different applications. While surface mount soldering, I discovered that I prefered using solder paste and a soldering iron. Applying the solder paste before using tweezers to put a miniscule component on allows the component to more easily stick in whatever position you put it in. Then, if used delicately, the soldering iron makes it easy to heat up the paste, transforming it into solder, ultimately soldering down the component. Additionally, as advised by Mr. Dubick, we used multimeteres throughout much of the process to check if the components were soldered on properly.

Soldering Components onto PCB Boards

We then began soldering the different components onto the board. I began by soldering the SEEED XIAO RP2040, but as I was soldering the first LED on I realized that my board’s traces were butchered, and Mr. Durrett told me to just get a new board. Because we had milled as many boards as possible for this reason, there were still many good boards to spare.
image
I soldered a new SEEED XIAO RP2040 onto this new board, and then the first LED and 1000 Ohm resistor.
image
At home, I used solder paste I bought from The Home Depot to solder on the button and the 500 Ohm resistor. The solder paste turned out to be quite troublesome to use, making for a horrible soldering job. Additionally, I somehow ripped off the trace between the 500 Ohm resistor and the button, and just used a 0 Ohm resistor to take its place.
image
image
I finished soldering at school as shown in step by step images below.
image image image image
Finally, I plugged the board in to my computer and confirmed that the lights on the RP2040 lit up before beginning programming.

Programming PCB Board

I opened Arduino IDE on my computer and plugged my PCB board into my computer using a USB-C cable. I set up Arduino IDE using a step by step process given by Microsoft Copilot (an AI chatbot) displayed below.
image
I then copied and pasted a blink code from Richard Shan’s documentation, as I knew this would work for the board and setup I was using. The blink code worked!

Blink code:
void setup() {
pinMode(1, OUTPUT); //bottom right LED
pinMode(26, OUTPUT); //top left LED
pinMode(0, OUTPUT); //bottom left LED
}

void loop() {
digitalWrite(1, HIGH); //turns bottom right LED on
digitalWrite(26, HIGH); //turns top left LED on
digitalWrite(0, HIGH); //turns bottom left LED on

delay(1000); //waits for 1 second

digitalWrite(1, LOW); //turns bottom right LED off
digitalWrite(26, LOW); //turns top left LED off
digitalWrite(0, LOW); //turns bottom left LED off

delay(1000); //waits for 1 second
}

Video of blink code working:

However, when I tried a code that incorporated the use of a button, this did not work, as my poor soldering job had obviously ruined the functionality of the button.

Button integrated code:

void setup() {
// Initialize LED pins as outputs
pinMode(1, OUTPUT); // Bottom right LED
pinMode(26, OUTPUT); // Top left LED
pinMode(0, OUTPUT); // Bottom left LED

// Initialize the button pin as an input
pinMode(27, INPUT_PULLUP); // Button tactile switch on pin 27
}

void loop() {
// Read the state of the button
int buttonState = digitalRead(27);

// If the button is not pressed, turn off the LEDs
if (buttonState == LOW) { // The button is not pressed
digitalWrite(1, LOW); // Turn off bottom right LED
digitalWrite(26, LOW); // Turn off top left LED
digitalWrite(0, LOW); // Turn off bottom left LED
}

// The button is pressed
else {
digitalWrite(1, HIGH); // Turn on bottom right LED
digitalWrite(26, HIGH); // Turn on top left LED
digitalWrite(0, HIGH); // Turn on bottom left LED
}
}

I tried soldering on a new button and using a copper strand of wire to fix the broken trace but it still did not work.

image image

Final Try

I wanted my board to work with a code that integrated the use of the button, so I decided to make another. After I milled this one, though, I noticed the traces were much wider and the area between traces was minute. This was solely because I had forgotten to change the trace width in the settings to 1.5mm, and it was previously set to just .15mm. I had also used a 1/64 inch bit for the enterity of the cut which did not help.
image
I tried to solder the components on, but after attempting to solder on the RP2040, I quickly realized that this would not work. Thus, I created another one. I milled another board, again with only a 1/64 inch bit, but this time changing the trace width to 1.5mm.

This soldering job went smoothly. Finally, I plugged this newly soldered board into my computer, uploaded the button code, and pressed the button.

I was glad that I restarted the process this final time, as it solidified my understanding of the steps in the process, therefore allowing me to be much more efficient in the future.

Week Summary

Overall, this week improved my skills using the milling machine, soldering, and programming drastically. Although the week was fairly simple, it still had its struggles. However, overall I am happy with how this week went and confident in my capabilities of the processes involved in this week.

Files

You can find the files for different parts of this week’s process here.


Last update: February 26, 2024