This week’s group assignment covers the PCB milling process for the Roland SRM-20.
In order to create toolpaths to mill our circuit board, we use a software called Coppercam.
Initially, I downloaded it to my own computer and followed this tutorial for PCB milling with Roland SRM-20.
After going through all the steps outlined in the tutorial, I got an error that said “demonstration version”.
It turned out that this error was probably caused because Coppercam is a paid program and I had the free version. So I re-did the same process in the computer at the FabLab that we use with the Roland SRM-20.
It ran without errors and I got two “.egx” files, one for Tool 1 (engraving) and one for Tool 2 (cutting).
After I got my toolpaths, I moved on to milling with the Roland SRM-20. Again, I continued following the same tutorial.
At first when I tried to open VPenel for SRM-20, I got this error message:
The reason for this was because I left the cover of the machine open. If the cover is open, you cannot interact with it using VPenel.
After going through the tutorial and setting up the toolpaths, I started milling.
Milling first iteration
The first board that I milled had several issues. Firstly, the engravings on the left side and the right side were not equal in depth. Secondly, the hole that was supposed to be cut in the middle was not there.
Also, some connections were too close to each other for comfort. There were some unnecessary turns and corners as well.
I first cleaned up the connections in KiCad. I got rid of unnecessary twists & turns, and routes that were too close to each other were split farther apart.
After exporting, I started changing some settings in Coppercam. I realized that I set the Z thickness as 1.9mm, when my board was only 1.5mm. I changed this to 1.6mm (adding a 0.1mm clearance).
I also set the cutting and drilling depths as 1.7mm. The final working tool settings are down below.
And for the uncut hole in the middle, I learned that I had to specifically set it as a contour inside Coppercam.
In the first iteration, I had taken the measurement for the Z-height from the side of the board. This time, I made sure to take it from the middle of my cutting area.
I started milling the second iteration
Milling second iteration
Even after the troubleshooting, the second iteration’s engraving was still very shallow.
To fix this, we tried changing the engraving tool in case it was damaged. After the change we did not change any other settings about the job other than re-calibrating the Z-height.
This worked really well. The new engraving tool cut as deep as I wanted.
Here is a comparison of the first iteration and second iteration
After succesfully milling, I moved on to soldering. Using a 240 sandpaper, I gently sanded the copper layer first.
I first applied flux to the area I wanted to solder.
Then, I started soldering the surface mount components. It was my first time soldering surface mounts. At first, I was using a really thick solder wire. This resulted in really bad quality solders and was very hard to control.
When I moved onto thinner solder wire, everything was much easier. Here is the steps I followed for soldering surface mount components:
I soldered all the components but the headers for the Xiao board. I couldn’t solder that yet because we didn’t have it in stock at the moment.
After this, I realized that I had some solder bridges and sloppy solders at some points. I tried cleaning them up as much as I could.
To connect the XIAO to the circuit board, I soldered the headers first. After mounting the XIAO to the headers, I tested the connections with a multimeter to avoid any short circuits. Most importantly, I checked if there was a short between 3.3V-Ground and 5V-Ground.
In order to run tests on the board, I connected the Xiao to my computer and opened up Arduino IDE. We have to add the board definition to Arduino IDE first, which I did by following the tutorial on the Seeed Studio Wiki.
Firstly, I tested the button press code to see if the board was registering button presses. It worked. Also don’t forget to add input_pullup to the pinMode to use the internal resistor.
Testing button press
|
|
Then I started testing with the LED’s. However, the LED’s were turned ON when I set them as HIGH. This was not the case with the built in LED’s of the XIAO board. So I changed the HIGH’s with LOW’s and re-ran the code. It worked this time.
LOW and HIGH reversed
LOW and HIGH correct order
|
|
After this, I experimented with turning the LED’s on and off with a single button press. After messing around a bit, I found the solution to make an increasing counter and then check if the number is even or odd. The method of increasing the counter with each button press is the same one I used in the Embedded Programming week. I added the odd/ even number checker to this code by using the “modulus operator”. Which is a fancy name for division in Arduino IDE.
Turning on LED with single button press
|
|