⚡️Week 4: Electronics Production

Project Heros

Our final milled board with Xiao and SMD components soldered on:

Group Assignment

Here is the group assignment for this week. Before this week I had soldered many protoboards and gotten a few PCBs printed, but milling was a new experience for me. The limits of protoboarding are your skill, and the limits of a PCB house tend to be more than enough for most applications, so the characterisations found in the group assignment would really determine the role of this process in future projects. All in all, I was pretty impressed. A minimum track thickness of 0.4 mm isn't steller but for 90% of cases it should be alright. Coupled with the large work area it has, I think its a very valid and worthwhile process. I could see that the process can get a little involved sometimes with our bed leveling issues, but it seemed like a process thats fairly straight forward to fix any issues that arise - moreso than 3d printing.

Generating Machine Code

This week will be milling a custom breakout board for the Xiao RP2040. Our instructor Claire had already prepared a board based on previous board she used. The board houses the Xiao, an SMD button and an SMD resistor.

We exported the SVGs and had some issues with the exports. The traces were inverted and the through holes to cut had not been generated properly and were covered by other rogue layers, so we used inkscape to fix up the SVGs.

Here it is before:

And after being fixed up:

Now with the SVGs we can generate our machine code in Mods. To set up Mods for the SRM-20, Right click > programs > open program > Roland > SRM-20 mill > mill 2D PCB. We are now greated with a great big set of nodes showing how it is generated. Load the SVG into the top right, and select the appropriate tool in the bottom left node - a 1/64 bit fo the traces and edges and a 1/32 bit for the holes. Ensure that the export is switched on at the bottom and that all the origins are set to 0 mm (they come default at 10). Repeat this process for all 3 SVGs and we get our .rml files which are ready to be sent to the SRM-20.

Here are the .rml toolpaths generated:

Milling the Board

To start we need to place our copper sheet down on our sacrificial block. We did this just with double sided tape on the back.

Then we can insert the milling bit which is inserted into the chuck using the hex bolt on the side.

We can then use Vpanel, the SRM-20's control software to zero the bit. To do so we moved it along the x and y coordinates to where we want to call home and hit the X/Y button in the top right to set origin point. Then using the z axis control, move the bit down till it is nearly touching the copper sheet. DO NOT LET THE BIT TOUCH IT WILL DAMAGE/RUIN THE BIT. Once it is low enough, loosen the chuck, allow the bit to fall down and touch the surface, then set the Z axis origin point. This point is now the origin that will be used for the cut.

Now hit setup and select the .rml files that we just created, you can import them all at once and select the orders of them to have them run one after another. We started with the traces and the through holes, then we changed the bit and let the edge cuts run. After running all these, we had our board ready to be taken off.

Soldering

This is definitely not my first time soldering, but we went ahead and soldered 2 rows of headers for the Xiao and a SMD resistor and LED and button. The way we had exported the board meant that we could solder the headers on the opposite side of the board to the SMD components, so that we could solder to that nice copper side. We looked through our SMD booklets and realised we had run out of the correct size led and resistor, so we opted to go one size down which was a bit of a challenge but worked in the end. The other challenge was not using leaded solder. I use it extensively at home, but thought it would be responsible to use lead-free solder in fablab.

And with that, we had our full milled and soldered board!

Testing the Board

To test the board I opened thonny and installed micropython, and then used this simple code that turns on the LED when the button is pressed.

from machine import Pin

led = Pin(2, Pin.OUT)
button = Pin(4, Pin.IN, Pin.PULL_DOWN)

while True:
    if button.value() == 1:
        led.value(1)
    else:
        led.value(0) 

And it lit up accordingly.

Conclusion

All in all, this was quite enjoyable. I extensively use protoboard and occassionally use PCBs for big projects, but the problem with PCBs are the 2 week lead time to get there here to Australia at a reasonable price. After going through this whole process I think there is a niche for using milled PCBs. When a project isn't too complex and I need too many boards than I would like to hand solder with protoboard, and when I need a short turn around time, I think using a milled PCB for future projects will be a good idea.

Files

Original KiCad Files
Fixed SVGs
.rml files