8.Electronic Production

Assignments

group assignment:
-characterize the design rules for your in-house PCB production
process -extra credit: send a PCB out to a board house
individual assignment:
-make and test the development board that you designed to interact and communicate with an embedded microcontroller
-extra credit: make it with another process

Research

XIO RP2040
SEEED XIAO rp2040 arduino
ADRIÁN TORRES SEEED XIAO rp2040 library
SEEED XIAO rp2040 KiCad library
SEEED XIAO rp2040 eagle library
eagle tutorial 1

Throughout The Week

Group

This week I helped out with milling with a 1/32-inch bit. I did this by milling out a test board with the 1/32-inch bit and comparing its results with the others boards they milled. To see more go to the group site.
Group Site

Milling

So I milled in week 6 but here is a recap of what I did.

Once I was done designing went ahead and milled out my board. To do this I went to fabrication exports in KiCad and downloaded all my Gerber files for my design and sent them to Bantam tools software to get it all ready. The first on the software step was to select the file you want to be downloaded. Then you had to get a piece of copper plate and use Nitto tape to stick it down onto the platform. The software the tells you to get its dimensions down into the software. Once you do that you have the probe the material to get its thickness, ill go further into that later. Then lastly you have to select the size bits you want to use to mill the board Here I used a 1/32" flat end mill and a 1/64" flat end mill. Then you hit mill. Once I got all my settings to correct I hit generate g-code so that the tool paths could be generated and then hit mill to start the mill.


And here is how it turned out. image
Halfway through the cut, I realized that it did not sound right and saw that it was fully cutting through my copper and not making the routs and traces instead. I realized with the help of Aaron Logan a Fab Academy 2022 graduate that what I did the z-axis probing I never hit except, so it did not find out the thickness of the copper and just milled the whole piece.
image
After we figure that out I hit except and cut again here was my result this time.
image
While this cut was a lot better I realized that my trace width was way too thin, so I went back into KiCad and made the traces .5 mm wide and resent the files. After this I cut one last time and here was the result.
image

Soldering

Once I was done milling all I had left was to solder the whole thing together, so I got a soldering station set up and started. The first object I soldered was the SEEEDDuino XIAO I started by putting copper tape on the bottom so that it would not get burned. Then I got lead-free solder paste and put it on the corners of the pads and fitted it in where it should be. Then I used the soldering iron and solder to fix the piece in place. Once it was in place I soldered all the legs that needed to be soldered for the circuit and 1 or two more to keep it reinforced.
image
The next pieces I soldered on were the buttons. I did these putting solder on one of the pads the button would go on and then placing the piece on it. I then held it in place with tweezers while I soldered it to the pad. After it was stuck in place I would solder the other side then come back to the first side and add some more to really keep it in place. image
The last piece I had to solder was the 3 by 2 header into place. Because of how tight this was I used solder past to keep it in place then soldered the corner legs to keep it in place. Once it was down I ran it under the microscope to make sure there were no solder bridges and there was one, so I had to get rid of that by running the soldering iron on it.
image
After that I was done with my board and I tested it with a multimeter to make sure nothing would short circuit or fry. After I knew it worked I uploaded my code from week 6 that I made for the board

#include <Servo.h>
Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(D9);  // attaches the servo on pin 9 to the servo object
  myservo.write(0);
  pinMode(9,INPUT);
  pinMode(10,INPUT)

}

void loop() {
if(digitalRead(9) == HIGH){
  pos++;
}
if(digitalRead(10) == HIGH){
  pos--;
}

 myservo.write(pos);

}

Then I tested it here it the result.


Summary

Throughout this week I got some more practice soldering and learned how to solder a SEEEDuino XIAO by using solder paste which is just a good skill in general. I also learned how to mill PCB boards using a bantam tool milling machine. Using this I will be able to create much more compact electronics and much more efficient devices. This will help me design my board for my final project that will control all the servos and get the time for the clock.

Files

Week 6 Downloads
Week 8 Downloads